From f093f28bd5a871c44192eeff58304c397bfe3985 Mon Sep 17 00:00:00 2001 From: Yash Gaykar Date: Mon, 18 May 2026 11:58:53 +0530 Subject: [PATCH 01/26] :sparkles: feat: Add async httpx gateway runtime and test --- osc_sdk_python/__init__.py | 2 + osc_sdk_python/async_call.py | 102 ++++++++++++++++++++++ osc_sdk_python/async_requester.py | 21 +++++ osc_sdk_python/async_retry.py | 131 +++++++++++++++++++++++++++++ osc_sdk_python/limiter.py | 16 ++++ osc_sdk_python/outscale_gateway.py | 49 +++++++++++ osc_sdk_python/retry.py | 12 ++- pyproject.toml | 1 + tests/test_async_vm.py | 34 ++++++++ uv.lock | 53 ++++++++++++ 10 files changed, 417 insertions(+), 4 deletions(-) create mode 100644 osc_sdk_python/async_call.py create mode 100644 osc_sdk_python/async_requester.py create mode 100644 osc_sdk_python/async_retry.py create mode 100644 tests/test_async_vm.py diff --git a/osc_sdk_python/__init__.py b/osc_sdk_python/__init__.py index 8c91ad5..5bc5526 100644 --- a/osc_sdk_python/__init__.py +++ b/osc_sdk_python/__init__.py @@ -1,4 +1,5 @@ from .outscale_gateway import OutscaleGateway as Gateway +from .outscale_gateway import AsyncOutscaleGateway as AsyncGateway from .outscale_gateway import LOG_NONE from .outscale_gateway import LOG_STDERR from .outscale_gateway import LOG_STDIO @@ -18,6 +19,7 @@ "__version__", "__author__", "Gateway", + "AsyncGateway", "LOG_NONE", "LOG_STDERR", "LOG_STDIO", diff --git a/osc_sdk_python/async_call.py b/osc_sdk_python/async_call.py new file mode 100644 index 0000000..d4c558c --- /dev/null +++ b/osc_sdk_python/async_call.py @@ -0,0 +1,102 @@ +import json +import warnings +from datetime import timedelta + +import httpx +from urllib3.util import parse_url + +from .async_requester import AsyncRequester +from .authentication import Authentication, DEFAULT_USER_AGENT +from .credentials import Profile +from .limiter import RateLimiter + + +class AsyncCall(object): + def __init__(self, logger=None, limiter=None, **kwargs): + self.version = kwargs.pop("version", "latest") + self.host = kwargs.pop("host", None) + self.ssl = kwargs.pop("_ssl", True) + self.user_agent = kwargs.pop("user_agent", DEFAULT_USER_AGENT) + self.logger = logger + self.limiter: RateLimiter | None = limiter + self.retry_kwargs = {} + + kwargs = self.update_limiter(**kwargs) + kwargs = self.update_retry(**kwargs) + self.update_profile(**kwargs) + self.client = self._make_client() + + def _make_client(self): + cert_file = self.profile.x509_client_cert + return httpx.AsyncClient( + trust_env=False, + verify=not self.profile.tls_skip_verify, + cert=cert_file, + ) + + def update_credentials(self, **kwargs): + warnings.warn( + "update_credentials is deprecated, use update_profile instead", + DeprecationWarning, + stacklevel=2, + ) + return self.update_profile(**kwargs) + + def update_profile(self, **kwargs): + self.profile = Profile.from_standard_configuration( + kwargs.pop("path", None), kwargs.pop("profile", None) + ) + self.profile.merge(Profile(**kwargs)) + return kwargs + + def update_limiter(self, **kwargs): + limiter_window = kwargs.pop("limiter_window", None) + if limiter_window is not None and self.limiter is not None: + self.limiter.window = timedelta(seconds=int(limiter_window)) + + limiter_max_requests = kwargs.pop("limiter_max_requests", None) + if limiter_max_requests is not None and self.limiter is not None: + self.limiter.max_requests = limiter_max_requests + + return kwargs + + def update_retry(self, **kwargs): + max_retries = kwargs.pop("max_retries", None) + if max_retries is not None: + self.retry_kwargs["max_retries"] = int(max_retries) + + for key in ["backoff_factor", "backoff_jitter", "backoff_max"]: + value = kwargs.pop(f"retry_{key}", None) + if value is not None: + self.retry_kwargs[key] = float(value) + return kwargs + + async def api(self, action, service="api", **data): + endpoint = self.profile.get_endpoint(service) + "/" + action + parsed_url = parse_url(endpoint) + uri = parsed_url.path + host = parsed_url.host + + if self.limiter is not None: + await self.limiter.async_acquire() + + requester = AsyncRequester( + self.client, + Authentication( + self.profile, + host, + user_agent=self.user_agent, + ), + endpoint, + **self.retry_kwargs, + ) + if self.logger is not None: + self.logger.do_log( + "uri: " + uri + "\npayload:\n" + json.dumps(data, indent=2) + ) + response = await requester.send(uri, json.dumps(data)) + return response.json() + + async def close(self): + if self.client: + await self.client.aclose() diff --git a/osc_sdk_python/async_requester.py b/osc_sdk_python/async_requester.py new file mode 100644 index 0000000..e1001e4 --- /dev/null +++ b/osc_sdk_python/async_requester.py @@ -0,0 +1,21 @@ +from .async_retry import AsyncRetry + + +class AsyncRequester: + def __init__(self, client, auth, endpoint, **kwargs): + self.client = client + self.auth = auth + self.endpoint = endpoint + self.request_kwargs = kwargs + + async def send(self, uri, payload): + if self.auth.is_basic_auth_configured(): + headers = self.auth.get_basic_auth_header() + else: + headers = self.auth.forge_headers_signed(uri, payload) + + retry_kwargs = self.request_kwargs.copy() + retry_kwargs.update({"content": payload, "headers": headers}) + + response = AsyncRetry(self.client, "POST", self.endpoint, **retry_kwargs) + return await response.execute() diff --git a/osc_sdk_python/async_retry.py b/osc_sdk_python/async_retry.py new file mode 100644 index 0000000..b90b3a7 --- /dev/null +++ b/osc_sdk_python/async_retry.py @@ -0,0 +1,131 @@ +import asyncio +import json +import random + +import httpx + +from .problem import LegacyProblem, LegacyProblemDecoder, Problem, ProblemDecoder +from .retry import ( + MAX_RETRIES, + RETRY_BACKOFF_FACTOR, + RETRY_BACKOFF_JITTER, + RETRY_BACKOFF_MAX, + get_default_reason, +) + + +class AsyncRetry: + """ + Hold an async request attempt and try to execute it. + """ + + def __init__(self, client: httpx.AsyncClient, method: str, url: str, **kwargs): + self.client = client + self.method: str = method + self.url: str = url + self.request_kwargs = kwargs + + self.attempt: int = int(self.request_kwargs.pop("attempt", 0)) + self.max_retries: int = int( + self.request_kwargs.pop("max_retries", MAX_RETRIES) + ) + self.backoff_factor: float = float( + self.request_kwargs.pop("backoff_factor", RETRY_BACKOFF_FACTOR) + ) + self.backoff_jitter: float = float( + self.request_kwargs.pop("backoff_jitter", RETRY_BACKOFF_JITTER) + ) + self.backoff_max: float = float( + self.request_kwargs.pop("backoff_max", RETRY_BACKOFF_MAX) + ) + + async def execute_once(self) -> httpx.Response: + """ + Execute the request without retry. + """ + return await self.client.request( + self.method, self.url, **self.request_kwargs + ) + + def increment(self) -> "AsyncRetry": + """ + Return a copy of the retry with an incremented attempt count. + """ + new_kwargs = self.request_kwargs.copy() + new_kwargs["attempt"] = self.attempt + 1 + new_kwargs["max_retries"] = self.max_retries + new_kwargs["backoff_factor"] = self.backoff_factor + new_kwargs["backoff_jitter"] = self.backoff_jitter + new_kwargs["backoff_max"] = self.backoff_max + return AsyncRetry(self.client, self.method, self.url, **new_kwargs) + + def should_retry(self, e: httpx.HTTPError) -> bool: + if isinstance(e, httpx.TooManyRedirects): + return False + + response = getattr(e, "response", None) + if response is not None: + if 400 <= response.status_code < 500 and response.status_code != 429: + return False + + return self.attempt < self.max_retries + + def get_backoff_time(self) -> float: + backoff: float = self.backoff_factor * (2**self.attempt) + backoff += random.uniform(0, self.backoff_jitter) + return min(backoff, self.backoff_max) + + async def execute(self) -> httpx.Response: + try: + res = await self.execute_once() + raise_for_status(res) + return res + except httpx.HTTPError as e: + if self.should_retry(e): + sleep_time = self.get_backoff_time() + await asyncio.sleep(sleep_time) + return await self.increment().execute() + raise e + + +def raise_for_status(response: httpx.Response): + http_error_msg = "" + problem = None + reason = get_default_reason(response) if hasattr(response, "reason") else response.reason_phrase + + try: + ct = response.headers.get("content-type") or "" + if "application/problem+json" in ct: + problem = json.loads(response.text, cls=ProblemDecoder) + problem.status = problem.status or str(response.status_code) + elif "application/json" in ct: + problem = json.loads(response.text, cls=LegacyProblemDecoder) + problem.status = problem.status or str(response.status_code) + problem.url = str(response.url) + except json.JSONDecodeError: + pass + else: + if 400 <= response.status_code < 500: + if isinstance(problem, LegacyProblem) or isinstance(problem, Problem): + http_error_msg = f"Client Error --> {problem.msg()}" + else: + http_error_msg = ( + f"{response.status_code} Client Error: {reason} " + f"for url: {response.url}" + ) + + elif 500 <= response.status_code < 600: + if isinstance(problem, LegacyProblem) or isinstance(problem, Problem): + http_error_msg = f"Server Error --> {problem.msg()}" + else: + http_error_msg = ( + f"{response.status_code} Server Error: {reason} " + f"for url: {response.url}" + ) + + if http_error_msg: + raise httpx.HTTPStatusError( + http_error_msg, + request=response.request, + response=response, + ) diff --git a/osc_sdk_python/limiter.py b/osc_sdk_python/limiter.py index 91529f4..1367e04 100644 --- a/osc_sdk_python/limiter.py +++ b/osc_sdk_python/limiter.py @@ -1,4 +1,5 @@ from datetime import datetime, timezone, timedelta +import asyncio import time @@ -24,6 +25,21 @@ def acquire(self): self.requests.append(now) + async def async_acquire(self): + now = self.datetime_cls.now(timezone.utc) + + self.clean_old_requests(now) + + if len(self.requests) >= self.max_requests: + oldest = self.requests[0] + wait_time = self.window - (now - oldest) + await asyncio.sleep(wait_time.total_seconds()) + + now = self.datetime_cls.now(timezone.utc) + self.clean_old_requests(now) + + self.requests.append(now) + def clean_old_requests(self, now): while len(self.requests) > 0 and self.requests[0] <= now - self.window: self.requests.pop(0) diff --git a/osc_sdk_python/outscale_gateway.py b/osc_sdk_python/outscale_gateway.py index bed36f3..29faad8 100644 --- a/osc_sdk_python/outscale_gateway.py +++ b/osc_sdk_python/outscale_gateway.py @@ -1,5 +1,6 @@ import os import sys +from .async_call import AsyncCall from .call import Call from .limiter import RateLimiter import ruamel.yaml @@ -259,6 +260,54 @@ def __init__(self, **kwargs): ) +class AsyncBaseAPI(BaseAPI): + def __init__(self, spec, **kwargs): + self._load_gateway_structure(spec) + self._load_errors() + self.log = Logger() + self.limiter = RateLimiter(DEFAULT_LIMITER_WINDOW, DEFAULT_LIMITER_MAX_REQUESTS) + self.call = AsyncCall( + logger=self.log, + version=self.endpoint_api_version, + limiter=self.limiter, + **kwargs, + ) + + def _get_action(self, action_name): + async def action(**kwargs): + kwargs = self._remove_none_parameters(**kwargs) + self._check(action_name, **kwargs) + result = await self.call.api(action_name, **kwargs) + return result + + return action + + async def raw(self, action_name, **kwargs): + return await self.call.api(action_name, **kwargs) + + async def __aenter__(self): + return self + + async def __aexit__(self, type, value, traceback): + await self.call.close() + + def __enter__(self): + raise TypeError("AsyncGateway must be used with 'async with'") + + def __exit__(self, type, value, traceback): + return None + + async def close(self): + await self.call.close() + + +class AsyncOutscaleGateway(AsyncBaseAPI): + def __init__(self, **kwargs): + super().__init__( + os.path.join(os.path.dirname(__file__), "resources/outscale.yaml"), **kwargs + ) + + def test(): a = OutscaleGateway() a.CreateVms( diff --git a/osc_sdk_python/retry.py b/osc_sdk_python/retry.py index bf4979a..1b2ac15 100644 --- a/osc_sdk_python/retry.py +++ b/osc_sdk_python/retry.py @@ -24,16 +24,16 @@ def __init__(self, session: requests.Session, method: str, url: str, **kwargs): # Extract all retry parameters self.attempt: int = int(self.request_kwargs.pop("attempt", 0)) self.max_retries: int = int( - self.request_kwargs.get("max_retries", MAX_RETRIES) + self.request_kwargs.pop("max_retries", MAX_RETRIES) ) self.backoff_factor: float = float( - self.request_kwargs.get("backoff_factor", RETRY_BACKOFF_FACTOR) + self.request_kwargs.pop("backoff_factor", RETRY_BACKOFF_FACTOR) ) self.backoff_jitter: float = float( - self.request_kwargs.get("backoff_jitter", RETRY_BACKOFF_JITTER) + self.request_kwargs.pop("backoff_jitter", RETRY_BACKOFF_JITTER) ) self.backoff_max: float = float( - self.request_kwargs.get("backoff_max", RETRY_BACKOFF_MAX) + self.request_kwargs.pop("backoff_max", RETRY_BACKOFF_MAX) ) def execute_once(self) -> requests.Response: @@ -48,6 +48,10 @@ def increment(self) -> "Retry": """ new_kwargs = self.request_kwargs.copy() new_kwargs["attempt"] = self.attempt + 1 + new_kwargs["max_retries"] = self.max_retries + new_kwargs["backoff_factor"] = self.backoff_factor + new_kwargs["backoff_jitter"] = self.backoff_jitter + new_kwargs["backoff_max"] = self.backoff_max return Retry(self.session, self.method, self.url, **new_kwargs) def should_retry(self, e: requests.exceptions.RequestException) -> bool: diff --git a/pyproject.toml b/pyproject.toml index ee875c3..0a55e89 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -20,6 +20,7 @@ classifiers = [ "Operating System :: OS Independent" ] dependencies = [ + "httpx>=0.28.0", "requests>=2.20.0", "ruamel.yaml==0.19.1", "urllib3>=2.6.3", diff --git a/tests/test_async_vm.py b/tests/test_async_vm.py new file mode 100644 index 0000000..6576f13 --- /dev/null +++ b/tests/test_async_vm.py @@ -0,0 +1,34 @@ +import asyncio +import sys +import unittest + +sys.path.append("..") +from osc_sdk_python import AsyncGateway + + +class TestAsyncVm(unittest.TestCase): + def test_listing(self): + async def run(): + gw = AsyncGateway() + try: + vms = await gw.ReadVms() + finally: + await gw.close() + + self.assertEqual(type(vms), dict) + self.assertEqual(type(vms.get("Vms")), list) + + asyncio.run(run()) + + def test_listing_with_context_manager(self): + async def run(): + async with AsyncGateway() as gw: + vms = await gw.ReadVms() + self.assertEqual(type(vms), dict) + self.assertEqual(type(vms.get("Vms")), list) + + asyncio.run(run()) + + +if __name__ == "__main__": + unittest.main() diff --git a/uv.lock b/uv.lock index f265f10..c78014f 100644 --- a/uv.lock +++ b/uv.lock @@ -2,6 +2,20 @@ version = 1 revision = 3 requires-python = ">=3.10" +[[package]] +name = "anyio" +version = "4.13.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, + { name = "idna" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/19/14/2c5dd9f512b66549ae92767a9c7b330ae88e1932ca57876909410251fe13/anyio-4.13.0.tar.gz", hash = "sha256:334b70e641fd2221c1505b3890c69882fe4a2df910cba14d97019b90b24439dc", size = 231622, upload-time = "2026-03-24T12:59:09.671Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/da/42/e921fccf5015463e32a3cf6ee7f980a6ed0f395ceeaa45060b61d86486c2/anyio-4.13.0-py3-none-any.whl", hash = "sha256:08b310f9e24a9594186fd75b4f73f4a4152069e3853f1ed8bfbf58369f4ad708", size = 114353, upload-time = "2026-03-24T12:59:08.246Z" }, +] + [[package]] name = "cachetools" version = "7.0.0" @@ -129,6 +143,43 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b5/36/7fb70f04bf00bc646cd5bb45aa9eddb15e19437a28b8fb2b4a5249fac770/filelock-3.20.3-py3-none-any.whl", hash = "sha256:4b0dda527ee31078689fc205ec4f1c1bf7d56cf88b6dc9426c4f230e46c2dce1", size = 16701, upload-time = "2026-01-09T17:55:04.334Z" }, ] +[[package]] +name = "h11" +version = "0.16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250, upload-time = "2025-04-24T03:35:25.427Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515, upload-time = "2025-04-24T03:35:24.344Z" }, +] + +[[package]] +name = "httpcore" +version = "1.0.9" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "h11" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 85484, upload-time = "2025-04-24T22:06:22.219Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 78784, upload-time = "2025-04-24T22:06:20.566Z" }, +] + +[[package]] +name = "httpx" +version = "0.28.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "certifi" }, + { name = "httpcore" }, + { name = "idna" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406, upload-time = "2024-12-06T15:37:23.222Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517, upload-time = "2024-12-06T15:37:21.509Z" }, +] + [[package]] name = "idna" version = "3.10" @@ -152,6 +203,7 @@ name = "osc-sdk-python" version = "0.41.0" source = { editable = "." } dependencies = [ + { name = "httpx" }, { name = "requests" }, { name = "ruamel-yaml" }, { name = "urllib3" }, @@ -166,6 +218,7 @@ dev = [ [package.metadata] requires-dist = [ + { name = "httpx", specifier = ">=0.28.0" }, { name = "requests", specifier = ">=2.20.0" }, { name = "ruamel-yaml", specifier = "==0.19.1" }, { name = "urllib3", specifier = ">=2.6.3" }, From d715e3e4779e2fb5cdc6616212d25fc91da9a8b2 Mon Sep 17 00:00:00 2001 From: Yash Gaykar Date: Mon, 18 May 2026 13:38:31 +0530 Subject: [PATCH 02/26] :recycle: refactor: Organize sync and async runtime and test layout --- osc_sdk_python/__init__.py | 2 +- osc_sdk_python/outscale_gateway.py | 4 +- osc_sdk_python/runtime/__init__.py | 1 + osc_sdk_python/runtime/async_/__init__.py | 7 +++ .../{async_call.py => runtime/async_/call.py} | 8 +-- .../async_/requester.py} | 2 +- .../async_/retry.py} | 4 +- osc_sdk_python/runtime/sync/__init__.py | 7 +++ osc_sdk_python/{ => runtime/sync}/call.py | 8 +-- .../{ => runtime/sync}/requester.py | 0 osc_sdk_python/{ => runtime/sync}/retry.py | 2 +- tests/async_/test_async_gateway.py | 49 ++++++++++++++++ tests/async_/test_async_retry.py | 57 +++++++++++++++++++ tests/{ => async_}/test_async_vm.py | 0 tests/{ => sync}/test_eim_user.py | 0 tests/{ => sync}/test_exceptions.py | 0 tests/{ => sync}/test_exceptions_500.py | 0 tests/{ => sync}/test_keypair.py | 0 tests/{ => sync}/test_limiter.py | 0 .../{ => sync}/test_load_balancer_backend.py | 0 tests/{ => sync}/test_log.py | 0 tests/{ => sync}/test_manual_aksk.py | 0 tests/{ => sync}/test_net.py | 0 tests/{ => sync}/test_net_subnet.py | 0 tests/{ => sync}/test_password.py | 0 tests/{ => sync}/test_problems.py | 0 tests/{ => sync}/test_retry.py | 2 +- tests/{ => sync}/test_security_group.py | 0 tests/{ => sync}/test_snapshot.py | 0 tests/{ => sync}/test_vm.py | 0 tests/{ => sync}/test_volume.py | 0 31 files changed, 137 insertions(+), 16 deletions(-) create mode 100644 osc_sdk_python/runtime/__init__.py create mode 100644 osc_sdk_python/runtime/async_/__init__.py rename osc_sdk_python/{async_call.py => runtime/async_/call.py} (94%) rename osc_sdk_python/{async_requester.py => runtime/async_/requester.py} (94%) rename osc_sdk_python/{async_retry.py => runtime/async_/retry.py} (97%) create mode 100644 osc_sdk_python/runtime/sync/__init__.py rename osc_sdk_python/{ => runtime/sync}/call.py (95%) rename osc_sdk_python/{ => runtime/sync}/requester.py (100%) rename osc_sdk_python/{ => runtime/sync}/retry.py (98%) create mode 100644 tests/async_/test_async_gateway.py create mode 100644 tests/async_/test_async_retry.py rename tests/{ => async_}/test_async_vm.py (100%) rename tests/{ => sync}/test_eim_user.py (100%) rename tests/{ => sync}/test_exceptions.py (100%) rename tests/{ => sync}/test_exceptions_500.py (100%) rename tests/{ => sync}/test_keypair.py (100%) rename tests/{ => sync}/test_limiter.py (100%) rename tests/{ => sync}/test_load_balancer_backend.py (100%) rename tests/{ => sync}/test_log.py (100%) rename tests/{ => sync}/test_manual_aksk.py (100%) rename tests/{ => sync}/test_net.py (100%) rename tests/{ => sync}/test_net_subnet.py (100%) rename tests/{ => sync}/test_password.py (100%) rename tests/{ => sync}/test_problems.py (100%) rename tests/{ => sync}/test_retry.py (99%) rename tests/{ => sync}/test_security_group.py (100%) rename tests/{ => sync}/test_snapshot.py (100%) rename tests/{ => sync}/test_vm.py (100%) rename tests/{ => sync}/test_volume.py (100%) diff --git a/osc_sdk_python/__init__.py b/osc_sdk_python/__init__.py index 5bc5526..f75028d 100644 --- a/osc_sdk_python/__init__.py +++ b/osc_sdk_python/__init__.py @@ -7,7 +7,7 @@ from .version import get_version from .problem import Problem, ProblemDecoder from .limiter import RateLimiter -from .retry import Retry +from .runtime.sync.retry import Retry # what to Log from .outscale_gateway import LOG_ALL diff --git a/osc_sdk_python/outscale_gateway.py b/osc_sdk_python/outscale_gateway.py index 29faad8..2bae4f3 100644 --- a/osc_sdk_python/outscale_gateway.py +++ b/osc_sdk_python/outscale_gateway.py @@ -1,7 +1,7 @@ import os import sys -from .async_call import AsyncCall -from .call import Call +from .runtime.async_.call import AsyncCall +from .runtime.sync.call import Call from .limiter import RateLimiter import ruamel.yaml from .version import get_version diff --git a/osc_sdk_python/runtime/__init__.py b/osc_sdk_python/runtime/__init__.py new file mode 100644 index 0000000..f651ba2 --- /dev/null +++ b/osc_sdk_python/runtime/__init__.py @@ -0,0 +1 @@ +"""Shared SDK runtime implementations.""" diff --git a/osc_sdk_python/runtime/async_/__init__.py b/osc_sdk_python/runtime/async_/__init__.py new file mode 100644 index 0000000..2f6ad36 --- /dev/null +++ b/osc_sdk_python/runtime/async_/__init__.py @@ -0,0 +1,7 @@ +"""Asynchronous runtime implementation.""" + +from .call import AsyncCall +from .requester import AsyncRequester +from .retry import AsyncRetry + +__all__ = ["AsyncCall", "AsyncRequester", "AsyncRetry"] diff --git a/osc_sdk_python/async_call.py b/osc_sdk_python/runtime/async_/call.py similarity index 94% rename from osc_sdk_python/async_call.py rename to osc_sdk_python/runtime/async_/call.py index d4c558c..f5d3338 100644 --- a/osc_sdk_python/async_call.py +++ b/osc_sdk_python/runtime/async_/call.py @@ -5,10 +5,10 @@ import httpx from urllib3.util import parse_url -from .async_requester import AsyncRequester -from .authentication import Authentication, DEFAULT_USER_AGENT -from .credentials import Profile -from .limiter import RateLimiter +from .requester import AsyncRequester +from ...authentication import Authentication, DEFAULT_USER_AGENT +from ...credentials import Profile +from ...limiter import RateLimiter class AsyncCall(object): diff --git a/osc_sdk_python/async_requester.py b/osc_sdk_python/runtime/async_/requester.py similarity index 94% rename from osc_sdk_python/async_requester.py rename to osc_sdk_python/runtime/async_/requester.py index e1001e4..fbee7c1 100644 --- a/osc_sdk_python/async_requester.py +++ b/osc_sdk_python/runtime/async_/requester.py @@ -1,4 +1,4 @@ -from .async_retry import AsyncRetry +from .retry import AsyncRetry class AsyncRequester: diff --git a/osc_sdk_python/async_retry.py b/osc_sdk_python/runtime/async_/retry.py similarity index 97% rename from osc_sdk_python/async_retry.py rename to osc_sdk_python/runtime/async_/retry.py index b90b3a7..66df675 100644 --- a/osc_sdk_python/async_retry.py +++ b/osc_sdk_python/runtime/async_/retry.py @@ -4,8 +4,8 @@ import httpx -from .problem import LegacyProblem, LegacyProblemDecoder, Problem, ProblemDecoder -from .retry import ( +from ...problem import LegacyProblem, LegacyProblemDecoder, Problem, ProblemDecoder +from ..sync.retry import ( MAX_RETRIES, RETRY_BACKOFF_FACTOR, RETRY_BACKOFF_JITTER, diff --git a/osc_sdk_python/runtime/sync/__init__.py b/osc_sdk_python/runtime/sync/__init__.py new file mode 100644 index 0000000..0517adc --- /dev/null +++ b/osc_sdk_python/runtime/sync/__init__.py @@ -0,0 +1,7 @@ +"""Synchronous runtime implementation.""" + +from .call import Call +from .requester import Requester +from .retry import Retry + +__all__ = ["Call", "Requester", "Retry"] diff --git a/osc_sdk_python/call.py b/osc_sdk_python/runtime/sync/call.py similarity index 95% rename from osc_sdk_python/call.py rename to osc_sdk_python/runtime/sync/call.py index 123c75a..e14f270 100644 --- a/osc_sdk_python/call.py +++ b/osc_sdk_python/runtime/sync/call.py @@ -1,11 +1,11 @@ -from .authentication import Authentication -from .authentication import DEFAULT_USER_AGENT -from .credentials import Profile +from ...authentication import Authentication +from ...authentication import DEFAULT_USER_AGENT +from ...credentials import Profile from .requester import Requester from requests import Session from urllib3.util import parse_url from datetime import timedelta -from .limiter import RateLimiter +from ...limiter import RateLimiter import json import warnings diff --git a/osc_sdk_python/requester.py b/osc_sdk_python/runtime/sync/requester.py similarity index 100% rename from osc_sdk_python/requester.py rename to osc_sdk_python/runtime/sync/requester.py diff --git a/osc_sdk_python/retry.py b/osc_sdk_python/runtime/sync/retry.py similarity index 98% rename from osc_sdk_python/retry.py rename to osc_sdk_python/runtime/sync/retry.py index 1b2ac15..ba8dec8 100644 --- a/osc_sdk_python/retry.py +++ b/osc_sdk_python/runtime/sync/retry.py @@ -2,7 +2,7 @@ import time import random from requests.exceptions import JSONDecodeError -from .problem import ProblemDecoder, LegacyProblemDecoder, LegacyProblem, Problem +from ...problem import ProblemDecoder, LegacyProblemDecoder, LegacyProblem, Problem MAX_RETRIES = 3 RETRY_BACKOFF_FACTOR = 1.0 diff --git a/tests/async_/test_async_gateway.py b/tests/async_/test_async_gateway.py new file mode 100644 index 0000000..0fd10c9 --- /dev/null +++ b/tests/async_/test_async_gateway.py @@ -0,0 +1,49 @@ +import asyncio +import json + +import httpx + +from osc_sdk_python import AsyncGateway, LOG_KEEP_ONLY_LAST_REQ, LOG_MEMORY + + +def test_async_gateway_listing_and_log(): + requests = [] + + def handler(request): + requests.append(request) + return httpx.Response(200, json={"Vms": []}, request=request) + + async def run(): + gw = AsyncGateway(access_key="ak", secret_key="sk") + await gw.call.client.aclose() + gw.call.client = httpx.AsyncClient( + transport=httpx.MockTransport(handler), + trust_env=False, + ) + gw.log.config(type=LOG_MEMORY, what=LOG_KEEP_ONLY_LAST_REQ) + + try: + vms = await gw.ReadVms() + finally: + await gw.close() + + assert vms == {"Vms": []} + assert len(requests) == 1 + assert requests[0].method == "POST" + assert str(requests[0].url) == "https://api.eu-west-2.outscale.com/api/v1/ReadVms" + assert json.loads(requests[0].content.decode("utf-8")) == {} + assert gw.log.str() == """uri: /api/v1/ReadVms +payload: +{}""" + + asyncio.run(run()) + + +def test_async_gateway_context_manager_closes_client(): + async def run(): + async with AsyncGateway(access_key="ak", secret_key="sk") as gw: + assert not gw.call.client.is_closed + + assert gw.call.client.is_closed + + asyncio.run(run()) diff --git a/tests/async_/test_async_retry.py b/tests/async_/test_async_retry.py new file mode 100644 index 0000000..ad82905 --- /dev/null +++ b/tests/async_/test_async_retry.py @@ -0,0 +1,57 @@ +import asyncio + +import httpx +import pytest + +from osc_sdk_python.runtime.async_.retry import AsyncRetry + + +def test_async_retry_success_no_retry(): + calls = [] + + def handler(request): + calls.append(request) + return httpx.Response(200, json={"ok": True}, request=request) + + async def run(): + async with httpx.AsyncClient( + transport=httpx.MockTransport(handler), + trust_env=False, + ) as client: + retry = AsyncRetry(client, "POST", "https://example.test") + result = await retry.execute() + + assert result.json() == {"ok": True} + assert len(calls) == 1 + + asyncio.run(run()) + + +def test_async_retry_retries_429(monkeypatch): + calls = [] + + def handler(request): + calls.append(request) + return httpx.Response(429, json={"Errors": []}, request=request) + + async def fake_sleep(_): + return None + + async def run(): + monkeypatch.setattr("asyncio.sleep", fake_sleep) + async with httpx.AsyncClient( + transport=httpx.MockTransport(handler), + trust_env=False, + ) as client: + retry = AsyncRetry( + client, + "POST", + "https://example.test", + max_retries=2, + ) + with pytest.raises(httpx.HTTPStatusError): + await retry.execute() + + assert len(calls) == 3 + + asyncio.run(run()) diff --git a/tests/test_async_vm.py b/tests/async_/test_async_vm.py similarity index 100% rename from tests/test_async_vm.py rename to tests/async_/test_async_vm.py diff --git a/tests/test_eim_user.py b/tests/sync/test_eim_user.py similarity index 100% rename from tests/test_eim_user.py rename to tests/sync/test_eim_user.py diff --git a/tests/test_exceptions.py b/tests/sync/test_exceptions.py similarity index 100% rename from tests/test_exceptions.py rename to tests/sync/test_exceptions.py diff --git a/tests/test_exceptions_500.py b/tests/sync/test_exceptions_500.py similarity index 100% rename from tests/test_exceptions_500.py rename to tests/sync/test_exceptions_500.py diff --git a/tests/test_keypair.py b/tests/sync/test_keypair.py similarity index 100% rename from tests/test_keypair.py rename to tests/sync/test_keypair.py diff --git a/tests/test_limiter.py b/tests/sync/test_limiter.py similarity index 100% rename from tests/test_limiter.py rename to tests/sync/test_limiter.py diff --git a/tests/test_load_balancer_backend.py b/tests/sync/test_load_balancer_backend.py similarity index 100% rename from tests/test_load_balancer_backend.py rename to tests/sync/test_load_balancer_backend.py diff --git a/tests/test_log.py b/tests/sync/test_log.py similarity index 100% rename from tests/test_log.py rename to tests/sync/test_log.py diff --git a/tests/test_manual_aksk.py b/tests/sync/test_manual_aksk.py similarity index 100% rename from tests/test_manual_aksk.py rename to tests/sync/test_manual_aksk.py diff --git a/tests/test_net.py b/tests/sync/test_net.py similarity index 100% rename from tests/test_net.py rename to tests/sync/test_net.py diff --git a/tests/test_net_subnet.py b/tests/sync/test_net_subnet.py similarity index 100% rename from tests/test_net_subnet.py rename to tests/sync/test_net_subnet.py diff --git a/tests/test_password.py b/tests/sync/test_password.py similarity index 100% rename from tests/test_password.py rename to tests/sync/test_password.py diff --git a/tests/test_problems.py b/tests/sync/test_problems.py similarity index 100% rename from tests/test_problems.py rename to tests/sync/test_problems.py diff --git a/tests/test_retry.py b/tests/sync/test_retry.py similarity index 99% rename from tests/test_retry.py rename to tests/sync/test_retry.py index 6709f02..4df2266 100644 --- a/tests/test_retry.py +++ b/tests/sync/test_retry.py @@ -3,7 +3,7 @@ from unittest.mock import Mock, patch from requests.exceptions import RequestException, HTTPError, ConnectionError -from osc_sdk_python.retry import Retry +from osc_sdk_python.runtime.sync.retry import Retry class TestRetry: diff --git a/tests/test_security_group.py b/tests/sync/test_security_group.py similarity index 100% rename from tests/test_security_group.py rename to tests/sync/test_security_group.py diff --git a/tests/test_snapshot.py b/tests/sync/test_snapshot.py similarity index 100% rename from tests/test_snapshot.py rename to tests/sync/test_snapshot.py diff --git a/tests/test_vm.py b/tests/sync/test_vm.py similarity index 100% rename from tests/test_vm.py rename to tests/sync/test_vm.py diff --git a/tests/test_volume.py b/tests/sync/test_volume.py similarity index 100% rename from tests/test_volume.py rename to tests/sync/test_volume.py From 7f8d953fc4db87a8c27aca8af41828c064704e12 Mon Sep 17 00:00:00 2001 From: Yash Gaykar Date: Mon, 18 May 2026 13:54:16 +0530 Subject: [PATCH 03/26] :memo: docs: add async gateway usage examples --- README.md | 24 +++++++++++++- docs/examples.md | 82 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 105 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 63f11f1..7d0b7cd 100644 --- a/README.md +++ b/README.md @@ -38,6 +38,7 @@ It allows you to: - Configure multiple profiles through environment variables or credential files. +- Use either the synchronous `Gateway` or asynchronous `AsyncGateway`. - Customize retry and rate-limit behavior. - Enable detailed logging of requests and responses. @@ -152,9 +153,29 @@ with Gateway(email="your@email.com", password="yourAccountPassword") as gw: keys = gw.ReadAccessKeys() ``` +### Async Usage + +Use `AsyncGateway` when calling the SDK from async Python code: + +```python +import asyncio + +from osc_sdk_python import AsyncGateway + + +async def main(): + async with AsyncGateway(profile="default") as gw: + vms = await gw.ReadVms() + print(vms) + + +if __name__ == "__main__": + asyncio.run(main()) +``` + ### Retry Options -The following options can be provided when initializing the `Gateway` to customize the retry behavior of the SDK: +The following options can be provided when initializing the `Gateway` or `AsyncGateway` to customize the retry behavior of the SDK: * `max_retries` (integer, default `3`) * `retry_backoff_factor` (float, default `1.0`) @@ -205,6 +226,7 @@ More usage patterns and logging examples are documented in: Some example topics covered in `docs/examples.md`: * Listing VMs and volumes +* Async usage with `AsyncGateway` * Using profiles and regions * Raw calls with `gw.raw("ActionName", **params)` * Enabling and reading logs diff --git a/docs/examples.md b/docs/examples.md index 24de958..34cd11e 100644 --- a/docs/examples.md +++ b/docs/examples.md @@ -11,6 +11,25 @@ with Gateway() as gw: print(vms) ``` +Async usage with the default profile: + +```python +import asyncio + +from osc_sdk_python import AsyncGateway + + +async def main(): + async with AsyncGateway() as gw: + # Example: list VMs + vms = await gw.ReadVms() + print(vms) + + +if __name__ == "__main__": + asyncio.run(main()) +``` + Using a specific profile: ```python @@ -19,10 +38,19 @@ from osc_sdk_python import Gateway gw = Gateway(profile="profile_1") ``` +Using a specific profile with the async client: + +```python +from osc_sdk_python import AsyncGateway + +gw = AsyncGateway(profile="profile_1") +``` + Calling actions: * **Typed methods**: `gw.ReadVms(...)`, `gw.CreateVms(...)`, etc. * **Raw calls**: `gw.raw("ActionName", **params)` +* **Async calls**: `await gw.ReadVms(...)`, `await gw.raw("ActionName", **params)` Example: @@ -45,6 +73,37 @@ with Gateway(profile="profile_1") as gw: ) ``` +Async example: + +```python +import asyncio + +from osc_sdk_python import AsyncGateway + + +async def main(): + async with AsyncGateway(profile="profile_1") as gw: + # Calls with API action as method + result = await gw.ReadSecurityGroups( + Filters={"SecurityGroupNames": ["default"]} + ) + result = await gw.CreateVms(ImageId="ami-3e158364", VmType="tinav4.c2r4") + + # Or raw calls: + result = await gw.raw("ReadVms") + result = await gw.raw( + "CreateVms", + ImageId="ami-xx", + BlockDeviceMappings=[{"/dev/sda1": {"Size": 10}}], + SecurityGroupIds=["sg-aaa", "sg-bbb"], + Wrong="wrong", + ) + + +if __name__ == "__main__": + asyncio.run(main()) +``` + --- ## 💡 Examples @@ -65,6 +124,29 @@ if __name__ == "__main__": print(volume["VolumeId"]) ``` +### List all VM and Volume IDs asynchronously + +```python +import asyncio + +from osc_sdk_python import AsyncGateway + + +async def main(): + async with AsyncGateway() as gw: + print("Your virtual machines:") + for vm in (await gw.ReadVms())["Vms"]: + print(vm["VmId"]) + + print("\nYour volumes:") + for volume in (await gw.ReadVolumes())["Volumes"]: + print(volume["VolumeId"]) + + +if __name__ == "__main__": + asyncio.run(main()) +``` + ### Enabling logs ```python From d5c5406a0b1830d2f701198862662fea4ff77460 Mon Sep 17 00:00:00 2001 From: Yash Gaykar Date: Mon, 18 May 2026 14:21:53 +0530 Subject: [PATCH 04/26] :recycle: refactor: load OSC spec from service resources --- MANIFEST.in | 2 +- docs/troubleshooting.md | 4 +- osc_sdk_python/outscale_gateway.py | 4 +- osc_sdk_python/resources/oks/api.yaml | 4303 ++++ osc_sdk_python/resources/oks/cfg.yaml | 2 + osc_sdk_python/resources/oks/patch.yaml | 19 + osc_sdk_python/resources/osc/api.yaml | 26388 ++++++++++++++++++++++ osc_sdk_python/resources/osc/cfg.yaml | 2 + osc_sdk_python/resources/osc/patch.yaml | 899 + 9 files changed, 31618 insertions(+), 5 deletions(-) create mode 100644 osc_sdk_python/resources/oks/api.yaml create mode 100644 osc_sdk_python/resources/oks/cfg.yaml create mode 100644 osc_sdk_python/resources/oks/patch.yaml create mode 100644 osc_sdk_python/resources/osc/api.yaml create mode 100644 osc_sdk_python/resources/osc/cfg.yaml create mode 100644 osc_sdk_python/resources/osc/patch.yaml diff --git a/MANIFEST.in b/MANIFEST.in index 32f8eaa..953094b 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,3 +1,3 @@ -include osc_sdk_python/osc-api/outscale.yaml +recursive-include osc_sdk_python/resources *.yaml include osc_sdk_python/resources/gateway_errors.yaml include osc_sdk_python/VERSION diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md index 6a6e7a9..5cd7ae2 100644 --- a/docs/troubleshooting.md +++ b/docs/troubleshooting.md @@ -5,7 +5,7 @@ Some users may encounter UTF-8 issues that look like this: ```bash -Problem reading (…)osc_sdk_python/osc-api/outscale.yaml:'ascii' codec can't decode byte 0xe2 in position 14856: ordinal not in range(128) +Problem reading (…)osc_sdk_python/resources/osc/api.yaml:'ascii' codec can't decode byte 0xe2 in position 14856: ordinal not in range(128) ``` To avoid this issue, configure your locale as follows: @@ -18,4 +18,4 @@ If you do not want your locale to be set system-wide, you can do: ```bash LC_ALL=en_US.UTF-8 pip install osc-sdk-python -``` \ No newline at end of file +``` diff --git a/osc_sdk_python/outscale_gateway.py b/osc_sdk_python/outscale_gateway.py index 2bae4f3..7bd0ad7 100644 --- a/osc_sdk_python/outscale_gateway.py +++ b/osc_sdk_python/outscale_gateway.py @@ -256,7 +256,7 @@ def __exit__(self, type, value, traceback): class OutscaleGateway(BaseAPI): def __init__(self, **kwargs): super().__init__( - os.path.join(os.path.dirname(__file__), "resources/outscale.yaml"), **kwargs + os.path.join(os.path.dirname(__file__), "resources/osc/api.yaml"), **kwargs ) @@ -304,7 +304,7 @@ async def close(self): class AsyncOutscaleGateway(AsyncBaseAPI): def __init__(self, **kwargs): super().__init__( - os.path.join(os.path.dirname(__file__), "resources/outscale.yaml"), **kwargs + os.path.join(os.path.dirname(__file__), "resources/osc/api.yaml"), **kwargs ) diff --git a/osc_sdk_python/resources/oks/api.yaml b/osc_sdk_python/resources/oks/api.yaml new file mode 100644 index 0000000..290c460 --- /dev/null +++ b/osc_sdk_python/resources/oks/api.yaml @@ -0,0 +1,4303 @@ +openapi: 3.0.3 +info: + title: OKS API + description: API for creating your clusters on Kubernetes. Each cluster is + linked to a project. in a project you can have several clusters + version: '1.0' +paths: + /projects: + post: + tags: + - Projects + summary: Create Project + description: Creates a new project with the provided details. The request + must include the project data in the request body. Returns the details + of the created project. + operationId: CreateProject + parameters: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ProjectInput' + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/ProjectResponse' + '503': + description: ResourceIsNotReady + content: + application/json: + example: + Errors: + - Type: ResourceIsNotReady + Details: The service has been under global maintenance for 15 + mins. Please, try again later + Code: '503' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '423': + description: LockedResource + content: + application/json: + example: + Errors: + - Type: LockedResource + Details: The project has been under maintenance for 15 mins. + Please, try again later + Code: '423' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: ResourceConflict + content: + application/json: + example: + Errors: + - Type: ResourceConflict + Details: Project with this name already exists. + Code: '409' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + description: InternalError + content: + application/json: + example: + Errors: + - Type: InternalError + Details: Failed to create project + Code: '500' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: ForbiddenError + content: + application/json: + example: + Errors: + - Type: ForbiddenError + Details: You cannot have more than 2 projects. + Code: '403' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: ValidationError + content: + application/json: + example: + Errors: + - Type: ValidationError + Details: "Invalid CIDR: '10.50.15.24/32' must have a prefix length + between /16 and /23." + Code: '422' + - Type: ValidationError + Details: + - loc: + - string + - 0 + msg: string + type: string + Code: '422' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + get: + tags: + - Projects + summary: Get Projects + description: Retrieves a list of all projects with optional filters for + name, status, CIDR, and deletion status. Returns a list of matching + projects based on the specified filters. + operationId: ListProjects + parameters: + - name: name + in: query + required: false + schema: + type: string + nullable: true + - name: status + in: query + required: false + schema: + type: string + nullable: true + - name: cidr + in: query + required: false + schema: + type: string + nullable: true + - name: deleted + in: query + required: false + schema: + type: boolean + nullable: true + - name: cursor + in: query + required: false + schema: + type: string + nullable: true + - name: page + in: query + required: false + schema: + type: integer + nullable: true + - name: limit + in: query + required: false + schema: + type: integer + maximum: 100 + exclusiveMinimum: false + nullable: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/ProjectResponseList' + '500': + description: InternalError + content: + application/json: + example: + Errors: + - Type: InternalError + Details: Internal server error + Code: '500' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: ValidationError + content: + application/json: + example: + Errors: + - Type: ValidationError + Details: + - loc: + - string + - 0 + msg: string + type: string + Code: '422' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + /projects/{project_id}: + get: + tags: + - Projects + summary: Get Project + description: Retrieves detailed information about a specific project by + its ID. Returns the details of the project if found. + operationId: GetProject + parameters: + - name: project_id + in: path + required: true + schema: + type: string + title: Project Id + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/ProjectResponse' + '400': + description: InvalidResource + content: + application/json: + example: + Errors: + - Type: InvalidResource + Details: Invalid project data format + Code: '400' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: NotFoundError + content: + application/json: + example: + Errors: + - Type: NotFoundError + Details: Project $uuid not found. + Code: '404' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + description: InternalError + content: + application/json: + example: + Errors: + - Type: InternalError + Details: Internal server error + Code: '500' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: ValidationError + content: + application/json: + example: + Errors: + - Type: ValidationError + Details: + - loc: + - string + - 0 + msg: string + type: string + Code: '422' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + patch: + tags: + - Projects + summary: Update Project + description: Updates the details of an existing project by its ID. The + request must include the updated project data in the request body. + Returns the updated project information. + operationId: UpdateProject + parameters: + - name: project_id + in: path + required: true + schema: + type: string + title: Project Id + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ProjectUpdate' + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/ProjectResponse' + '503': + description: ResourceIsNotReady + content: + application/json: + example: + Errors: + - Type: ResourceIsNotReady + Details: The service has been under global maintenance for 15 + mins. Please, try again later + Code: '503' + - Type: ResourceIsNotReady + Details: 'Project not ready: pending' + Code: '503' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '423': + description: LockedResource + content: + application/json: + example: + Errors: + - Type: LockedResource + Details: The project has been under maintenance for 15 mins. + Please, try again later + Code: '423' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: NotFoundError + content: + application/json: + example: + Errors: + - Type: NotFoundError + Details: Project $uuid not found. + Code: '404' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: ResourceConflict + content: + application/json: + example: + Errors: + - Type: ResourceConflict + Details: The requested action cannot be performed because the + project has been deleted. + Code: '409' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + description: InternalError + content: + application/json: + example: + Errors: + - Type: InternalError + Details: Failed to update project + Code: '500' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: ValidationError + content: + application/json: + example: + Errors: + - Type: ValidationError + Details: + - loc: + - string + - 0 + msg: string + type: string + Code: '422' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + delete: + tags: + - Projects + summary: Delete Project + description: Deletes a specific project by its ID. Returns a confirmation + of the project deletion. + operationId: DeleteProject + parameters: + - name: project_id + in: path + required: true + schema: + type: string + title: Project Id + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/DetailResponse' + '503': + description: ResourceIsNotReady + content: + application/json: + example: + Errors: + - Type: ResourceIsNotReady + Details: The service has been under global maintenance for 15 + mins. Please, try again later + Code: '503' + - Type: ResourceIsNotReady + Details: 'Project not ready: pending' + Code: '503' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '423': + description: LockedResource + content: + application/json: + example: + Errors: + - Type: LockedResource + Details: The project has been under maintenance for 15 mins. + Please, try again later + Code: '423' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: NotFoundError + content: + application/json: + example: + Errors: + - Type: NotFoundError + Details: Project $uuid not found. + Code: '404' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: ResourceConflict + content: + application/json: + example: + Errors: + - Type: ResourceConflict + Details: The requested action cannot be performed because the + project has been deleted. + Code: '409' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: ForbiddenError + content: + application/json: + example: + Errors: + - Type: ForbiddenError + Details: Project $uuid can't be deleted because + disable_api_termination is enabled + Code: '403' + - Type: ForbiddenError + Details: 'The requested action cannot be performed because the project + has 1 active cluster(s): test' + Code: '403' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: ValidationError + content: + application/json: + example: + Errors: + - Type: ValidationError + Details: + - loc: + - string + - 0 + msg: string + type: string + Code: '422' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + /projects/{project_id}/quotas: + get: + tags: + - Projects + summary: Get Project Quotas + description: Retrieves the quota details for a specific project by its ID. + Returns the quota information associated with the specified project. + operationId: GetProjectQuotas + parameters: + - name: project_id + in: path + required: true + schema: + type: string + title: Project Id + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/projects__project_schema__QuotasResponse' + '404': + description: NotFoundError + content: + application/json: + example: + Errors: + - Type: NotFoundError + Details: Project $uuid not found. + Code: '404' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '408': + description: TimeoutError + content: + application/json: + example: + Errors: + - Type: TimeoutError + Details: Request Timeout. The server timed out waiting for the + request. + Code: '408' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + description: InternalError + content: + application/json: + example: + Errors: + - Type: InternalError + Details: Error processing project data + Code: '500' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: ValidationError + content: + application/json: + example: + Errors: + - Type: ValidationError + Details: + - loc: + - string + - 0 + msg: string + type: string + Code: '422' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + /projects/{project_id}/snapshots: + get: + tags: + - Projects + summary: Get Project Snapshots + description: Retrieves the snapshot details for a specific project by its + ID. Returns the snapshot information associated with the specified + project. + operationId: GetProjectSnapshots + parameters: + - name: project_id + in: path + required: true + schema: + type: string + title: Project Id + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/SnapshotsResponse' + '404': + description: NotFoundError + content: + application/json: + example: + Errors: + - Type: NotFoundError + Details: Project $uuid not found. + Code: '404' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '408': + description: TimeoutError + content: + application/json: + example: + Errors: + - Type: TimeoutError + Details: Request Timeout. The server timed out waiting for the + request. + Code: '408' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + description: InternalError + content: + application/json: + example: + Errors: + - Type: InternalError + Details: Error processing project data + Code: '500' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: ValidationError + content: + application/json: + example: + Errors: + - Type: ValidationError + Details: + - loc: + - string + - 0 + msg: string + type: string + Code: '422' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + /projects/{project_id}/public_ips: + get: + tags: + - Projects + summary: Get Project Public Ips + description: Retrieves the Public IP details for a specific project by its + ID. Returns the public IP information associated with the specified + project. + operationId: GetProjectPublicIps + parameters: + - name: project_id + in: path + required: true + schema: + type: string + title: Project Id + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/PublicIpsResponse' + '404': + description: NotFoundError + content: + application/json: + example: + Errors: + - Type: NotFoundError + Details: Project $uuid not found. + Code: '404' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '408': + description: TimeoutError + content: + application/json: + example: + Errors: + - Type: TimeoutError + Details: Request Timeout. The server timed out waiting for the + request. + Code: '408' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + description: InternalError + content: + application/json: + example: + Errors: + - Type: InternalError + Details: Error processing project data + Code: '500' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: ValidationError + content: + application/json: + example: + Errors: + - Type: ValidationError + Details: + - loc: + - string + - 0 + msg: string + type: string + Code: '422' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + /projects/{project_id}/nets: + get: + tags: + - Projects + summary: Get Project Ntets + description: Retrieves the Nets details for a specific project by its ID. + Returns the Nets information associated with the specified project. + operationId: GetProjectNets + parameters: + - name: project_id + in: path + required: true + schema: + type: string + title: Project Id + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/NetsResponse' + '404': + description: NotFoundError + content: + application/json: + example: + Errors: + - Type: NotFoundError + Details: Project $uuid not found. + Code: '404' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '408': + description: TimeoutError + content: + application/json: + example: + Errors: + - Type: TimeoutError + Details: Request Timeout. The server timed out waiting for the + request. + Code: '408' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + description: InternalError + content: + application/json: + example: + Errors: + - Type: InternalError + Details: Error processing project data + Code: '500' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: ValidationError + content: + application/json: + example: + Errors: + - Type: ValidationError + Details: + - loc: + - string + - 0 + msg: string + type: string + Code: '422' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + /clusters: + post: + tags: + - Clusters + summary: Create Cluster + description: Creates a new cluster with the provided configuration. The + request must include the cluster details in the request body. all + clusters are associated to a project + operationId: CreateCluster + parameters: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ClusterInput' + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/ClusterResponse' + '503': + description: ResourceIsNotReady + content: + application/json: + example: + Errors: + - Type: ResourceIsNotReady + Details: The service has been under global maintenance for 15 + mins. Please, try again later + Code: '503' + - Type: ResourceIsNotReady + Details: 'Project not ready: pending' + Code: '503' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '423': + description: LockedResource + content: + application/json: + example: + Errors: + - Type: LockedResource + Details: The project has been under maintenance for 15 mins. + Please, try again later + Code: '423' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: NotFoundError + content: + application/json: + example: + Errors: + - Type: NotFoundError + Details: Project $uuid not found. + Code: '404' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: ResourceConflict + content: + application/json: + example: + Errors: + - Type: ResourceConflict + Details: The name 'default' cannot be used because it is a + reserved keyword. + Code: '409' + - Type: ResourceConflict + Details: Cluster with this name already exists. + Code: '409' + - Type: ResourceConflict + Details: The requested action cannot be performed because the + project has been deleted. + Code: '409' + - Type: ResourceConflict + Details: "Network overlap detected between source1 (net1) and source2 + (net2). \nPlease use non-overlapping network ranges." + Code: '409' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: ForbiddenError + content: + application/json: + example: + Errors: + - Type: ForbiddenError + Details: You cannot have more than 2 clusters. + Code: '403' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: ValidationError + content: + application/json: + example: + Errors: + - Type: ValidationError + Details: "Invalid CIDR: 'cidr' is not an IPv4 range. Only IPv4 CIDR + blocks are supported." + Code: '422' + - Type: ValidationError + Details: "Invalid CIDR: 'cidr' is not a private IP range as defined + by RFC1918." + Code: '422' + - Type: ValidationError + Details: "Invalid CIDR: 'cidr' has a prefix length of /network.prefixlen. + The minimal accepted prefix length is /23" + Code: '422' + - Type: ValidationError + Details: "Invalid CIDR: 'cidr' is not allowed as it belongs to the + restricted subnet 172.31.0.0/16." + Code: '422' + - Type: ValidationError + Details: "Invalid CIDR: 'cidr' is not a valid CIDR block." + Code: '422' + - Type: ValidationError + Details: Failed to create cluster. cluster_dns is not part of + cidr_service + Code: '422' + - Type: ValidationError + Details: 'Private RFC1918 IPs are not allowed: cidr' + Code: '422' + - Type: ValidationError + Details: 'Loopback IPs are not allowed: cidr' + Code: '422' + - Type: ValidationError + Details: 'IPv6 addresses are not allowed: cidr' + Code: '422' + - Type: ValidationError + Details: 'Invalid network address: cidr' + Code: '422' + - Type: ValidationError + Details: 'Invalid cidr in the admin_whitelist: cidr' + Code: '422' + - Type: ValidationError + Details: 'Invalid plugin(s): list of invalid_plugins. Allowed plugins + to enable/disable are: list of allowed_plugins' + Code: '422' + - Type: ValidationError + Details: "Failed to create cluster. Control plane plan 'control_planes' + does not exist. Valid plans are: list of valid_plans" + Code: '422' + - Type: ValidationError + Details: Multi AZ is not allowed for the requested + control_plane size. + Code: '422' + - Type: ValidationError + Details: The requested subregions must be unique. + Code: '422' + - Type: ValidationError + Details: "The requested subregions 'cp_subregions' cannot be specified + for multi AZ configuration (cp_multi_az: 'cp_multi_az'). Multi + AZ cluster must have at least 3 subregions." + Code: '422' + - Type: ValidationError + Details: "The requested subregions 'cp_subregions' cannot be specified + for the mono AZ configuration (cp_multi_az: 'cp_multi_az')." + Code: '422' + - Type: ValidationError + Details: The number of requested subregions exceeds the + available subregions. + Code: '422' + - Type: ValidationError + Details: The subregion 'subregion' does not exist. + Code: '422' + - Type: ValidationError + Details: This version of Kubernetes is not implemented. + Code: '422' + - Type: ValidationError + Details: Invalid version format. Use 'X.Y' (e.g., '1.30'). + Code: '422' + - Type: ValidationError + Details: Invalid cluster version update. Only +1 minor version + allowed. + Code: '422' + - Type: ValidationError + Details: + - loc: + - string + - 0 + msg: string + type: string + Code: '422' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + description: InternalError + content: + application/json: + example: + Errors: + - Type: InternalError + Details: Failed to create cluster. Unable to set default + cp_subregion. + Code: '500' + - Type: InternalError + Details: Failed to create cluster. + Code: '500' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '501': + description: ResourceNotImplemented + content: + application/json: + example: + Errors: + - Type: ResourceNotImplemented + Details: This cp_subregions is not implemented. + Code: '501' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '400': + description: InvalidResource + content: + application/json: + example: + Errors: + - Type: InvalidResource + Details: The 'version' field is required. + Code: '400' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + get: + tags: + - Clusters + summary: Get Clusters + description: Retrieves a list of clusters assosiated to project ID. You + can optionally filter clusters by name, status, version, or deletion + status. Returns a list of matching clusters + operationId: ListClustersByProjectID + parameters: + - name: project_id + in: query + required: false + schema: + type: string + nullable: true + - name: name + in: query + required: false + schema: + type: string + nullable: true + - name: status + in: query + required: false + schema: + type: string + nullable: true + - name: version + in: query + required: false + schema: + type: string + nullable: true + - name: deleted + in: query + required: false + schema: + type: boolean + nullable: true + - name: cursor + in: query + required: false + schema: + type: string + nullable: true + - name: page + in: query + required: false + schema: + type: integer + nullable: true + - name: limit + in: query + required: false + schema: + type: integer + maximum: 100 + exclusiveMinimum: false + nullable: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/ClusterResponseList' + '404': + description: NotFoundError + content: + application/json: + example: + Errors: + - Type: NotFoundError + Details: Cluster $uuid not found. + Code: '404' + - Type: NotFoundError + Details: Project $uuid not found + Code: '404' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '400': + description: InvalidResource + content: + application/json: + example: + Errors: + - Type: InvalidResource + Details: Invalid cluster data format + Code: '400' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + description: InternalError + content: + application/json: + example: + Errors: + - Type: InternalError + Details: Internal server error + Code: '500' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: ValidationError + content: + application/json: + example: + Errors: + - Type: ValidationError + Details: + - loc: + - string + - 0 + msg: string + type: string + Code: '422' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + /clusters/all: + get: + tags: + - Clusters + summary: Get All Clusters + description: Retrieves a list of all clusters, with optional filters for + name, status, version, and deletion status. Returns a list of matching + clusters + operationId: ListAllClusters + parameters: + - name: name + in: query + required: false + schema: + type: string + nullable: true + - name: status + in: query + required: false + schema: + type: string + nullable: true + - name: version + in: query + required: false + schema: + type: string + nullable: true + - name: deleted + in: query + required: false + schema: + type: boolean + nullable: true + - name: cursor + in: query + required: false + schema: + type: string + nullable: true + - name: page + in: query + required: false + schema: + type: integer + nullable: true + - name: limit + in: query + required: false + schema: + type: integer + maximum: 100 + exclusiveMinimum: false + nullable: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/ClusterResponseList' + '500': + description: InternalError + content: + application/json: + example: + Errors: + - Type: InternalError + Details: Internal server error + Code: '500' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: ValidationError + content: + application/json: + example: + Errors: + - Type: ValidationError + Details: + - loc: + - string + - 0 + msg: string + type: string + Code: '422' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: NotFoundError + content: + application/json: + example: + Errors: + - Type: NotFoundError + Details: Cluster $uuid not found. + Code: '404' + - Type: NotFoundError + Details: Project $uuid not found + Code: '404' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '400': + description: InvalidResource + content: + application/json: + example: + Errors: + - Type: InvalidResource + Details: Invalid cluster data format + Code: '400' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + /clusters/{cluster_id}: + get: + tags: + - Clusters + summary: Get Cluster + description: Retrieves detailed information about a specific cluster by + its ID. Returns the cluster details if found. + operationId: GetCluster + parameters: + - name: cluster_id + in: path + required: true + schema: + type: string + title: Cluster Id + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/ClusterResponse' + '404': + description: NotFoundError + content: + application/json: + example: + Errors: + - Type: NotFoundError + Details: Cluster $uuid not found. + Code: '404' + - Type: NotFoundError + Details: Project $uuid not found + Code: '404' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '400': + description: InvalidResource + content: + application/json: + example: + Errors: + - Type: InvalidResource + Details: Invalid cluster data format + Code: '400' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + description: InternalError + content: + application/json: + example: + Errors: + - Type: InternalError + Details: Error processing cluster data + Code: '500' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: ValidationError + content: + application/json: + example: + Errors: + - Type: ValidationError + Details: + - loc: + - string + - 0 + msg: string + type: string + Code: '422' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + patch: + tags: + - Clusters + summary: Update Cluster + description: Updates the configuration of an existing cluster by its ID. + The request must include the updated cluster details in the request + body. Returns the updated cluster information + operationId: UpdateCluster + parameters: + - name: cluster_id + in: path + required: true + schema: + type: string + title: Cluster Id + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ClusterUpdate' + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/ClusterResponse' + '503': + description: ResourceIsNotReady + content: + application/json: + example: + Errors: + - Type: ResourceIsNotReady + Details: The service has been under global maintenance for 15 + mins. Please, try again later + Code: '503' + - Type: ResourceIsNotReady + Details: 'Project not ready: status' + Code: '503' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '423': + description: LockedResource + content: + application/json: + example: + Errors: + - Type: LockedResource + Details: The project has been under maintenance for 15 mins. + Please, try again later + Code: '423' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: NotFoundError + content: + application/json: + example: + Errors: + - Type: NotFoundError + Details: Cluster $uuid not found. + Code: '404' + - Type: NotFoundError + Details: Project $uuid not found + Code: '404' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: ResourceConflict + content: + application/json: + example: + Errors: + - Type: ResourceConflict + Details: The requested action cannot be performed because the + project has been deleted. + Code: '409' + - Type: ResourceConflict + Details: The requested action cannot be performed because the + cluster has been deleted. + Code: '409' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '400': + description: InvalidResource + content: + application/json: + example: + Errors: + - Type: InvalidResource + Details: Invalid value for control_planes + Code: '400' + - Type: InvalidResource + Details: Downgrade from a multi-master setup (cp.3) to a + single master (cp.mono.master) is not allowed. + Code: '400' + - Type: InvalidResource + Details: The 'version' field is required. + Code: '400' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: ValidationError + content: + application/json: + example: + Errors: + - Type: ValidationError + Details: 'Invalid plugin(s): list of invalid_plugins. Allowed plugins + to enable/disable are: list of allowed_plugins' + Code: '422' + - Type: ValidationError + Details: 'Private RFC1918 IPs are not allowed: cidr' + Code: '422' + - Type: ValidationError + Details: 'Loopback IPs are not allowed: cidr' + Code: '422' + - Type: ValidationError + Details: 'IPv6 addresses are not allowed: cidr' + Code: '422' + - Type: ValidationError + Details: 'Invalid network address: cidr' + Code: '422' + - Type: ValidationError + Details: 'Invalid cidr in the admin_whitelist: cidr' + Code: '422' + - Type: ValidationError + Details: This version of Kubernetes is not implemented. + Code: '422' + - Type: ValidationError + Details: Invalid cluster version update. Only +1 minor version + allowed. + Code: '422' + - Type: ValidationError + Details: + - loc: + - string + - 0 + msg: string + type: string + Code: '422' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + description: InternalError + content: + application/json: + example: + Errors: + - Type: InternalError + Details: Failed to update cluster + Code: '500' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + delete: + tags: + - Clusters + summary: Delete Cluster + description: Deletes a specific cluster by its ID. Returns confirmation of + the deletion. + operationId: DeleteCluster + parameters: + - name: cluster_id + in: path + required: true + schema: + type: string + title: Cluster Id + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/DetailResponse' + '503': + description: ResourceIsNotReady + content: + application/json: + example: + Errors: + - Type: ResourceIsNotReady + Details: The service has been under global maintenance for 15 + mins. Please, try again later + Code: '503' + - Type: ResourceIsNotReady + Details: 'Project not ready: status' + Code: '503' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '423': + description: LockedResource + content: + application/json: + example: + Errors: + - Type: LockedResource + Details: The project has been under maintenance for 15 mins. + Please, try again later + Code: '423' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: NotFoundError + content: + application/json: + example: + Errors: + - Type: NotFoundError + Details: Cluster $uuid not found. + Code: '404' + - Type: NotFoundError + Details: Project $uuid not found + Code: '404' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: ResourceConflict + content: + application/json: + example: + Errors: + - Type: ResourceConflict + Details: The requested action cannot be performed because the + project has been deleted. + Code: '409' + - Type: ResourceConflict + Details: The requested action cannot be performed because the + cluster has been deleted. + Code: '409' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: ValidationError + content: + application/json: + example: + Errors: + - Type: ValidationError + Details: + - loc: + - string + - 0 + msg: string + type: string + Code: '422' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + description: InternalError + content: + application/json: + example: + Errors: + - Type: InternalError + Details: Internal server error + Code: '500' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: ForbiddenError + content: + application/json: + example: + Errors: + - Type: ForbiddenError + Details: Cluster $uuid can't be deleted because + disable_api_termination is enable + Code: '403' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + /clusters/{cluster_id}/kubeconfig: + get: + tags: + - Clusters + summary: Get Cluster Kubeconfig + description: Retrieves the kubeconfig for a specific cluster by its ID. + Optionally, you can specify a user, group, and TTL (time-to-live) for + the kubeconfig. Returns the kubeconfig details as a dictionary. + operationId: GetKubeconfig + parameters: + - name: cluster_id + in: path + required: true + schema: + type: string + title: Cluster Id + - name: user + in: query + required: false + schema: + type: string + nullable: true + - name: group + in: query + required: false + schema: + type: string + nullable: true + - name: ttl + in: query + required: false + schema: + type: string + nullable: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/KubeconfigResponse' + '404': + description: NotFoundError + content: + application/json: + example: + Errors: + - Type: NotFoundError + Details: Cluster $uuid not found. + Code: '404' + - Type: NotFoundError + Details: Project $uuid not found + Code: '404' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '400': + description: InvalidResource + content: + application/json: + example: + Errors: + - Type: InvalidResource + Details: Invalid cluster data format + Code: '400' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + description: InternalError + content: + application/json: + example: + Errors: + - Type: InternalError + Details: Error processing project data + Code: '500' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: ValidationError + content: + application/json: + example: + Errors: + - Type: ValidationError + Details: "Invalid user 'user': Usernames cannot start with 'system:' + or 'oks:' as these are reserved." + Code: '422' + - Type: ValidationError + Details: "Invalid group 'group': Group names cannot start with 'system:' + or 'oks:' as these are reserved." + Code: '422' + - Type: ValidationError + Details: + - loc: + - string + - 0 + msg: string + type: string + Code: '422' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '408': + description: TimeoutError + content: + application/json: + example: + Errors: + - Type: TimeoutError + Details: Request Timeout. The server timed out waiting for the + request. + Code: '408' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '503': + description: ResourceIsNotReady + content: + application/json: + example: + Errors: + - Type: ResourceIsNotReady + Details: The cluster is currently being created and is not yet + available. Please try in few minutes. + Code: '503' + - Type: ResourceIsNotReady + Details: 'Project not ready: status' + Code: '503' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: ResourceConflict + content: + application/json: + example: + Errors: + - Type: ResourceConflict + Details: The requested action cannot be performed because the + project has been deleted. + Code: '409' + - Type: ResourceConflict + Details: The requested action cannot be performed because the + cluster has been deleted. + Code: '409' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + post: + tags: + - Clusters + summary: Post Cluster Kubeconfig + description: Retrieves the kubeconfig for a specific cluster by its ID + with optional NaCl public key encryption. Optionally, you can specify a + user, group, and TTL (time-to-live) for the kubeconfig. If the + x_encrypt_nacl header is provided, the kubeconfig will be encrypted + using the given NaCl public key. Returns the kubeconfig details as a + dictionary. + operationId: GetKubeconfigWithPubkeyNACL + parameters: + - name: cluster_id + in: path + required: true + schema: + type: string + title: Cluster Id + - name: user + in: query + required: false + schema: + type: string + nullable: true + - name: group + in: query + required: false + schema: + type: string + nullable: true + - name: ttl + in: query + required: false + schema: + type: string + nullable: true + - name: x-encrypt-nacl + in: header + required: false + schema: + type: string + nullable: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/KubeconfigResponse' + '404': + description: NotFoundError + content: + application/json: + example: + Errors: + - Type: NotFoundError + Details: Cluster $uuid not found. + Code: '404' + - Type: NotFoundError + Details: Project $uuid not found + Code: '404' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '400': + description: InvalidResource + content: + application/json: + example: + Errors: + - Type: InvalidResource + Details: Invalid cluster data format + Code: '400' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + description: InternalError + content: + application/json: + example: + Errors: + - Type: InternalError + Details: Error processing project data + Code: '500' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: ValidationError + content: + application/json: + example: + Errors: + - Type: ValidationError + Details: "Invalid user 'user': Usernames cannot start with 'system:' + or 'oks:' as these are reserved." + Code: '422' + - Type: ValidationError + Details: "Invalid group 'group': Group names cannot start with 'system:' + or 'oks:' as these are reserved." + Code: '422' + - Type: ValidationError + Details: + - loc: + - string + - 0 + msg: string + type: string + Code: '422' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '408': + description: TimeoutError + content: + application/json: + example: + Errors: + - Type: TimeoutError + Details: Request Timeout. The server timed out waiting for the + request. + Code: '408' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '503': + description: ResourceIsNotReady + content: + application/json: + example: + Errors: + - Type: ResourceIsNotReady + Details: The cluster is currently being created and is not yet + available. Please try in few minutes. + Code: '503' + - Type: ResourceIsNotReady + Details: 'Project not ready: status' + Code: '503' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: ResourceConflict + content: + application/json: + example: + Errors: + - Type: ResourceConflict + Details: The requested action cannot be performed because the + project has been deleted. + Code: '409' + - Type: ResourceConflict + Details: The requested action cannot be performed because the + cluster has been deleted. + Code: '409' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + /clusters/{cluster_id}/upgrade: + patch: + tags: + - Clusters + summary: Upgrade Cluster + description: Upgrades a specific cluster by its ID to the latest available + version. Returns the updated cluster details after the upgrade process + is completed. + operationId: UpgradeCluster + parameters: + - name: cluster_id + in: path + required: true + schema: + type: string + title: Cluster Id + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/ClusterResponse' + '503': + description: ResourceIsNotReady + content: + application/json: + example: + Errors: + - Type: ResourceIsNotReady + Details: The service has been under global maintenance for 15 + mins. Please, try again later + Code: '503' + - Type: ResourceIsNotReady + Details: 'Project not ready: status' + Code: '503' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '423': + description: LockedResource + content: + application/json: + example: + Errors: + - Type: LockedResource + Details: The project has been under maintenance for 15 mins. + Please, try again later + Code: '423' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: NotFoundError + content: + application/json: + example: + Errors: + - Type: NotFoundError + Details: Cluster $uuid not found. + Code: '404' + - Type: NotFoundError + Details: Project $uuid not found + Code: '404' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: ResourceConflict + content: + application/json: + example: + Errors: + - Type: ResourceConflict + Details: The requested action cannot be performed because the + project has been deleted. + Code: '409' + - Type: ResourceConflict + Details: The requested action cannot be performed because the + cluster has been deleted. + Code: '409' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: ValidationError + content: + application/json: + example: + Errors: + - Type: ValidationError + Details: + - loc: + - string + - 0 + msg: string + type: string + Code: '422' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + description: InternalError + content: + application/json: + example: + Errors: + - Type: InternalError + Details: Failed to upgrade cluster + Code: '500' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + /clusters/limits/kubernetes_versions: + get: + tags: + - Clusters + summary: Get Kubernetes Versions + description: Retrieves the available Kubernetes versions for cluster + creation or upgrades. Returns a list of supported Kubernetes versions. + operationId: GetKubernetesVersions + parameters: [] + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/KubernetesVersionsResponse' + '422': + description: ValidationError + content: + application/json: + example: + Errors: + - Type: ValidationError + Details: + - loc: + - string + - 0 + msg: string + type: string + Code: '422' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + /clusters/limits/cp_subregions: + get: + tags: + - Clusters + summary: Get Cp Subregions + description: Retrieves the available subregions for cluster deployment. + Returns a list of supported subregions for cluster creation. + operationId: GetCPSubregions + parameters: [] + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/CPSubregionsResponse' + '422': + description: ValidationError + content: + application/json: + example: + Errors: + - Type: ValidationError + Details: + - loc: + - string + - 0 + msg: string + type: string + Code: '422' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + /clusters/limits/control_plane_plans: + get: + tags: + - Clusters + summary: Get Control Plane Plans + description: Retrieves the available control plane plans for cluster + deployment. Returns a list of supported control plane plans for cluster + creation or upgrades. + operationId: GetControlPlanePlans + parameters: [] + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/ControlPlanesResponse' + '422': + description: ValidationError + content: + application/json: + example: + Errors: + - Type: ValidationError + Details: + - loc: + - string + - 0 + msg: string + type: string + Code: '422' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + /templates/project: + get: + tags: + - Templates + summary: Get Project Template + description: Retrieves the default project template, including predefined + network configurations, region, and metadata. Returns a JSON response + containing the request context and template details, such as CIDR block, + project name, region, description, and tags. + operationId: GetProjectTemplate + parameters: [] + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/TemplateResponse_ProjectInput_' + '422': + description: ValidationError + content: + application/json: + example: + Errors: + - Type: ValidationError + Details: + - loc: + - string + - 0 + msg: string + type: string + Code: '422' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + /templates/cluster: + get: + tags: + - Templates + summary: Get Cluster Template + description: Retrieves the default cluster template, including predefined + control plane configurations, networking settings, and maintenance + schedules. Returns a JSON response containing the request context and + template details, such as control plane type, CIDR ranges for pods and + services, admission flags, multi-AZ support, Kubernetes version, + subregions, and scheduled automatic maintenance settings. + operationId: GetClusterTemplate + parameters: + - name: X-Real-IP + in: header + required: false + schema: + type: string + nullable: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/TemplateResponse_ClusterInputTemplate_' + '422': + description: ValidationError + content: + application/json: + example: + Errors: + - Type: ValidationError + Details: + - loc: + - string + - 0 + msg: string + type: string + Code: '422' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + /templates/nodepool: + get: + tags: + - Templates + summary: Get Nodepool Template + description: Retrieves the default node pool template, including + predefined configurations for node scaling, storage, and upgrade + strategies. Returns a JSON response containing the request context and + template details, such as node count, node type, availability zones, + volume specifications, upgrade strategy, and auto-healing settings. + operationId: GetNodepoolTemplate + parameters: [] + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/TemplateResponse_Nodepool_' + '422': + description: ValidationError + content: + application/json: + example: + Errors: + - Type: ValidationError + Details: + - loc: + - string + - 0 + msg: string + type: string + Code: '422' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + /templates/netpeeringrequest: + get: + tags: + - Templates + summary: Get Netpeering Request Template + description: NetPeering Request manifest + operationId: GetNetPeeringRequestTemplate + parameters: [] + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/TemplateResponse_NetPeeringRequest_' + '422': + description: ValidationError + content: + application/json: + example: + Errors: + - Type: ValidationError + Details: + - loc: + - string + - 0 + msg: string + type: string + Code: '422' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + /templates/netpeeringacceptance: + get: + tags: + - Templates + summary: Get Netpeering Acceptance Template + description: NetPeering Acceptance manifest + operationId: GetNetPeeringAcceptanceTemplate + parameters: [] + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/TemplateResponse_NetPeeringAcceptance_' + '422': + description: ValidationError + content: + application/json: + example: + Errors: + - Type: ValidationError + Details: + - loc: + - string + - 0 + msg: string + type: string + Code: '422' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + /quotas: + get: + tags: + - Quotas + summary: Get Quotas + description: Get OKS Quotas. + operationId: GetQuotas + parameters: [] + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/quotas__quota_schema__QuotasResponse' + '500': + description: InternalError + content: + application/json: + example: + Errors: + - Type: InternalError + Details: Validation error limits not set + Code: '500' + - Type: InternalError + Details: Validation error limits not set for projects. + Code: '500' + - Type: InternalError + Details: Validation error limits not set for clusters. + Code: '500' + - Type: InternalError + Details: Failed to get quotas + Code: '500' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: ValidationError + content: + application/json: + example: + Errors: + - Type: ValidationError + Details: + - loc: + - string + - 0 + msg: string + type: string + Code: '422' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' + /myip: + get: + tags: + - MyIp + summary: Get Client Ip + description: Returns client IP headers and request ID. + operationId: GetClientIP + parameters: + - name: X-Real-IP + in: header + required: false + schema: + type: string + nullable: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/IPResponse' + '422': + description: ValidationError + content: + application/json: + example: + Errors: + - Type: ValidationError + Details: + - loc: + - string + - 0 + msg: string + type: string + Code: '422' + ResponseContext: + RequestId: 45a64090-2e5b-428f-bfea-83a5f783f9e6 + schema: + $ref: '#/components/schemas/ErrorResponse' +components: + schemas: + AdmissionFlags: + properties: + disable_admission_plugins: + items: + type: string + type: array + title: Disable Admission Plugins + description: List of Kubernetes admission plugins that are disabled + default: [] + enable_admission_plugins: + items: + type: string + type: array + title: Enable Admission Plugins + description: List of Kubernetes admission plugins that are enabled + default: [] + applied_admission_plugins: + items: + type: string + type: array + title: Applied Admission Plugins + description: List of admission plugins currently applied to the + cluster + default: + - CertificateApproval + - CertificateSigning + - CertificateSubjectRestriction + - ClusterTrustBundleAttest + - DefaultIngressClass + - DefaultStorageClass + - DefaultTolerationSeconds + - LimitRanger + - MutatingAdmissionWebhook + - NamespaceLifecycle + - PersistentVolumeClaimResize + - PodSecurity + - Priority + - ResourceQuota + - RuntimeClass + - ServiceAccount + - StorageObjectInUseProtection + - TaintNodesByCondition + - ValidatingAdmissionPolicy + - ValidatingAdmissionWebhook + type: object + title: AdmissionFlags + AdmissionFlagsInput: + properties: + disable_admission_plugins: + items: + type: string + type: array + title: Disable Admission Plugins + description: List of Kubernetes admission plugins to disable + enable_admission_plugins: + items: + type: string + type: array + title: Enable Admission Plugins + description: List of Kubernetes admission plugins to enable + type: object + title: AdmissionFlagsInput + AuthStrategy: + properties: + oidc: + allOf: + - $ref: '#/components/schemas/OpenIdConnectConfig' + title: OpenID Connect Authentication + description: Configuration for authenticating to the cluster using + OpenID Connect (OIDC). + type: object + required: + - oidc + title: AuthStrategy + AutoMaintenances: + properties: + minor_upgrade_maintenance: + allOf: + - $ref: '#/components/schemas/MaintenanceWindow' + title: Minor Upgrade Maintenance + description: Maintenance window configuration for minor Kubernetes + upgrades + patch_upgrade_maintenance: + allOf: + - $ref: '#/components/schemas/MaintenanceWindow' + title: Patch Upgrade Maintenance + description: Maintenance window configuration for patch Kubernetes + upgrades + type: object + required: + - minor_upgrade_maintenance + - patch_upgrade_maintenance + title: AutoMaintenances + AutoUpgradeMaintenance: + properties: + durationHours: + type: integer + title: Duration Hours + description: Duration of the maintenance window in hours + startHour: + type: integer + maximum: 23.0 + minimum: 0.0 + title: Start Hour + description: Hour of the day when maintenance window starts (0-23) + weekDay: + type: string + enum: + - Mon + - Tue + - Wed + - Thu + - Fri + - Sat + - Sun + title: Week Day + description: Day of the week for the maintenance window (e.g., Mon, + Tue) + type: object + required: + - durationHours + - startHour + - weekDay + title: AutoUpgradeMaintenance + CPSubregionsResponse: + properties: + ResponseContext: + $ref: '#/components/schemas/clusters__cluster_schema__ResponseContext' + CPSubregions: + items: + type: string + type: array + title: CP Subregions + description: List of available control plane subregions + type: object + required: + - ResponseContext + - CPSubregions + title: CP Subregions Response + Cluster: + properties: + project_id: + type: string + title: Project ID + description: Unique identifier of the project this cluster belongs to + id: + type: string + title: Cluster ID + description: Unique UUID of the cluster + name: + type: string + title: Cluster Name + description: Unique cluster name per project + description: + type: string + title: Description + description: Optional description of the cluster + default: '' + cp_multi_az: + type: boolean + title: Control Plane Multi-AZ + description: Flag indicating if multi-availability zone is enabled for + the control plane + cp_subregions: + items: + type: string + type: array + title: Control Plane Subregions + description: Subregions where control plane components are deployed + version: + type: string + title: Kubernetes Version + description: Version of Kubernetes deployed in the cluster + expected_version: + type: string + nullable: true + cni: + type: string + title: CNI + description: Container Network Interface used in the cluster + admin_lbu: + type: boolean + title: Admin LBU + description: Flag indicating if admin load balancer is enabled for + cluster management + admission_flags: + allOf: + - $ref: '#/components/schemas/AdmissionFlags' + title: Admission Flags + description: Configuration for Kubernetes admission controllers + cidr_pods: + type: string + title: Pods CIDR + description: CIDR block for Kubernetes pods network + cidr_service: + type: string + title: Service CIDR + description: CIDR block for Kubernetes services network + cluster_dns: + type: string + title: Cluster DNS + description: IP address for cluster DNS service + tags: + additionalProperties: + type: string + type: object + title: Tags + description: Key-value pairs for cluster metadata + example: + key: value + auto_maintenances: + allOf: + - $ref: '#/components/schemas/AutoMaintenances' + nullable: true + maintenance_window: + allOf: + - $ref: '#/components/schemas/Maintenance' + nullable: true + control_planes: + type: string + title: Control Planes + description: Type of control plane deployment for the cluster + expected_control_planes: + type: string + nullable: true + admin_whitelist: + items: + type: string + type: array + title: Admin Whitelist + description: List of CIDR blocks or IP addresses allowed to access the + Kubernetes API + statuses: + allOf: + - $ref: '#/components/schemas/Statuses' + description: Current status information about the cluster + disable_api_termination: + type: boolean + title: Disable API Termination + description: Flag to prevent accidental cluster deletion + default: false + example: false + auth: + allOf: + - $ref: '#/components/schemas/AuthStrategy' + nullable: true + type: object + required: + - project_id + - id + - name + - cp_multi_az + - cp_subregions + - version + - cni + - admin_lbu + - admission_flags + - cidr_pods + - cidr_service + - cluster_dns + - tags + - control_planes + - admin_whitelist + - statuses + title: Cluster + ClusterInput: + properties: + name: + type: string + maxLength: 40 + minLength: 1 + pattern: ^[a-z][a-z0-9-]*[a-z0-9]$ + title: Cluster Name + description: Unique cluster name per project, must start with a letter + and contain only lowercase letters, numbers, or hyphens + example: awesome-cluster + project_id: + type: string + title: Project ID + description: Unique identifier of the project this cluster belongs to + description: + type: string + nullable: true + cp_multi_az: + type: boolean + title: Control Plane Multi-AZ + description: Flag to enable multi-availability zone for the control + plane + cp_subregions: + items: + type: string + type: array + title: Control Plane Subregions + description: List of subregions where control plane components are + deployed + default: [] + version: + type: string + title: Kubernetes Version + description: Version of Kubernetes to be deployed + admin_lbu: + type: boolean + title: Admin LBU + description: Flag to enable admin load balancer for cluster management + default: false + admission_flags: + allOf: + - $ref: '#/components/schemas/AdmissionFlagsInput' + title: Admission Flags + description: Configuration for Kubernetes admission controllers + default: {} + cidr_pods: + type: string + title: Pods CIDR + description: CIDR block for Kubernetes pods network + example: 10.91.0.0/16 + cidr_service: + type: string + title: Service CIDR + description: CIDR block for Kubernetes services network + example: 10.92.0.0/16 + cluster_dns: + type: string + title: Cluster DNS + description: IP address for cluster DNS service + example: 10.92.0.10 + tags: + additionalProperties: + type: string + type: object + nullable: true + auto_maintenances: + allOf: + - $ref: '#/components/schemas/AutoMaintenances' + title: Auto Maintenances + description: Use 'maintenance_window' instead + deprecated: true + maintenance_window: + allOf: + - $ref: '#/components/schemas/Maintenance' + title: Maintenance Window + description: Configuration for automated maintenance windows + control_planes: + type: string + title: Control Planes + description: Size of control plane deployment for the cluster + default: cp.3.masters.small + admin_whitelist: + items: + type: string + type: array + title: Admin Whitelist + description: List of CIDR blocks or IP addresses allowed to access the + Kubernetes API + quirks: + items: + type: string + type: array + nullable: true + disable_api_termination: + type: boolean + title: Disable API Termination + description: Flag to prevent accidental cluster deletion + default: false + example: false + auth: + allOf: + - $ref: '#/components/schemas/AuthStrategy' + nullable: true + type: object + required: + - name + - project_id + - version + - cidr_pods + - cidr_service + - admin_whitelist + title: ClusterInput + ClusterInputTemplate: + properties: + project_id: + type: string + title: Project ID + description: Unique identifier of the project this cluster belongs to + description: + type: string + nullable: true + version: + type: string + title: Kubernetes Version + description: Version of Kubernetes to be deployed + admin_lbu: + type: boolean + title: Admin LBU + description: Flag to enable admin load balancer for cluster management + default: false + admission_flags: + allOf: + - $ref: '#/components/schemas/AdmissionFlagsInput' + title: Admission Flags + description: Configuration for Kubernetes admission controllers + default: {} + cidr_pods: + type: string + title: Pods CIDR + description: CIDR block for Kubernetes pods network + example: 10.91.0.0/16 + cidr_service: + type: string + title: Service CIDR + description: CIDR block for Kubernetes services network + example: 10.92.0.0/16 + cluster_dns: + type: string + title: Cluster DNS + description: IP address for cluster DNS service + example: 10.92.0.10 + tags: + additionalProperties: + type: string + type: object + title: Tags + description: Key-value pairs for cluster metadata + example: + key: value + auto_maintenances: + allOf: + - $ref: '#/components/schemas/AutoMaintenances' + nullable: true + maintenance_window: + allOf: + - $ref: '#/components/schemas/Maintenance' + nullable: true + control_planes: + type: string + title: Control Planes + description: Size of control plane deployment for the cluster + default: cp.3.masters.small + admin_whitelist: + items: + type: string + type: array + title: Admin Whitelist + description: List of CIDR blocks or IP addresses allowed to access the + Kubernetes API + quirks: + items: + type: string + type: array + nullable: true + disable_api_termination: + type: boolean + title: Disable API Termination + description: Flag to prevent accidental cluster deletion + default: false + example: false + type: object + required: + - project_id + - version + - admin_whitelist + title: ClusterInputTemplate + ClusterResponse: + properties: + ResponseContext: + $ref: '#/components/schemas/clusters__cluster_schema__ResponseContext' + Cluster: + $ref: '#/components/schemas/Cluster' + type: object + required: + - ResponseContext + - Cluster + title: Cluster Response + ClusterResponseList: + properties: + ResponseContext: + $ref: '#/components/schemas/clusters__cluster_schema__ResponseContext' + Pagination: + $ref: '#/components/schemas/Pagination' + Clusters: + items: + $ref: '#/components/schemas/Cluster' + type: array + title: Clusters + description: List of clusters retrieved from the API + type: object + required: + - ResponseContext + - Pagination + - Clusters + title: Cluster Response List + ClusterUpdate: + properties: + description: + type: string + nullable: true + admission_flags: + allOf: + - $ref: '#/components/schemas/AdmissionFlagsInput' + nullable: true + tags: + additionalProperties: + type: string + type: object + nullable: true + auto_maintenances: + allOf: + - $ref: '#/components/schemas/AutoMaintenances' + nullable: true + maintenance_window: + allOf: + - $ref: '#/components/schemas/Maintenance' + nullable: true + admin_whitelist: + items: + type: string + type: array + nullable: true + quirks: + items: + type: string + type: array + nullable: true + disable_api_termination: + type: boolean + nullable: true + version: + type: string + nullable: true + control_planes: + type: string + title: Control Planes + description: Size of control plane deployment for the cluster + auth: + allOf: + - $ref: '#/components/schemas/AuthStrategy' + nullable: true + type: object + title: ClusterUpdate + ControlPlanesResponse: + properties: + ResponseContext: + $ref: '#/components/schemas/clusters__cluster_schema__ResponseContext' + ControlPlanes: + items: + type: string + type: array + title: Control Planes + description: List of available control plane types + type: object + required: + - ResponseContext + - ControlPlanes + title: Control Planes Response + Cursor: + properties: + next_cursor: + type: string + nullable: true + type: object + title: Cursor + DetailResponse: + properties: + ResponseContext: + $ref: '#/components/schemas/projects__project_schema__ResponseContext' + detail: + type: string + title: Detail + description: Detailed message related to the API response + type: object + required: + - ResponseContext + - detail + title: DetailResponse + ErrorItem: + properties: + Type: + type: string + title: Type + Details: + anyOf: + - type: string + - items: + $ref: '#/components/schemas/ValidationDetail' + type: array + Code: + type: string + title: Code + type: object + required: + - Type + - Details + - Code + title: ErrorItem + ErrorResponse: + properties: + Errors: + items: + $ref: '#/components/schemas/ErrorItem' + type: array + title: Errors + ResponseContext: + $ref: '#/components/schemas/ResponseContext-Input' + type: object + required: + - Errors + - ResponseContext + title: ErrorResponse + IPDetails: + properties: + x_real_ip: + type: string + nullable: true + type: object + title: IPDetails + IPResponse: + properties: + ResponseContext: + $ref: '#/components/schemas/myip__myip_schema__ResponseContext' + IP: + $ref: '#/components/schemas/IPDetails' + type: object + required: + - ResponseContext + - IP + title: IPResponse + KubeconfigData: + properties: + kubeconfig: + type: string + title: Kubeconfig + description: Kubernetes configuration file content for cluster access + type: object + required: + - kubeconfig + title: KubeconfigData + KubeconfigResponse: + properties: + ResponseContext: + $ref: '#/components/schemas/clusters__cluster_schema__ResponseContext' + Cluster: + $ref: '#/components/schemas/clusters__cluster_schema__RPCResponse' + type: object + required: + - ResponseContext + - Cluster + title: Kubeconfig Response + KubernetesVersionsResponse: + properties: + ResponseContext: + $ref: '#/components/schemas/clusters__cluster_schema__ResponseContext' + Versions: + items: + type: string + type: array + title: Versions + description: List of available Kubernetes versions + type: object + required: + - ResponseContext + - Versions + title: Kubernetes Versions Response + Maintenance: + properties: + duration_hours: + type: integer + maximum: 23.0 + minimum: 0.0 + title: Duration Hours + description: Duration of the maintenance window in hours + start_hour: + type: integer + maximum: 23.0 + minimum: 0.0 + title: Start Hour + description: Hour of the day when maintenance window starts (0-23) + week_day: + type: string + enum: + - Mon + - Tue + - Wed + - Thu + - Fri + - Sat + - Sun + - string + title: Week Day + description: Day of the week for the maintenance window + tz: + type: string + title: Timezone + description: Timezone for the maintenance window + default: UTC + type: object + required: + - duration_hours + - start_hour + - week_day + title: Maintenance + MaintenanceWindow: + properties: + enabled: + type: boolean + title: Enabled + description: Flag to enable or disable the maintenance window + default: true + duration_hours: + type: integer + maximum: 23.0 + minimum: 0.0 + title: Duration Hours + description: Duration of the maintenance window in hours + default: 0 + start_hour: + type: integer + maximum: 23.0 + minimum: 0.0 + title: Start Hour + description: Hour of the day when maintenance window starts (0-23) + default: 12 + week_day: + type: string + enum: + - Mon + - Tue + - Wed + - Thu + - Fri + - Sat + - Sun + - string + title: Week Day + description: Day of the week for the maintenance window + default: Tue + tz: + type: string + title: Timezone + description: Timezone for the maintenance window + default: UTC + type: object + title: MaintenanceWindow + Net: + properties: + DhcpOptionsSetId: + type: string + title: DHCP Options ID + description: The ID of the DHCP options set (or default if you want to + associate the default one). + IpRange: + type: string + title: IP Range + description: The IP range for the Net, in CIDR notation (for example, + 10.0.0.0/16). + NetId: + type: string + title: Net ID + description: The ID of the Net. + State: + type: string + title: State + description: The state of the Net (pending | available | deleting). + Tenancy: + type: string + title: Tenancy + description: The VM tenancy in a Net. + type: object + required: + - DhcpOptionsSetId + - IpRange + - NetId + - State + - Tenancy + title: Net + NetPeeringAcceptance: + properties: + apiVersion: + type: string + title: API Version + description: Version of the NetPeeringAcceptance API being used + kind: + type: string + title: Kind + description: Resource type, always 'NetPeeringAcceptance' for + netpeering acceptance resources + metadata: + allOf: + - $ref: '#/components/schemas/netpeerings__netpeering_schema__Metadata' + description: Metadata information for the netpeering acceptance + spec: + allOf: + - $ref: '#/components/schemas/SpecNetPeeringAcceptance' + title: Spec + description: Specification of the netpeering acceptance configuration + type: object + required: + - apiVersion + - kind + - metadata + - spec + title: NetPeeringAcceptance + NetPeeringRequest: + properties: + apiVersion: + type: string + title: API Version + description: Version of the NetPeeringRequest API being used + kind: + type: string + title: Kind + description: Resource type, always 'NetPeeringRequest' for netpeering + request resources + metadata: + allOf: + - $ref: '#/components/schemas/netpeerings__netpeering_schema__Metadata' + description: Metadata information for the netpeering request + spec: + allOf: + - $ref: '#/components/schemas/SpecNetPeeringRequest' + title: Spec + description: Specification of the netpeering request configuration + type: object + required: + - apiVersion + - kind + - metadata + - spec + title: NetPeeringRequest + NetsResponse: + properties: + ResponseContext: + $ref: '#/components/schemas/projects__project_schema__ResponseContext' + Nets: + items: + $ref: '#/components/schemas/Net' + type: array + title: Nets + description: Information about the described Nets + type: object + required: + - ResponseContext + - Nets + title: NetsResponse + Nodepool: + properties: + apiVersion: + type: string + title: API Version + description: Version of the Nodepool API being used + kind: + type: string + title: Kind + description: Resource type, always 'Nodepool' for nodepool resources + metadata: + allOf: + - $ref: '#/components/schemas/nodepools__nodepool_schema__Metadata' + description: Metadata information for the nodepool + spec: + allOf: + - $ref: '#/components/schemas/Spec' + description: Specification of the nodepool configuration + type: object + required: + - apiVersion + - kind + - metadata + - spec + title: Nodepool + OKSQuotas: + properties: + Projects: + type: integer + title: Projects + ClustersPerProject: + type: integer + title: Clustersperproject + KubeVersions: + items: + type: string + type: array + title: Max Value + description: Maximum allowed value for this quota + CPSubregions: + items: + type: string + type: array + title: Cpsubregions + type: object + required: + - Projects + - ClustersPerProject + - KubeVersions + - CPSubregions + title: OKSQuotas + Offset: + properties: + page: + type: integer + nullable: true + limit: + type: integer + nullable: true + total: + type: integer + nullable: true + type: object + title: Offset + OpenIdConnectConfig: + properties: + issuer-url: + type: string + title: OIDC Issuer URL + description: The URL of the provider that allows the API server to + discover public signing keys. + client-id: + type: string + title: OIDC Client ID + description: The client id that all tokens must be issued for. + username-claim: + type: string + nullable: true + username-prefix: + type: string + nullable: true + groups-claim: + items: + type: string + type: array + nullable: true + groups-prefix: + type: string + nullable: true + required-claim: + additionalProperties: + type: string + type: object + nullable: true + type: object + required: + - issuer-url + - client-id + title: OpenIdConnectConfig + Pagination: + properties: + cursor: + allOf: + - $ref: '#/components/schemas/Cursor' + nullable: true + offset: + allOf: + - $ref: '#/components/schemas/Offset' + nullable: true + type: object + title: Pagination + PermissionsOnResource: + properties: + GlobalPermission: + type: integer + title: Global Permission + description: A global permission for all accounts. + AccountIds: + items: + type: string + type: array + title: Account IDs + description: One or more account IDs that the permission is associated + with. + type: object + required: + - GlobalPermission + - AccountIds + title: PermissionsOnResource + Project: + properties: + id: + type: string + title: Project ID + description: Unique UUID of the project + name: + type: string + title: Project Name + description: Unique project name per account + description: + type: string + title: Description + description: Optional description of the project + default: '' + cidr: + type: string + title: VPC CIDR + description: CIDR block associated with the project's VPC + region: + type: string + title: Region + description: Region where the project is deployed + status: + type: string + title: Status + description: Current status of the project + tags: + additionalProperties: + type: string + type: object + title: Tags + description: Key-value pairs tags + disable_api_termination: + type: boolean + title: Disable API Termination + description: Flag to prevent accidental project deletion + default: false + example: false + created_at: + type: string + format: date-time + title: Created At + description: Timestamp when the project was created + updated_at: + type: string + format: date-time + title: Updated At + description: Timestamp when the project was last updated + deleted_at: + type: string + format: date-time + nullable: true + type: object + required: + - id + - name + - cidr + - region + - status + - tags + - created_at + - updated_at + title: Project + ProjectInput: + properties: + name: + type: string + maxLength: 40 + minLength: 1 + pattern: ^[a-z][a-z0-9-]*[a-z0-9]$ + title: Project Name + description: Unique name for the project, must start with a letter and + contain only lowercase letters, numbers, or hyphens + example: awesome-project + description: + type: string + title: Description + description: Optional description of the project + default: '' + cidr: + type: string + title: VPC CIDR + description: CIDR block associated with the project's VPC + region: + type: string + title: Region + description: Region where the project is deployed + tags: + additionalProperties: + type: string + type: object + nullable: true + quirks: + items: + type: string + type: array + nullable: true + disable_api_termination: + type: boolean + title: Disable API Termination + description: Flag to prevent accidental project deletion + default: false + example: false + type: object + required: + - name + - cidr + - region + title: ProjectInput + ProjectResponse: + properties: + ResponseContext: + $ref: '#/components/schemas/projects__project_schema__ResponseContext' + Project: + $ref: '#/components/schemas/Project' + type: object + required: + - ResponseContext + - Project + title: Project Response + ProjectResponseList: + properties: + ResponseContext: + $ref: '#/components/schemas/projects__project_schema__ResponseContext' + Pagination: + $ref: '#/components/schemas/Pagination' + Projects: + items: + $ref: '#/components/schemas/Project' + type: array + title: Projects + description: List of projects retrieved from the API + type: object + required: + - ResponseContext + - Pagination + - Projects + title: ProjectResponseList + ProjectUpdate: + properties: + description: + type: string + nullable: true + tags: + additionalProperties: + type: string + type: object + nullable: true + quirks: + items: + type: string + type: array + nullable: true + disable_api_termination: + type: boolean + nullable: true + type: object + title: ProjectUpdate + PublicIp: + properties: + Tags: + items: + $ref: '#/components/schemas/ResourceTag' + type: array + title: Tags + description: One or more tags associated with the public IP. + PublicIp: + type: string + title: Public IP + description: The public IP. + PublicIpId: + type: string + title: Public IP ID + description: The allocation ID of the public IP. + type: object + required: + - Tags + - PublicIp + - PublicIpId + title: PublicIp + PublicIpsResponse: + properties: + ResponseContext: + $ref: '#/components/schemas/projects__project_schema__ResponseContext' + PublicIps: + items: + $ref: '#/components/schemas/PublicIp' + type: array + title: Project Public IPs + description: Public IP details associated with the project + type: object + required: + - ResponseContext + - PublicIps + title: PublicIpsResponse + Quotas: + properties: + ShortDescription: + type: string + title: Short Description + description: Brief summary of the quota + QuotaCollection: + type: string + title: Quota Collection + description: Category or group to which the quota belongs + AccountId: + type: string + title: Account ID + description: Unique identifier for the account + Description: + type: string + title: Description + description: Detailed description of the quota + MaxValue: + type: integer + title: Max Value + description: Maximum allowed value for this quota + UsedValue: + type: integer + title: Used Value + description: Current usage value for this quota + Name: + type: string + title: Name + description: Quota name + type: object + required: + - ShortDescription + - QuotaCollection + - AccountId + - Description + - MaxValue + - UsedValue + - Name + title: Quotas + QuotasData: + properties: + quotas: + items: + $ref: '#/components/schemas/Quotas' + type: array + title: Quotas + description: List of quota details + subregions: + items: + $ref: '#/components/schemas/Subregion' + type: array + title: Subregions + description: List of subregion details + type: object + required: + - quotas + - subregions + title: QuotasData + ResourceTag: + properties: + Key: + type: string + title: Key + description: The key of the tag, with a minimum of 1 character. + Value: + type: string + title: Value + description: The value of the tag, between 0 and 255 characters. + type: object + required: + - Key + - Value + title: ResourceTag + ResponseContext-Input: + properties: + RequestId: + type: string + title: Requestid + type: object + required: + - RequestId + title: ResponseContext + Snapshot: + properties: + VolumeSize: + type: integer + title: Volume Size + description: The size of the volume used to create the snapshot, in + gibibytes (GiB). + AccountId: + type: string + title: Account ID + description: The account ID of the owner of the snapshot. + VolumeId: + type: string + title: Volume ID + description: The ID of the volume used to create the snapshot. + CreationDate: + type: string + title: Creation Date + description: The date and time (UTC) at which the snapshot was + created. + Progress: + type: integer + title: Progress + description: The progress of the snapshot, as a percentage. + SnapshotId: + type: string + title: Snapshot ID + description: The ID of the snapshot. + State: + type: string + title: State + description: The state of the snapshot (in-queue | pending | completed + | error | deleting). + Description: + type: string + title: Description + description: The description of the snapshot. + Tags: + items: + $ref: '#/components/schemas/ResourceTag' + type: array + title: Tags + description: One or more tags associated with the snapshot. + PermissionsToCreateVolume: + allOf: + - $ref: '#/components/schemas/PermissionsOnResource' + title: Permissions To Create Volume + description: Permissions for the resource. + type: object + required: + - VolumeSize + - AccountId + - VolumeId + - CreationDate + - Progress + - SnapshotId + - State + - Description + - Tags + - PermissionsToCreateVolume + title: Snapshot + SnapshotsResponse: + properties: + ResponseContext: + $ref: '#/components/schemas/projects__project_schema__ResponseContext' + Snapshots: + items: + $ref: '#/components/schemas/Snapshot' + type: array + title: Project Snapshots + description: Snapshot details associated with the project + type: object + required: + - ResponseContext + - Snapshots + title: SnapshotsResponse + Spec: + properties: + desiredNodes: + type: string + title: Desired Nodes + description: Number of nodes desired in the nodepool + nodeType: + type: string + title: Node Type + description: Instance type for the nodes + zones: + items: + type: string + type: array + title: Zones + description: List of availability zones where nodes should be deployed + volumes: + items: + $ref: '#/components/schemas/Volume' + type: array + title: Volumes + description: List of volume configurations for the nodes + upgradeStrategy: + allOf: + - $ref: '#/components/schemas/UpgradeStrategy' + title: Upgrade Strategy + description: Configuration for managing nodepool upgrades + autoHealing: + type: boolean + title: Auto Healing + description: Flag to enable automatic healing of failed nodes + type: object + required: + - desiredNodes + - nodeType + - zones + - volumes + - upgradeStrategy + - autoHealing + title: Spec + SpecNetPeeringAcceptance: + properties: + netPeeringId: + type: string + title: NetID + description: Net Peering ID + type: object + required: + - netPeeringId + title: SpecNetPeeringAcceptance + SpecNetPeeringRequest: + properties: + accepterNetId: + type: string + title: Accepter NetID + description: NetID (VPC ID) of the target + accepterOwnerId: + type: string + title: Accepter Owner ID + description: Owner ID (Account ID) of the target + type: object + required: + - accepterNetId + - accepterOwnerId + title: SpecNetPeeringRequest + Statuses: + properties: + created_at: + type: string + format: date-time + title: Created At + description: Timestamp when the cluster was created + deleted_at: + type: string + format: date-time + nullable: true + updated_at: + type: string + format: date-time + nullable: true + status: + type: string + nullable: true + available_upgrade: + type: string + title: Available Upgrade + description: Available Kubernetes version for upgrade if any + default: '' + type: object + required: + - created_at + title: Statuses + Subregion: + properties: + State: + type: string + title: State + description: The state of the Subregion + RegionName: + type: string + title: Region Name + description: The name of the Region containing the Subregion + SubregionName: + type: string + title: Subregion Name + description: The name of the Subregion + LocationCode: + type: string + title: Location Code + description: The location code (physical zone) of the Subregion + type: object + required: + - State + - RegionName + - SubregionName + - LocationCode + title: Subregion + TemplateResponse_ClusterInputTemplate_: + properties: + ResponseContext: + $ref: '#/components/schemas/templates__template_schema__ResponseContext' + Template: + allOf: + - $ref: '#/components/schemas/ClusterInputTemplate' + title: Template + description: Template resource returned by the API + type: object + required: + - ResponseContext + - Template + title: TemplateResponse[ClusterInputTemplate] + TemplateResponse_NetPeeringAcceptance_: + properties: + ResponseContext: + $ref: '#/components/schemas/templates__template_schema__ResponseContext' + Template: + allOf: + - $ref: '#/components/schemas/NetPeeringAcceptance' + title: Template + description: Template resource returned by the API + type: object + required: + - ResponseContext + - Template + title: TemplateResponse[NetPeeringAcceptance] + TemplateResponse_NetPeeringRequest_: + properties: + ResponseContext: + $ref: '#/components/schemas/templates__template_schema__ResponseContext' + Template: + allOf: + - $ref: '#/components/schemas/NetPeeringRequest' + title: Template + description: Template resource returned by the API + type: object + required: + - ResponseContext + - Template + title: TemplateResponse[NetPeeringRequest] + TemplateResponse_Nodepool_: + properties: + ResponseContext: + $ref: '#/components/schemas/templates__template_schema__ResponseContext' + Template: + allOf: + - $ref: '#/components/schemas/Nodepool' + title: Template + description: Template resource returned by the API + type: object + required: + - ResponseContext + - Template + title: TemplateResponse[Nodepool] + TemplateResponse_ProjectInput_: + properties: + ResponseContext: + $ref: '#/components/schemas/templates__template_schema__ResponseContext' + Template: + allOf: + - $ref: '#/components/schemas/ProjectInput' + title: Template + description: Template resource returned by the API + type: object + required: + - ResponseContext + - Template + title: TemplateResponse[ProjectInput] + UpgradeStrategy: + properties: + maxUnavailable: + type: integer + title: Max Unavailable + description: Maximum number of nodes that can be unavailable during an + upgrade + maxSurge: + type: integer + title: Max Surge + description: Maximum number of extra nodes that can be created during + an upgrade + autoUpgradeEnabled: + type: boolean + title: Auto Upgrade Enabled + description: Flag to enable automatic upgrades for the nodepool + autoUpgradeMaintenance: + allOf: + - $ref: '#/components/schemas/AutoUpgradeMaintenance' + title: Auto Upgrade Maintenance + description: Configuration for the automated upgrade maintenance + window + type: object + required: + - maxUnavailable + - maxSurge + - autoUpgradeEnabled + - autoUpgradeMaintenance + title: UpgradeStrategy + ValidationDetail: + properties: + loc: + items: + anyOf: + - type: string + - type: integer + type: array + title: Loc + msg: + type: string + title: Msg + type: + type: string + title: Type + type: object + required: + - loc + - msg + - type + title: ValidationDetail + Volume: + properties: + device: + type: string + title: Device + description: Device name for the volume + type: + type: string + title: Type + description: Type of the volume (gp2, io1, standard) + size: + type: integer + title: Size + description: Size of the volume + dir: + type: string + title: Directory + description: Mount point directory path for the volume + type: object + required: + - device + - type + - size + - dir + title: Volume + clusters__cluster_schema__RPCResponse: + properties: + request_id: + type: string + title: Request ID + description: Unique identifier for the API request + data: + allOf: + - $ref: '#/components/schemas/KubeconfigData' + title: Data + description: Kubeconfig data for the cluster + type: object + required: + - request_id + - data + title: RPCResponse + clusters__cluster_schema__ResponseContext: + properties: + RequestId: + type: string + title: Request ID + description: Unique identifier for the API request + type: object + required: + - RequestId + title: ResponseContext + myip__myip_schema__ResponseContext: + properties: + RequestId: + type: string + title: Request ID + description: Unique identifier for the API request + type: object + required: + - RequestId + title: ResponseContext + netpeerings__netpeering_schema__Metadata: + properties: + name: + type: string + title: Name + description: Unique name identifier for the netpeering + type: object + required: + - name + title: Metadata + nodepools__nodepool_schema__Metadata: + properties: + name: + type: string + title: Name + description: Unique name identifier for the nodepool + type: object + required: + - name + title: Metadata + projects__project_schema__QuotasResponse: + properties: + ResponseContext: + $ref: '#/components/schemas/projects__project_schema__ResponseContext' + Project: + allOf: + - $ref: '#/components/schemas/projects__project_schema__RPCResponse' + title: Project Quotas + description: Quota details associated with the project + type: object + required: + - ResponseContext + - Project + title: QuotasResponse + projects__project_schema__RPCResponse: + properties: + request_id: + type: string + title: Request ID + description: Unique identifier for the API request + data: + allOf: + - $ref: '#/components/schemas/QuotasData' + title: Data + description: Quota information related to the request + type: object + required: + - request_id + - data + title: RPCResponse + projects__project_schema__ResponseContext: + properties: + RequestId: + type: string + title: Request ID + description: Unique identifier for the API request + type: object + required: + - RequestId + title: Response Context + quotas__quota_schema__QuotasResponse: + properties: + ResponseContext: + $ref: '#/components/schemas/quotas__quota_schema__ResponseContext' + Quotas: + $ref: '#/components/schemas/OKSQuotas' + type: object + required: + - ResponseContext + - Quotas + title: QuotasResponse + quotas__quota_schema__ResponseContext: + properties: + RequestId: + type: string + title: Request ID + description: Unique identifier for the API request + type: object + required: + - RequestId + title: Response Context + templates__template_schema__ResponseContext: + properties: + RequestId: + type: string + title: Request ID + description: Unique identifier for the API request + type: object + required: + - RequestId + title: ResponseContext + securitySchemes: + BasicAuth: + type: http + scheme: basic + description: Username and Password for API authentication + AccessKeyAuth: + type: apiKey + in: header + name: AccessKey + description: AccessKey for API authentication + SecretKeyAuth: + type: apiKey + in: header + name: SecretKey + description: SecretKey for API authentication + AccessTokenAuth: + type: apiKey + in: header + name: AccessToken + description: Access Token for API authentication + RefreshTokenAuth: + type: apiKey + in: header + name: RefreshToken + description: Refresh Token for API authentication + OTPCodeAuth: + type: apiKey + in: header + name: X-OTP-Code + description: OTP token for API authentication +security: +- BasicAuth: [] + OTPCodeAuth: [] +- AccessKeyAuth: [] + SecretKeyAuth: [] + OTPCodeAuth: [] +- AccessTokenAuth: [] + RefreshTokenAuth: [] +servers: +- url: /{api_prefix} + variables: + api_prefix: + default: api/v2 + description: API prefix diff --git a/osc_sdk_python/resources/oks/cfg.yaml b/osc_sdk_python/resources/oks/cfg.yaml new file mode 100644 index 0000000..e34f446 --- /dev/null +++ b/osc_sdk_python/resources/oks/cfg.yaml @@ -0,0 +1,2 @@ +spec: ./api.yaml +overlay: ./patch.yaml diff --git a/osc_sdk_python/resources/oks/patch.yaml b/osc_sdk_python/resources/oks/patch.yaml new file mode 100644 index 0000000..5fdc01f --- /dev/null +++ b/osc_sdk_python/resources/oks/patch.yaml @@ -0,0 +1,19 @@ +overlay: 1.1.0 +info: + title: aaa + version: 1.0.0 + description: bbb +actions: + - target: $.components.schemas + update: + ResponseContext: + additionalProperties: false + description: Information about the context of the response. + properties: + RequestId: + description: The ID of the request. + type: string + type: object + - target: $.components.schemas.*.properties.ResponseContext + update: + "$ref": "#/components/schemas/ResponseContext" diff --git a/osc_sdk_python/resources/osc/api.yaml b/osc_sdk_python/resources/osc/api.yaml new file mode 100644 index 0000000..f396e71 --- /dev/null +++ b/osc_sdk_python/resources/osc/api.yaml @@ -0,0 +1,26388 @@ +--- +components: + schemas: + AcceptNetPeeringRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + NetPeeringId: + description: The ID of the Net peering you want to accept. + type: string + required: + - NetPeeringId + type: object + AcceptNetPeeringResponse: + additionalProperties: false + properties: + NetPeering: + "$ref": "#/components/schemas/NetPeering" + description: Information about the Net peering. + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + AccepterNet: + additionalProperties: false + description: Information about the accepter Net. + properties: + AccountId: + description: The OUTSCALE account ID of the owner of the accepter Net. + type: string + IpRange: + description: The IP range for the accepter Net, in CIDR notation (for example, + `10.0.0.0/16`). + type: string + NetId: + description: The ID of the accepter Net. + type: string + type: object + AccessKey: + additionalProperties: false + description: Information about the access key. + properties: + AccessKeyId: + description: The ID of the access key. + type: string + CreationDate: + description: The date and time (UTC) at which the access key was created. + format: datetime + type: string + ExpirationDate: + description: The date and time (UTC) at which the access key expires. + format: datetime + type: string + LastModificationDate: + description: The date and time (UTC) at which the access key was last modified. + format: datetime + type: string + State: + description: The state of the access key (`ACTIVE` if the key is valid for + API calls, or `INACTIVE` if not). + type: string + Tag: + description: The tag added to the access key. + type: string + type: object + AccessKeySecretKey: + additionalProperties: false + description: Information about the access key. + properties: + AccessKeyId: + description: The ID of the access key. + type: string + CreationDate: + description: The date and time (UTC) at which the access key was created. + format: datetime + type: string + ExpirationDate: + description: The date and time (UTC) at which the access key expires. + format: datetime + type: string + LastModificationDate: + description: The date and time (UTC) at which the access key was last modified. + format: datetime + type: string + SecretKey: + description: The secret key that enables you to send requests. + type: string + State: + description: The state of the access key (`ACTIVE` if the key is valid for + API calls, or `INACTIVE` if not). + type: string + Tag: + description: A tag added to the access key. + type: string + type: object + AccessLog: + additionalProperties: false + description: Information about access logs. + properties: + IsEnabled: + description: If true, access logs are enabled for your load balancer. If + false, they are not. If you set this to true in your request, the `OsuBucketName` + parameter is required. + type: boolean + OsuBucketName: + description: The name of the OOS bucket for the access logs. + type: string + OsuBucketPrefix: + description: The path to the folder of the access logs in your OOS bucket + (by default, the `root` level of your bucket). + type: string + PublicationInterval: + description: The time interval for the publication of access logs in the + OOS bucket, in minutes. This value can be either `5` or `60` (by default, + `60`). + type: integer + type: object + Account: + additionalProperties: false + description: Information about the account. + properties: + AccountId: + description: The ID of the account. + type: string + AdditionalEmails: + description: One or more additional email addresses for the account. These + addresses are used for notifications only. + items: + pattern: "^.+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)+$" + type: string + type: array + City: + description: The city of the account owner. + type: string + CompanyName: + description: The name of the company for the account. + type: string + Country: + description: The country of the account owner. + type: string + CustomerId: + description: The ID of the customer. + type: string + Email: + description: The main email address for the account. This address is used + for your credentials and for notifications. + type: string + FirstName: + description: The first name of the account owner. + type: string + JobTitle: + description: The job title of the account owner. + type: string + LastName: + description: The last name of the account owner. + type: string + MobileNumber: + description: The mobile phone number of the account owner. + type: string + OutscaleLoginAllowed: + description: Whether the account is allowed to log in to Cockpit v2 using + its Outscale credentials when identity federation is activated. + type: boolean + PhoneNumber: + description: The landline phone number of the account owner. + type: string + StateProvince: + description: The state/province of the account. + type: string + VatNumber: + description: The value added tax (VAT) number for the account. + type: string + ZipCode: + description: The ZIP code of the city. + type: string + type: object + ActionsOnNextBoot: + description: The action to perform on the next boot of the VM. + properties: + SecureBoot: + "$ref": "#/components/schemas/SecureBootAction" + description: One action to perform on the next boot of the VM. For more + information, see [About Secure Boot](https://docs.outscale.com/en/userguide/About-Secure-Boot.html#_secure_boot_actions). + type: object + AddUserToUserGroupRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + UserGroupName: + description: The name of the group you want to add a user to. + type: string + UserGroupPath: + description: The path to the group. If not specified, it is set to a slash + (`/`). + type: string + UserName: + description: The name of the user you want to add to the group. + type: string + UserPath: + description: The path to the user. If not specified, it is set to a slash + (`/`). + type: string + required: + - UserGroupName + - UserName + type: object + AddUserToUserGroupResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + ApiAccessPolicy: + additionalProperties: false + description: Information about the API access policy. + properties: + MaxAccessKeyExpirationSeconds: + description: The maximum possible lifetime for your access keys, in seconds. + If `0`, your access keys can have unlimited lifetimes. + format: int64 + type: integer + RequireTrustedEnv: + description: |- + If true, a trusted session is activated, allowing you to bypass Certificate Authorities (CAs) enforcement. For more information, see [About Your API Access Policy](https://docs.outscale.com/en/userguide/About-Your-API-Access-Policy.html).
+ If this is enabled, it is required that you and all your users log in to Cockpit v2 using the WebAuthn method for multi-factor authentication. For more information, see [About Authentication > Multi-Factor Authentication](https://docs.outscale.com/en/userguide/About-Authentication.html#_multi_factor_authentication). + type: boolean + type: object + ApiAccessRule: + additionalProperties: false + description: Information about the API access rule. + properties: + ApiAccessRuleId: + description: The ID of the API access rule. + type: string + CaIds: + description: One or more IDs of Client Certificate Authorities (CAs) used + for the API access rule. + items: + type: string + type: array + Cns: + description: One or more Client Certificate Common Names (CNs). + items: + type: string + type: array + Description: + description: The description of the API access rule. + type: string + IpRanges: + description: One or more IP ranges used for the API access rule, in CIDR + notation (for example, `192.0.2.0/16`). + items: + type: string + type: array + type: object + ApplicationStickyCookiePolicy: + additionalProperties: false + description: Information about the stickiness policy. + properties: + CookieName: + description: The name of the application cookie used for stickiness, between + 1 and 255 characters. + type: string + PolicyName: + description: The mnemonic name for the policy being created. The name must + be unique within a set of policies for this load balancer. + type: string + type: object + BackendVmHealth: + additionalProperties: false + description: Information about the health of a backend VM. + properties: + Description: + description: The description of the state of the backend VM. + type: string + State: + description: The state of the backend VM (`InService` \| `OutOfService` + \| `Unknown`). + type: string + StateReason: + description: |- + Information about the cause of `OutOfService` VMs.
+ Specifically, whether the cause is Elastic Load Balancing or the VM (`ELB` \| `Instance` \| `N/A`). + type: string + VmId: + description: The ID of the backend VM. + type: string + type: object + BlockDeviceMappingCreated: + additionalProperties: false + description: Information about the created block device mapping. + properties: + Bsu: + "$ref": "#/components/schemas/BsuCreated" + description: Information about the created BSU volume. + DeviceName: + description: The name of the device. + type: string + type: object + BlockDeviceMappingImage: + additionalProperties: false + description: One or more parameters used to automatically set up volumes when + the VM is created. + properties: + Bsu: + "$ref": "#/components/schemas/BsuToCreate" + description: Information about the BSU volume to create. + DeviceName: + description: The device name for the volume. For a root device, you must + use `/dev/sda1`. For other volumes, you must use `/dev/sdX`, `/dev/sdXX`, + `/dev/xvdX`, or `/dev/xvdXX` (where the first `X` is a letter between + `b` and `z`, and the second `X` is a letter between `a` and `z`). + type: string + VirtualDeviceName: + description: The name of the virtual device (`ephemeralN`). + type: string + type: object + BlockDeviceMappingVmCreation: + additionalProperties: false + description: Information about the block device mapping. + properties: + Bsu: + "$ref": "#/components/schemas/BsuToCreate" + description: Information about the BSU volume to create. + DeviceName: + description: The device name for the volume. For a root device, you must + use `/dev/sda1`. For other volumes, you must use `/dev/sdX`, `/dev/sdXX`, + `/dev/xvdX`, or `/dev/xvdXX` (where the first `X` is a letter between + `b` and `z`, and the second `X` is a letter between `a` and `z`). + type: string + NoDevice: + description: Removes the device which is included in the block device mapping + of the OMI. + type: string + VirtualDeviceName: + description: The name of the virtual device (`ephemeralN`). + type: string + type: object + BlockDeviceMappingVmUpdate: + additionalProperties: false + description: Information about the block device mapping. + properties: + Bsu: + "$ref": "#/components/schemas/BsuToUpdateVm" + description: Information about the BSU volume. + DeviceName: + description: The device name for the volume. For a root device, you must + use `/dev/sda1`. For other volumes, you must use `/dev/sdX`, `/dev/sdXX`, + `/dev/xvdX`, or `/dev/xvdXX` (where the first `X` is a letter between + `b` and `z`, and the second `X` is a letter between `a` and `z`). + type: string + NoDevice: + description: Removes the device which is included in the block device mapping + of the OMI. + type: string + VirtualDeviceName: + description: The name of the virtual device (`ephemeralN`). + type: string + type: object + BootMode: + description: Information about the boot mode of the VM. + enum: + - uefi + - legacy + type: string + BsuCreated: + additionalProperties: false + description: Information about the created BSU volume. + properties: + DeleteOnVmDeletion: + description: If true, the volume is deleted when terminating the VM. If + false, the volume is not deleted when terminating the VM. + type: boolean + LinkDate: + description: The date and time (UTC) at which the volume was attached to + the VM, in ISO 8601 date-time format. + format: date + type: string + State: + description: The state of the volume. + type: string + VolumeId: + description: The ID of the volume. + type: string + type: object + BsuToCreate: + additionalProperties: false + description: Information about the BSU volume to create. + properties: + DeleteOnVmDeletion: + default: true + description: If set to true, the volume is deleted when terminating the + VM. If false, the volume is not deleted when terminating the VM. + type: boolean + Iops: + description: The number of I/O operations per second (IOPS). This parameter + must be specified only if you create an `io1` volume. The maximum number + of IOPS allowed for `io1` volumes is `13000` with a maximum performance + ratio of 300 IOPS per gibibyte. + type: integer + SnapshotId: + description: The ID of the snapshot used to create the volume. + type: string + VolumeSize: + description: |- + The size of the volume, in gibibytes (GiB).
+ If you specify a snapshot ID, the volume size must be at least equal to the snapshot size.
+ If you specify a snapshot ID but no volume size, the volume is created with a size similar to the snapshot one. + type: integer + VolumeType: + description: |- + The type of the volume (`standard` \| `io1` \| `gp2`). If not specified in the request, a `standard` volume is created.
+ For more information about volume types, see [About Volumes > Volume Types and IOPS](https://docs.outscale.com/en/userguide/About-Volumes.html#_volume_types_and_iops). + type: string + type: object + BsuToUpdateVm: + additionalProperties: false + description: Information about the BSU volume. + properties: + DeleteOnVmDeletion: + description: If set to true, the volume is deleted when terminating the + VM. If set to false, the volume is not deleted when terminating the VM. + type: boolean + VolumeId: + description: The ID of the volume. + type: string + type: object + CO2CategoryDistribution: + additionalProperties: false + description: The allocation of the `Value` among categories. + properties: + Category: + description: The category of the resource (for example, `storage`). + type: string + Value: + description: The total CO2 emissions for the category. + format: double + type: number + type: object + CO2EmissionEntry: + additionalProperties: false + description: The CO2 emission by month and account, for the specified request. + properties: + AccountId: + description: The ID of the account associated with the consumption. + type: string + CategoryDistribution: + description: The allocation of the `Value` among categories. + items: + "$ref": "#/components/schemas/CO2CategoryDistribution" + type: array + FactorDistribution: + description: The allocation of the `Value` among factors. + items: + "$ref": "#/components/schemas/CO2FactorDistribution" + type: array + Month: + description: The month associated with the CO2 emission entry. + format: date + type: string + PayingAccountId: + description: The ID of the paying account related to the `AccountId` parameter. + type: string + Value: + description: The total CO2 emissions for the `Month` and `AccountId` specified. + This value corresponds to the sum of all entries in `CategoryDistribution` + and `FactorDistributionEntry`. + format: double + type: number + type: object + CO2FactorDistribution: + additionalProperties: false + description: The allocation of the `Value` among factors. + properties: + Factor: + description: The emission source (for example, `hardware`). + type: string + Value: + description: The total CO2 emissions for the factor. + format: double + type: number + type: object + Ca: + additionalProperties: false + description: Information about the Client Certificate Authority (CA). + properties: + CaFingerprint: + description: The fingerprint of the CA. + type: string + CaId: + description: The ID of the CA. + type: string + Description: + description: The description of the CA. + type: string + type: object + Catalog: + additionalProperties: false + description: Information about our catalog of prices. + properties: + Entries: + description: One or more catalog entries. + items: + "$ref": "#/components/schemas/CatalogEntry" + type: array + type: object + CatalogEntry: + additionalProperties: false + description: Information about the catalog entry. + properties: + Category: + description: The category of the catalog entry (for example, `network`). + type: string + Flags: + description: When returned and equal to `PER_MONTH`, the price of the catalog + entry is calculated on a monthly basis. + type: string + Operation: + description: The API call associated with the catalog entry (for example, + `CreateVms` or `RunInstances`). + type: string + Service: + description: The service associated with the catalog entry (`TinaOS-FCU`, + `TinaOS-LBU`, `TinaOS-DirectLink`, or `TinaOS-OOS`). + type: string + SubregionName: + description: The Subregion associated with the catalog entry. + type: string + Title: + description: The description of the catalog entry. + type: string + Type: + description: The type of resource associated with the catalog entry. + type: string + UnitPrice: + description: The unit price of the catalog entry in the currency of your + account, in the ISO-4217 format (for example, `EUR`). + format: float + type: number + type: object + Catalogs: + additionalProperties: false + description: Information about the catalogs. + properties: + Entries: + description: One or more catalog entries. + items: + "$ref": "#/components/schemas/CatalogEntry" + type: array + FromDate: + description: The beginning of the time period (UTC). + format: date-time + type: string + State: + description: The state of the catalog. + enum: + - CURRENT + - OBSOLETE + type: string + ToDate: + description: The end of the time period (UTC). + format: date-time + type: string + type: object + CheckAuthenticationRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Login: + description: The email address of the account. + type: string + Password: + description: The password of the account. + type: string + required: + - Login + - Password + type: object + CheckAuthenticationResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + ClientGateway: + additionalProperties: false + description: Information about the client gateway. + properties: + BgpAsn: + description: The Autonomous System Number (ASN) used by the Border Gateway + Protocol (BGP) to find the path to your client gateway through the Internet. + type: integer + ClientGatewayId: + description: The ID of the client gateway. + type: string + ConnectionType: + description: The type of communication tunnel used by the client gateway + (always `ipsec.1`). + type: string + PublicIp: + description: The public IPv4 address of the client gateway (must be a fixed + address into a NATed network). + type: string + State: + description: The state of the client gateway (`pending` \| `available` \| + `deleting` \| `deleted`). + type: string + Tags: + description: One or more tags associated with the client gateway. + items: + "$ref": "#/components/schemas/ResourceTag" + type: array + type: object + ConsumptionEntry: + additionalProperties: false + description: Information about the resources consumed during the specified time + period. + properties: + AccountId: + description: The ID of your OUTSCALE account. + type: string + Category: + description: The category of the resource (for example, `network`). + type: string + FromDate: + description: The beginning of the time period (UTC). + format: datetime + type: string + Operation: + description: The API call that triggered the resource consumption (for example, + `RunInstances` or `CreateVolume`). + type: string + PayingAccountId: + description: The ID of the OUTSCALE account which is billed for your consumption. + It can be different from your account in the `AccountId` parameter. + type: string + Price: + description: The total price of the consumed resource during the specified + time period, in the currency of the Region's catalog. + format: double + type: number + ResourceId: + description: The ID of the consumed resource. + type: string + Service: + description: The service of the API call (`TinaOS-FCU`, `TinaOS-LBU`, `TinaOS-DirectLink`, + `TinaOS-OOS`, `TinaOS-OSU`, or `OKS`). + type: string + SubregionName: + description: The name of the Subregion. + type: string + Title: + description: A description of the consumed resource. + type: string + ToDate: + description: The end of the time period (UTC). + format: datetime + type: string + Type: + description: The type of resource, depending on the API call. + type: string + UnitPrice: + description: The unit price of the consumed resource in the currency of + your account, in the ISO-4217 format (for example, `EUR`). + format: double + type: number + Value: + description: The consumed amount for the resource. The unit depends on the + resource type. For more information, see the `Title` element. + format: double + type: number + type: object + CreateAccessKeyRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + ExpirationDate: + description: The date and time, or the date, at which you want the access + key to expire, in ISO 8601 format (for example, `2020-06-14T00:00:00.000Z`, + or `2020-06-14`). If not specified, the access key is set to not expire. + format: datetime + type: string + Tag: + description: A tag to add to the access key. + type: string + UserName: + description: The name of the EIM user that owns the key to be created. If + you do not specify a user name, this action creates an access key for + the user who sends the request (which can be the root user). + type: string + type: object + CreateAccessKeyResponse: + additionalProperties: false + properties: + AccessKey: + "$ref": "#/components/schemas/AccessKeySecretKey" + description: Information about the access key. + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + CreateAccountRequest: + additionalProperties: false + properties: + AdditionalEmails: + description: One or more additional email addresses for the account. These + addresses are used for notifications only. If you already have a list + of additional emails registered, you cannot add to it, only replace it. + To remove all registered additional emails, specify an empty list. + items: + pattern: "^.+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)+$" + type: string + type: array + City: + description: The city of the account owner. + type: string + CompanyName: + description: The name of the company for the account. + type: string + Country: + description: The country of the account owner. + type: string + CustomerId: + description: The ID of the customer. It must be 8 digits. + type: string + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Email: + description: The main email address for the account. This address is used + for your credentials and notifications. + type: string + FirstName: + description: The first name of the account owner. + type: string + JobTitle: + description: The job title of the account owner. + type: string + LastName: + description: The last name of the account owner. + type: string + MobileNumber: + description: The mobile phone number of the account owner. + type: string + PhoneNumber: + description: The landline phone number of the account owner. + type: string + StateProvince: + description: The state/province of the account. + type: string + VatNumber: + description: The value added tax (VAT) number for the account. + type: string + ZipCode: + description: The ZIP code of the city. + type: string + required: + - City + - CompanyName + - Country + - CustomerId + - Email + - FirstName + - LastName + - ZipCode + type: object + CreateAccountResponse: + additionalProperties: false + properties: + Account: + "$ref": "#/components/schemas/Account" + description: Information about the account. + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + CreateApiAccessRuleRequest: + additionalProperties: false + properties: + CaIds: + description: One or more IDs of Client Certificate Authorities (CAs). + items: + type: string + type: array + Cns: + description: One or more Client Certificate Common Names (CNs). If this + parameter is specified, you must also specify the `CaIds` parameter. + items: + type: string + type: array + Description: + description: A description for the API access rule. + type: string + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + IpRanges: + description: One or more IPs or CIDR blocks (for example, `192.0.2.0/16`). + items: + type: string + type: array + type: object + CreateApiAccessRuleResponse: + additionalProperties: false + properties: + ApiAccessRule: + "$ref": "#/components/schemas/ApiAccessRule" + description: Information about the API access rule. + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + CreateCaRequest: + additionalProperties: false + properties: + CaPem: + description: 'The CA in PEM format.
With OSC CLI, use the following + syntax to make sure your CA file is correctly parsed: `--CaPem="$(cat + FILENAME)"`.' + type: string + Description: + description: The description of the CA. + type: string + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + required: + - CaPem + type: object + CreateCaResponse: + additionalProperties: false + properties: + Ca: + "$ref": "#/components/schemas/Ca" + description: Information about the Client Certificate Authority (CA). + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + CreateClientGatewayRequest: + additionalProperties: false + properties: + BgpAsn: + description: |- + The Autonomous System Number (ASN) used by the Border Gateway Protocol (BGP) to find the path to your client gateway through the Internet.
+ This number must be between `1` and `4294967295`, except `50624`, `53306`, and `132418`.
+ If you do not have an ASN, you can choose one between `64512` and `65534` (both included), or between `4200000000` and `4294967295` (both included). + type: integer + ConnectionType: + description: The communication protocol used to establish tunnel with your + client gateway (always `ipsec.1`). + type: string + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + PublicIp: + description: The public fixed IPv4 address of your client gateway. + type: string + required: + - BgpAsn + - PublicIp + - ConnectionType + type: object + CreateClientGatewayResponse: + additionalProperties: false + properties: + ClientGateway: + "$ref": "#/components/schemas/ClientGateway" + description: Information about the client gateway. + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + CreateDedicatedGroupRequest: + additionalProperties: false + properties: + CpuGeneration: + description: The processor generation for the VMs in the dedicated group + (for example, `4`). + type: integer + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Name: + description: A name for the dedicated group. + type: string + SubregionName: + description: The Subregion in which you want to create the dedicated group. + type: string + required: + - CpuGeneration + - Name + - SubregionName + type: object + CreateDedicatedGroupResponse: + additionalProperties: false + properties: + DedicatedGroup: + "$ref": "#/components/schemas/DedicatedGroup" + description: Information about the dedicated group. + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + CreateDhcpOptionsRequest: + additionalProperties: false + properties: + DomainName: + description: 'Specify a domain name (for example, `MyCompany.com`). You + can specify only one domain name. You must specify at least one of the + following parameters: `DomainName`, `DomainNameServers`, `LogServers`, + or `NtpServers`.' + type: string + DomainNameServers: + description: 'The IPs of domain name servers. If no IPs are specified, the + `OutscaleProvidedDNS` value is set by default. You must specify at least + one of the following parameters: `DomainName`, `DomainNameServers`, `LogServers`, + or `NtpServers`.' + items: + type: string + type: array + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + LogServers: + description: 'The IPs of the log servers. You must specify at least one + of the following parameters: `DomainName`, `DomainNameServers`, `LogServers`, + or `NtpServers`.' + items: + type: string + type: array + NtpServers: + description: 'The IPs of the Network Time Protocol (NTP) servers. You must + specify at least one of the following parameters: `DomainName`, `DomainNameServers`, + `LogServers`, or `NtpServers`.' + items: + type: string + type: array + type: object + CreateDhcpOptionsResponse: + additionalProperties: false + properties: + DhcpOptionsSet: + "$ref": "#/components/schemas/DhcpOptionsSet" + description: Information about the DHCP options set. + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + CreateDirectLinkInterfaceRequest: + additionalProperties: false + properties: + DirectLinkId: + description: The ID of the existing DirectLink for which you want to create + the DirectLink interface. + type: string + DirectLinkInterface: + "$ref": "#/components/schemas/DirectLinkInterface" + description: Information about the DirectLink interface. + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + required: + - DirectLinkId + - DirectLinkInterface + type: object + CreateDirectLinkInterfaceResponse: + additionalProperties: false + properties: + DirectLinkInterface: + "$ref": "#/components/schemas/DirectLinkInterfaces" + description: Information about the DirectLink interfaces. + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + CreateDirectLinkRequest: + additionalProperties: false + properties: + Bandwidth: + description: The bandwidth of the DirectLink (`1Gbps` \| `10Gbps`). + type: string + DirectLinkName: + description: The name of the DirectLink. + type: string + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Location: + description: The code of the requested location for the DirectLink, returned + by the [ReadLocations](#readlocations) method. + type: string + required: + - Bandwidth + - DirectLinkName + - Location + type: object + CreateDirectLinkResponse: + additionalProperties: false + properties: + DirectLink: + "$ref": "#/components/schemas/DirectLink" + description: Information about the DirectLink. + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + CreateFlexibleGpuRequest: + additionalProperties: false + properties: + DeleteOnVmDeletion: + default: false + description: If true, the fGPU is deleted when the VM is terminated. + type: boolean + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Generation: + description: The processor generation that the fGPU must be compatible with. + If not specified, the oldest possible processor generation is selected + (as provided by [ReadFlexibleGpuCatalog](#readflexiblegpucatalog) for + the specified model of fGPU). + type: string + ModelName: + description: The model of fGPU you want to allocate. For more information, + see [About Flexible GPUs](https://docs.outscale.com/en/userguide/About-Flexible-GPUs.html). + type: string + SubregionName: + description: The Subregion in which you want to create the fGPU. + type: string + required: + - ModelName + - SubregionName + type: object + CreateFlexibleGpuResponse: + additionalProperties: false + properties: + FlexibleGpu: + "$ref": "#/components/schemas/FlexibleGpu" + description: Information about the flexible GPU (fGPU). + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + CreateImageExportTaskRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + ImageId: + description: The ID of the OMI to export. + type: string + OsuExport: + "$ref": "#/components/schemas/OsuExportToCreate" + description: Information about the OOS export task to create. + required: + - OsuExport + - ImageId + type: object + CreateImageExportTaskResponse: + additionalProperties: false + properties: + ImageExportTask: + "$ref": "#/components/schemas/ImageExportTask" + description: Information about the OMI export task. + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + CreateImageRequest: + additionalProperties: false + properties: + Architecture: + description: "**(when registering from a snapshot)** The architecture of + the OMI (`i386` or `x86_64`). By default, set to `x86_64`." + type: string + BlockDeviceMappings: + description: "**(required when registering from a snapshot)** One or more + block device mappings." + items: + "$ref": "#/components/schemas/BlockDeviceMappingImage" + type: array + BootModes: + description: The boot modes compatible with the OMI. + items: + "$ref": "#/components/schemas/BootMode" + type: array + Description: + description: A description for the new OMI. + type: string + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + FileLocation: + description: "**(required when registering from a bucket by using a manifest + file)** The pre-signed URL of the manifest file for the OMI you want to + register. For more information, see [Creating a Pre-signed URL](https://docs.outscale.com/en/userguide/Creating-a-Pre-Signed-URL.html)." + type: string + ImageName: + description: |- + A unique name for the new OMI.
+ Constraints: 3-128 alphanumeric characters, underscores (`_`), spaces (` `), parentheses (`()`), slashes (`/`), periods (`.`), or dashes (`-`). + type: string + NoReboot: + description: "**(when creating from a VM)** If false, the VM shuts down + before creating the OMI and then reboots. If true, the VM does not." + type: boolean + ProductCodes: + description: The product codes associated with the OMI. + items: + type: string + type: array + RootDeviceName: + description: "**(required when registering from a snapshot)** The name of + the root device for the new OMI." + type: string + SourceImageId: + description: "**(required when copying an OMI)** The ID of the OMI you want + to copy." + type: string + SourceRegionName: + description: "**(required when copying an OMI)** The name of the source + Region (always the same as the Region of your account)." + type: string + TpmMandatory: + description: By default or if set to false, a virtual Trusted Platform Module + (vTPM) is not mandatory on VMs created from this OMI. If true, VMs created + from this OMI must have a vTPM enabled. + type: boolean + VmId: + description: "**(required when creating from a VM)** The ID of the VM from + which you want to create the OMI." + type: string + type: object + CreateImageResponse: + additionalProperties: false + properties: + Image: + "$ref": "#/components/schemas/Image" + description: Information about the OMI. + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + CreateInternetServiceRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + type: object + CreateInternetServiceResponse: + additionalProperties: false + properties: + InternetService: + "$ref": "#/components/schemas/InternetService" + description: Information about the internet service. + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + CreateKeypairRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + KeypairName: + description: A unique name for the keypair, with a maximum length of 255 + [ASCII printable characters](https://en.wikipedia.org/wiki/ASCII#Printable_characters). + type: string + PublicKey: + description: The public key to import in your account, if you are importing + an existing keypair. This value must be Base64-encoded. + type: string + required: + - KeypairName + type: object + CreateKeypairResponse: + additionalProperties: false + properties: + Keypair: + "$ref": "#/components/schemas/KeypairCreated" + description: Information about the created keypair. + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + CreateListenerRuleRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Listener: + "$ref": "#/components/schemas/LoadBalancerLight" + description: Information about the load balancer. + ListenerRule: + "$ref": "#/components/schemas/ListenerRuleForCreation" + description: Information about the listener rule. + VmIds: + description: The IDs of the backend VMs. + items: + type: string + type: array + required: + - VmIds + - Listener + - ListenerRule + type: object + CreateListenerRuleResponse: + additionalProperties: false + properties: + ListenerRule: + "$ref": "#/components/schemas/ListenerRule" + description: Information about the listener rule. + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + CreateLoadBalancerListenersRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Listeners: + description: One or more listeners for the load balancer. + items: + "$ref": "#/components/schemas/ListenerForCreation" + type: array + LoadBalancerName: + description: The name of the load balancer for which you want to create + listeners. + type: string + required: + - Listeners + - LoadBalancerName + type: object + CreateLoadBalancerListenersResponse: + additionalProperties: false + properties: + LoadBalancer: + "$ref": "#/components/schemas/LoadBalancer" + description: Information about the load balancer. + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + CreateLoadBalancerPolicyRequest: + additionalProperties: false + properties: + CookieExpirationPeriod: + description: The lifetime of the cookie, in seconds. If not specified, the + default value of this parameter is `1`, which means that the sticky session + lasts for the duration of the browser session. + type: integer + CookieName: + description: The name of the application cookie used for stickiness, between + 1 and 255 characters. This parameter is required if you create a stickiness + policy based on an application-generated cookie. + maxLength: 255 + type: string + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + LoadBalancerName: + description: The name of the load balancer for which you want to create + a policy. + type: string + PolicyName: + description: The unique name of the policy, with a maximum length of 32 + alphanumeric characters and dashes (`-`). + type: string + PolicyType: + description: 'The type of stickiness policy you want to create: `app` or + `load_balancer`.' + type: string + required: + - PolicyType + - LoadBalancerName + - PolicyName + type: object + CreateLoadBalancerPolicyResponse: + additionalProperties: false + properties: + LoadBalancer: + "$ref": "#/components/schemas/LoadBalancer" + description: Information about the load balancer. + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + CreateLoadBalancerRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Listeners: + description: One or more listeners to create. + items: + "$ref": "#/components/schemas/ListenerForCreation" + type: array + LoadBalancerName: + description: The unique name of the load balancer, with a maximum length + of 32 alphanumeric characters and dashes (`-`). This name must not start + or end with a dash. + type: string + LoadBalancerType: + description: 'The type of load balancer: `internet-facing` or `internal`. + Use this parameter only for load balancers in a Net.' + type: string + PublicIp: + description: "(internet-facing only) The public IP you want to associate + with the load balancer. If not specified, a public IP owned by 3DS OUTSCALE + is associated." + type: string + SecurityGroups: + description: "(Net only) One or more IDs of security groups you want to + assign to the load balancer. If not specified, the default security group + of the Net is assigned to the load balancer." + items: + type: string + type: array + Subnets: + description: "(Net only) The ID of the Subnet in which you want to create + the load balancer. Regardless of this Subnet, the load balancer can distribute + traffic to all Subnets. This parameter is required in a Net." + items: + type: string + type: array + SubregionNames: + description: "(public Cloud only) The Subregion in which you want to create + the load balancer. Regardless of this Subregion, the load balancer can + distribute traffic to all Subregions. This parameter is required in the + public Cloud." + items: + type: string + type: array + Tags: + description: One or more tags assigned to the load balancer. + items: + "$ref": "#/components/schemas/ResourceTag" + type: array + required: + - Listeners + - LoadBalancerName + type: object + CreateLoadBalancerResponse: + additionalProperties: false + properties: + LoadBalancer: + "$ref": "#/components/schemas/LoadBalancer" + description: Information about the load balancer. + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + CreateLoadBalancerTagsRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + LoadBalancerNames: + description: One or more load balancer names. + items: + type: string + type: array + Tags: + description: One or more tags to add to the specified load balancers. + items: + "$ref": "#/components/schemas/ResourceTag" + type: array + required: + - LoadBalancerNames + - Tags + type: object + CreateLoadBalancerTagsResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + CreateNatServiceRequest: + additionalProperties: false + properties: + ClientToken: + description: A unique identifier which enables you to manage the idempotency. + type: string + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + PublicIpId: + description: |- + The allocation ID of the public IP to associate with the NAT service.
+ If the public IP is already associated with another resource, you must first disassociate it. + type: string + SubnetId: + description: The ID of the Subnet in which you want to create the NAT service. + type: string + required: + - PublicIpId + - SubnetId + type: object + CreateNatServiceResponse: + additionalProperties: false + properties: + NatService: + "$ref": "#/components/schemas/NatService" + description: Information about the NAT service. + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + CreateNetAccessPointRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + NetId: + description: The ID of the Net. + type: string + RouteTableIds: + description: One or more IDs of route tables to use for the connection. + items: + type: string + type: array + ServiceName: + description: The name of the service (in the format `com.outscale.region.service`). + type: string + required: + - ServiceName + - NetId + type: object + CreateNetAccessPointResponse: + additionalProperties: false + properties: + NetAccessPoint: + "$ref": "#/components/schemas/NetAccessPoint" + description: Information about the Net access point. + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + CreateNetPeeringRequest: + additionalProperties: false + properties: + AccepterNetId: + description: |- + The ID of the Net you want to connect with.

+ If the Net does not belong to you, you must also specify the `AccepterOwnerId` parameter with the OUTSCALE account ID owning the Net you want to connect with. + type: string + AccepterOwnerId: + description: |- + The OUTSCALE account ID of the owner of the Net you want to connect with. By default, the account ID of the owner of the Net from which the peering request is sent.

+ This parameter is required if the Net you want to connect with does not belong to you. + type: string + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + SourceNetId: + description: The ID of the Net you send the peering request from. + type: string + required: + - AccepterNetId + - SourceNetId + type: object + CreateNetPeeringResponse: + additionalProperties: false + properties: + NetPeering: + "$ref": "#/components/schemas/NetPeering" + description: Information about the Net peering. + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + CreateNetRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + IpRange: + description: The IP range for the Net, in CIDR notation (for example, `10.0.0.0/16`). + type: string + Tenancy: + description: |- + The tenancy options for the VMs:
+ - `default` if a VM created in a Net can be launched with any tenancy.
+ - `dedicated` if it can be launched with dedicated tenancy VMs running on single-tenant hardware.
+ - `dedicated group ID`: if it can be launched in a dedicated group on single-tenant hardware. + type: string + required: + - IpRange + type: object + CreateNetResponse: + additionalProperties: false + properties: + Net: + "$ref": "#/components/schemas/Net" + description: Information about the Net. + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + CreateNicRequest: + additionalProperties: false + properties: + Description: + description: A description for the NIC. + type: string + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + PrivateIps: + description: Information about the private IP or IPs of the NIC. If you + do not specify a primary private IP, one is still created, with an IP + randomly selected within the IP range of the Subnet. + items: + "$ref": "#/components/schemas/PrivateIpLight" + type: array + SecurityGroupIds: + description: One or more IDs of security groups for the NIC. + items: + type: string + type: array + SubnetId: + description: The ID of the Subnet in which you want to create the NIC. + type: string + required: + - SubnetId + type: object + CreateNicResponse: + additionalProperties: false + properties: + Nic: + "$ref": "#/components/schemas/Nic" + description: Information about the NIC. + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + CreatePolicyRequest: + additionalProperties: false + properties: + Description: + description: A description for the policy. + type: string + Document: + description: The policy document, corresponding to a JSON string that contains + the policy. This policy document can contain a maximum of 5120 non-whitespace + characters. For more information, see [EIM Reference Information](https://docs.outscale.com/en/userguide/EIM-Reference-Information.html) + and [EIM Policy Generator](https://docs.outscale.com/en/userguide/EIM-Policy-Generator.html). + type: string + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Path: + description: The path of the policy. + type: string + PolicyName: + description: The name of the policy. + type: string + required: + - Document + - PolicyName + type: object + CreatePolicyResponse: + additionalProperties: false + properties: + Policy: + "$ref": "#/components/schemas/Policy" + description: Information about the policy. + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + CreatePolicyVersionRequest: + additionalProperties: false + properties: + Document: + description: The policy document, corresponding to a JSON string that contains + the policy. This policy document can contain a maximum of 5120 non-whitespace + characters. For more information, see [EIM Reference Information](https://docs.outscale.com/en/userguide/EIM-Reference-Information.html) + and [EIM Policy Generator](https://docs.outscale.com/en/userguide/EIM-Policy-Generator.html). + type: string + PolicyOrn: + description: The OUTSCALE Resource Name (ORN) of the policy. For more information, + see [Resource Identifiers](https://docs.outscale.com/en/userguide/Resource-Identifiers.html). + pattern: "^orn:ows:(iam|idauth):\\S*:\\d{12}:policy/\\S+$" + type: string + SetAsDefault: + description: If set to true, the new policy version is set as the default + version and becomes the operative one. + type: boolean + required: + - Document + - PolicyOrn + type: object + CreatePolicyVersionResponse: + additionalProperties: false + properties: + PolicyVersion: + "$ref": "#/components/schemas/PolicyVersion" + description: Information about the policy version. + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + CreateProductTypeRequest: + additionalProperties: false + properties: + Description: + description: The description of the product type. + type: string + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Vendor: + description: The vendor of the product type. + type: string + required: + - Description + type: object + CreateProductTypeResponse: + additionalProperties: false + properties: + ProductType: + "$ref": "#/components/schemas/ProductType" + description: Information about the product type. + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + CreatePublicIpRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + type: object + CreatePublicIpResponse: + additionalProperties: false + properties: + PublicIp: + "$ref": "#/components/schemas/PublicIp" + description: Information about the public IP. + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + CreateRouteRequest: + additionalProperties: false + properties: + DestinationIpRange: + description: The IP range used for the destination match, in CIDR notation + (for example, `10.0.0.0/24`). + type: string + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + GatewayId: + description: The ID of an internet service or virtual gateway attached to + your Net. + type: string + NatServiceId: + description: The ID of a NAT service. + type: string + NetPeeringId: + description: The ID of a Net peering. + type: string + NicId: + description: The ID of a NIC. + type: string + RouteTableId: + description: The ID of the route table for which you want to create a route. + type: string + VmId: + description: The ID of a NAT VM in your Net (attached to exactly one NIC). + type: string + required: + - DestinationIpRange + - RouteTableId + type: object + CreateRouteResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + RouteTable: + "$ref": "#/components/schemas/RouteTable" + description: Information about the route table. + type: object + CreateRouteTableRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + NetId: + description: The ID of the Net for which you want to create a route table. + type: string + required: + - NetId + type: object + CreateRouteTableResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + RouteTable: + "$ref": "#/components/schemas/RouteTable" + description: Information about the route table. + type: object + CreateSecurityGroupRequest: + additionalProperties: false + properties: + Description: + description: |- + A description for the security group.
+ This description can contain between 1 and 255 characters. Allowed characters are `a-z`, `A-Z`, `0-9`, accented letters, spaces, and `_.-:/()#,@[]+=&;{}!$*`. + type: string + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + NetId: + description: The ID of the Net for the security group. + type: string + SecurityGroupName: + description: |- + The name of the security group.
+ This name must not start with `sg-`.
+ This name must be unique and contain between 1 and 255 characters. Allowed characters are `a-z`, `A-Z`, `0-9`, spaces, and `_.-:/()#,@[]+=&;{}!$*`. + type: string + required: + - Description + - SecurityGroupName + type: object + CreateSecurityGroupResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + SecurityGroup: + "$ref": "#/components/schemas/SecurityGroup" + description: Information about the security group. + type: object + CreateSecurityGroupRuleRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Flow: + description: 'The direction of the flow: `Inbound` or `Outbound`. You can + specify `Outbound` for Nets only.' + type: string + FromPortRange: + description: The beginning of the port range for the TCP and UDP protocols, + or an ICMP type number. If you specify this parameter, you cannot specify + the `Rules` parameter and its subparameters. + type: integer + IpProtocol: + description: The IP protocol name (`tcp`, `udp`, `icmp`, or `-1` for all + protocols). By default, `-1`. In a Net, this can also be an IP protocol + number. For more information, see the [IANA.org website](https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml). + If you specify this parameter, you cannot specify the `Rules` parameter + and its subparameters. + type: string + IpRange: + description: The IP range for the security group rule, in CIDR notation + (for example, `10.0.0.0/16`). If you specify this parameter, you cannot + specify the `Rules` parameter and its subparameters. + type: string + Rules: + description: 'Information about the security group rule to create. If you + specify this parent parameter and its subparameters, you cannot specify + the following parent parameters: `FromPortRange`, `IpProtocol`, `IpRange`, + and `ToPortRange`.' + items: + "$ref": "#/components/schemas/SecurityGroupRule" + type: array + SecurityGroupAccountIdToLink: + description: The OUTSCALE account ID that owns the source or destination + security group specified in the `SecurityGroupNameToLink` parameter. + type: string + SecurityGroupId: + description: The ID of the security group for which you want to create a + rule. + type: string + SecurityGroupNameToLink: + description: The ID of a source or destination security group that you want + to link to the security group of the rule. + type: string + ToPortRange: + description: The end of the port range for the TCP and UDP protocols, or + an ICMP code number. If you specify this parameter, you cannot specify + the `Rules` parameter and its subparameters. + type: integer + required: + - SecurityGroupId + - Flow + type: object + CreateSecurityGroupRuleResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + SecurityGroup: + "$ref": "#/components/schemas/SecurityGroup" + description: Information about the security group. + type: object + CreateServerCertificateRequest: + additionalProperties: false + properties: + Body: + description: 'The PEM-encoded X509 certificate.
With OSC CLI, use the + following syntax to make sure your certificate file is correctly parsed: + `--Body="$(cat FILENAME)"`.' + type: string + Chain: + description: 'The PEM-encoded intermediate certification authorities.
With OSC CLI, use the following syntax to make sure your certificate + chain file is correctly parsed: `--Chain="$(cat FILENAME)"`.' + type: string + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Name: + description: 'A unique name for the certificate. Constraints: 1-128 alphanumeric + characters, pluses (`+`), equals (`=`), commas (`,`), periods (`.`), at + signs (`@`), minuses (`-`), or underscores (`_`).' + type: string + Path: + description: The path to the server certificate, set to a slash (`/`) if + not specified. + type: string + PrivateKey: + description: 'The PEM-encoded private key matching the certificate.
With + OSC CLI, use the following syntax to make sure your key file is correctly + parsed: `--PrivateKey="$(cat FILENAME)"`.' + type: string + required: + - Body + - PrivateKey + - Name + type: object + CreateServerCertificateResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + ServerCertificate: + "$ref": "#/components/schemas/ServerCertificate" + description: Information about the server certificate. + type: object + CreateSnapshotExportTaskRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + OsuExport: + "$ref": "#/components/schemas/OsuExportToCreate" + description: Information about the OOS export task to create. + SnapshotId: + description: The ID of the snapshot to export. + type: string + required: + - OsuExport + - SnapshotId + type: object + CreateSnapshotExportTaskResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + SnapshotExportTask: + "$ref": "#/components/schemas/SnapshotExportTask" + description: Information about the snapshot export task. + type: object + CreateSnapshotRequest: + additionalProperties: false + properties: + ClientToken: + description: A unique identifier which enables you to manage the idempotency. + type: string + Description: + description: A description for the snapshot. + type: string + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + FileLocation: + description: "**(when importing from a bucket)** The pre-signed URL of the + snapshot you want to import. For more information, see [Creating a Pre-signed + URL](https://docs.outscale.com/en/userguide/Creating-a-Pre-Signed-URL.html)." + type: string + SnapshotSize: + description: "**(when importing from a bucket)** The size of the snapshot + you want to create in your account, in bytes. This size must be greater + than or equal to the size of the original, uncompressed snapshot." + format: int64 + type: integer + SourceRegionName: + description: "**(when copying a snapshot)** The name of the source Region, + which must be the same as the Region of your account." + type: string + SourceSnapshotId: + description: "**(when copying a snapshot)** The ID of the snapshot you want + to copy." + type: string + VolumeId: + description: "**(when creating from a volume)** The ID of the volume you + want to create a snapshot of." + type: string + type: object + CreateSnapshotResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + Snapshot: + "$ref": "#/components/schemas/Snapshot" + description: Information about the snapshot. + type: object + CreateSubnetRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + IpRange: + description: |- + The IP range in the Subnet, in CIDR notation (for example, `10.0.0.0/16`).
+ The IP range of the Subnet can be either the same as the Net one if you create only a single Subnet in this Net, or a subset of the Net one. In case of several Subnets in a Net, their IP ranges must not overlap. The smallest Subnet you can create uses a /29 netmask (eight IPs). For more information, see [About Nets](https://docs.outscale.com/en/userguide/About-Nets.html). + type: string + NetId: + description: The ID of the Net for which you want to create a Subnet. + type: string + SubregionName: + description: The name of the Subregion in which you want to create the Subnet. + type: string + required: + - IpRange + - NetId + type: object + CreateSubnetResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + Subnet: + "$ref": "#/components/schemas/Subnet" + description: Information about the Subnet. + type: object + CreateTagsRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + ResourceIds: + description: One or more resource IDs. + items: + type: string + type: array + Tags: + description: One or more tags to add to the specified resources. + items: + "$ref": "#/components/schemas/ResourceTag" + type: array + required: + - ResourceIds + - Tags + type: object + CreateTagsResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + CreateUserGroupRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Path: + description: The path to the group. If not specified, it is set to a slash + (`/`). + type: string + UserGroupName: + description: The name of the group. + type: string + required: + - UserGroupName + type: object + CreateUserGroupResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + UserGroup: + "$ref": "#/components/schemas/UserGroup" + description: Information about the user group. + type: object + CreateUserRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Path: + description: The path to the EIM user you want to create (by default, `/`). + This path name must begin and end with a slash (`/`), and contain between + 1 and 512 alphanumeric characters and/or slashes (`/`), or underscores + (`_`). + type: string + UserEmail: + description: The email address of the EIM user. + type: string + UserName: + description: The name of the EIM user. This user name must contain between + 1 and 64 alphanumeric characters and/or pluses (`+`), equals (`=`), commas + (`,`), periods (`.`), at signs (`@`), dashes (`-`), or underscores (`_`). + type: string + required: + - UserName + type: object + CreateUserResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + User: + "$ref": "#/components/schemas/User" + description: Information about the EIM user. + type: object + CreateVirtualGatewayRequest: + additionalProperties: false + properties: + ConnectionType: + description: The type of VPN connection supported by the virtual gateway + (always `ipsec.1`). + type: string + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + required: + - ConnectionType + type: object + CreateVirtualGatewayResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + VirtualGateway: + "$ref": "#/components/schemas/VirtualGateway" + description: Information about the virtual gateway. + type: object + CreateVmGroupRequest: + additionalProperties: false + properties: + Description: + description: A description for the VM group. + type: string + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + PositioningStrategy: + default: no-strategy + description: The positioning strategy of VMs on hypervisors. If set to `no-strategy`, + our orchestrator determines the most adequate position for your VMs. If + set to `attract`, your VMs are deployed on the same hypervisor, which + improves network performance. If set to `repulse`, your VMs are deployed + on a different hypervisor, which improves fault tolerance. + enum: + - attract + - no-strategy + - repulse + type: string + SecurityGroupIds: + description: One or more IDs of security groups for the VM group. + items: + type: string + type: array + SubnetId: + description: The ID of the Subnet in which you want to create the VM group. + type: string + Tags: + description: One or more tags to add to the VM group. + items: + "$ref": "#/components/schemas/ResourceTag" + type: array + VmCount: + description: The number of VMs deployed in the VM group. + type: integer + VmGroupName: + description: The name of the VM group. + type: string + VmTemplateId: + description: The ID of the VM template used to launch VMs in the VM group. + type: string + required: + - SecurityGroupIds + - SubnetId + - VmGroupName + - VmTemplateId + - VmCount + type: object + CreateVmGroupResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + VmGroup: + "$ref": "#/components/schemas/VmGroup" + description: Information about the VM group. + type: object + CreateVmTemplateRequest: + additionalProperties: false + properties: + CpuCores: + description: The number of vCores to use for each VM. + type: integer + CpuGeneration: + description: The processor generation to use for each VM (for example, `v4`). + type: string + CpuPerformance: + default: high + description: The performance of the VMs. + enum: + - medium + - high + - highest + type: string + Description: + description: A description for the VM template. + type: string + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + ImageId: + description: The ID of the OMI to use for each VM. You can find a list of + OMIs by calling the [ReadImages](#readimages) method. + type: string + KeypairName: + description: The name of the keypair to use for each VM. + type: string + Ram: + description: The amount of RAM to use for each VM. + type: integer + Tags: + description: One or more tags to add to the VM template. + items: + "$ref": "#/components/schemas/ResourceTag" + type: array + VmTemplateName: + description: The name of the VM template. + type: string + required: + - CpuCores + - CpuGeneration + - ImageId + - Ram + - VmTemplateName + type: object + CreateVmTemplateResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + VmTemplate: + "$ref": "#/components/schemas/VmTemplate" + description: Information about the VM template. + type: object + CreateVmsRequest: + additionalProperties: false + properties: + ActionsOnNextBoot: + "$ref": "#/components/schemas/ActionsOnNextBoot" + description: The action to perform on the next boot of the VM. + BlockDeviceMappings: + description: One or more block device mappings. + items: + "$ref": "#/components/schemas/BlockDeviceMappingVmCreation" + type: array + BootMode: + "$ref": "#/components/schemas/BootMode" + description: The boot mode of the VM. + BootOnCreation: + default: true + description: If true, the VM is started on creation. If false, the VM is + stopped on creation. + type: boolean + BsuOptimized: + description: This parameter is not available. It is present in our API for + the sake of historical compatibility with AWS. + type: boolean + ClientToken: + description: A unique identifier which enables you to manage the idempotency. + type: string + DeletionProtection: + description: If true, you cannot delete the VM unless you change this parameter + back to false. + type: boolean + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + ImageId: + description: The ID of the OMI used to create the VM. You can find the list + of OMIs by calling the [ReadImages](#readimages) method. + type: string + KeypairName: + description: The name of the keypair. + type: string + MaxVmsCount: + description: The maximum number of VMs you want to create. If all the VMs + cannot be created, the largest possible number of VMs above MinVmsCount + is created. + type: integer + MinVmsCount: + description: The minimum number of VMs you want to create. If this number + of VMs cannot be created, no VMs are created. + type: integer + NestedVirtualization: + default: false + description: "(dedicated tenancy only) If true, nested virtualization is + enabled. If false, it is disabled." + type: boolean + Nics: + description: One or more NICs. If you specify this parameter, you must define + one NIC as the primary network interface of the VM with `0` as its device + number. + items: + "$ref": "#/components/schemas/NicForVmCreation" + type: array + Performance: + default: high + description: The performance of the VM. This parameter is ignored if you + specify a performance flag directly in the `VmType` parameter. + enum: + - medium + - high + - highest + type: string + Placement: + "$ref": "#/components/schemas/Placement" + description: Information about the placement of the VM. + PrivateIps: + description: One or more private IPs of the VM. These IPs must be within + the IP range of the Subnet that you specify with the `SubnetId` parameter. + However, they cannot be one of the first four IPs (ending in `.0`, `.1`, + `.2`, `.3`) or the last IP (ending in `.255`) of the Subnet, as these + are reserved by 3DS OUTSCALE. For more information, see [About Nets](https://docs.outscale.com/en/userguide/About-Nets.html). + items: + type: string + type: array + SecurityGroupIds: + description: One or more IDs of security group for the VMs. + items: + type: string + type: array + SecurityGroups: + description: One or more names of security groups for the VMs. + items: + type: string + type: array + SubnetId: + description: The ID of the Subnet in which you want to create the VM. + type: string + TpmEnabled: + description: If true, a virtual Trusted Platform Module (vTPM) is enabled + on the VM. If false, it is not.
The default behavior for this parameter + varies depending on the source OMI of the VM.
If the `TpmMandatory` + parameter of the source OMI is true, a vTPM has to be attached to the + VM and it will be created by default. Setting `TpmEnabled` to false will + cause the creation request to fail.
If the `TpmMandatory` parameter + of the source OMI is false, only setting `TpmEnabled` to true will create + and attach a vTPM to the VM. + type: boolean + UserData: + description: Data or script used to add a specific configuration to the + VM. It must be Base64-encoded and is limited to 500 kibibytes (KiB). For + more information about user data, see [Configuring a VM with User Data + and OUTSCALE Tags](https://docs.outscale.com/en/userguide/Configuring-a-VM-with-User-Data-and-OUTSCALE-Tags.html). + type: string + VmInitiatedShutdownBehavior: + default: stop + description: The VM behavior when you stop it. If set to `stop`, the VM + stops. If set to `restart`, the VM stops then automatically restarts. + If set to `terminate`, the VM stops and is terminated. + type: string + VmType: + description: |- + The type of VM. You can specify a TINA type (in the `tinavW.cXrYpZ` or `tinavW.cXrY` format), or an AWS type (for example, `t2.small`, which is the default value).
+ If you specify an AWS type, it is converted in the background to its corresponding TINA type, but the AWS type is still returned. If the specified or converted TINA type includes a performance flag, this performance flag is applied regardless of the value you may have provided in the `Performance` parameter. For more information, see [VM Types](https://docs.outscale.com/en/userguide/VM-Types.html). + type: string + required: + - ImageId + type: object + CreateVmsResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + Vms: + description: Information about one or more created VMs. + items: + "$ref": "#/components/schemas/Vm" + type: array + type: object + CreateVolumeRequest: + additionalProperties: false + properties: + ClientToken: + description: A unique identifier which enables you to manage the idempotency. + type: string + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Iops: + description: The number of I/O operations per second (IOPS). This parameter + must be specified only if you create an `io1` volume. The maximum number + of IOPS allowed for `io1` volumes is `13000` with a maximum performance + ratio of 300 IOPS per gibibyte. + type: integer + Size: + description: The size of the volume, in gibibytes (GiB). The maximum allowed + size for a volume is 14901 GiB. This parameter is required if the volume + is not created from a snapshot (`SnapshotId` unspecified). + type: integer + SnapshotId: + description: The ID of the snapshot from which you want to create the volume. + type: string + SubregionName: + description: The Subregion in which you want to create the volume. + type: string + VolumeType: + description: |- + The type of volume you want to create (`io1` \| `gp2` \| `standard`). If not specified, a `standard` volume is created.
+ For more information about volume types, see [About Volumes > Volume Types and IOPS](https://docs.outscale.com/en/userguide/About-Volumes.html#_volume_types_and_iops). + type: string + required: + - SubregionName + type: object + CreateVolumeResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + Volume: + "$ref": "#/components/schemas/Volume" + description: Information about the volume. + type: object + CreateVpnConnectionRequest: + additionalProperties: false + properties: + ClientGatewayId: + description: The ID of the client gateway. + type: string + ConnectionType: + description: The type of VPN connection (always `ipsec.1`). + type: string + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + StaticRoutesOnly: + description: By default or if false, the VPN connection uses dynamic routing + with Border Gateway Protocol (BGP). If true, routing is controlled using + static routes. For more information about how to create and delete static + routes, see [CreateVpnConnectionRoute](#createvpnconnectionroute) and + [DeleteVpnConnectionRoute](#deletevpnconnectionroute). + type: boolean + VirtualGatewayId: + description: The ID of the virtual gateway. + type: string + required: + - ClientGatewayId + - ConnectionType + - VirtualGatewayId + type: object + CreateVpnConnectionResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + VpnConnection: + "$ref": "#/components/schemas/VpnConnection" + description: Information about a VPN connection. + type: object + CreateVpnConnectionRouteRequest: + additionalProperties: false + properties: + DestinationIpRange: + description: The network prefix of the route, in CIDR notation (for example, + `10.12.0.0/16`). + type: string + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + VpnConnectionId: + description: The ID of the target VPN connection of the static route. + type: string + required: + - DestinationIpRange + - VpnConnectionId + type: object + CreateVpnConnectionRouteResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + DedicatedGroup: + additionalProperties: false + description: Information about the dedicated group. + properties: + AccountId: + description: The OUTSCALE account ID of the owners of the dedicated group. + type: string + CpuGeneration: + description: The processor generation. + type: integer + DedicatedGroupId: + description: The ID of the dedicated group. + type: string + Name: + description: The name of the dedicated group. + type: string + NetIds: + description: The IDs of the Nets in the dedicated group. + items: + type: string + type: array + SubregionName: + description: The name of the Subregion in which the dedicated group is located. + type: string + VmIds: + description: The IDs of the VMs in the dedicated group. + items: + type: string + type: array + type: object + DeleteAccessKeyRequest: + additionalProperties: false + properties: + AccessKeyId: + description: The ID of the access key you want to delete. + type: string + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + UserName: + description: The name of the EIM user the access key you want to delete + is associated with. By default, the user who sends the request (which + can be the root user). + type: string + required: + - AccessKeyId + type: object + DeleteAccessKeyResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + DeleteApiAccessRuleRequest: + additionalProperties: false + properties: + ApiAccessRuleId: + description: The ID of the API access rule you want to delete. + type: string + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + required: + - ApiAccessRuleId + type: object + DeleteApiAccessRuleResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + DeleteCaRequest: + additionalProperties: false + properties: + CaId: + description: The ID of the CA you want to delete. + type: string + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + required: + - CaId + type: object + DeleteCaResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + DeleteClientGatewayRequest: + additionalProperties: false + properties: + ClientGatewayId: + description: The ID of the client gateway you want to delete. + type: string + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + required: + - ClientGatewayId + type: object + DeleteClientGatewayResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + DeleteDedicatedGroupRequest: + additionalProperties: false + properties: + DedicatedGroupId: + description: The ID of the dedicated group you want to delete. + type: string + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Force: + description: If true, forces the deletion of the dedicated group and all + its dependencies. + type: boolean + required: + - DedicatedGroupId + type: object + DeleteDedicatedGroupResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + DeleteDhcpOptionsRequest: + additionalProperties: false + properties: + DhcpOptionsSetId: + description: The ID of the DHCP options set you want to delete. + type: string + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + required: + - DhcpOptionsSetId + type: object + DeleteDhcpOptionsResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + DeleteDirectLinkInterfaceRequest: + additionalProperties: false + properties: + DirectLinkInterfaceId: + description: The ID of the DirectLink interface you want to delete. + type: string + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + required: + - DirectLinkInterfaceId + type: object + DeleteDirectLinkInterfaceResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + DeleteDirectLinkRequest: + additionalProperties: false + properties: + DirectLinkId: + description: The ID of the DirectLink you want to delete. + type: string + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + required: + - DirectLinkId + type: object + DeleteDirectLinkResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + DeleteExportTaskRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + ExportTaskId: + description: The ID of the export task to delete. + type: string + required: + - ExportTaskId + type: object + DeleteExportTaskResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + DeleteFlexibleGpuRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + FlexibleGpuId: + description: The ID of the fGPU you want to delete. + type: string + required: + - FlexibleGpuId + type: object + DeleteFlexibleGpuResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + DeleteImageRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + ImageId: + description: The ID of the OMI you want to delete. + type: string + required: + - ImageId + type: object + DeleteImageResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + DeleteInternetServiceRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + InternetServiceId: + description: The ID of the internet service you want to delete. + type: string + required: + - InternetServiceId + type: object + DeleteInternetServiceResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + DeleteKeypairRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + KeypairId: + description: The ID of the keypair you want to delete. + type: string + KeypairName: + description: The name of the keypair you want to delete. + type: string + type: object + DeleteKeypairResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + DeleteListenerRuleRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + ListenerRuleName: + description: The name of the rule you want to delete. + type: string + required: + - ListenerRuleName + type: object + DeleteListenerRuleResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + DeleteLoadBalancerListenersRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + LoadBalancerName: + description: The name of the load balancer for which you want to delete + listeners. + type: string + LoadBalancerPorts: + description: One or more port numbers of the listeners you want to delete. + items: + type: integer + type: array + required: + - LoadBalancerName + - LoadBalancerPorts + type: object + DeleteLoadBalancerListenersResponse: + additionalProperties: false + properties: + LoadBalancer: + "$ref": "#/components/schemas/LoadBalancer" + description: Information about the load balancer. + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + DeleteLoadBalancerPolicyRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + LoadBalancerName: + description: The name of the load balancer for which you want to delete + a policy. + type: string + PolicyName: + description: The name of the policy you want to delete. + type: string + required: + - LoadBalancerName + - PolicyName + type: object + DeleteLoadBalancerPolicyResponse: + additionalProperties: false + properties: + LoadBalancer: + "$ref": "#/components/schemas/LoadBalancer" + description: Information about the load balancer. + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + DeleteLoadBalancerRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + LoadBalancerName: + description: The name of the load balancer you want to delete. + type: string + required: + - LoadBalancerName + type: object + DeleteLoadBalancerResponse: + additionalProperties: false + properties: + LoadBalancer: + "$ref": "#/components/schemas/LoadBalancer" + description: Information about the load balancer. + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + DeleteLoadBalancerTagsRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + LoadBalancerNames: + description: One or more load balancer names. + items: + type: string + type: array + Tags: + description: One or more tags to delete from the load balancers. + items: + "$ref": "#/components/schemas/ResourceLoadBalancerTag" + type: array + required: + - LoadBalancerNames + - Tags + type: object + DeleteLoadBalancerTagsResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + DeleteNatServiceRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + NatServiceId: + description: The ID of the NAT service you want to delete. + type: string + required: + - NatServiceId + type: object + DeleteNatServiceResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + DeleteNetAccessPointRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + NetAccessPointId: + description: The ID of the Net access point. + type: string + required: + - NetAccessPointId + type: object + DeleteNetAccessPointResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + DeleteNetPeeringRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + NetPeeringId: + description: The ID of the Net peering you want to delete. + type: string + required: + - NetPeeringId + type: object + DeleteNetPeeringResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + DeleteNetRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + NetId: + description: The ID of the Net you want to delete. + type: string + required: + - NetId + type: object + DeleteNetResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + DeleteNicRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + NicId: + description: The ID of the NIC you want to delete. + type: string + required: + - NicId + type: object + DeleteNicResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + DeletePolicyRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + PolicyOrn: + description: The OUTSCALE Resource Name (ORN) of the policy you want to + delete. For more information, see [Resource Identifiers](https://docs.outscale.com/en/userguide/Resource-Identifiers.html). + pattern: "^orn:ows:(iam|idauth):\\S*:\\d{12}:policy/\\S+$" + type: string + required: + - PolicyOrn + type: object + DeletePolicyResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + DeletePolicyVersionRequest: + additionalProperties: false + properties: + PolicyOrn: + description: The OUTSCALE Resource Name (ORN) of the policy. For more information, + see [Resource Identifiers](https://docs.outscale.com/en/userguide/Resource-Identifiers.html). + pattern: "^orn:ows:(iam|idauth):\\S*:\\d{12}:policy/\\S+$" + type: string + VersionId: + description: The ID of the version of the policy you want to delete. + type: string + required: + - PolicyOrn + - VersionId + type: object + DeletePolicyVersionResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + DeleteProductTypeRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Force: + description: If true, forces the deletion of the product type associated + with one or more OMIs. + type: boolean + ProductTypeId: + description: The ID of the product type you want to delete. + type: string + required: + - ProductTypeId + type: object + DeleteProductTypeResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + DeletePublicIpRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + PublicIp: + description: The public IP. In the public Cloud, this parameter is required. + type: string + PublicIpId: + description: The ID representing the association of the public IP with the + VM or the NIC. In a Net, this parameter is required. + type: string + type: object + DeletePublicIpResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + DeleteRouteRequest: + additionalProperties: false + properties: + DestinationIpRange: + description: The exact IP range for the route. + type: string + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + RouteTableId: + description: The ID of the route table from which you want to delete a route. + type: string + required: + - RouteTableId + - DestinationIpRange + type: object + DeleteRouteResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + RouteTable: + "$ref": "#/components/schemas/RouteTable" + description: Information about the route table. + type: object + DeleteRouteTableRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + RouteTableId: + description: The ID of the route table you want to delete. + type: string + required: + - RouteTableId + type: object + DeleteRouteTableResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + DeleteSecurityGroupRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + SecurityGroupId: + description: The ID of the security group you want to delete. + type: string + SecurityGroupName: + description: The name of the security group. + type: string + type: object + DeleteSecurityGroupResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + DeleteSecurityGroupRuleRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Flow: + description: 'The direction of the flow: `Inbound` or `Outbound`. You can + specify `Outbound` for Nets only.' + type: string + FromPortRange: + description: The beginning of the port range for the TCP and UDP protocols, + or an ICMP type number. + type: integer + IpProtocol: + description: The IP protocol name (`tcp`, `udp`, `icmp`, or `-1` for all + protocols). By default, `-1`. In a Net, this can also be an IP protocol + number. For more information, see the [IANA.org website](https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml). + type: string + IpRange: + description: The IP range for the security group rule, in CIDR notation + (for example, `10.0.0.0/16`). + type: string + Rules: + description: One or more rules you want to delete from the security group. + items: + "$ref": "#/components/schemas/SecurityGroupRule" + type: array + SecurityGroupAccountIdToUnlink: + description: The OUTSCALE account ID of the owner of the security group + you want to delete a rule from. + type: string + SecurityGroupId: + description: The ID of the security group you want to delete a rule from. + type: string + SecurityGroupNameToUnlink: + description: The ID of the source security group. If you are in the Public + Cloud, you can also specify the name of the source security group. + type: string + ToPortRange: + description: The end of the port range for the TCP and UDP protocols, or + an ICMP code number. + type: integer + required: + - SecurityGroupId + - Flow + type: object + DeleteSecurityGroupRuleResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + SecurityGroup: + "$ref": "#/components/schemas/SecurityGroup" + description: Information about the security group. + type: object + DeleteServerCertificateRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Name: + description: The name of the server certificate you want to delete. + type: string + required: + - Name + type: object + DeleteServerCertificateResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + DeleteSnapshotRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + SnapshotId: + description: The ID of the snapshot you want to delete. + type: string + required: + - SnapshotId + type: object + DeleteSnapshotResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + DeleteSubnetRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + SubnetId: + description: The ID of the Subnet you want to delete. + type: string + required: + - SubnetId + type: object + DeleteSubnetResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + DeleteTagsRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + ResourceIds: + description: One or more resource IDs. + items: + type: string + type: array + Tags: + description: One or more tags to delete (if you set a tag value, only the + tags matching exactly this value are deleted). + items: + "$ref": "#/components/schemas/ResourceTag" + type: array + required: + - ResourceIds + - Tags + type: object + DeleteTagsResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + DeleteUserGroupPolicyRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + PolicyName: + description: The name of the policy document you want to delete. + type: string + UserGroupName: + description: The name of the group. + type: string + UserGroupPath: + description: The path to the group. If not specified, it is set to a slash + (`/`). + type: string + required: + - UserGroupName + - PolicyName + type: object + DeleteUserGroupPolicyResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + DeleteUserGroupRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Force: + description: If true, forces the deletion of the user group even if it is + not empty. + type: boolean + Path: + description: The path to the group. If not specified, it is set to a slash + (`/`). + type: string + UserGroupName: + description: The name of the group you want to delete. + type: string + required: + - UserGroupName + type: object + DeleteUserGroupResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + DeleteUserPolicyRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + PolicyName: + description: The name of the policy document you want to delete (between + 1 and 128 characters). + type: string + UserName: + description: The name of the user you want to delete the policy from. + type: string + required: + - UserName + - PolicyName + type: object + DeleteUserPolicyResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + DeleteUserRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + UserName: + description: The name of the EIM user you want to delete. + type: string + required: + - UserName + type: object + DeleteUserResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + DeleteVirtualGatewayRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + VirtualGatewayId: + description: The ID of the virtual gateway you want to delete. + type: string + required: + - VirtualGatewayId + type: object + DeleteVirtualGatewayResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + DeleteVmGroupRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + VmGroupId: + description: The ID of the VM group you want to delete. + type: string + required: + - VmGroupId + type: object + DeleteVmGroupResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + DeleteVmTemplateRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + VmTemplateId: + description: The ID of the VM template you want to delete. + type: string + required: + - VmTemplateId + type: object + DeleteVmTemplateResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + DeleteVmsRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + VmIds: + description: One or more IDs of VMs. + items: + type: string + type: array + required: + - VmIds + type: object + DeleteVmsResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + Vms: + description: Information about one or more terminated VMs. + items: + "$ref": "#/components/schemas/VmState" + type: array + type: object + DeleteVolumeRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + VolumeId: + description: The ID of the volume you want to delete. + type: string + required: + - VolumeId + type: object + DeleteVolumeResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + DeleteVpnConnectionRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + VpnConnectionId: + description: The ID of the VPN connection you want to delete. + type: string + required: + - VpnConnectionId + type: object + DeleteVpnConnectionResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + DeleteVpnConnectionRouteRequest: + additionalProperties: false + properties: + DestinationIpRange: + description: The network prefix of the route to delete, in CIDR notation + (for example, `10.12.0.0/16`). + type: string + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + VpnConnectionId: + description: The ID of the target VPN connection of the static route to + delete. + type: string + required: + - DestinationIpRange + - VpnConnectionId + type: object + DeleteVpnConnectionRouteResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + DeregisterVmsInLoadBalancerRequest: + additionalProperties: false + properties: + BackendVmIds: + description: One or more IDs of backend VMs. + items: + type: string + type: array + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + LoadBalancerName: + description: The name of the load balancer. + type: string + required: + - BackendVmIds + - LoadBalancerName + type: object + DeregisterVmsInLoadBalancerResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + DhcpOptionsSet: + additionalProperties: false + description: Information about the DHCP options set. + properties: + Default: + description: If true, the DHCP options set is a default one. If false, it + is not. + type: boolean + DhcpOptionsSetId: + description: The ID of the DHCP options set. + type: string + DomainName: + description: The domain name. + type: string + DomainNameServers: + description: One or more IPs for the domain name servers. + items: + type: string + type: array + LogServers: + description: One or more IPs for the log servers. + items: + type: string + type: array + NtpServers: + description: One or more IPs for the NTP servers. + items: + type: string + type: array + Tags: + description: One or more tags associated with the DHCP options set. + items: + "$ref": "#/components/schemas/ResourceTag" + type: array + type: object + DirectLink: + additionalProperties: false + description: Information about the DirectLink. + properties: + AccountId: + description: The OUTSCALE account ID of the owner of the DirectLink. + type: string + Bandwidth: + description: The physical link bandwidth (either 1 Gbps or 10 Gbps). + type: string + DirectLinkId: + description: The ID of the DirectLink (for example, `dxcon-xxxxxxxx`). + type: string + DirectLinkName: + description: The name of the DirectLink. + type: string + Location: + description: The datacenter where the DirectLink is located. + type: string + RegionName: + description: The Region in which the DirectLink has been created. + type: string + State: + description: | + The state of the DirectLink. +
  • `pending`: The DirectLink request has been validated. It remains in the `pending` state until you establish the physical link.
  • +
  • `available`: The physical link is established and the connection is ready to use.
  • +
  • `disabled`: The network link is down.
  • +
  • `deleted`: The DirectLink is deleted.
  • +
+ type: string + type: object + DirectLinkInterface: + additionalProperties: false + description: Information about the DirectLink interface. + properties: + BgpAsn: + description: |- + The BGP (Border Gateway Protocol) ASN (Autonomous System Number) on the customer's side of the DirectLink interface.
+ This number must be between `1` and `4294967295`, except `50624`, `53306`, and `132418`.
+ If you do not have an ASN, you can choose one between `64512` and `65534` (both included), or between `4200000000` and `4294967295` (both included). + type: integer + BgpKey: + description: The BGP authentication key. + type: string + ClientPrivateIp: + description: The IP on the customer's side of the DirectLink interface. + type: string + DirectLinkInterfaceName: + description: The name of the DirectLink interface. + type: string + OutscalePrivateIp: + description: The IP on the OUTSCALE side of the DirectLink interface. + type: string + VirtualGatewayId: + description: The ID of the target virtual gateway. + type: string + Vlan: + description: The VLAN number associated with the DirectLink interface. This + number must be unique and be between `2` and `4094`. + type: integer + required: + - BgpAsn + - DirectLinkInterfaceName + - VirtualGatewayId + - Vlan + type: object + DirectLinkInterfaces: + additionalProperties: false + description: Information about the DirectLink interfaces. + properties: + AccountId: + description: The OUTSCALE account ID of the owner of the DirectLink interface. + type: string + BgpAsn: + description: The BGP (Border Gateway Protocol) ASN (Autonomous System Number) + on the customer's side of the DirectLink interface. + type: integer + BgpKey: + description: The BGP authentication key. + type: string + ClientPrivateIp: + description: The IP on the customer's side of the DirectLink interface. + type: string + DirectLinkId: + description: The ID of the DirectLink. + type: string + DirectLinkInterfaceId: + description: The ID of the DirectLink interface. + type: string + DirectLinkInterfaceName: + description: The name of the DirectLink interface. + type: string + InterfaceType: + description: The type of the DirectLink interface (always `private`). + type: string + Location: + description: The datacenter where the DirectLink interface is located. + type: string + Mtu: + description: The maximum transmission unit (MTU) of the DirectLink interface, + in bytes. + type: integer + OutscalePrivateIp: + description: The IP on the OUTSCALE side of the DirectLink interface. + type: string + State: + description: The state of the DirectLink interface (`pending` \| `available` + \| `deleting` \| `deleted` \| `confirming` \| `rejected` \| `expired`). + type: string + VirtualGatewayId: + description: The ID of the target virtual gateway. + type: string + Vlan: + description: The VLAN number associated with the DirectLink interface. + type: integer + type: object + DisableOutscaleLoginForUsersRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + type: object + DisableOutscaleLoginForUsersResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + DisableOutscaleLoginPerUsersRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + UserNames: + description: The usernames of the EIM users you want to disable the Outscale + login for. + items: + type: string + type: array + required: + - UserNames + type: object + DisableOutscaleLoginPerUsersResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + DisableOutscaleLoginRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + type: object + DisableOutscaleLoginResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + EnableOutscaleLoginForUsersRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + type: object + EnableOutscaleLoginForUsersResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + EnableOutscaleLoginPerUsersRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + UserNames: + description: The usernames of the EIM users you want to enable the Outscale + login for. + items: + type: string + type: array + required: + - UserNames + type: object + EnableOutscaleLoginPerUsersResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + EnableOutscaleLoginRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + type: object + EnableOutscaleLoginResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + ErrorResponse: + additionalProperties: false + properties: + Errors: + description: One or more errors. + items: + "$ref": "#/components/schemas/Errors" + type: array + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + Errors: + additionalProperties: false + description: Information about the errors. + properties: + Code: + description: The code of the error (for example, `4078`). You can search + for this returned code in the [errors page](api-errors.html) to find more + details about the error. + type: string + Details: + description: A description providing more details about the error. + type: string + Type: + description: The type of the error (for example, `InvalidParameterValue`). + type: string + type: object + FiltersAccessKeys: + additionalProperties: false + description: One or more filters. + properties: + AccessKeyIds: + description: The IDs of the access keys. + items: + type: string + type: array + States: + description: The states of the access keys (`ACTIVE` \| `INACTIVE`). + items: + type: string + type: array + type: object + FiltersApiAccessRule: + additionalProperties: false + description: One or more filters. + properties: + ApiAccessRuleIds: + description: One or more IDs of API access rules. + items: + type: string + type: array + CaIds: + description: One or more IDs of Client Certificate Authorities (CAs). + items: + type: string + type: array + Cns: + description: One or more Client Certificate Common Names (CNs). + items: + type: string + type: array + Descriptions: + description: One or more descriptions of API access rules. + items: + type: string + type: array + IpRanges: + description: One or more IPs or CIDR blocks (for example, `192.0.2.0/16`). + items: + type: string + type: array + type: object + FiltersApiLog: + additionalProperties: false + description: One or more filters. + properties: + QueryAccessKeys: + description: The access keys used for the logged calls. + items: + type: string + type: array + QueryApiNames: + description: The names of the APIs of the logged calls (always `oapi` for + the OUTSCALE API). + items: + type: string + type: array + QueryCallNames: + description: The names of the logged calls. + items: + type: string + type: array + QueryDateAfter: + description: The date and time, or the date, after which you want to retrieve + logged calls, in ISO 8601 format (for example, `2020-06-14T00:00:00.000Z` + or `2020-06-14`). By default, this date is set to 48 hours before the + `QueryDateBefore` parameter value. + format: date + type: string + QueryDateBefore: + description: The date and time, or the date, before which you want to retrieve + logged calls, in ISO 8601 format (for example, `2020-06-30T00:00:00.000Z` + or `2020-06-14`). By default, this date is set to now, or 48 hours after + the `QueryDateAfter` parameter value. + format: date + type: string + QueryIpAddresses: + description: The IPs used for the logged calls. + items: + type: string + type: array + QueryUserAgents: + description: The user agents of the HTTP requests of the logged calls. + items: + type: string + type: array + RequestIds: + description: The request IDs provided in the responses of the logged calls. + items: + type: string + type: array + ResponseStatusCodes: + description: The HTTP status codes of the logged calls. + items: + type: integer + type: array + type: object + FiltersCa: + additionalProperties: false + description: One or more filters. + properties: + CaFingerprints: + description: The fingerprints of the CAs. + items: + type: string + type: array + CaIds: + description: The IDs of the CAs. + items: + type: string + type: array + Descriptions: + description: The descriptions of the CAs. + items: + type: string + type: array + type: object + FiltersCatalogs: + additionalProperties: false + description: One or more filters. + properties: + CurrentCatalogOnly: + description: By default or if set to true, only returns the current catalog. + If false, returns the current catalog and past catalogs. + type: boolean + FromDate: + description: The beginning of the time period, in ISO 8601 date format (for + example, `2020-06-14`). This date cannot be older than 3 years. You must + specify the parameters `FromDate` and `ToDate` together. + format: date + type: string + ToDate: + description: The end of the time period, in ISO 8601 date format (for example, + `2020-06-30`). You must specify the parameters `FromDate` and `ToDate` + together. + format: date + type: string + type: object + FiltersClientGateway: + additionalProperties: false + description: One or more filters. + properties: + BgpAsns: + description: The Border Gateway Protocol (BGP) Autonomous System Numbers + (ASNs) of the connections. + items: + type: integer + type: array + ClientGatewayIds: + description: The IDs of the client gateways. + items: + type: string + type: array + ConnectionTypes: + description: The types of communication tunnels used by the client gateways + (always `ipsec.1`). + items: + type: string + type: array + PublicIps: + description: The public IPv4 addresses of the client gateways. + items: + type: string + type: array + States: + description: The states of the client gateways (`pending` \| `available` + \| `deleting` \| `deleted`). + items: + type: string + type: array + TagKeys: + description: The keys of the tags associated with the client gateways. + items: + type: string + type: array + TagValues: + description: The values of the tags associated with the client gateways. + items: + type: string + type: array + Tags: + description: 'The key/value combination of the tags associated with the + client gateways, in the following format: "Filters":{"Tags":["TAGKEY=TAGVALUE"]}.' + items: + type: string + type: array + type: object + FiltersDedicatedGroup: + additionalProperties: false + description: One or more filters. + properties: + CpuGenerations: + description: The processor generation for the VMs in the dedicated group + (for example, `4`). + items: + type: integer + type: array + DedicatedGroupIds: + description: The IDs of the dedicated groups. + items: + type: string + type: array + Names: + description: The names of the dedicated groups. + items: + type: string + type: array + SubregionNames: + description: The names of the Subregions in which the dedicated groups are + located. + items: + type: string + type: array + type: object + FiltersDhcpOptions: + additionalProperties: false + description: One or more filters. + properties: + Default: + description: If true, lists all default DHCP options set. If false, lists + all non-default DHCP options set. + type: boolean + DhcpOptionsSetIds: + description: The IDs of the DHCP options sets. + items: + type: string + type: array + DomainNameServers: + description: The IPs of the domain name servers used for the DHCP options + sets. + items: + type: string + type: array + DomainNames: + description: The domain names used for the DHCP options sets. + items: + type: string + type: array + LogServers: + description: The IPs of the log servers used for the DHCP options sets. + items: + type: string + type: array + NtpServers: + description: The IPs of the Network Time Protocol (NTP) servers used for + the DHCP options sets. + items: + type: string + type: array + TagKeys: + description: The keys of the tags associated with the DHCP options sets. + items: + type: string + type: array + TagValues: + description: The values of the tags associated with the DHCP options sets. + items: + type: string + type: array + Tags: + description: 'The key/value combination of the tags associated with the + DHCP options sets, in the following format: "Filters":{"Tags":["TAGKEY=TAGVALUE"]}.' + items: + type: string + type: array + type: object + FiltersDirectLink: + additionalProperties: false + description: One or more filters. + properties: + DirectLinkIds: + description: The IDs of the DirectLinks. + items: + type: string + type: array + type: object + FiltersDirectLinkInterface: + additionalProperties: false + description: One or more filters. + properties: + DirectLinkIds: + description: The IDs of the DirectLinks. + items: + type: string + type: array + DirectLinkInterfaceIds: + description: The IDs of the DirectLink interfaces. + items: + type: string + type: array + type: object + FiltersFlexibleGpu: + additionalProperties: false + description: One or more filters. + properties: + DeleteOnVmDeletion: + description: Indicates whether the fGPU is deleted when terminating the + VM. + type: boolean + FlexibleGpuIds: + description: One or more IDs of fGPUs. + items: + type: string + type: array + Generations: + description: The processor generations that the fGPUs are compatible with. + items: + type: string + type: array + ModelNames: + description: One or more models of fGPUs. For more information, see [About + Flexible GPUs](https://docs.outscale.com/en/userguide/About-Flexible-GPUs.html). + items: + type: string + type: array + States: + description: The states of the fGPUs (`allocated` \| `attaching` \| `attached` + \| `detaching`). + items: + type: string + type: array + SubregionNames: + description: The Subregions where the fGPUs are located. + items: + type: string + type: array + Tags: + description: One or more tags associated with the fGPUs. + items: + "$ref": "#/components/schemas/Tag" + type: array + VmIds: + description: One or more IDs of VMs. + items: + type: string + type: array + type: object + FiltersImage: + additionalProperties: false + description: One or more filters. + properties: + AccountAliases: + description: The account aliases of the owners of the OMIs. + items: + type: string + type: array + AccountIds: + description: The OUTSCALE account IDs of the owners of the OMIs. By default, + all the OMIs for which you have launch permissions are described. + items: + type: string + type: array + Architectures: + description: The architectures of the OMIs (`i386` \| `x86_64`). + items: + type: string + type: array + BlockDeviceMappingDeleteOnVmDeletion: + description: Whether the volumes are deleted or not when terminating the + VM. + type: boolean + BlockDeviceMappingDeviceNames: + description: The device names for the volumes. + items: + type: string + type: array + BlockDeviceMappingSnapshotIds: + description: The IDs of the snapshots used to create the volumes. + items: + type: string + type: array + BlockDeviceMappingVolumeSizes: + description: The sizes of the volumes, in gibibytes (GiB). + items: + type: integer + type: array + BlockDeviceMappingVolumeTypes: + description: The types of volumes (`standard` \| `gp2` \| `io1`). + items: + type: string + type: array + BootModes: + description: The boot modes compatible with the OMIs. + items: + "$ref": "#/components/schemas/BootMode" + type: array + Descriptions: + description: The descriptions of the OMIs, provided when they were created. + items: + type: string + type: array + FileLocations: + description: The locations of the buckets where the OMI files are stored. + items: + type: string + type: array + Hypervisors: + description: The hypervisor type of the OMI (always `xen`). + items: + type: string + type: array + ImageIds: + description: The IDs of the OMIs. + items: + type: string + type: array + ImageNames: + description: The names of the OMIs, provided when they were created. + items: + type: string + type: array + PermissionsToLaunchAccountIds: + description: The OUTSCALE account IDs which have launch permissions for + the OMIs. + items: + type: string + type: array + PermissionsToLaunchGlobalPermission: + description: If true, lists all public OMIs. If false, lists all private + OMIs. + type: boolean + ProductCodeNames: + description: The names of the product codes associated with the OMI. + items: + type: string + type: array + ProductCodes: + description: The product codes associated with the OMI. + items: + type: string + type: array + RootDeviceNames: + description: The name of the root device. This value must be /dev/sda1. + items: + type: string + type: array + RootDeviceTypes: + description: The types of root device used by the OMIs (`bsu` or `ebs`). + items: + type: string + type: array + SecureBoot: + description: Whether secure boot is activated or not. + type: boolean + States: + description: The states of the OMIs (`pending` \| `available` \| `failed`). + items: + type: string + type: array + TagKeys: + description: The keys of the tags associated with the OMIs. + items: + type: string + type: array + TagValues: + description: The values of the tags associated with the OMIs. + items: + type: string + type: array + Tags: + description: 'The key/value combination of the tags associated with the + OMIs, in the following format: "Filters":{"Tags":["TAGKEY=TAGVALUE"]}.' + items: + type: string + type: array + TpmMandatory: + description: Whether a virtual Trusted Platform Module (vTPM) is mandatory + for VMs created from this OMI (true) or not (false). + type: boolean + VirtualizationTypes: + description: The virtualization types (always `hvm`). + items: + type: string + type: array + type: object + FiltersInternetService: + additionalProperties: false + description: One or more filters. + properties: + InternetServiceIds: + description: The IDs of the internet services. + items: + type: string + type: array + LinkNetIds: + description: The IDs of the Nets the internet services are attached to. + items: + type: string + type: array + LinkStates: + description: The current states of the attachments between the internet + services and the Nets (only `available`, if the internet gateway is attached + to a Net). + items: + type: string + type: array + TagKeys: + description: The keys of the tags associated with the internet services. + items: + type: string + type: array + TagValues: + description: The values of the tags associated with the internet services. + items: + type: string + type: array + Tags: + description: 'The key/value combination of the tags associated with the + internet services, in the following format: "Filters":{"Tags":["TAGKEY=TAGVALUE"]}.' + items: + type: string + type: array + type: object + FiltersKeypair: + additionalProperties: false + description: One or more filters. + properties: + KeypairFingerprints: + description: The fingerprints of the keypairs. + items: + type: string + type: array + KeypairIds: + description: The IDs of the keypairs. + items: + type: string + type: array + KeypairNames: + description: The names of the keypairs. + items: + type: string + type: array + KeypairTypes: + description: The types of the keypairs (`ssh-rsa`, `ssh-ed25519`, `ecdsa-sha2-nistp256`, + `ecdsa-sha2-nistp384`, or `ecdsa-sha2-nistp521`). + items: + type: string + type: array + TagKeys: + description: The keys of the tags associated with the keypairs. + items: + type: string + type: array + TagValues: + description: The values of the tags associated with the keypairs. + items: + type: string + type: array + Tags: + description: 'The key/value combination of the tags associated with the + keypairs, in the following format: "Filters":{"Tags":["TAGKEY=TAGVALUE"]}.' + items: + type: string + type: array + type: object + FiltersListenerRule: + additionalProperties: false + description: One or more filters. + properties: + ListenerRuleNames: + description: The names of the listener rules. + items: + type: string + type: array + type: object + FiltersLoadBalancer: + additionalProperties: false + description: One or more filters. + properties: + LoadBalancerNames: + description: The names of the load balancers. + items: + type: string + type: array + States: + description: The states of the load balancer (`provisioning` \| `starting` + \| `reloading` \| `active` \| `reconfiguring` \| `deleting` \| `deleted`). + items: + type: string + type: array + type: object + FiltersNatService: + additionalProperties: false + description: One or more filters. + properties: + ClientTokens: + description: The idempotency tokens provided when creating the NAT services. + items: + type: string + type: array + NatServiceIds: + description: The IDs of the NAT services. + items: + type: string + type: array + NetIds: + description: The IDs of the Nets in which the NAT services are. + items: + type: string + type: array + States: + description: The states of the NAT services (`pending` \| `available` \| + `deleting` \| `deleted`). + items: + type: string + type: array + SubnetIds: + description: The IDs of the Subnets in which the NAT services are. + items: + type: string + type: array + TagKeys: + description: The keys of the tags associated with the NAT services. + items: + type: string + type: array + TagValues: + description: The values of the tags associated with the NAT services. + items: + type: string + type: array + Tags: + description: 'The key/value combination of the tags associated with the + NAT services, in the following format: "Filters":{"Tags":["TAGKEY=TAGVALUE"]}.' + items: + type: string + type: array + type: object + FiltersNet: + additionalProperties: false + description: One or more filters. + properties: + DhcpOptionsSetIds: + description: The IDs of the DHCP options sets. + items: + type: string + type: array + IpRanges: + description: The IP ranges for the Nets, in CIDR notation (for example, + `10.0.0.0/16`). + items: + type: string + type: array + IsDefault: + description: If true, the Net used is the default one. + type: boolean + NetIds: + description: The IDs of the Nets. + items: + type: string + type: array + States: + description: The states of the Nets (`pending` \| `available` \| `deleting`). + items: + type: string + type: array + TagKeys: + description: The keys of the tags associated with the Nets. + items: + type: string + type: array + TagValues: + description: The values of the tags associated with the Nets. + items: + type: string + type: array + Tags: + description: 'The key/value combination of the tags associated with the + Nets, in the following format: "Filters":{"Tags":["TAGKEY=TAGVALUE"]}.' + items: + type: string + type: array + type: object + FiltersNetAccessPoint: + additionalProperties: false + description: One or more filters. + properties: + NetAccessPointIds: + description: The IDs of the Net access points. + items: + type: string + type: array + NetIds: + description: The IDs of the Nets. + items: + type: string + type: array + ServiceNames: + description: The names of the services. For more information, see [ReadNetAccessPointServices](#readnetaccesspointservices). + items: + type: string + type: array + States: + description: The states of the Net access points (`pending` \| `available` + \| `deleting` \| `deleted`). + items: + type: string + type: array + TagKeys: + description: The keys of the tags associated with the Net access points. + items: + type: string + type: array + TagValues: + description: The values of the tags associated with the Net access points. + items: + type: string + type: array + Tags: + description: 'The key/value combination of the tags associated with the + Net access points, in the following format: "Filters":{"Tags":["TAGKEY=TAGVALUE"]}.' + items: + type: string + type: array + type: object + FiltersNetPeering: + additionalProperties: false + description: One or more filters. + properties: + AccepterNetAccountIds: + description: The OUTSCALE account IDs of the owners of the peer Nets. + items: + type: string + type: array + AccepterNetIpRanges: + description: The IP ranges of the peer Nets, in CIDR notation (for example, + `10.0.0.0/24`). + items: + type: string + type: array + AccepterNetNetIds: + description: The IDs of the peer Nets. + items: + type: string + type: array + ExpirationDates: + description: The dates and times at which the Net peerings expire, in ISO + 8601 date-time format (for example, `2020-06-14T00:00:00.000Z`). + items: + format: date-time + type: string + type: array + NetPeeringIds: + description: The IDs of the Net peerings. + items: + type: string + type: array + SourceNetAccountIds: + description: The OUTSCALE account IDs of the owners of the peer Nets. + items: + type: string + type: array + SourceNetIpRanges: + description: The IP ranges of the peer Nets. + items: + type: string + type: array + SourceNetNetIds: + description: The IDs of the peer Nets. + items: + type: string + type: array + StateMessages: + description: Additional information about the states of the Net peerings. + items: + type: string + type: array + StateNames: + description: The states of the Net peerings (`pending-acceptance` \| `active` + \| `rejected` \| `failed` \| `expired` \| `deleted`). + items: + type: string + type: array + TagKeys: + description: The keys of the tags associated with the Net peerings. + items: + type: string + type: array + TagValues: + description: The values of the tags associated with the Net peerings. + items: + type: string + type: array + Tags: + description: 'The key/value combination of the tags associated with the + Net peerings, in the following format: "Filters":{"Tags":["TAGKEY=TAGVALUE"]}.' + items: + type: string + type: array + type: object + FiltersNic: + additionalProperties: false + description: One or more filters. + properties: + Descriptions: + description: The descriptions of the NICs. + items: + type: string + type: array + IsSourceDestCheck: + description: Whether the source/destination checking is enabled (true) or + disabled (false). + type: boolean + LinkNicDeleteOnVmDeletion: + description: Whether the NICs are deleted when the VMs they are attached + to are terminated. + type: boolean + LinkNicDeviceNumbers: + description: The device numbers the NICs are attached to. + items: + type: integer + type: array + LinkNicLinkNicIds: + description: The attachment IDs of the NICs. + items: + type: string + type: array + LinkNicStates: + description: The states of the attachments. + items: + type: string + type: array + LinkNicVmAccountIds: + description: The OUTSCALE account IDs of the owners of the VMs the NICs + are attached to. + items: + type: string + type: array + LinkNicVmIds: + description: The IDs of the VMs the NICs are attached to. + items: + type: string + type: array + LinkPublicIpAccountIds: + description: The OUTSCALE account IDs of the owners of the public IPs associated + with the NICs. + items: + type: string + type: array + LinkPublicIpLinkPublicIpIds: + description: The association IDs returned when the public IPs were associated + with the NICs. + items: + type: string + type: array + LinkPublicIpPublicDnsNames: + description: The public DNS names associated with the public IPs. + items: + type: string + type: array + LinkPublicIpPublicIpIds: + description: The allocation IDs returned when the public IPs were allocated + to their accounts. + items: + type: string + type: array + LinkPublicIpPublicIps: + description: The public IPs associated with the NICs. + items: + type: string + type: array + MacAddresses: + description: The Media Access Control (MAC) addresses of the NICs. + items: + type: string + type: array + NetIds: + description: The IDs of the Nets where the NICs are located. + items: + type: string + type: array + NicIds: + description: The IDs of the NICs. + items: + type: string + type: array + PrivateDnsNames: + description: The private DNS names associated with the primary private IPs. + items: + type: string + type: array + PrivateIpsLinkPublicIpAccountIds: + description: The OUTSCALE account IDs of the owner of the public IPs associated + with the private IPs. + items: + type: string + type: array + PrivateIpsLinkPublicIpPublicIps: + description: The public IPs associated with the private IPs. + items: + type: string + type: array + PrivateIpsPrimaryIp: + description: Whether the private IP is the primary IP associated with the + NIC. + type: boolean + PrivateIpsPrivateIps: + description: The private IPs of the NICs. + items: + type: string + type: array + SecurityGroupIds: + description: The IDs of the security groups associated with the NICs. + items: + type: string + type: array + SecurityGroupNames: + description: The names of the security groups associated with the NICs. + items: + type: string + type: array + States: + description: The states of the NICs. + items: + type: string + type: array + SubnetIds: + description: The IDs of the Subnets for the NICs. + items: + type: string + type: array + SubregionNames: + description: The Subregions where the NICs are located. + items: + type: string + type: array + TagKeys: + description: The keys of the tags associated with the NICs. + items: + type: string + type: array + TagValues: + description: The values of the tags associated with the NICs. + items: + type: string + type: array + Tags: + description: 'The key/value combination of the tags associated with the + NICs, in the following format: "Filters":{"Tags":["TAGKEY=TAGVALUE"]}.' + items: + type: string + type: array + type: object + FiltersProductType: + additionalProperties: false + description: One or more filters. + properties: + ProductTypeIds: + description: The IDs of the product types. + items: + type: string + type: array + type: object + FiltersPublicIp: + additionalProperties: false + description: One or more filters. + properties: + LinkPublicIpIds: + description: The IDs representing the associations of public IPs with VMs + or NICs. + items: + type: string + type: array + NicAccountIds: + description: The OUTSCALE account IDs of the owners of the NICs. + items: + type: string + type: array + NicIds: + description: The IDs of the NICs. + items: + type: string + type: array + Placements: + description: Whether the public IPs are for use in the public Cloud or in + a Net. + items: + type: string + type: array + PrivateIps: + description: The private IPs associated with the public IPs. + items: + type: string + type: array + PublicIpIds: + description: The IDs of the public IPs. + items: + type: string + type: array + PublicIps: + description: The public IPs. + items: + type: string + type: array + TagKeys: + description: The keys of the tags associated with the public IPs. + items: + type: string + type: array + TagValues: + description: The values of the tags associated with the public IPs. + items: + type: string + type: array + Tags: + description: 'The key/value combination of the tags associated with the + public IPs, in the following format: "Filters":{"Tags":["TAGKEY=TAGVALUE"]}.' + items: + type: string + type: array + VmIds: + description: The IDs of the VMs. + items: + type: string + type: array + type: object + FiltersQuota: + additionalProperties: false + description: One or more filters. + properties: + Collections: + description: The group names of the quotas. + items: + type: string + type: array + QuotaNames: + description: The names of the quotas. + items: + type: string + type: array + QuotaTypes: + description: The resource IDs if these are resource-specific quotas, `global` + if they are not. + items: + type: string + type: array + ShortDescriptions: + description: The description of the quotas. + items: + type: string + type: array + type: object + FiltersReadImageExportTask: + additionalProperties: false + description: One or more filters. + properties: + ImageIds: + description: The IDs of the OMIs used for the snapshot export tasks. + items: + type: string + type: array + TaskIds: + description: The IDs of the snapshot export tasks. + items: + type: string + type: array + type: object + FiltersReadVolumeUpdateTask: + additionalProperties: false + description: One or more filters. + properties: + TaskIds: + description: The IDs of the snapshot export tasks. + items: + type: string + type: array + VolumeIds: + description: The IDs of the volumes used for the snapshot export tasks. + items: + type: string + type: array + type: object + FiltersRouteTable: + additionalProperties: false + description: One or more filters. + properties: + LinkRouteTableIds: + description: The IDs of the route tables involved in the associations. + items: + type: string + type: array + LinkRouteTableLinkRouteTableIds: + description: The IDs of the associations between the route tables and the + Subnets. + items: + type: string + type: array + LinkRouteTableMain: + description: If true, the route tables are the main ones for their Nets. + type: boolean + LinkSubnetIds: + description: The IDs of the Subnets involved in the associations. + items: + type: string + type: array + NetIds: + description: The IDs of the Nets for the route tables. + items: + type: string + type: array + RouteCreationMethods: + description: The methods used to create a route. + items: + type: string + type: array + RouteDestinationIpRanges: + description: The IP ranges specified in routes in the tables. + items: + type: string + type: array + RouteDestinationServiceIds: + description: The service IDs specified in routes in the tables. + items: + type: string + type: array + RouteGatewayIds: + description: The IDs of the gateways specified in routes in the tables. + items: + type: string + type: array + RouteNatServiceIds: + description: The IDs of the NAT services specified in routes in the tables. + items: + type: string + type: array + RouteNetPeeringIds: + description: The IDs of the Net peerings specified in routes in the tables. + items: + type: string + type: array + RouteStates: + description: The states of routes in the route tables (always `active`). + items: + type: string + type: array + RouteTableIds: + description: The IDs of the route tables. + items: + type: string + type: array + RouteVmIds: + description: The IDs of the VMs specified in routes in the tables. + items: + type: string + type: array + TagKeys: + description: The keys of the tags associated with the route tables. + items: + type: string + type: array + TagValues: + description: The values of the tags associated with the route tables. + items: + type: string + type: array + Tags: + description: 'The key/value combination of the tags associated with the + route tables, in the following format: "Filters":{"Tags":["TAGKEY=TAGVALUE"]}.' + items: + type: string + type: array + type: object + FiltersSecurityGroup: + additionalProperties: false + description: One or more filters. + properties: + Descriptions: + description: The descriptions of the security groups. + items: + type: string + type: array + InboundRuleAccountIds: + description: The OUTSCALE account IDs that have been granted permissions. + items: + type: string + type: array + InboundRuleFromPortRanges: + description: The beginnings of the port ranges for the TCP and UDP protocols, + or the ICMP type numbers. + items: + type: integer + type: array + InboundRuleIpRanges: + description: The IP ranges that have been granted permissions, in CIDR notation + (for example, `10.0.0.0/24`). + items: + type: string + type: array + InboundRuleProtocols: + description: The IP protocols for the permissions (`tcp` \| `udp` \| `icmp`, + or a protocol number, or `-1` for all protocols). + items: + type: string + type: array + InboundRuleSecurityGroupIds: + description: The IDs of the security groups that have been granted permissions. + items: + type: string + type: array + InboundRuleSecurityGroupNames: + description: The names of the security groups that have been granted permissions. + items: + type: string + type: array + InboundRuleToPortRanges: + description: The ends of the port ranges for the TCP and UDP protocols, + or the ICMP code numbers. + items: + type: integer + type: array + NetIds: + description: The IDs of the Nets specified when the security groups were + created. + items: + type: string + type: array + OutboundRuleAccountIds: + description: The OUTSCALE account IDs that have been granted permissions. + items: + type: string + type: array + OutboundRuleFromPortRanges: + description: The beginnings of the port ranges for the TCP and UDP protocols, + or the ICMP type numbers. + items: + type: integer + type: array + OutboundRuleIpRanges: + description: The IP ranges that have been granted permissions, in CIDR notation + (for example, `10.0.0.0/24`). + items: + type: string + type: array + OutboundRuleProtocols: + description: The IP protocols for the permissions (`tcp` \| `udp` \| `icmp`, + or a protocol number, or `-1` for all protocols). + items: + type: string + type: array + OutboundRuleSecurityGroupIds: + description: The IDs of the security groups that have been granted permissions. + items: + type: string + type: array + OutboundRuleSecurityGroupNames: + description: The names of the security groups that have been granted permissions. + items: + type: string + type: array + OutboundRuleToPortRanges: + description: The ends of the port ranges for the TCP and UDP protocols, + or the ICMP code numbers. + items: + type: integer + type: array + SecurityGroupIds: + description: The IDs of the security groups. + items: + type: string + type: array + SecurityGroupNames: + description: The names of the security groups. + items: + type: string + type: array + TagKeys: + description: The keys of the tags associated with the security groups. + items: + type: string + type: array + TagValues: + description: The values of the tags associated with the security groups. + items: + type: string + type: array + Tags: + description: 'The key/value combination of the tags associated with the + security groups, in the following format: "Filters":{"Tags":["TAGKEY=TAGVALUE"]}.' + items: + type: string + type: array + type: object + FiltersServerCertificate: + additionalProperties: false + description: One or more filters. + properties: + Paths: + description: The paths to the server certificates. + items: + type: string + type: array + type: object + FiltersService: + additionalProperties: false + description: One or more filters. + properties: + ServiceIds: + description: The IDs of the services. + items: + type: string + type: array + ServiceNames: + description: The names of the services. + items: + type: string + type: array + type: object + FiltersSnapshot: + additionalProperties: false + description: One or more filters. + properties: + AccountAliases: + description: The account aliases of the owners of the snapshots. + items: + type: string + type: array + AccountIds: + description: The OUTSCALE account IDs of the owners of the snapshots. + items: + type: string + type: array + ClientTokens: + description: The idempotency tokens provided when creating the snapshots. + items: + type: string + type: array + Descriptions: + description: The descriptions of the snapshots. + items: + type: string + type: array + FromCreationDate: + description: The beginning of the time period, in ISO 8601 date-time format + (for example, `2020-06-14T00:00:00.000Z`). + format: date-time + type: string + PermissionsToCreateVolumeAccountIds: + description: The OUTSCALE account IDs which have permissions to create volumes. + items: + type: string + type: array + PermissionsToCreateVolumeGlobalPermission: + description: If true, lists all public volumes. If false, lists all private + volumes. + type: boolean + Progresses: + description: The progresses of the snapshots, as a percentage. + items: + type: integer + type: array + SnapshotIds: + description: The IDs of the snapshots. + items: + type: string + type: array + States: + description: The states of the snapshots (`in-queue` \| `pending` \| `completed` + \| `error` \| `deleting`). + items: + type: string + type: array + TagKeys: + description: The keys of the tags associated with the snapshots. + items: + type: string + type: array + TagValues: + description: The values of the tags associated with the snapshots. + items: + type: string + type: array + Tags: + description: 'The key/value combination of the tags associated with the + snapshots, in the following format: "Filters":{"Tags":["TAGKEY=TAGVALUE"]}.' + items: + type: string + type: array + ToCreationDate: + description: The end of the time period, in ISO 8601 date-time format (for + example, `2020-06-30T00:00:00.000Z`). + format: date-time + type: string + VolumeIds: + description: The IDs of the volumes used to create the snapshots. + items: + type: string + type: array + VolumeSizes: + description: The sizes of the volumes used to create the snapshots, in gibibytes + (GiB). + items: + type: integer + type: array + type: object + FiltersSnapshotExportTask: + additionalProperties: false + description: One or more filters. + properties: + SnapshotIds: + description: The IDs of the snapshots used with the snapshot export tasks + items: + type: string + type: array + TaskIds: + description: The IDs of the snapshot export tasks. + items: + type: string + type: array + type: object + FiltersSubnet: + additionalProperties: false + description: One or more filters. + properties: + AvailableIpsCounts: + description: The number of available IPs. + items: + type: integer + type: array + IpRanges: + description: The IP ranges in the Subnets, in CIDR notation (for example, + `10.0.0.0/16`). + items: + type: string + type: array + NetIds: + description: The IDs of the Nets in which the Subnets are. + items: + type: string + type: array + States: + description: The states of the Subnets (`pending` \| `available` \| `deleted`). + items: + type: string + type: array + SubnetIds: + description: The IDs of the Subnets. + items: + type: string + type: array + SubregionNames: + description: The names of the Subregions in which the Subnets are located. + items: + type: string + type: array + TagKeys: + description: The keys of the tags associated with the Subnets. + items: + type: string + type: array + TagValues: + description: The values of the tags associated with the Subnets. + items: + type: string + type: array + Tags: + description: 'The key/value combination of the tags associated with the + Subnets, in the following format: "Filters":{"Tags":["TAGKEY=TAGVALUE"]}.' + items: + type: string + type: array + type: object + FiltersSubregion: + additionalProperties: false + description: One or more filters. + properties: + RegionNames: + description: The names of the Regions containing the Subregions. + items: + type: string + type: array + States: + description: The states of the Subregions. + items: + type: string + type: array + SubregionNames: + description: The names of the Subregions. + items: + type: string + type: array + type: object + FiltersTag: + additionalProperties: false + description: One or more filters. + properties: + Keys: + description: The keys of the tags that are assigned to the resources. You + can use this filter alongside the `Values` filter. In that case, you filter + the resources corresponding to each tag, regardless of the other filter. + items: + type: string + type: array + ResourceIds: + description: The IDs of the resources with which the tags are associated. + items: + type: string + type: array + ResourceTypes: + description: The resource type (`customer-gateway` \| `dhcpoptions` \| `flexible-gpu` + \| `image` \| `instance` \| `keypair` \| `natgateway` \| `network-interface` + \| `public-ip` \| `route-table` \| `security-group` \| `snapshot` \| `subnet` + \| `task` \| `virtual-private-gateway` \| `volume` \| `vpc` \| `vpc-endpoint` + \| `vpc-peering-connection`\| `vpn-connection`). + items: + type: string + type: array + Values: + description: The values of the tags that are assigned to the resources. + You can use this filter alongside the `TagKeys` filter. In that case, + you filter the resources corresponding to each tag, regardless of the + other filter. + items: + type: string + type: array + type: object + FiltersUserGroup: + additionalProperties: false + description: One or more filters. + properties: + PathPrefix: + description: The path prefix of the groups. If not specified, it is set + to a slash (`/`). + type: string + UserGroupIds: + description: The IDs of the user groups. + items: + type: string + type: array + type: object + FiltersUsers: + additionalProperties: false + description: One or more filters. + properties: + UserIds: + description: The IDs of the users. + items: + type: string + type: array + type: object + FiltersVirtualGateway: + additionalProperties: false + description: One or more filters. + properties: + ConnectionTypes: + description: The types of the virtual gateways (always `ipsec.1`). + items: + type: string + type: array + LinkNetIds: + description: The IDs of the Nets the virtual gateways are attached to. + items: + type: string + type: array + LinkStates: + description: The current states of the attachments between the virtual gateways + and the Nets (`attaching` \| `attached` \| `detaching` \| `detached`). + items: + type: string + type: array + States: + description: The states of the virtual gateways (`pending` \| `available` + \| `deleting` \| `deleted`). + items: + type: string + type: array + TagKeys: + description: The keys of the tags associated with the virtual gateways. + items: + type: string + type: array + TagValues: + description: The values of the tags associated with the virtual gateways. + items: + type: string + type: array + Tags: + description: 'The key/value combination of the tags associated with the + virtual gateways, in the following format: "Filters":{"Tags":["TAGKEY=TAGVALUE"]}.' + items: + type: string + type: array + VirtualGatewayIds: + description: The IDs of the virtual gateways. + items: + type: string + type: array + type: object + FiltersVm: + additionalProperties: false + description: One or more filters. + properties: + Architectures: + description: The architectures of the VMs (`i386` \| `x86_64`). + items: + type: string + type: array + BlockDeviceMappingDeleteOnVmDeletion: + description: Whether the BSU volumes are deleted when terminating the VMs. + type: boolean + BlockDeviceMappingDeviceNames: + description: The device names for the BSU volumes (in the format `/dev/sdX`, + `/dev/sdXX`, `/dev/xvdX`, or `/dev/xvdXX`). + items: + type: string + type: array + BlockDeviceMappingLinkDates: + description: The link dates for the BSU volumes mapped to the VMs (for example, + `2016-01-23T18:45:30.000Z`). + items: + format: date + type: string + type: array + BlockDeviceMappingStates: + description: The states for the BSU volumes (`attaching` \| `attached` \| + `detaching` \| `detached`). + items: + type: string + type: array + BlockDeviceMappingVolumeIds: + description: The volume IDs of the BSU volumes. + items: + type: string + type: array + BootModes: + description: The boot modes of the VMs. + items: + "$ref": "#/components/schemas/BootMode" + type: array + ClientTokens: + description: The idempotency tokens provided when launching the VMs. + items: + type: string + type: array + CreationDates: + description: The dates when the VMs were launched. + items: + format: date + type: string + type: array + ImageIds: + description: The IDs of the OMIs used to launch the VMs. + items: + type: string + type: array + IsSourceDestChecked: + description: Whether the source/destination checking is enabled (true) or + disabled (false). + type: boolean + KeypairNames: + description: The names of the keypairs used when launching the VMs. + items: + type: string + type: array + LaunchNumbers: + description: The numbers for the VMs when launching a group of several VMs + (for example, `0`, `1`, `2`, and so on). + items: + type: integer + type: array + Lifecycles: + description: Whether the VMs are Spot Instances (spot). + items: + type: string + type: array + NetIds: + description: The IDs of the Nets in which the VMs are running. + items: + type: string + type: array + NicAccountIds: + description: The IDs of the NICs. + items: + type: string + type: array + NicDescriptions: + description: The descriptions of the NICs. + items: + type: string + type: array + NicIsSourceDestChecked: + description: Whether the source/destination checking is enabled (true) or + disabled (false). + type: boolean + NicLinkNicDeleteOnVmDeletion: + description: Whether the NICs are deleted when the VMs they are attached + to are deleted. + type: boolean + NicLinkNicDeviceNumbers: + description: The device numbers the NICs are attached to. + items: + type: integer + type: array + NicLinkNicLinkNicDates: + description: The dates and times (UTC) when the NICs were attached to the + VMs. + items: + format: date + type: string + type: array + NicLinkNicLinkNicIds: + description: The IDs of the NIC attachments. + items: + type: string + type: array + NicLinkNicStates: + description: The states of the attachments. + items: + type: string + type: array + NicLinkNicVmAccountIds: + description: The OUTSCALE account IDs of the owners of the VMs the NICs + are attached to. + items: + type: string + type: array + NicLinkNicVmIds: + description: The IDs of the VMs the NICs are attached to. + items: + type: string + type: array + NicLinkPublicIpAccountIds: + description: The OUTSCALE account IDs of the owners of the public IPs associated + with the NICs. + items: + type: string + type: array + NicLinkPublicIpLinkPublicIpIds: + description: The association IDs returned when the public IPs were associated + with the NICs. + items: + type: string + type: array + NicLinkPublicIpPublicIpIds: + description: The allocation IDs returned when the public IPs were allocated + to their accounts. + items: + type: string + type: array + NicLinkPublicIpPublicIps: + description: The public IPs associated with the NICs. + items: + type: string + type: array + NicMacAddresses: + description: The Media Access Control (MAC) addresses of the NICs. + items: + type: string + type: array + NicNetIds: + description: The IDs of the Nets where the NICs are located. + items: + type: string + type: array + NicNicIds: + description: The IDs of the NICs. + items: + type: string + type: array + NicPrivateIpsLinkPublicIpAccountIds: + description: The OUTSCALE account IDs of the owner of the public IPs associated + with the private IPs. + items: + type: string + type: array + NicPrivateIpsLinkPublicIpIds: + description: The public IPs associated with the private IPs. + items: + type: string + type: array + NicPrivateIpsPrimaryIp: + description: Whether the private IPs are the primary IPs associated with + the NICs. + type: boolean + NicPrivateIpsPrivateIps: + description: The private IPs of the NICs. + items: + type: string + type: array + NicSecurityGroupIds: + description: The IDs of the security groups associated with the NICs. + items: + type: string + type: array + NicSecurityGroupNames: + description: The names of the security groups associated with the NICs. + items: + type: string + type: array + NicStates: + description: The states of the NICs (`available` \| `in-use`). + items: + type: string + type: array + NicSubnetIds: + description: The IDs of the Subnets for the NICs. + items: + type: string + type: array + NicSubregionNames: + description: The Subregions where the NICs are located. + items: + type: string + type: array + Platforms: + description: The platforms. Use windows if you have Windows VMs. Otherwise, + leave this filter blank. + items: + type: string + type: array + PrivateIps: + description: The private IPs of the VMs. + items: + type: string + type: array + ProductCodes: + description: The product codes associated with the OMI used to create the + VMs. + items: + type: string + type: array + PublicIps: + description: The public IPs of the VMs. + items: + type: string + type: array + ReservationIds: + description: The IDs of the reservation of the VMs, created every time you + launch VMs. These reservation IDs can be associated with several VMs when + you launch a group of VMs using the same launch request. + items: + type: string + type: array + RootDeviceNames: + description: The names of the root devices for the VMs (for example, `/dev/sda1`) + items: + type: string + type: array + RootDeviceTypes: + description: The root devices types used by the VMs (always `ebs`) + items: + type: string + type: array + SecurityGroupIds: + description: The IDs of the security groups for the VMs (only in the public + Cloud). + items: + type: string + type: array + SecurityGroupNames: + description: The names of the security groups for the VMs (only in the public + Cloud). + items: + type: string + type: array + StateReasonCodes: + description: The reason codes for the state changes. + items: + type: integer + type: array + StateReasonMessages: + description: The messages describing the state changes. + items: + type: string + type: array + StateReasons: + description: The reasons explaining the current states of the VMs. This + filter is like the `StateReasonCodes` one. + items: + type: string + type: array + SubnetIds: + description: The IDs of the Subnets for the VMs. + items: + type: string + type: array + SubregionNames: + description: The names of the Subregions of the VMs. + items: + type: string + type: array + TagKeys: + description: The keys of the tags associated with the VMs. + items: + type: string + type: array + TagValues: + description: The values of the tags associated with the VMs. + items: + type: string + type: array + Tags: + description: 'The key/value combination of the tags associated with the + VMs, in the following format: "Filters":{"Tags":["TAGKEY=TAGVALUE"]}.' + items: + type: string + type: array + Tenancies: + description: The tenancies of the VMs (`dedicated` \| `default` \| `host`). + items: + type: string + type: array + TpmEnabled: + description: Whether a virtual Trusted Platform Module (vTPM) is enabled + (true) or disabled (false) on the VM. + type: boolean + VmIds: + description: One or more IDs of VMs. + items: + type: string + type: array + VmSecurityGroupIds: + description: The IDs of the security groups for the VMs. + items: + type: string + type: array + VmSecurityGroupNames: + description: The names of the security group for the VMs. + items: + type: string + type: array + VmStateCodes: + description: 'The state codes of the VMs: `-1` (quarantine), `0` (pending), + `16` (running), `32` (shutting-down), `48` (terminated), `64` (stopping), + and `80` (stopped).' + items: + type: integer + type: array + VmStateNames: + description: The state names of the VMs (`pending` \| `running` \| `stopping` + \| `stopped` \| `shutting-down` \| `terminated` \| `quarantine`). + items: + type: string + type: array + VmTypes: + description: The VM types (for example, t2.micro). For more information, + see [VM Types](https://docs.outscale.com/en/userguide/VM-Types.html). + items: + type: string + type: array + type: object + FiltersVmGroup: + additionalProperties: false + description: One or more filters. + properties: + Descriptions: + description: The descriptions of the VM groups. + items: + type: string + type: array + SecurityGroupIds: + description: The IDs of the security groups. + items: + type: string + type: array + SubnetIds: + description: The IDs of the Subnets. + items: + type: string + type: array + TagKeys: + description: The keys of the tags associated with the VM groups. + items: + type: string + type: array + TagValues: + description: The values of the tags associated with the VM groups. + items: + type: string + type: array + Tags: + description: 'The key/value combination of the tags associated with the + VMs, in the following format: "Filters":{"Tags":["TAGKEY=TAGVALUE"]}.' + items: + type: string + type: array + VmCounts: + description: The number of VMs in the VM group. + items: + type: integer + type: array + VmGroupIds: + description: The IDs of the VM groups. + items: + type: string + type: array + VmGroupNames: + description: The names of the VM groups. + items: + type: string + type: array + VmTemplateIds: + description: The IDs of the VM templates. + items: + type: string + type: array + type: object + FiltersVmTemplate: + additionalProperties: false + description: One or more filters. + properties: + CpuCores: + description: The number of vCores. + items: + type: integer + type: array + CpuGenerations: + description: The processor generations (for example, `v4`). + items: + type: string + type: array + CpuPerformances: + description: The performances of the VMs. + items: + type: string + type: array + Descriptions: + description: The descriptions of the VM templates. + items: + type: string + type: array + ImageIds: + description: The IDs of the OMIs. + items: + type: string + type: array + KeypairNames: + description: The names of the keypairs. + items: + type: string + type: array + Rams: + description: The amount of RAM. + items: + type: integer + type: array + TagKeys: + description: The keys of the tags associated with the VM templates. + items: + type: string + type: array + TagValues: + description: The values of the tags associated with the VM templates. + items: + type: string + type: array + Tags: + description: 'The key/value combination of the tags associated with the + VM templates, in the following format: "Filters":{"Tags":["TAGKEY=TAGVALUE"]}.' + items: + type: string + type: array + VmTemplateIds: + description: The IDs of the VM templates. + items: + type: string + type: array + VmTemplateNames: + description: The names of the VM templates. + items: + type: string + type: array + type: object + FiltersVmType: + additionalProperties: false + description: One or more filters. + properties: + BsuOptimized: + description: This parameter is not available. It is present in our API for + the sake of historical compatibility with AWS. + type: boolean + EphemeralsTypes: + description: The types of ephemeral storage disk. + items: + type: string + type: array + Eths: + description: The number of Ethernet interfaces available. + items: + type: integer + type: array + Gpus: + description: The number of GPUs available. + items: + type: integer + type: array + MemorySizes: + description: The amounts of memory, in gibibytes (GiB). + items: + format: float + type: number + type: array + VcoreCounts: + description: The numbers of vCores. + items: + type: integer + type: array + VmTypeNames: + description: The names of the VM types. For more information, see [VM Types](https://docs.outscale.com/en/userguide/VM-Types.html). + items: + type: string + type: array + VolumeCounts: + description: The maximum number of ephemeral storage disks. + items: + type: integer + type: array + VolumeSizes: + description: The size of one ephemeral storage disk, in gibibytes (GiB). + items: + type: integer + type: array + type: object + FiltersVmsState: + additionalProperties: false + description: One or more filters. + properties: + MaintenanceEventCodes: + description: The code for the scheduled event (`system-reboot` \| `system-maintenance`). + items: + type: string + type: array + MaintenanceEventDescriptions: + description: The description of the scheduled event. + items: + type: string + type: array + MaintenanceEventsNotAfter: + description: The latest date and time (UTC) the event can end. + items: + format: date + type: string + type: array + MaintenanceEventsNotBefore: + description: The earliest date and time (UTC) the event can start. + items: + format: date + type: string + type: array + SubregionNames: + description: The names of the Subregions of the VMs. + items: + type: string + type: array + VmIds: + description: One or more IDs of VMs. + items: + type: string + type: array + VmStates: + description: The states of the VMs (`pending` \| `running` \| `stopping` + \| `stopped` \| `shutting-down` \| `terminated` \| `quarantine`). + items: + type: string + type: array + type: object + FiltersVolume: + additionalProperties: false + description: One or more filters. + properties: + ClientTokens: + description: The idempotency tokens provided when creating the volumes. + items: + type: string + type: array + CreationDates: + description: The dates and times at which the volumes were created, in ISO + 8601 date-time format (for example, `2020-06-30T00:00:00.000Z`). + items: + format: date-time + type: string + type: array + LinkVolumeDeleteOnVmDeletion: + description: Whether the volumes are deleted or not when terminating the + VMs. + type: boolean + LinkVolumeDeviceNames: + description: The VM device names. + items: + type: string + type: array + LinkVolumeLinkDates: + description: The dates and times at which the volumes were attached, in + ISO 8601 date-time format (for example, `2020-06-30T00:00:00.000Z`). + items: + format: date-time + type: string + type: array + LinkVolumeLinkStates: + description: The attachment states of the volumes (`attaching` \| `detaching` + \| `attached` \| `detached`). + items: + type: string + type: array + LinkVolumeVmIds: + description: One or more IDs of VMs. + items: + type: string + type: array + SnapshotIds: + description: The snapshots from which the volumes were created. + items: + type: string + type: array + SubregionNames: + description: The names of the Subregions in which the volumes were created. + items: + type: string + type: array + TagKeys: + description: The keys of the tags associated with the volumes. + items: + type: string + type: array + TagValues: + description: The values of the tags associated with the volumes. + items: + type: string + type: array + Tags: + description: 'The key/value combination of the tags associated with the + volumes, in the following format: "Filters":{"Tags":["TAGKEY=TAGVALUE"]}.' + items: + type: string + type: array + VolumeIds: + description: The IDs of the volumes. + items: + type: string + type: array + VolumeSizes: + description: The sizes of the volumes, in gibibytes (GiB). + items: + type: integer + type: array + VolumeStates: + description: The states of the volumes (`creating` \| `available` \| `in-use` + \| `deleting` \| `error`). + items: + type: string + type: array + VolumeTypes: + description: The types of the volumes (`standard` \| `gp2` \| `io1`). + items: + type: string + type: array + type: object + FiltersVpnConnection: + additionalProperties: false + description: One or more filters. + properties: + BgpAsns: + description: The Border Gateway Protocol (BGP) Autonomous System Numbers + (ASNs) of the connections. + items: + type: integer + type: array + ClientGatewayIds: + description: The IDs of the client gateways. + items: + type: string + type: array + ConnectionTypes: + description: The types of the VPN connections (always `ipsec.1`). + items: + type: string + type: array + RouteDestinationIpRanges: + description: The destination IP ranges. + items: + type: string + type: array + States: + description: The states of the VPN connections (`pending` \| `available` + \| `deleting` \| `deleted`). + items: + type: string + type: array + StaticRoutesOnly: + description: If false, the VPN connection uses dynamic routing with Border + Gateway Protocol (BGP). If true, routing is controlled using static routes. + For more information about how to create and delete static routes, see + [CreateVpnConnectionRoute](#createvpnconnectionroute) and [DeleteVpnConnectionRoute](#deletevpnconnectionroute). + type: boolean + TagKeys: + description: The keys of the tags associated with the VPN connections. + items: + type: string + type: array + TagValues: + description: The values of the tags associated with the VPN connections. + items: + type: string + type: array + Tags: + description: 'The key/value combination of the tags associated with the + VPN connections, in the following format: "Filters":{"Tags":["TAGKEY=TAGVALUE"]}.' + items: + type: string + type: array + VirtualGatewayIds: + description: The IDs of the virtual gateways. + items: + type: string + type: array + VpnConnectionIds: + description: The IDs of the VPN connections. + items: + type: string + type: array + type: object + FlexibleGpu: + additionalProperties: false + description: Information about the flexible GPU (fGPU). + properties: + DeleteOnVmDeletion: + description: If true, the fGPU is deleted when the VM is terminated. + type: boolean + FlexibleGpuId: + description: The ID of the fGPU. + type: string + Generation: + description: The compatible processor generation. + type: string + ModelName: + description: The model of fGPU. For more information, see [About Flexible + GPUs](https://docs.outscale.com/en/userguide/About-Flexible-GPUs.html). + type: string + State: + description: The state of the fGPU (`allocated` \| `attaching` \| `attached` + \| `detaching`). + type: string + SubregionName: + description: The Subregion where the fGPU is located. + type: string + Tags: + description: One or more tags associated with the fGPU. + items: + "$ref": "#/components/schemas/Tag" + type: array + VmId: + description: The ID of the VM the fGPU is attached to, if any. + type: string + type: object + FlexibleGpuCatalog: + additionalProperties: false + description: Information about the flexible GPU (fGPU) that is available in + the public catalog. + properties: + Generations: + description: The processor generations that the fGPUs are compatible with. + items: + type: string + type: array + MaxCpu: + description: The maximum number of VM vCores that the fGPU is compatible + with. + type: integer + MaxRam: + description: The maximum amount of VM memory that the fGPU is compatible + with. + type: integer + ModelName: + description: The model of fGPU. + type: string + VRam: + description: The amount of video RAM (VRAM) of the fGPU. + type: integer + type: object + HealthCheck: + additionalProperties: false + description: Information about the health check configuration. + properties: + CheckInterval: + description: The number of seconds between two requests (between `5` and + `600` both included). + type: integer + HealthyThreshold: + description: The number of consecutive successful requests before considering + the VM as healthy (between `2` and `10` both included). + type: integer + Path: + description: If you use the HTTP or HTTPS protocols, the request URL path. + Always starts with a slash (`/`). + type: string + Port: + description: The port number (between `1` and `65535`, both included). + type: integer + Protocol: + description: The protocol for the URL of the VM (`HTTP` \| `HTTPS` \| `TCP` + \| `SSL`). + type: string + Timeout: + description: The maximum waiting time for a response before considering + the VM as unhealthy, in seconds (between `2` and `60` both included). + type: integer + UnhealthyThreshold: + description: The number of consecutive failed requests before considering + the VM as unhealthy (between `2` and `10` both included). + type: integer + required: + - CheckInterval + - HealthyThreshold + - Port + - Protocol + - Timeout + - UnhealthyThreshold + type: object + Image: + additionalProperties: false + description: Information about the OMI. + properties: + AccountAlias: + description: The account alias of the owner of the OMI. + type: string + AccountId: + description: The account ID of the owner of the OMI. + type: string + Architecture: + description: The architecture of the OMI. + type: string + BlockDeviceMappings: + description: One or more block device mappings. + items: + "$ref": "#/components/schemas/BlockDeviceMappingImage" + type: array + BootModes: + description: The boot modes compatible with the OMI. + items: + "$ref": "#/components/schemas/BootMode" + type: array + CreationDate: + description: The date and time (UTC) at which the OMI was created. + format: date + type: string + Description: + description: The description of the OMI. + type: string + FileLocation: + description: The location from which the OMI files were created. + type: string + ImageId: + description: The ID of the OMI. + type: string + ImageName: + description: The name of the OMI. + type: string + ImageType: + description: The type of the OMI. + type: string + PermissionsToLaunch: + "$ref": "#/components/schemas/PermissionsOnResource" + description: Permissions for the resource. + ProductCodes: + description: The product codes associated with the OMI. + items: + type: string + type: array + RootDeviceName: + description: The name of the root device. + type: string + RootDeviceType: + description: The type of root device used by the OMI (always `bsu`). + type: string + SecureBoot: + description: Whether secure boot is activated or not. + type: boolean + State: + description: The state of the OMI (`pending` \| `available` \| `failed`). + type: string + StateComment: + "$ref": "#/components/schemas/StateComment" + description: Information about the change of state. + Tags: + description: One or more tags associated with the OMI. + items: + "$ref": "#/components/schemas/ResourceTag" + type: array + TpmMandatory: + description: If true, a virtual Trusted Platform Module (vTPM) is mandatory + for VMs created from this OMI. If false, a vTPM is not mandatory. + type: boolean + type: object + ImageExportTask: + additionalProperties: false + description: Information about the OMI export task. + properties: + Comment: + description: If the OMI export task fails, an error message appears. + type: string + ImageId: + description: The ID of the OMI to be exported. + type: string + OsuExport: + "$ref": "#/components/schemas/OsuExportImageExportTask" + description: Information about the OMI export task. + Progress: + description: The progress of the OMI export task, as a percentage. + type: integer + State: + description: The state of the OMI export task (`pending/queued` \| `pending` + \| `completed` \| `failed` \| `cancelled`). + type: string + Tags: + description: One or more tags associated with the image export task. + items: + "$ref": "#/components/schemas/ResourceTag" + type: array + TaskId: + description: The ID of the OMI export task. + type: string + type: object + InlinePolicy: + additionalProperties: false + description: Information about an inline policy. + properties: + Body: + description: The policy document, corresponding to a JSON string that contains + the policy. For more information, see [EIM Reference Information](https://docs.outscale.com/en/userguide/EIM-Reference-Information.html) + and [EIM Policy Generator](https://docs.outscale.com/en/userguide/EIM-Policy-Generator.html). + type: string + Name: + description: The name of the policy. + type: string + type: object + InternetService: + additionalProperties: false + description: Information about the internet service. + properties: + InternetServiceId: + description: The ID of the internet service. + type: string + NetId: + description: The ID of the Net attached to the internet service. + type: string + State: + description: The state of the attachment of the internet service to the + Net (always `available`). + type: string + Tags: + description: One or more tags associated with the internet service. + items: + "$ref": "#/components/schemas/ResourceTag" + type: array + type: object + Keypair: + additionalProperties: false + description: Information about the keypair. + properties: + KeypairFingerprint: + description: The MD5 public key fingerprint as specified in section 4 of + RFC 4716. + type: string + KeypairId: + description: The ID of the keypair. + type: string + KeypairName: + description: The name of the keypair. + type: string + KeypairType: + description: The type of the keypair (`ssh-rsa`, `ssh-ed25519`, `ecdsa-sha2-nistp256`, + `ecdsa-sha2-nistp384`, or `ecdsa-sha2-nistp521`). + type: string + Tags: + description: One or more tags associated with the keypair. + items: + "$ref": "#/components/schemas/ResourceTag" + type: array + type: object + KeypairCreated: + additionalProperties: false + description: Information about the created keypair. + properties: + KeypairFingerprint: + description: The MD5 public key fingerprint, as specified in section 4 of + RFC 4716. + type: string + KeypairId: + description: The ID of the keypair. + type: string + KeypairName: + description: The name of the keypair. + type: string + KeypairType: + description: The type of the keypair (`ssh-rsa`, `ssh-ed25519`, `ecdsa-sha2-nistp256`, + `ecdsa-sha2-nistp384`, or `ecdsa-sha2-nistp521`). + type: string + PrivateKey: + description: The private key, returned only if you are creating a keypair + (not if you are importing). When you save this private key in a .rsa file, + make sure you replace the `\n` escape sequences with real line breaks. + type: string + Tags: + description: One or more tags associated with the keypair. + items: + "$ref": "#/components/schemas/ResourceTag" + type: array + type: object + LinkFlexibleGpuRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + FlexibleGpuId: + description: The ID of the fGPU you want to attach. + type: string + VmId: + description: The ID of the VM you want to attach the fGPU to. + type: string + required: + - FlexibleGpuId + - VmId + type: object + LinkFlexibleGpuResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + LinkInternetServiceRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + InternetServiceId: + description: The ID of the internet service you want to attach. + type: string + NetId: + description: The ID of the Net to which you want to attach the internet + service. + type: string + required: + - InternetServiceId + - NetId + type: object + LinkInternetServiceResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + LinkLoadBalancerBackendMachinesRequest: + additionalProperties: false + properties: + BackendIps: + description: One or more public IPs of backend VMs. + items: + type: string + type: array + BackendVmIds: + description: One or more IDs of backend VMs. + items: + type: string + type: array + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + LoadBalancerName: + description: The name of the load balancer. + type: string + required: + - LoadBalancerName + type: object + LinkLoadBalancerBackendMachinesResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + LinkManagedPolicyToUserGroupRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + PolicyOrn: + description: The OUTSCALE Resource Name (ORN) of the policy. For more information, + see [Resource Identifiers](https://docs.outscale.com/en/userguide/Resource-Identifiers.html). + type: string + UserGroupName: + description: The name of the group you want to link the policy to. + type: string + required: + - PolicyOrn + - UserGroupName + type: object + LinkManagedPolicyToUserGroupResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + LinkNic: + additionalProperties: false + description: Information about the NIC attachment. + properties: + DeleteOnVmDeletion: + description: If true, the NIC is deleted when the VM is terminated. + type: boolean + DeviceNumber: + description: The device index for the NIC attachment (between `1` and `7`, + both included). + type: integer + LinkNicId: + description: The ID of the NIC to attach. + type: string + State: + description: The state of the attachment (`attaching` \| `attached` \| `detaching` + \| `detached`). + type: string + VmAccountId: + description: The OUTSCALE account ID of the owner of the VM. + type: string + VmId: + description: The ID of the VM. + type: string + type: object + LinkNicLight: + additionalProperties: false + description: Information about the network interface card (NIC). + properties: + DeleteOnVmDeletion: + description: If true, the NIC is deleted when the VM is terminated. + type: boolean + DeviceNumber: + description: The device index for the NIC attachment (between `1` and `7`, + both included). + type: integer + LinkNicId: + description: The ID of the NIC to attach. + type: string + State: + description: The state of the attachment (`attaching` \| `attached` \| `detaching` + \| `detached`). + type: string + type: object + LinkNicRequest: + additionalProperties: false + properties: + DeviceNumber: + description: The index of the VM device for the NIC attachment (between + `1` and `7`, both included). + type: integer + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + NicId: + description: The ID of the NIC you want to attach. + type: string + VmId: + description: The ID of the VM to which you want to attach the NIC. + type: string + required: + - DeviceNumber + - VmId + - NicId + type: object + LinkNicResponse: + additionalProperties: false + properties: + LinkNicId: + description: The ID of the NIC attachment. + type: string + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + LinkNicToUpdate: + additionalProperties: false + description: Information about the NIC attachment. If you are modifying the + `DeleteOnVmDeletion` attribute, you must specify the ID of the NIC attachment. + properties: + DeleteOnVmDeletion: + description: If true, the NIC is deleted when the VM is terminated. If false, + the NIC is detached from the VM. + type: boolean + LinkNicId: + description: The ID of the NIC attachment. + type: string + type: object + LinkPolicyRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + PolicyOrn: + description: The OUTSCALE Resource Name (ORN) of the policy. For more information, + see [Resource Identifiers](https://docs.outscale.com/en/userguide/Resource-Identifiers.html). + pattern: "^orn:ows:(iam|idauth):\\S*:\\d{12}:policy/\\S+$" + type: string + UserName: + description: The name of the user you want to link the policy to (between + 1 and 64 characters). + type: string + required: + - PolicyOrn + - UserName + type: object + LinkPolicyResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + LinkPrivateIpsRequest: + additionalProperties: false + properties: + AllowRelink: + description: If true, allows an IP that is already assigned to another NIC + in the same Subnet to be assigned to the NIC you specified. + type: boolean + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + NicId: + description: The ID of the NIC. + type: string + PrivateIps: + description: The secondary private IP or IPs you want to assign to the NIC + within the IP range of the Subnet. They cannot be one of the first four + IPs (ending in `.0`, `.1`, `.2`, `.3`) or the last IP (ending in `.255`) + of the Subnet, as these are reserved by 3DS OUTSCALE. For more information, + see [About Nets](https://docs.outscale.com/en/userguide/About-Nets.html). + items: + type: string + type: array + SecondaryPrivateIpCount: + description: The number of secondary private IPs to assign to the NIC. + type: integer + required: + - NicId + type: object + LinkPrivateIpsResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + LinkPublicIp: + additionalProperties: false + description: Information about the public IP association. + properties: + LinkPublicIpId: + description: "(Required in a Net) The ID representing the association of + the public IP with the VM or the NIC." + type: string + PublicDnsName: + description: The name of the public DNS. + type: string + PublicIp: + description: The public IP associated with the NIC. + type: string + PublicIpAccountId: + description: The OUTSCALE account ID of the owner of the public IP. + type: string + PublicIpId: + description: The allocation ID of the public IP. + type: string + type: object + LinkPublicIpLightForVm: + additionalProperties: false + description: Information about the public IP associated with the NIC. + properties: + PublicDnsName: + description: The name of the public DNS. + type: string + PublicIp: + description: The public IP associated with the NIC. + type: string + PublicIpAccountId: + description: The OUTSCALE account ID of the owner of the public IP. + type: string + type: object + LinkPublicIpRequest: + additionalProperties: false + properties: + AllowRelink: + description: If true, allows the public IP to be associated with the VM + or NIC that you specify even if it is already associated with another + VM or NIC. If false, prevents the public IP from being associated with + the VM or NIC that you specify if it is already associated with another + VM or NIC. (By default, true in the public Cloud, false in a Net.) + type: boolean + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + NicId: + description: "(Net only) The ID of the NIC. This parameter is required if + the VM has more than one NIC attached. Otherwise, you need to specify + the `VmId` parameter instead. You cannot specify both parameters at the + same time." + type: string + PrivateIp: + description: "(Net only) The primary or secondary private IP of the specified + NIC. By default, the primary private IP." + type: string + PublicIp: + description: The public IP. This parameter is required unless you use the + `PublicIpId` parameter. + type: string + PublicIpId: + description: The allocation ID of the public IP. This parameter is required + unless you use the `PublicIp` parameter. + type: string + VmId: + description: |- + The ID of the VM.
+ - In the public Cloud, this parameter is required.
+ - In a Net, this parameter is required if the VM has only one NIC. Otherwise, you need to specify the `NicId` parameter instead. You cannot specify both parameters at the same time. + type: string + type: object + LinkPublicIpResponse: + additionalProperties: false + properties: + LinkPublicIpId: + description: "(Net only) The ID representing the association of the public + IP with the VM or the NIC." + type: string + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + LinkRouteTable: + additionalProperties: false + description: One or more associations between the route table and the Subnets. + properties: + LinkRouteTableId: + description: The ID of the association between the route table and the Net + or Subnet. + type: string + Main: + description: If true, the route table is the main one. + type: boolean + NetId: + description: The ID of the Net, if the route table is not explicitly linked + to a Subnet. + type: string + RouteTableId: + description: The ID of the route table. + type: string + SubnetId: + description: The ID of the Subnet, if the route table is explicitly linked + to a Subnet. + type: string + type: object + LinkRouteTableRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + RouteTableId: + description: The ID of the route table. + type: string + SubnetId: + description: The ID of the Subnet. + type: string + required: + - RouteTableId + - SubnetId + type: object + LinkRouteTableResponse: + additionalProperties: false + properties: + LinkRouteTableId: + description: The ID of the association between the route table and the Subnet. + type: string + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + LinkVirtualGatewayRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + NetId: + description: The ID of the Net to which you want to attach the virtual gateway. + type: string + VirtualGatewayId: + description: The ID of the virtual gateway. + type: string + required: + - NetId + - VirtualGatewayId + type: object + LinkVirtualGatewayResponse: + additionalProperties: false + properties: + NetToVirtualGatewayLink: + "$ref": "#/components/schemas/NetToVirtualGatewayLink" + description: Information about the attachment. + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + LinkVolumeRequest: + additionalProperties: false + properties: + DeviceName: + description: The name of the device. For a root device, you must use `/dev/sda1`. + For other volumes, you must use `/dev/sdX`, `/dev/sdXX`, `/dev/xvdX`, + or `/dev/xvdXX` (where the first `X` is a letter between `b` and `z`, + and the second `X` is a letter between `a` and `z`). + type: string + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + VmId: + description: The ID of the VM you want to attach the volume to. + type: string + VolumeId: + description: The ID of the volume you want to attach. + type: string + required: + - DeviceName + - VmId + - VolumeId + type: object + LinkVolumeResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + LinkedPolicy: + additionalProperties: false + description: Information about the linked policy. + properties: + CreationDate: + description: The date and time (UTC) at which the linked policy was created. + format: date-time + type: string + LastModificationDate: + description: The date and time (UTC) at which the linked policy was last + modified. + format: date-time + type: string + Orn: + description: The OUTSCALE Resource Name (ORN) of the policy. For more information, + see [Resource Identifiers](https://docs.outscale.com/en/userguide/Resource-Identifiers.html). + type: string + PolicyId: + description: The ID of the policy. + type: string + PolicyName: + description: The name of the policy. + type: string + type: object + LinkedVolume: + additionalProperties: false + description: Information about volume attachment. + properties: + DeleteOnVmDeletion: + description: If true, the volume is deleted when terminating the VM. If + false, the volume is not deleted when terminating the VM. + type: boolean + DeviceName: + description: The name of the device. + type: string + State: + description: The state of the attachment of the volume (`attaching` \| `detaching` + \| `attached` \| `detached`). + type: string + VmId: + description: The ID of the VM. + type: string + VolumeId: + description: The ID of the volume. + type: string + type: object + Listener: + additionalProperties: false + description: Information about the listener. + properties: + BackendPort: + description: The port on which the backend VM is listening (between `1` + and `65535`, both included). + type: integer + BackendProtocol: + description: The protocol for routing traffic to backend VMs (`HTTP` \| + `HTTPS` \| `TCP` \| `SSL`). + type: string + LoadBalancerPort: + description: The port on which the load balancer is listening (between `1` + and `65535`, both included). + type: integer + LoadBalancerProtocol: + description: The routing protocol (`HTTP` \| `HTTPS` \| `TCP` \| `SSL`). + type: string + PolicyNames: + description: The names of the policies. If there are no policies enabled, + the list is empty. + items: + type: string + type: array + ServerCertificateId: + description: The OUTSCALE Resource Name (ORN) of the server certificate. + For more information, see [Resource Identifiers > OUTSCALE Resource Names + (ORNs)](https://docs.outscale.com/en/userguide/Resource-Identifiers.html#_outscale_resource_names_orns). + type: string + type: object + ListenerForCreation: + additionalProperties: false + description: Information about the listener to create. + properties: + BackendPort: + description: The port on which the backend VM is listening (between `1` + and `65535`, both included). + type: integer + BackendProtocol: + description: The protocol for routing traffic to backend VMs (`HTTP` \| + `HTTPS` \| `TCP` \| `SSL`). + type: string + LoadBalancerPort: + description: The port on which the load balancer is listening (between `1` + and `65535`, both included). + type: integer + LoadBalancerProtocol: + description: The routing protocol (`HTTP` \| `HTTPS` \| `TCP` \| `SSL`). + type: string + ServerCertificateId: + description: |- + The OUTSCALE Resource Name (ORN) of the server certificate. For more information, see [Resource Identifiers > OUTSCALE Resource Names (ORNs)](https://docs.outscale.com/en/userguide/Resource-Identifiers.html#_outscale_resource_names_orns).
+ This parameter is required for `HTTPS` and `SSL` protocols. + type: string + required: + - BackendPort + - LoadBalancerPort + - LoadBalancerProtocol + type: object + ListenerRule: + additionalProperties: false + description: Information about the listener rule. + properties: + Action: + description: The type of action for the rule (always `forward`). + type: string + HostNamePattern: + description: A host-name pattern for the rule, with a maximum length of + 128 characters. This host-name pattern supports maximum three wildcards, + and must not contain any special characters except `-.?`. + type: string + ListenerId: + description: The ID of the listener. + type: integer + ListenerRuleId: + description: The ID of the listener rule. + type: integer + ListenerRuleName: + description: A human-readable name for the listener rule. + type: string + PathPattern: + description: A path pattern for the rule, with a maximum length of 128 characters. + This path pattern supports maximum three wildcards, and must not contain + any special characters except `_-.$/~"'@:+?`. + type: string + Priority: + description: The priority level of the listener rule, between `1` and `19999` + both included. Each rule must have a unique priority level. Otherwise, + an error is returned. + type: integer + VmIds: + description: The IDs of the backend VMs. + items: + type: string + type: array + type: object + ListenerRuleForCreation: + additionalProperties: false + description: Information about the listener rule. + properties: + Action: + description: The type of action for the rule (always `forward`). + type: string + HostNamePattern: + description: A host-name pattern for the rule, with a maximum length of + 128 characters. This host-name pattern supports maximum three wildcards, + and must not contain any special characters except `-.?`. + type: string + ListenerRuleName: + description: A human-readable name for the listener rule. + type: string + PathPattern: + description: A path pattern for the rule, with a maximum length of 128 characters. + This path pattern supports maximum three wildcards, and must not contain + any special characters except `_-.$/~"'@:+?`. + type: string + Priority: + description: The priority level of the listener rule, between `1` and `19999` + both included. Each rule must have a unique priority level. Otherwise, + an error is returned. + type: integer + required: + - ListenerRuleName + - Priority + type: object + LoadBalancer: + additionalProperties: false + description: Information about the load balancer. + properties: + AccessLog: + "$ref": "#/components/schemas/AccessLog" + description: Information about access logs. + ApplicationStickyCookiePolicies: + description: The stickiness policies defined for the load balancer. + items: + "$ref": "#/components/schemas/ApplicationStickyCookiePolicy" + type: array + BackendIps: + description: One or more public IPs of backend VMs. + items: + type: string + type: array + BackendVmIds: + description: One or more IDs of backend VMs for the load balancer. + items: + type: string + type: array + DnsName: + description: The DNS name of the load balancer. + type: string + HealthCheck: + "$ref": "#/components/schemas/HealthCheck" + description: Information about the health check configuration. + Listeners: + description: The listeners for the load balancer. + items: + "$ref": "#/components/schemas/Listener" + type: array + LoadBalancerName: + description: The name of the load balancer. + type: string + LoadBalancerStickyCookiePolicies: + description: The policies defined for the load balancer. + items: + "$ref": "#/components/schemas/LoadBalancerStickyCookiePolicy" + type: array + LoadBalancerType: + description: |- + The type of load balancer. Valid only for load balancers in a Net.
+ If `LoadBalancerType` is `internet-facing`, the load balancer has a public DNS name that resolves to a public IP.
+ If `LoadBalancerType` is `internal`, the load balancer has a public DNS name that resolves to a private IP. + type: string + NetId: + description: The ID of the Net for the load balancer. + type: string + PublicIp: + description: "(internet-facing only) The public IP associated with the load + balancer." + type: string + SecuredCookies: + description: Whether secure cookies are enabled for the load balancer. + type: boolean + SecurityGroups: + description: One or more IDs of security groups for the load balancers. + Valid only for load balancers in a Net. + items: + type: string + type: array + SourceSecurityGroup: + "$ref": "#/components/schemas/SourceSecurityGroup" + description: |- + Information about the source security group of the load balancer, which you can use as part of your inbound rules for your registered VMs.
+ To only allow traffic from load balancers, add a security group rule that specifies this source security group as the inbound source. + State: + description: The state of the load balancer (`provisioning` \| `starting` + \| `reloading` \| `active` \| `reconfiguring` \| `deleting` \| `deleted`). + type: string + Subnets: + description: The ID of the Subnet in which the load balancer was created. + items: + type: string + type: array + SubregionNames: + description: The ID of the Subregion in which the load balancer was created. + items: + type: string + type: array + Tags: + description: One or more tags associated with the load balancer. + items: + "$ref": "#/components/schemas/ResourceTag" + type: array + type: object + LoadBalancerLight: + additionalProperties: false + description: Information about the load balancer. + properties: + LoadBalancerName: + description: The name of the load balancer to which the listener is attached. + type: string + LoadBalancerPort: + description: The port of load balancer on which the load balancer is listening + (between `1` and `65535` both included). + type: integer + required: + - LoadBalancerName + - LoadBalancerPort + type: object + LoadBalancerStickyCookiePolicy: + additionalProperties: false + description: Information about the stickiness policy. + properties: + CookieExpirationPeriod: + description: |- + The time period, in seconds, after which the cookie should be considered stale.
+ If `1`, the stickiness session lasts for the duration of the browser session. + type: integer + PolicyName: + description: The name of the stickiness policy. + type: string + type: object + LoadBalancerTag: + additionalProperties: false + description: Information about the load balancer tag. + properties: + Key: + description: The key of the tag. + type: string + LoadBalancerName: + description: The name of the load balancer. + type: string + Value: + description: The value of the tag. + type: string + type: object + Location: + additionalProperties: false + description: Information about the DirectLink location. + properties: + Code: + description: The location code, to be set as the `Location` parameter of + the *CreateDirectLink* method when creating a DirectLink. + type: string + Name: + description: The name and description of the location, corresponding to + a datacenter. + type: string + type: object + Log: + additionalProperties: false + description: Information about the log. + properties: + AccountId: + description: The OUTSCALE account ID of the logged call. + type: string + CallDuration: + description: The duration of the logged call, in microseconds. + type: integer + QueryAccessKey: + description: The access key used for the logged call. + type: string + QueryApiName: + description: The name of the API used by the logged call (always `oapi` + for the OUTSCALE API). + type: string + QueryApiVersion: + description: The version of the API used by the logged call. + type: string + QueryCallName: + description: The name of the logged call. + type: string + QueryDate: + description: The date and time (UTC) of the logged call. + format: date + type: string + QueryHeaderRaw: + description: The raw header of the HTTP request of the logged call. + type: string + QueryHeaderSize: + description: The size of the raw header of the HTTP request of the logged + call, in bytes. + type: integer + QueryIpAddress: + description: The IP used for the logged call. + type: string + QueryPayloadRaw: + description: The raw payload of the HTTP request of the logged call. + type: string + QueryPayloadSize: + description: The size of the raw payload of the HTTP request of the logged + call, in bytes. + type: integer + QueryUserAgent: + description: The user agent of the HTTP request of the logged call. + type: string + RequestId: + description: The request ID provided in the response of the logged call. + type: string + ResponseSize: + description: The size of the response of the logged call, in bytes. + type: integer + ResponseStatusCode: + description: The HTTP status code of the response of the logged call. + type: integer + type: object + MaintenanceEvent: + additionalProperties: false + description: Information about the maintenance event. + properties: + Code: + description: The code of the event (`system-reboot` \| `system-maintenance`). + type: string + Description: + description: The description of the event. + type: string + NotAfter: + description: The latest scheduled end date and time (UTC) for the event. + format: date-time + type: string + NotBefore: + description: The earliest scheduled start date and time (UTC) for the event. + format: date-time + type: string + type: object + MinimalPolicy: + additionalProperties: false + description: Information about the entity. + properties: + Id: + description: The ID of the entity. + type: string + Name: + description: The name of the entity. + type: string + Orn: + description: The OUTSCALE Resource Name (ORN) of the entity. For more information, + see [Resource Identifiers](https://docs.outscale.com/en/userguide/Resource-Identifiers.html). + type: string + type: object + NatService: + additionalProperties: false + description: Information about the NAT service. + properties: + ClientToken: + description: The idempotency token provided when creating the NAT service. + type: string + NatServiceId: + description: The ID of the NAT service. + type: string + NetId: + description: The ID of the Net in which the NAT service is. + type: string + PublicIps: + description: Information about the public IP or IPs associated with the + NAT service. + items: + "$ref": "#/components/schemas/PublicIpLight" + type: array + State: + description: The state of the NAT service (`pending` \| `available` \| `deleting` + \| `deleted`). + type: string + SubnetId: + description: The ID of the Subnet in which the NAT service is. + type: string + Tags: + description: One or more tags associated with the NAT service. + items: + "$ref": "#/components/schemas/ResourceTag" + type: array + type: object + Net: + additionalProperties: false + description: Information about the Net. + properties: + DhcpOptionsSetId: + description: The ID of the DHCP options set (or `default` if you want to + associate the default one). + type: string + IpRange: + description: The IP range for the Net, in CIDR notation (for example, `10.0.0.0/16`). + type: string + NetId: + description: The ID of the Net. + type: string + State: + description: The state of the Net (`pending` \| `available` \| `deleting`). + type: string + Tags: + description: One or more tags associated with the Net. + items: + "$ref": "#/components/schemas/ResourceTag" + type: array + Tenancy: + description: The VM tenancy in a Net. + type: string + type: object + NetAccessPoint: + additionalProperties: false + description: Information about the Net access point. + properties: + NetAccessPointId: + description: The ID of the Net access point. + type: string + NetId: + description: The ID of the Net with which the Net access point is associated. + type: string + RouteTableIds: + description: The ID of the route tables associated with the Net access point. + items: + type: string + type: array + ServiceName: + description: The name of the service with which the Net access point is + associated. + type: string + State: + description: The state of the Net access point (`pending` \| `available` + \| `deleting` \| `deleted`). + type: string + Tags: + description: One or more tags associated with the Net access point. + items: + "$ref": "#/components/schemas/ResourceTag" + type: array + type: object + NetPeering: + additionalProperties: false + description: Information about the Net peering. + properties: + AccepterNet: + "$ref": "#/components/schemas/AccepterNet" + description: Information about the accepter Net. + ExpirationDate: + description: The date and time (UTC) at which the Net peerings expire. + format: date-time + nullable: true + type: string + NetPeeringId: + description: The ID of the Net peering. + type: string + SourceNet: + "$ref": "#/components/schemas/SourceNet" + description: Information about the source Net. + State: + "$ref": "#/components/schemas/NetPeeringState" + description: Information about the state of the Net peering. + Tags: + description: One or more tags associated with the Net peering. + items: + "$ref": "#/components/schemas/ResourceTag" + type: array + type: object + NetPeeringState: + additionalProperties: false + description: Information about the state of the Net peering. + properties: + Message: + description: Additional information about the state of the Net peering. + type: string + Name: + description: The state of the Net peering (`pending-acceptance` \| `active` + \| `rejected` \| `failed` \| `expired` \| `deleted`). + type: string + type: object + NetToVirtualGatewayLink: + additionalProperties: false + description: Information about the attachment. + properties: + NetId: + description: The ID of the Net to which the virtual gateway is attached. + type: string + State: + description: The state of the attachment (`attaching` \| `attached` \| `detaching` + \| `detached`). + type: string + type: object + Nic: + additionalProperties: false + description: Information about the NIC. + properties: + AccountId: + description: The OUTSCALE account ID of the owner of the NIC. + type: string + Description: + description: The description of the NIC. + type: string + IsSourceDestChecked: + description: "(Net only) If true, the source/destination check is enabled. + If false, it is disabled." + type: boolean + LinkNic: + "$ref": "#/components/schemas/LinkNic" + description: Information about the NIC attachment. + LinkPublicIp: + "$ref": "#/components/schemas/LinkPublicIp" + description: Information about the public IP association. + MacAddress: + description: The Media Access Control (MAC) address of the NIC. + type: string + NetId: + description: The ID of the Net for the NIC. + type: string + NicId: + description: The ID of the NIC. + type: string + PrivateDnsName: + description: The name of the private DNS. + type: string + PrivateIps: + description: The private IPs of the NIC. + items: + "$ref": "#/components/schemas/PrivateIp" + type: array + SecurityGroups: + description: One or more IDs of security groups for the NIC. + items: + "$ref": "#/components/schemas/SecurityGroupLight" + type: array + State: + description: The state of the NIC (`available` \| `attaching` \| `in-use` + \| `detaching`). + type: string + SubnetId: + description: The ID of the Subnet. + type: string + SubregionName: + description: The Subregion in which the NIC is located. + type: string + Tags: + description: One or more tags associated with the NIC. + items: + "$ref": "#/components/schemas/ResourceTag" + type: array + type: object + NicForVmCreation: + additionalProperties: false + description: Information about the network interface card (NIC) when creating + a virtual machine (VM). + properties: + DeleteOnVmDeletion: + description: If true, the NIC is deleted when the VM is terminated. You + can specify this parameter only for a new NIC. To modify this value for + an existing NIC, see [UpdateNic](#updatenic). + type: boolean + Description: + description: The description of the NIC, if you are creating a NIC when + creating the VM. + type: string + DeviceNumber: + description: The index of the VM device for the NIC attachment (between + `0` and `7`, both included). This parameter is required if you create + a NIC when creating the VM. + type: integer + NicId: + description: The ID of the NIC, if you are attaching an existing NIC when + creating a VM. + type: string + PrivateIps: + description: One or more private IPs to assign to the NIC, if you create + a NIC when creating a VM. Only one private IP can be the primary private + IP. + items: + "$ref": "#/components/schemas/PrivateIpLight" + type: array + SecondaryPrivateIpCount: + description: The number of secondary private IPs, if you create a NIC when + creating a VM. This parameter cannot be specified if you specified more + than one private IP in the `PrivateIps` parameter. + type: integer + SecurityGroupIds: + description: One or more IDs of security groups for the NIC, if you create + a NIC when creating a VM. + items: + type: string + type: array + SubnetId: + description: The ID of the Subnet for the NIC, if you create a NIC when + creating a VM. This parameter is required if you create a NIC when creating + the VM. + type: string + type: object + NicLight: + additionalProperties: false + description: Information about the network interface card (NIC). + properties: + AccountId: + description: The OUTSCALE account ID of the owner of the NIC. + type: string + Description: + description: The description of the NIC. + type: string + IsSourceDestChecked: + description: "(Net only) If true, the source/destination check is enabled. + If false, it is disabled." + type: boolean + LinkNic: + "$ref": "#/components/schemas/LinkNicLight" + description: Information about the network interface card (NIC). + LinkPublicIp: + "$ref": "#/components/schemas/LinkPublicIpLightForVm" + description: Information about the public IP associated with the NIC. + MacAddress: + description: The Media Access Control (MAC) address of the NIC. + type: string + NetId: + description: The ID of the Net for the NIC. + type: string + NicId: + description: The ID of the NIC. + type: string + PrivateDnsName: + description: The name of the private DNS. + type: string + PrivateIps: + description: The private IP or IPs of the NIC. + items: + "$ref": "#/components/schemas/PrivateIpLightForVm" + type: array + SecurityGroups: + description: One or more IDs of security groups for the NIC. + items: + "$ref": "#/components/schemas/SecurityGroupLight" + type: array + State: + description: The state of the NIC (`available` \| `attaching` \| `in-use` + \| `detaching`). + type: string + SubnetId: + description: The ID of the Subnet for the NIC. + type: string + type: object + OsuApiKey: + additionalProperties: false + description: Information about the OOS API key. + properties: + ApiKeyId: + description: The API key of the OOS account that enables you to access the + bucket. + type: string + SecretKey: + description: The secret key of the OOS account that enables you to access + the bucket. + type: string + type: object + OsuExportImageExportTask: + additionalProperties: false + description: Information about the OMI export task. + properties: + DiskImageFormat: + description: The format of the export disk (`qcow2` \| `raw`). + type: string + OsuBucket: + description: The name of the OOS bucket the OMI is exported to. + type: string + OsuManifestUrl: + description: The URL of the manifest file. + type: string + OsuPrefix: + description: The prefix for the key of the OOS object corresponding to the + image. + type: string + required: + - DiskImageFormat + - OsuBucket + type: object + OsuExportSnapshotExportTask: + additionalProperties: false + description: Information about the snapshot export task. + properties: + DiskImageFormat: + description: The format of the export disk (`qcow2` \| `raw`). + type: string + OsuBucket: + description: The name of the OOS bucket the snapshot is exported to. + type: string + OsuPrefix: + description: The prefix for the key of the OOS object corresponding to the + snapshot. + type: string + required: + - DiskImageFormat + - OsuBucket + type: object + OsuExportToCreate: + additionalProperties: false + description: Information about the OOS export task to create. + properties: + DiskImageFormat: + description: The format of the export disk (`qcow2` \| `raw`). + type: string + OsuApiKey: + "$ref": "#/components/schemas/OsuApiKey" + description: Information about the OOS API key. + OsuBucket: + description: The name of the OOS bucket where you want to export the object. + type: string + OsuManifestUrl: + description: The URL of the manifest file. + type: string + OsuPrefix: + description: The prefix for the key of the OOS object. + type: string + required: + - DiskImageFormat + - OsuBucket + type: object + PermissionsOnResource: + additionalProperties: false + description: Permissions for the resource. + properties: + AccountIds: + description: One or more OUTSCALE account IDs that the permission is associated + with. + items: + type: string + type: array + GlobalPermission: + description: |- + A global permission for all accounts.
+ (Request) Set this parameter to true to make the resource public (if the parent parameter is `Additions`) or to make the resource private (if the parent parameter is `Removals`).
+ (Response) If true, the resource is public. If false, the resource is private. + type: boolean + type: object + PermissionsOnResourceCreation: + additionalProperties: false + description: |- + Information about the permissions for the resource.
+ Specify either the `Additions` or the `Removals` parameter. + properties: + Additions: + "$ref": "#/components/schemas/PermissionsOnResource" + description: Permissions for the resource. + Removals: + "$ref": "#/components/schemas/PermissionsOnResource" + description: Permissions for the resource. + type: object + Phase1Options: + additionalProperties: false + description: This parameter is not available. It is present in our API for the + sake of historical compatibility with AWS. + properties: + DpdTimeoutAction: + description: This parameter is not available. It is present in our API for + the sake of historical compatibility with AWS. + type: string + DpdTimeoutSeconds: + description: This parameter is not available. It is present in our API for + the sake of historical compatibility with AWS. + type: integer + IkeVersions: + description: This parameter is not available. It is present in our API for + the sake of historical compatibility with AWS. + items: + type: string + type: array + Phase1DhGroupNumbers: + description: This parameter is not available. It is present in our API for + the sake of historical compatibility with AWS. + items: + type: integer + type: array + Phase1EncryptionAlgorithms: + description: This parameter is not available. It is present in our API for + the sake of historical compatibility with AWS. + items: + type: string + type: array + Phase1IntegrityAlgorithms: + description: This parameter is not available. It is present in our API for + the sake of historical compatibility with AWS. + items: + type: string + type: array + Phase1LifetimeSeconds: + description: This parameter is not available. It is present in our API for + the sake of historical compatibility with AWS. + type: integer + ReplayWindowSize: + description: This parameter is not available. It is present in our API for + the sake of historical compatibility with AWS. + type: integer + StartupAction: + description: This parameter is not available. It is present in our API for + the sake of historical compatibility with AWS. + type: string + type: object + Phase2Options: + additionalProperties: false + description: Information about Phase 2 of the Internet Key Exchange (IKE) negotiation. + properties: + Phase2DhGroupNumbers: + description: This parameter is not available. It is present in our API for + the sake of historical compatibility with AWS. + items: + type: integer + type: array + Phase2EncryptionAlgorithms: + description: This parameter is not available. It is present in our API for + the sake of historical compatibility with AWS. + items: + type: string + type: array + Phase2IntegrityAlgorithms: + description: This parameter is not available. It is present in our API for + the sake of historical compatibility with AWS. + items: + type: string + type: array + Phase2LifetimeSeconds: + description: This parameter is not available. It is present in our API for + the sake of historical compatibility with AWS. + type: integer + PreSharedKey: + description: The pre-shared key to establish the initial authentication + between the client gateway and the virtual gateway. This key can contain + any character except line breaks and double quotes ("). + type: string + type: object + Placement: + additionalProperties: false + description: Information about the placement of the VM. + properties: + SubregionName: + description: The name of the Subregion. + type: string + Tenancy: + description: The tenancy of the VM (`default`, `dedicated`, or a dedicated + group ID). + type: string + type: object + Policy: + additionalProperties: false + description: Information about the policy. + properties: + CreationDate: + description: The date and time (UTC) at which the policy was created. + format: date-time + type: string + Description: + description: A friendly name for the policy (between 0 and 1000 characters). + type: string + IsLinkable: + description: Indicates whether the policy can be linked to a group or an + EIM user. + type: boolean + LastModificationDate: + description: The date and time (UTC) at which the policy was last modified. + format: date-time + type: string + Orn: + description: The OUTSCALE Resource Name (ORN) of the policy. For more information, + see [Resource Identifiers](https://docs.outscale.com/en/userguide/Resource-Identifiers.html). + type: string + Path: + description: The path to the policy. + type: string + PolicyDefaultVersionId: + description: The ID of the policy default version. + type: string + PolicyId: + description: The ID of the policy. + type: string + PolicyName: + description: The name of the policy. + type: string + ResourcesCount: + description: The number of resources attached to the policy. + type: integer + type: object + PolicyEntities: + additionalProperties: false + description: Information about the policy entities. + properties: + Accounts: + description: The accounts linked to the specified policy. + items: + "$ref": "#/components/schemas/MinimalPolicy" + type: array + Groups: + description: The groups linked to the specified policy. + items: + "$ref": "#/components/schemas/MinimalPolicy" + type: array + HasMoreItems: + description: If true, there are more items to return using the `FirstItem` + parameter in a new request. + type: boolean + ItemsCount: + description: The number of entities the specified policy is linked to. + type: integer + MaxResultsLimit: + description: Indicates maximum results defined for the operation. + type: integer + MaxResultsTruncated: + description: If true, indicates whether requested page size is more than + allowed. + type: boolean + Users: + description: The users linked to the specified policy. + items: + "$ref": "#/components/schemas/MinimalPolicy" + type: array + type: object + PolicyVersion: + additionalProperties: false + description: Information about the policy version. + properties: + Body: + description: The policy document, corresponding to a JSON string that contains + the policy. For more information, see [EIM Reference Information](https://docs.outscale.com/en/userguide/EIM-Reference-Information.html) + and [EIM Policy Generator](https://docs.outscale.com/en/userguide/EIM-Policy-Generator.html). + type: string + CreationDate: + description: The date and time (UTC) at which the version was created. + format: date-time + type: string + DefaultVersion: + description: If true, the version is the default one. + type: boolean + VersionId: + description: The ID of the version. + type: string + type: object + PrivateIp: + additionalProperties: false + description: Information about the private IP. + properties: + IsPrimary: + description: If true, the IP is the primary private IP of the NIC. + type: boolean + LinkPublicIp: + "$ref": "#/components/schemas/LinkPublicIp" + description: Information about the public IP association. + PrivateDnsName: + description: The name of the private DNS. + type: string + PrivateIp: + description: A private IP for the NIC. + type: string + type: object + PrivateIpLight: + additionalProperties: false + description: Information about the private IP. + properties: + IsPrimary: + description: If true, the IP is the primary private IP of the NIC. + type: boolean + PrivateIp: + description: A private IP for the NIC. This IP must be within the IP range + of the Subnet that you specify with the `SubnetId` parameter. However, + it cannot be one of the first four IPs (ending in `.0`, `.1`, `.2`, `.3`) + or the last IP (ending in `.255`) of the Subnet, as these are reserved + by 3DS OUTSCALE. For more information, see [About Nets](https://docs.outscale.com/en/userguide/About-Nets.html). + type: string + type: object + PrivateIpLightForVm: + additionalProperties: false + description: Information about the private IP of the NIC. + properties: + IsPrimary: + description: If true, the IP is the primary private IP of the NIC. + type: boolean + LinkPublicIp: + "$ref": "#/components/schemas/LinkPublicIpLightForVm" + description: Information about the public IP associated with the NIC. + PrivateDnsName: + description: The name of the private DNS. + type: string + PrivateIp: + description: A private IP for the NIC. + type: string + type: object + ProductType: + additionalProperties: false + description: Information about the product type. + properties: + Description: + description: The description of the product type. + type: string + ProductTypeId: + description: The ID of the product type. + type: string + Vendor: + description: The vendor of the product type. + type: string + type: object + PublicIp: + additionalProperties: false + description: Information about the public IP. + properties: + LinkPublicIpId: + description: "(Required in a Net) The ID representing the association of + the public IP with the VM or the NIC." + type: string + NicAccountId: + description: The OUTSCALE account ID of the owner of the NIC. + type: string + NicId: + description: The ID of the NIC the public IP is associated with (if any). + type: string + PrivateIp: + description: The private IP associated with the public IP. + type: string + PublicIp: + description: The public IP. + type: string + PublicIpId: + description: The allocation ID of the public IP. + type: string + Tags: + description: One or more tags associated with the public IP. + items: + "$ref": "#/components/schemas/ResourceTag" + type: array + VmId: + description: The ID of the VM the public IP is associated with (if any). + type: string + type: object + PublicIpLight: + additionalProperties: false + description: Information about the public IP. + properties: + PublicIp: + description: The public IP associated with the NAT service. + type: string + PublicIpId: + description: The allocation ID of the public IP associated with the NAT + service. + type: string + type: object + PutUserGroupPolicyRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + PolicyDocument: + description: The policy document, corresponding to a JSON string that contains + the policy. For more information, see [EIM Reference Information](https://docs.outscale.com/en/userguide/EIM-Reference-Information.html) + and [EIM Policy Generator](https://docs.outscale.com/en/userguide/EIM-Policy-Generator.html). + type: string + PolicyName: + description: The name of the policy. + type: string + UserGroupName: + description: The name of the group. + type: string + UserGroupPath: + description: The path to the group. If not specified, it is set to a slash + (`/`). + type: string + required: + - PolicyName + - PolicyDocument + - UserGroupName + type: object + PutUserGroupPolicyResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + PutUserPolicyRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + PolicyDocument: + description: The policy document, corresponding to a JSON string that contains + the policy. For more information, see [EIM Reference Information](https://docs.outscale.com/en/userguide/EIM-Reference-Information.html) + and [EIM Policy Generator](https://docs.outscale.com/en/userguide/EIM-Policy-Generator.html). + type: string + PolicyName: + description: The name of the policy (between 1 and 128 characters). + type: string + UserName: + description: The name of the user. + type: string + required: + - PolicyName + - PolicyDocument + - UserName + type: object + PutUserPolicyResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + Quota: + additionalProperties: false + description: Information about the quota. + properties: + AccountId: + description: The OUTSCALE account ID of the owner of the quotas. + type: string + Description: + description: The description of the quota. + type: string + MaxValue: + description: The maximum value of the quota for the account (if there is + no limit, `0`). + type: integer + Name: + description: The unique name of the quota. + type: string + QuotaCollection: + description: The group name of the quota. + type: string + ShortDescription: + description: The description of the quota. + type: string + UsedValue: + description: The limit value currently used by the account. + type: integer + type: object + QuotaTypes: + additionalProperties: false + description: One or more quotas. + properties: + QuotaType: + description: The resource ID if it is a resource-specific quota, `global` + if it is not. + type: string + Quotas: + description: One or more quotas associated with the account. + items: + "$ref": "#/components/schemas/Quota" + type: array + type: object + ReadAccessKeysRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Filters: + "$ref": "#/components/schemas/FiltersAccessKeys" + description: One or more filters. + Tag: + description: The tag added to the access key. + type: string + UserName: + description: The name of the EIM user. By default, the user who sends the + request (which can be the root user). + type: string + type: object + ReadAccessKeysResponse: + additionalProperties: false + properties: + AccessKeys: + description: A list of access keys. + items: + "$ref": "#/components/schemas/AccessKey" + type: array + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + ReadAccountsRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + type: object + ReadAccountsResponse: + additionalProperties: false + properties: + Accounts: + description: The list of the accounts. + items: + "$ref": "#/components/schemas/Account" + type: array + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + ReadAdminPasswordRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + VmId: + description: The ID of the VM. + type: string + required: + - VmId + type: object + ReadAdminPasswordResponse: + additionalProperties: false + properties: + AdminPassword: + description: The password of the VM. After the first boot, returns an empty + string. + type: string + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + VmId: + description: The ID of the VM. + type: string + type: object + ReadApiAccessPolicyRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + type: object + ReadApiAccessPolicyResponse: + additionalProperties: false + properties: + ApiAccessPolicy: + "$ref": "#/components/schemas/ApiAccessPolicy" + description: Information about the API access policy. + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + ReadApiAccessRulesRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Filters: + "$ref": "#/components/schemas/FiltersApiAccessRule" + description: One or more filters. + type: object + ReadApiAccessRulesResponse: + additionalProperties: false + properties: + ApiAccessRules: + description: A list of API access rules. + items: + "$ref": "#/components/schemas/ApiAccessRule" + type: array + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + ReadApiLogsRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Filters: + "$ref": "#/components/schemas/FiltersApiLog" + description: One or more filters. + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + type: string + ResultsPerPage: + default: 100 + description: The maximum number of logs returned in a single response (between + `1` and `1000`, both included). + type: integer + With: + "$ref": "#/components/schemas/With" + description: The information to display in each returned log. + type: object + ReadApiLogsResponse: + additionalProperties: false + properties: + Logs: + description: Information about one or more logs. + items: + "$ref": "#/components/schemas/Log" + type: array + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + type: string + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + ReadCO2EmissionAccountRequest: + additionalProperties: false + properties: + FromMonth: + description: The beginning of the time period, in ISO 8601 date format (for + example, `2020-06-01`). This value must correspond to the first day of + the month and is included in the time period. + format: date + type: string + Overall: + default: false + description: If false, returns only the CO2 emission of the specific account + that sends the request. If true, returns either the overall CO2 emission + of your paying account and all linked accounts (if the account that sends + this request is a paying account) or returns nothing (if the account that + sends this request is a linked account). + type: boolean + ToMonth: + description: The end of the time period, in ISO 8601 date format (for example, + `2020-06-14`). This value must correspond to the first day of the month + and is excluded from the time period. It must be set to a later date than + `FromMonth`. + format: date + type: string + required: + - FromMonth + - ToMonth + type: object + ReadCO2EmissionAccountResponse: + additionalProperties: false + properties: + CO2EmissionEntries: + description: The CO2 emission by month and account, for the specified request. + items: + "$ref": "#/components/schemas/CO2EmissionEntry" + type: array + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + Unit: + description: The unit of all the `Value` fields of the response, expressed + in kgCOâ‚‚e. + type: string + Value: + description: The total CO2 emission for the specified request. + format: double + type: number + type: object + ReadCasRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Filters: + "$ref": "#/components/schemas/FiltersCa" + description: One or more filters. + type: object + ReadCasResponse: + additionalProperties: false + properties: + Cas: + description: Information about one or more CAs. + items: + "$ref": "#/components/schemas/Ca" + type: array + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + ReadCatalogRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + type: object + ReadCatalogResponse: + additionalProperties: false + properties: + Catalog: + "$ref": "#/components/schemas/Catalog" + description: Information about our catalog of prices. + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + ReadCatalogsRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Filters: + "$ref": "#/components/schemas/FiltersCatalogs" + description: One or more filters. + type: object + ReadCatalogsResponse: + additionalProperties: false + properties: + Catalogs: + description: Information about one or more catalogs. + items: + "$ref": "#/components/schemas/Catalogs" + type: array + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + ReadClientGatewaysRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Filters: + "$ref": "#/components/schemas/FiltersClientGateway" + description: One or more filters. + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResultsPerPage: + description: The maximum number of logs returned in a single response (between + `1` and `1000`, both included). + type: integer + type: object + ReadClientGatewaysResponse: + additionalProperties: false + properties: + ClientGateways: + description: Information about one or more client gateways. + items: + "$ref": "#/components/schemas/ClientGateway" + type: array + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + ReadConsoleOutputRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + VmId: + description: The ID of the VM. + type: string + required: + - VmId + type: object + ReadConsoleOutputResponse: + additionalProperties: false + properties: + ConsoleOutput: + description: The Base64-encoded output of the console. If a command line + tool is used, the output is decoded by the tool. + type: string + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + VmId: + description: The ID of the VM. + type: string + type: object + ReadConsumptionAccountRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + FromDate: + description: The beginning of the time period, in ISO 8601 date format (for + example, `2020-06-14`). The date-time format is also accepted, but only + with a time set to midnight (for example, `2020-06-14T00:00:00.000Z`). + This value is included in the time period. + format: datetime + type: string + Overall: + default: false + description: If false, returns only the consumption of the specific account + that sends this request. If true, returns either the overall consumption + of your paying account and all linked accounts (if the account that sends + this request is a paying account) or returns nothing (if the account that + sends this request is a linked account). + type: boolean + ShowPrice: + description: If true, the response also includes the unit price of the consumed + resource (`UnitPrice`) and the total price of the consumed resource during + the specified time period (`Price`), in the currency of the Region's catalog. + type: boolean + ShowResourceDetails: + default: false + description: By default or if false, returns the consumption aggregated + by resource type. If true, the response returns the consumption per `ResourceId`. + type: boolean + ToDate: + description: The end of the time period, in ISO 8601 date format (for example, + `2020-06-30`). The date-time format is also accepted, but only with a + time set to midnight (for example, `2020-06-30T00:00:00.000Z`). This value + is excluded from the time period, and must be set to a later date than + `FromDate`. + format: datetime + type: string + required: + - FromDate + - ToDate + type: object + ReadConsumptionAccountResponse: + additionalProperties: false + properties: + ConsumptionEntries: + description: Information about the resources consumed during the specified + time period. + items: + "$ref": "#/components/schemas/ConsumptionEntry" + type: array + Currency: + description: The currency of your account for the `UnitPrice` and `Price` + parameters, in the ISO-4217 format (for example, `EUR`). + nullable: true + type: string + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + ReadDedicatedGroupsRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Filters: + "$ref": "#/components/schemas/FiltersDedicatedGroup" + description: One or more filters. + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResultsPerPage: + description: The maximum number of logs returned in a single response (between + `1` and `1000`, both included). + type: integer + type: object + ReadDedicatedGroupsResponse: + additionalProperties: false + properties: + DedicatedGroups: + description: Information about one or more dedicated groups. + items: + "$ref": "#/components/schemas/DedicatedGroup" + type: array + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + ReadDhcpOptionsRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Filters: + "$ref": "#/components/schemas/FiltersDhcpOptions" + description: One or more filters. + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResultsPerPage: + description: The maximum number of logs returned in a single response (between + `1` and `1000`, both included). + type: integer + type: object + ReadDhcpOptionsResponse: + additionalProperties: false + properties: + DhcpOptionsSets: + description: Information about one or more DHCP options sets. + items: + "$ref": "#/components/schemas/DhcpOptionsSet" + type: array + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + ReadDirectLinkInterfacesRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Filters: + "$ref": "#/components/schemas/FiltersDirectLinkInterface" + description: One or more filters. + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResultsPerPage: + description: The maximum number of logs returned in a single response (between + `1` and `1000`, both included). + type: integer + type: object + ReadDirectLinkInterfacesResponse: + additionalProperties: false + properties: + DirectLinkInterfaces: + description: Information about one or more DirectLink interfaces. + items: + "$ref": "#/components/schemas/DirectLinkInterfaces" + type: array + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + ReadDirectLinksRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Filters: + "$ref": "#/components/schemas/FiltersDirectLink" + description: One or more filters. + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResultsPerPage: + description: The maximum number of logs returned in a single response (between + `1` and `1000`, both included). + type: integer + type: object + ReadDirectLinksResponse: + additionalProperties: false + properties: + DirectLinks: + description: Information about one or more DirectLinks. + items: + "$ref": "#/components/schemas/DirectLink" + type: array + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + ReadEntitiesLinkedToPolicyRequest: + additionalProperties: false + properties: + EntitiesType: + description: The type of entity linked to the policy you want to get information + about. + items: + enum: + - ACCOUNT + - USER + - GROUP + type: string + type: array + FirstItem: + description: The item starting the list of entities requested. + type: integer + PolicyOrn: + description: The OUTSCALE Resource Name (ORN) of the policy. For more information, + see [Resource Identifiers](https://docs.outscale.com/en/userguide/Resource-Identifiers.html). + pattern: "^orn:ows:(iam|idauth):\\S*:\\d{12}:policy/\\S+$" + type: string + ResultsPerPage: + description: The maximum number of items that can be returned in a single + response (by default, 100). + type: integer + required: + - PolicyOrn + type: object + ReadEntitiesLinkedToPolicyResponse: + additionalProperties: false + properties: + PolicyEntities: + "$ref": "#/components/schemas/PolicyEntities" + description: Information about the policy entities. + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + ReadFlexibleGpuCatalogRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + type: object + ReadFlexibleGpuCatalogResponse: + additionalProperties: false + properties: + FlexibleGpuCatalog: + description: Information about one or more fGPUs available in the public + catalog. + items: + "$ref": "#/components/schemas/FlexibleGpuCatalog" + type: array + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + ReadFlexibleGpusRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Filters: + "$ref": "#/components/schemas/FiltersFlexibleGpu" + description: One or more filters. + type: object + ReadFlexibleGpusResponse: + additionalProperties: false + properties: + FlexibleGpus: + description: Information about one or more fGPUs. + items: + "$ref": "#/components/schemas/FlexibleGpu" + type: array + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + ReadImageExportTasksRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Filters: + "$ref": "#/components/schemas/FiltersReadImageExportTask" + description: One or more filters. + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResultsPerPage: + description: The maximum number of logs returned in a single response (between + `1` and `1000`, both included). + type: integer + type: object + ReadImageExportTasksResponse: + additionalProperties: false + properties: + ImageExportTasks: + description: Information about one or more image export tasks. + items: + "$ref": "#/components/schemas/ImageExportTask" + type: array + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + ReadImagesRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Filters: + "$ref": "#/components/schemas/FiltersImage" + description: One or more filters. + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResultsPerPage: + description: The maximum number of logs returned in a single response (between + `1` and `1000`, both included). + type: integer + type: object + ReadImagesResponse: + additionalProperties: false + properties: + Images: + description: Information about one or more OMIs. + items: + "$ref": "#/components/schemas/Image" + type: array + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + ReadInternetServicesRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Filters: + "$ref": "#/components/schemas/FiltersInternetService" + description: One or more filters. + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResultsPerPage: + description: The maximum number of logs returned in a single response (between + `1` and `1000`, both included). + type: integer + type: object + ReadInternetServicesResponse: + additionalProperties: false + properties: + InternetServices: + description: Information about one or more internet services. + items: + "$ref": "#/components/schemas/InternetService" + type: array + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + ReadKeypairsRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Filters: + "$ref": "#/components/schemas/FiltersKeypair" + description: One or more filters. + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResultsPerPage: + description: The maximum number of logs returned in a single response (between + `1` and `1000`, both included). By default, `100`. + type: integer + type: object + ReadKeypairsResponse: + additionalProperties: false + properties: + Keypairs: + description: Information about one or more keypairs. + items: + "$ref": "#/components/schemas/Keypair" + type: array + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + ReadLinkedPoliciesFilters: + additionalProperties: false + description: One or more filters. + properties: + PathPrefix: + description: The path prefix of the policies. If not specified, it is set + to a slash (`/`). + type: string + type: object + ReadLinkedPoliciesRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Filters: + "$ref": "#/components/schemas/ReadLinkedPoliciesFilters" + description: One or more filters. + FirstItem: + description: The item starting the list of policies requested. + type: integer + ResultsPerPage: + description: The maximum number of items that can be returned in a single + response (by default, `100`). + type: integer + UserName: + description: The name of the user the policies are linked to. + type: string + required: + - UserName + type: object + ReadLinkedPoliciesResponse: + additionalProperties: false + properties: + HasMoreItems: + description: If true, there are more items to return using the `FirstItem` + parameter in a new request. + type: boolean + MaxResultsLimit: + description: Indicates maximum results defined for the operation. + type: integer + MaxResultsTruncated: + description: If true, indicates whether requested page size is more than + allowed. + type: boolean + Policies: + description: One or more policies linked to the specified user. + items: + "$ref": "#/components/schemas/LinkedPolicy" + type: array + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + ReadListenerRulesRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Filters: + "$ref": "#/components/schemas/FiltersListenerRule" + description: One or more filters. + type: object + ReadListenerRulesResponse: + additionalProperties: false + properties: + ListenerRules: + description: The list of the rules to describe. + items: + "$ref": "#/components/schemas/ListenerRule" + type: array + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + ReadLoadBalancerTagsRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + LoadBalancerNames: + description: One or more load balancer names. + items: + type: string + type: array + required: + - LoadBalancerNames + type: object + ReadLoadBalancerTagsResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + Tags: + description: Information about one or more load balancer tags. + items: + "$ref": "#/components/schemas/LoadBalancerTag" + type: array + type: object + ReadLoadBalancersRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Filters: + "$ref": "#/components/schemas/FiltersLoadBalancer" + description: One or more filters. + type: object + ReadLoadBalancersResponse: + additionalProperties: false + properties: + LoadBalancers: + description: Information about one or more load balancers. + items: + "$ref": "#/components/schemas/LoadBalancer" + type: array + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + ReadLocationsRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResultsPerPage: + description: The maximum number of logs returned in a single response (between + `1` and `1000`, both included). + type: integer + type: object + ReadLocationsResponse: + additionalProperties: false + properties: + Locations: + description: Information about one or more locations. + items: + "$ref": "#/components/schemas/Location" + type: array + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + ReadManagedPoliciesLinkedToUserGroupRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Filters: + "$ref": "#/components/schemas/FiltersUserGroup" + description: One or more filters. + FirstItem: + description: The item starting the list of policies requested. + type: integer + ResultsPerPage: + description: The maximum number of items that can be returned in a single + response (by default, `100`). + type: integer + UserGroupName: + description: The name of the group. + type: string + required: + - UserGroupName + type: object + ReadManagedPoliciesLinkedToUserGroupResponse: + additionalProperties: false + properties: + HasMoreItems: + description: If true, there are more items to return using the `FirstItem` + parameter in a new request. + type: boolean + MaxResultsLimit: + description: Indicates maximum results defined for the operation. + type: integer + MaxResultsTruncated: + description: If true, indicates whether requested page size is more than + allowed. + type: boolean + Policies: + description: A list of policies. + items: + "$ref": "#/components/schemas/LinkedPolicy" + type: array + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + ReadNatServicesRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Filters: + "$ref": "#/components/schemas/FiltersNatService" + description: One or more filters. + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResultsPerPage: + description: The maximum number of logs returned in a single response (between + `1` and `1000`, both included). + type: integer + type: object + ReadNatServicesResponse: + additionalProperties: false + properties: + NatServices: + description: Information about one or more NAT services. + items: + "$ref": "#/components/schemas/NatService" + type: array + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + ReadNetAccessPointServicesRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Filters: + "$ref": "#/components/schemas/FiltersService" + description: One or more filters. + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResultsPerPage: + description: The maximum number of logs returned in a single response (between + `1` and `1000`, both included). + type: integer + type: object + ReadNetAccessPointServicesResponse: + additionalProperties: false + properties: + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + Services: + description: The names of the services you can use for Net access points. + items: + "$ref": "#/components/schemas/Service" + type: array + type: object + ReadNetAccessPointsRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Filters: + "$ref": "#/components/schemas/FiltersNetAccessPoint" + description: One or more filters. + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResultsPerPage: + description: The maximum number of logs returned in a single response (between + `1` and `1000`, both included). + type: integer + type: object + ReadNetAccessPointsResponse: + additionalProperties: false + properties: + NetAccessPoints: + description: One or more Net access points. + items: + "$ref": "#/components/schemas/NetAccessPoint" + type: array + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + ReadNetPeeringsRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Filters: + "$ref": "#/components/schemas/FiltersNetPeering" + description: One or more filters. + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResultsPerPage: + description: The maximum number of logs returned in a single response (between + `1` and `1000`, both included). + type: integer + type: object + ReadNetPeeringsResponse: + additionalProperties: false + properties: + NetPeerings: + description: Information about one or more Net peerings. + items: + "$ref": "#/components/schemas/NetPeering" + type: array + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + ReadNetsRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Filters: + "$ref": "#/components/schemas/FiltersNet" + description: One or more filters. + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResultsPerPage: + description: The maximum number of logs returned in a single response (between + `1` and `1000`, both included). + type: integer + type: object + ReadNetsResponse: + additionalProperties: false + properties: + Nets: + description: Information about the described Nets. + items: + "$ref": "#/components/schemas/Net" + type: array + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + ReadNicsRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Filters: + "$ref": "#/components/schemas/FiltersNic" + description: One or more filters. + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResultsPerPage: + description: The maximum number of logs returned in a single response (between + `1` and `1000`, both included). + type: integer + type: object + ReadNicsResponse: + additionalProperties: false + properties: + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + Nics: + description: Information about one or more NICs. + items: + "$ref": "#/components/schemas/Nic" + type: array + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + ReadPoliciesFilters: + additionalProperties: false + description: One or more filters. + properties: + OnlyLinked: + description: If set to true, lists only the policies attached to a user. + type: boolean + PathPrefix: + description: The path prefix you can use to filter the results. If not specified, + it is set to a slash (`/`). + type: string + Scope: + description: The scope of the policies. A policy can either be created by + Outscale (`OWS`), and therefore applies to all accounts, or be created + by its users (`LOCAL`). + enum: + - LOCAL + - OWS + type: string + type: object + ReadPoliciesRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Filters: + "$ref": "#/components/schemas/ReadPoliciesFilters" + description: One or more filters. + FirstItem: + description: The item starting the list of policies requested. + type: integer + ResultsPerPage: + description: The maximum number of items that can be returned in a single + response (by default, `100`). + type: integer + type: object + ReadPoliciesResponse: + additionalProperties: false + properties: + HasMoreItems: + description: If true, there are more items to return using the `FirstItem` + parameter in a new request. + type: boolean + MaxResultsLimit: + description: Indicates maximum results defined for the operation. + type: integer + MaxResultsTruncated: + description: If true, indicates whether requested page size is more than + allowed. + type: boolean + Policies: + description: Information about one or more policies. + items: + "$ref": "#/components/schemas/Policy" + type: array + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + ReadPolicyRequest: + additionalProperties: false + properties: + PolicyOrn: + description: The OUTSCALE Resource Name (ORN) of the policy. For more information, + see [Resource Identifiers](https://docs.outscale.com/en/userguide/Resource-Identifiers.html). + pattern: "^orn:ows:(iam|idauth):\\S*:\\d{12}:policy/\\S+$" + type: string + required: + - PolicyOrn + type: object + ReadPolicyResponse: + additionalProperties: false + properties: + Policy: + "$ref": "#/components/schemas/Policy" + description: Information about the policy. + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + ReadPolicyVersionRequest: + additionalProperties: false + properties: + PolicyOrn: + description: The OUTSCALE Resource Name (ORN) of the policy. For more information, + see [Resource Identifiers](https://docs.outscale.com/en/userguide/Resource-Identifiers.html). + pattern: "^orn:ows:(iam|idauth):\\S*:\\d{12}:policy/\\S+$" + type: string + VersionId: + description: The ID of the policy version. + type: string + required: + - PolicyOrn + - VersionId + type: object + ReadPolicyVersionResponse: + additionalProperties: false + properties: + PolicyVersion: + "$ref": "#/components/schemas/PolicyVersion" + description: Information about the policy version. + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + ReadPolicyVersionsRequest: + additionalProperties: false + properties: + FirstItem: + description: The item starting the list of policies requested. + type: integer + PolicyOrn: + description: The OUTSCALE Resource Name (ORN) of the policy. For more information, + see [Resource Identifiers](https://docs.outscale.com/en/userguide/Resource-Identifiers.html). + pattern: "^orn:ows:(iam|idauth):\\S*:\\d{12}:policy/\\S+$" + type: string + ResultsPerPage: + description: The maximum number of items that can be returned in a single + response (by default, `100`). + type: integer + required: + - PolicyOrn + type: object + ReadPolicyVersionsResponse: + additionalProperties: false + properties: + HasMoreItems: + description: If true, there are more items to return using the `FirstItem` + parameter in a new request. + type: boolean + MaxResultsLimit: + description: Indicates maximum results defined for the operation. + type: integer + PolicyVersions: + description: A list of all the versions of the policy. + items: + "$ref": "#/components/schemas/PolicyVersion" + type: array + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + ReadProductTypesRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Filters: + "$ref": "#/components/schemas/FiltersProductType" + description: One or more filters. + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResultsPerPage: + description: The maximum number of logs returned in a single response (between + `1` and `1000`, both included). + type: integer + type: object + ReadProductTypesResponse: + additionalProperties: false + properties: + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ProductTypes: + description: Information about one or more product types. + items: + "$ref": "#/components/schemas/ProductType" + type: array + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + ReadPublicCatalogRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + type: object + ReadPublicCatalogResponse: + additionalProperties: false + properties: + Catalog: + "$ref": "#/components/schemas/Catalog" + description: Information about our catalog of prices. + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + ReadPublicIpRangesRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResultsPerPage: + description: The maximum number of logs returned in a single response (between + `1` and `1000`, both included). + type: integer + type: object + ReadPublicIpRangesResponse: + additionalProperties: false + properties: + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + PublicIps: + description: The list of public IPv4 addresses used in the Region, in CIDR + notation. + items: + type: string + type: array + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + ReadPublicIpsRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Filters: + "$ref": "#/components/schemas/FiltersPublicIp" + description: One or more filters. + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResultsPerPage: + description: The maximum number of logs returned in a single response (between + `1` and `1000`, both included). + type: integer + type: object + ReadPublicIpsResponse: + additionalProperties: false + properties: + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + PublicIps: + description: Information about one or more public IPs. + items: + "$ref": "#/components/schemas/PublicIp" + type: array + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + ReadQuotasRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Filters: + "$ref": "#/components/schemas/FiltersQuota" + description: One or more filters. + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResultsPerPage: + description: The maximum number of logs returned in a single response (between + `1` and `1000`, both included). + type: integer + type: object + ReadQuotasResponse: + additionalProperties: false + properties: + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + QuotaTypes: + description: Information about one or more quotas. + items: + "$ref": "#/components/schemas/QuotaTypes" + type: array + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + ReadRegionsRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + type: object + ReadRegionsResponse: + additionalProperties: false + properties: + Regions: + description: Information about one or more Regions. + items: + "$ref": "#/components/schemas/Region" + type: array + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + ReadRouteTablesRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Filters: + "$ref": "#/components/schemas/FiltersRouteTable" + description: One or more filters. + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResultsPerPage: + description: The maximum number of logs returned in a single response (between + `1` and `1000`, both included). + type: integer + type: object + ReadRouteTablesResponse: + additionalProperties: false + properties: + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + RouteTables: + description: Information about one or more route tables. + items: + "$ref": "#/components/schemas/RouteTable" + type: array + type: object + ReadSecurityGroupsRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Filters: + "$ref": "#/components/schemas/FiltersSecurityGroup" + description: One or more filters. + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResultsPerPage: + description: The maximum number of logs returned in a single response (between + `1` and `1000`, both included). + type: integer + type: object + ReadSecurityGroupsResponse: + additionalProperties: false + properties: + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + SecurityGroups: + description: Information about one or more security groups. + items: + "$ref": "#/components/schemas/SecurityGroup" + type: array + type: object + ReadServerCertificatesRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Filters: + "$ref": "#/components/schemas/FiltersServerCertificate" + description: One or more filters. + type: object + ReadServerCertificatesResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + ServerCertificates: + description: Information about one or more server certificates. + items: + "$ref": "#/components/schemas/ServerCertificate" + type: array + type: object + ReadSnapshotExportTasksRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Filters: + "$ref": "#/components/schemas/FiltersSnapshotExportTask" + description: One or more filters. + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResultsPerPage: + description: The maximum number of logs returned in a single response (between + `1` and `1000`, both included). + type: integer + type: object + ReadSnapshotExportTasksResponse: + additionalProperties: false + properties: + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + SnapshotExportTasks: + description: Information about one or more snapshot export tasks. + items: + "$ref": "#/components/schemas/SnapshotExportTask" + type: array + type: object + ReadSnapshotsRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Filters: + "$ref": "#/components/schemas/FiltersSnapshot" + description: One or more filters. + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResultsPerPage: + description: The maximum number of logs returned in a single response (between + `1` and `1000`, both included). + type: integer + type: object + ReadSnapshotsResponse: + additionalProperties: false + properties: + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + Snapshots: + description: Information about one or more snapshots and their permissions. + items: + "$ref": "#/components/schemas/Snapshot" + type: array + type: object + ReadSubnetsRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Filters: + "$ref": "#/components/schemas/FiltersSubnet" + description: One or more filters. + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResultsPerPage: + description: The maximum number of logs returned in a single response (between + `1` and `1000`, both included). + type: integer + type: object + ReadSubnetsResponse: + additionalProperties: false + properties: + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + Subnets: + description: Information about one or more Subnets. + items: + "$ref": "#/components/schemas/Subnet" + type: array + type: object + ReadSubregionsRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Filters: + "$ref": "#/components/schemas/FiltersSubregion" + description: One or more filters. + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResultsPerPage: + description: The maximum number of logs returned in a single response (between + `1` and `1000`, both included). + type: integer + type: object + ReadSubregionsResponse: + additionalProperties: false + properties: + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + Subregions: + description: Information about one or more Subregions. + items: + "$ref": "#/components/schemas/Subregion" + type: array + type: object + ReadTagsRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Filters: + "$ref": "#/components/schemas/FiltersTag" + description: One or more filters. + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResultsPerPage: + description: The maximum number of logs returned in a single response (between + `1` and `1000`, both included). + type: integer + type: object + ReadTagsResponse: + additionalProperties: false + properties: + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + Tags: + description: Information about one or more tags. + items: + "$ref": "#/components/schemas/Tag" + type: array + type: object + ReadUnitPriceRequest: + additionalProperties: false + properties: + Operation: + description: The operation associated with the catalog entry (for example, + `RunInstances-OD` or `CreateVolume`). + type: string + Service: + description: The service associated with the catalog entry (for example, + `TinaOS-FCU` or `TinaOS-OOS`). + type: string + Type: + description: The type associated with the catalog entry (for example, `BSU:VolumeIOPS:io1` + or `BoxUsage:tinav6.c6r16p3`). + type: string + required: + - Operation + - Service + - Type + type: object + ReadUnitPriceResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + UnitPriceEntry: + "$ref": "#/components/schemas/UnitPriceEntry" + description: Information about the unit price entry. + type: object + ReadUserGroupPoliciesRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + FirstItem: + description: The item starting the list of policies requested. + type: integer + ResultsPerPage: + description: The maximum number of items that can be returned in a single + response (by default, `100`). + type: integer + UserGroupName: + description: The name of the group. + type: string + UserGroupPath: + description: The path to the group. If not specified, it is set to a slash + (`/`). + type: string + required: + - UserGroupName + type: object + ReadUserGroupPoliciesResponse: + additionalProperties: false + properties: + HasMoreItems: + description: If true, there are more items to return using the `FirstItem` + parameter in a new request. + type: boolean + MaxResultsLimit: + description: Indicates maximum results defined for the operation. + type: integer + MaxResultsTruncated: + description: If true, indicates whether requested page size is more than + allowed. + type: boolean + Policies: + description: A list of policies. + items: + "$ref": "#/components/schemas/InlinePolicy" + type: array + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + ReadUserGroupPolicyRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + PolicyName: + description: The name of the policy. + type: string + UserGroupName: + description: The name of the group. + type: string + UserGroupPath: + description: The path to the group. If not specified, it is set to a slash + (`/`). + type: string + required: + - PolicyName + - UserGroupName + type: object + ReadUserGroupPolicyResponse: + additionalProperties: false + properties: + Policy: + "$ref": "#/components/schemas/InlinePolicy" + description: Information about an inline policy. + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + ReadUserGroupRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Path: + description: The path to the group. If not specified, it is set to a slash + (`/`). + type: string + UserGroupName: + description: The name of the group. + type: string + required: + - UserGroupName + type: object + ReadUserGroupResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + UserGroup: + "$ref": "#/components/schemas/UserGroup" + description: Information about the user group. + Users: + description: A list of EIM users. + items: + "$ref": "#/components/schemas/User" + type: array + type: object + ReadUserGroupsPerUserRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + UserName: + description: The name of the user. + type: string + UserPath: + description: The path to the user (by default, `/`). + type: string + required: + - UserName + type: object + ReadUserGroupsPerUserResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + UserGroups: + description: A list of user groups. + items: + "$ref": "#/components/schemas/UserGroup" + type: array + type: object + ReadUserGroupsRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Filters: + "$ref": "#/components/schemas/FiltersUserGroup" + description: One or more filters. + FirstItem: + description: The item starting the list of groups requested. + type: integer + ResultsPerPage: + description: The maximum number of items that can be returned in a single + response (by default, `100`). + type: integer + type: object + ReadUserGroupsResponse: + additionalProperties: false + properties: + HasMoreItems: + description: If true, there are more items to return using the `FirstItem` + parameter in a new request. + type: boolean + MaxResultsLimit: + description: Indicates maximum results defined for the operation. + type: integer + MaxResultsTruncated: + description: If true, indicates whether requested page size is more than + allowed. + type: boolean + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + UserGroups: + description: A list of user groups. + items: + "$ref": "#/components/schemas/UserGroup" + type: array + type: object + ReadUserPoliciesRequest: + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + UserName: + description: The name of the user. + type: string + required: + - UserName + type: object + ReadUserPoliciesResponse: + properties: + PolicyNames: + description: A list of policy names. + items: + type: string + type: array + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + ReadUserPolicyRequest: + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + PolicyName: + description: The name of the policy. + type: string + UserName: + description: The name of the user. + type: string + required: + - UserName + - PolicyName + type: object + ReadUserPolicyResponse: + properties: + PolicyDocument: + description: The policy document, providing a description of the policy. + type: string + PolicyName: + description: The name of the inline policy. + type: string + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + UserName: + description: The name of the user in which the inline policy is included. + type: string + type: object + ReadUsersRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Filters: + "$ref": "#/components/schemas/FiltersUsers" + description: One or more filters. + FirstItem: + description: The item starting the list of users requested. + type: integer + ResultsPerPage: + description: The maximum number of items that can be returned in a single + response (by default, `100`). + type: integer + type: object + ReadUsersResponse: + additionalProperties: false + properties: + HasMoreItems: + description: If true, there are more items to return using the `FirstItem` + parameter in a new request. + type: boolean + MaxResultsLimit: + description: Indicates maximum results defined for the operation. + type: integer + MaxResultsTruncated: + description: If true, indicates whether requested page size is more than + allowed. + type: boolean + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + Users: + description: A list of EIM users. + items: + "$ref": "#/components/schemas/User" + type: array + type: object + ReadVirtualGatewaysRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Filters: + "$ref": "#/components/schemas/FiltersVirtualGateway" + description: One or more filters. + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResultsPerPage: + description: The maximum number of logs returned in a single response (between + `1` and `1000`, both included). + type: integer + type: object + ReadVirtualGatewaysResponse: + additionalProperties: false + properties: + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + VirtualGateways: + description: Information about one or more virtual gateways. + items: + "$ref": "#/components/schemas/VirtualGateway" + type: array + type: object + ReadVmGroupsRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Filters: + "$ref": "#/components/schemas/FiltersVmGroup" + description: One or more filters. + type: object + ReadVmGroupsResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + VmGroups: + description: Information about one or more VM groups. + items: + "$ref": "#/components/schemas/VmGroup" + type: array + type: object + ReadVmTemplatesRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Filters: + "$ref": "#/components/schemas/FiltersVmTemplate" + description: One or more filters. + type: object + ReadVmTemplatesResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + VmTemplates: + description: Information about one or more VM templates. + items: + "$ref": "#/components/schemas/VmTemplate" + type: array + type: object + ReadVmTypesRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Filters: + "$ref": "#/components/schemas/FiltersVmType" + description: One or more filters. + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResultsPerPage: + description: The maximum number of logs returned in a single response (between + `1` and `1000`, both included). + type: integer + type: object + ReadVmTypesResponse: + additionalProperties: false + properties: + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + VmTypes: + description: Information about one or more VM types. + items: + "$ref": "#/components/schemas/VmType" + type: array + type: object + ReadVmsHealthRequest: + additionalProperties: false + properties: + BackendVmIds: + description: One or more IDs of backend VMs. + items: + type: string + type: array + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + LoadBalancerName: + description: The name of the load balancer. + type: string + required: + - LoadBalancerName + type: object + ReadVmsHealthResponse: + additionalProperties: false + properties: + BackendVmHealth: + description: Information about the health of one or more backend VMs. + items: + "$ref": "#/components/schemas/BackendVmHealth" + type: array + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + ReadVmsRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Filters: + "$ref": "#/components/schemas/FiltersVm" + description: One or more filters. + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResultsPerPage: + description: The maximum number of logs returned in a single response (between + `1` and `1000`, both included). + type: integer + type: object + ReadVmsResponse: + additionalProperties: false + properties: + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + Vms: + description: Information about one or more VMs. + items: + "$ref": "#/components/schemas/Vm" + type: array + type: object + ReadVmsStateRequest: + additionalProperties: false + properties: + AllVms: + default: false + description: If true, includes the status of all VMs. If false, only includes + the status of running VMs. + type: boolean + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Filters: + "$ref": "#/components/schemas/FiltersVmsState" + description: One or more filters. + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResultsPerPage: + description: The maximum number of logs returned in a single response (between + `1` and `1000`, both included). + type: integer + type: object + ReadVmsStateResponse: + additionalProperties: false + properties: + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + VmStates: + description: Information about one or more VM states. + items: + "$ref": "#/components/schemas/VmStates" + type: array + type: object + ReadVolumeUpdateTasksRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Filters: + "$ref": "#/components/schemas/FiltersReadVolumeUpdateTask" + description: One or more filters. + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResultsPerPage: + description: The maximum number of logs returned in a single response (between + `1` and `1000`, both included). By default, `100`. + type: integer + type: object + ReadVolumeUpdateTasksResponse: + additionalProperties: false + properties: + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + VolumeUpdateTasks: + description: Information about one or more volume update tasks. + items: + "$ref": "#/components/schemas/VolumeUpdateTask" + type: array + type: object + ReadVolumesRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Filters: + "$ref": "#/components/schemas/FiltersVolume" + description: One or more filters. + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResultsPerPage: + description: The maximum number of logs returned in a single response (between + `1` and `1000`, both included). + type: integer + type: object + ReadVolumesResponse: + additionalProperties: false + properties: + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + Volumes: + description: Information about one or more volumes. + items: + "$ref": "#/components/schemas/Volume" + type: array + type: object + ReadVpnConnectionsRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Filters: + "$ref": "#/components/schemas/FiltersVpnConnection" + description: One or more filters. + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResultsPerPage: + description: The maximum number of logs returned in a single response (between + `1` and `1000`, both included). + type: integer + type: object + ReadVpnConnectionsResponse: + additionalProperties: false + properties: + NextPageToken: + description: The token to request the next page of results. Each token refers + to a specific page. + format: byte + type: string + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + VpnConnections: + description: Information about one or more VPN connections. + items: + "$ref": "#/components/schemas/VpnConnection" + type: array + type: object + RebootVmsRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + VmIds: + description: One or more IDs of the VMs you want to reboot. + items: + type: string + type: array + required: + - VmIds + type: object + RebootVmsResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + Region: + additionalProperties: false + description: Information about the Region. + properties: + Endpoint: + description: The hostname of the gateway to access the Region. + type: string + RegionName: + description: The administrative name of the Region. + type: string + type: object + RegisterVmsInLoadBalancerRequest: + additionalProperties: false + properties: + BackendVmIds: + description: |- + One or more IDs of backend VMs.
+ Specifying the same ID several times has no effect as each backend VM has equal weight. + items: + type: string + type: array + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + LoadBalancerName: + description: The name of the load balancer. + type: string + required: + - BackendVmIds + - LoadBalancerName + type: object + RegisterVmsInLoadBalancerResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + RejectNetPeeringRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + NetPeeringId: + description: The ID of the Net peering you want to reject. + type: string + required: + - NetPeeringId + type: object + RejectNetPeeringResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + RemoveUserFromUserGroupRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + UserGroupName: + description: The name of the group you want to remove the user from. + type: string + UserGroupPath: + description: The path to the group. If not specified, it is set to a slash + (`/`). + type: string + UserName: + description: The name of the user you want to remove from the group. + type: string + UserPath: + description: The path to the user (by default, `/`). + type: string + required: + - UserGroupName + - UserName + type: object + RemoveUserFromUserGroupResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + ResourceLoadBalancerTag: + additionalProperties: false + description: Information about the tag. + properties: + Key: + description: The key of the tag, between 1 and 128 characters. + type: string + required: + - Key + type: object + ResourceTag: + additionalProperties: false + description: Information about the tag. + properties: + Key: + description: The key of the tag, between 1 and 255 characters. + type: string + Value: + description: The value of the tag, between 0 and 255 characters. + type: string + required: + - Key + - Value + type: object + ResponseContext: + additionalProperties: false + description: Information about the context of the response. + properties: + RequestId: + description: The ID of the request. + type: string + type: object + Route: + additionalProperties: false + description: Information about the route. + properties: + CreationMethod: + description: The method used to create the route. + type: string + DestinationIpRange: + description: The IP range used for the destination match, in CIDR notation + (for example, `10.0.0.0/24`). + type: string + DestinationServiceId: + description: The ID of the OUTSCALE service. + type: string + GatewayId: + description: The ID of the internet service or virtual gateway attached + to the Net. + type: string + NatServiceId: + description: The ID of a NAT service attached to the Net. + type: string + NetAccessPointId: + description: The ID of the Net access point. + type: string + NetPeeringId: + description: The ID of the Net peering. + type: string + NicId: + description: The ID of the NIC. + type: string + State: + description: The state of a route in the route table (always `active`). + type: string + VmAccountId: + description: The OUTSCALE account ID of the owner of the VM. + type: string + VmId: + description: The ID of a VM specified in a route in the table. + type: string + type: object + RouteLight: + additionalProperties: false + description: Information about the route. + properties: + DestinationIpRange: + description: The IP range used for the destination match, in CIDR notation + (for example, `10.0.0.0/24`). + type: string + RouteType: + description: The type of route (always `static`). + type: string + State: + description: The current state of the static route (`pending` \| `available` + \| `deleting` \| `deleted`). + type: string + type: object + RoutePropagatingVirtualGateway: + additionalProperties: false + description: Information about the route propagating virtual gateway. + properties: + VirtualGatewayId: + description: The ID of the virtual gateway. + type: string + type: object + RouteTable: + additionalProperties: false + description: Information about the route table. + properties: + LinkRouteTables: + description: One or more associations between the route table and Subnets. + items: + "$ref": "#/components/schemas/LinkRouteTable" + type: array + NetId: + description: The ID of the Net for the route table. + type: string + RoutePropagatingVirtualGateways: + description: Information about virtual gateways propagating routes. + items: + "$ref": "#/components/schemas/RoutePropagatingVirtualGateway" + type: array + RouteTableId: + description: The ID of the route table. + type: string + Routes: + description: One or more routes in the route table. + items: + "$ref": "#/components/schemas/Route" + type: array + Tags: + description: One or more tags associated with the route table. + items: + "$ref": "#/components/schemas/ResourceTag" + type: array + type: object + ScaleDownVmGroupRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + VmGroupId: + description: The ID of the VM group you want to scale down. + type: string + VmSubtraction: + description: The number of VMs you want to delete from the VM group. + type: integer + required: + - VmGroupId + - VmSubtraction + type: object + ScaleDownVmGroupResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + ScaleUpVmGroupRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + VmAddition: + description: The number of VMs you want to add to the VM group. + type: integer + VmGroupId: + description: The ID of the VM group you want to scale up. + type: string + required: + - VmGroupId + - VmAddition + type: object + ScaleUpVmGroupResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + SecureBootAction: + description: One action to perform on the next boot of the VM (`enable` | `disable` + | `setup-mode` | `none`). For more information, see [About Secure Boot](https://docs.outscale.com/en/userguide/About-Secure-Boot.html#_secure_boot_actions). + enum: + - enable + - disable + - setup-mode + - none + - restore-factory-keys + type: string + SecurityGroup: + additionalProperties: false + description: Information about the security group. + properties: + AccountId: + description: The OUTSCALE account ID that has been granted permission. + type: string + Description: + description: The description of the security group. + type: string + InboundRules: + description: The inbound rules associated with the security group. + items: + "$ref": "#/components/schemas/SecurityGroupRule" + type: array + NetId: + description: The ID of the Net for the security group. + type: string + OutboundRules: + description: The outbound rules associated with the security group. + items: + "$ref": "#/components/schemas/SecurityGroupRule" + type: array + SecurityGroupId: + description: The ID of the security group. + type: string + SecurityGroupName: + description: The name of the security group. + type: string + Tags: + description: One or more tags associated with the security group. + items: + "$ref": "#/components/schemas/ResourceTag" + type: array + type: object + SecurityGroupLight: + additionalProperties: false + description: Information about the security group. + properties: + SecurityGroupId: + description: The ID of the security group. + type: string + SecurityGroupName: + description: The name of the security group. + type: string + type: object + SecurityGroupRule: + additionalProperties: false + description: Information about the security group rule. + properties: + FromPortRange: + description: The beginning of the port range for the TCP and UDP protocols, + or an ICMP type number. + type: integer + IpProtocol: + description: The IP protocol name (`tcp`, `udp`, `icmp`, or `-1` for all + protocols). By default, `-1`. In a Net, this can also be an IP protocol + number. For more information, see the [IANA.org website](https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml). + type: string + IpRanges: + description: One or more IP ranges for the security group rules, in CIDR + notation (for example, `["10.0.0.0/24" , "10.0.1.0/24"]`). + items: + type: string + type: array + SecurityGroupRuleId: + description: The ID of the security group rule. + type: string + SecurityGroupsMembers: + description: Information about one or more source or destination security + groups. + items: + "$ref": "#/components/schemas/SecurityGroupsMember" + type: array + ServiceIds: + description: One or more service IDs to allow traffic from a Net to access + the corresponding OUTSCALE services. For more information, see [ReadNetAccessPointServices](#readnetaccesspointservices). + items: + type: string + type: array + ToPortRange: + description: The end of the port range for the TCP and UDP protocols, or + an ICMP code number. + type: integer + type: object + SecurityGroupsMember: + additionalProperties: false + description: Information about a source or destination security group. + properties: + AccountId: + description: The OUTSCALE account ID that owns the source or destination + security group. + type: string + SecurityGroupId: + description: The ID of a source or destination security group that you want + to link to the security group of the rule. + type: string + SecurityGroupName: + description: The name of a source or destination security group that you + want to link to the security group of the rule. + type: string + type: object + ServerCertificate: + additionalProperties: false + description: Information about the server certificate. + properties: + ExpirationDate: + description: The date and time (UTC) on which the server certificate expires. + format: date-time + type: string + Id: + description: The ID of the server certificate. + type: string + Name: + description: The name of the server certificate. + type: string + Orn: + description: The OUTSCALE Resource Name (ORN) of the server certificate. + For more information, see [Resource Identifiers > OUTSCALE Resource Names + (ORNs)](https://docs.outscale.com/en/userguide/Resource-Identifiers.html#_outscale_resource_names_orns). + type: string + Path: + description: The path to the server certificate. + type: string + UploadDate: + description: The date and time (UTC) on which the server certificate has + been uploaded. + format: date-time + type: string + type: object + Service: + additionalProperties: false + description: Information about the service. + properties: + IpRanges: + description: The list of network prefixes used by the service, in CIDR notation. + items: + type: string + type: array + ServiceId: + description: The ID of the service. + type: string + ServiceName: + description: The name of the service. + type: string + type: object + SetDefaultPolicyVersionRequest: + additionalProperties: false + properties: + PolicyOrn: + description: The OUTSCALE Resource Name (ORN) of the policy. For more information, + see [Resource Identifiers](https://docs.outscale.com/en/userguide/Resource-Identifiers.html). + pattern: "^orn:ows:(iam|idauth):\\S*:\\d{12}:policy/\\S+$" + type: string + VersionId: + description: The ID of the version. + type: string + required: + - PolicyOrn + - VersionId + type: object + SetDefaultPolicyVersionResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + Snapshot: + additionalProperties: false + description: Information about the snapshot. + properties: + AccountAlias: + description: The account alias of the owner of the snapshot. + type: string + AccountId: + description: The OUTSCALE account ID of the owner of the snapshot. + type: string + ClientToken: + description: The idempotency token provided when creating the snapshot. + type: string + CreationDate: + description: The date and time (UTC) at which the snapshot was created. + format: datetime + type: string + Description: + description: The description of the snapshot. + type: string + PermissionsToCreateVolume: + "$ref": "#/components/schemas/PermissionsOnResource" + description: Permissions for the resource. + Progress: + description: The progress of the snapshot, as a percentage. + type: integer + SnapshotId: + description: The ID of the snapshot. + type: string + State: + description: The state of the snapshot (`in-queue` \| `pending` \| `completed` + \| `error` \| `deleting`). + type: string + Tags: + description: One or more tags associated with the snapshot. + items: + "$ref": "#/components/schemas/ResourceTag" + type: array + VolumeId: + description: The ID of the volume used to create the snapshot. + type: string + VolumeSize: + description: The size of the volume used to create the snapshot, in gibibytes + (GiB). + type: integer + type: object + SnapshotExportTask: + additionalProperties: false + description: Information about the snapshot export task. + properties: + Comment: + description: If the snapshot export task fails, an error message appears. + type: string + OsuExport: + "$ref": "#/components/schemas/OsuExportSnapshotExportTask" + description: Information about the snapshot export task. + Progress: + description: The progress of the snapshot export task, as a percentage. + type: integer + SnapshotId: + description: The ID of the snapshot to be exported. + type: string + State: + description: The state of the snapshot export task (`pending` \| `active` + \| `completed` \| `cancelled` \| `failed`). + type: string + Tags: + description: One or more tags associated with the snapshot export task. + items: + "$ref": "#/components/schemas/ResourceTag" + type: array + TaskId: + description: The ID of the snapshot export task. + type: string + type: object + SourceNet: + additionalProperties: false + description: Information about the source Net. + properties: + AccountId: + description: The OUTSCALE account ID of the owner of the source Net. + type: string + IpRange: + description: The IP range for the source Net, in CIDR notation (for example, + `10.0.0.0/16`). + type: string + NetId: + description: The ID of the source Net. + type: string + type: object + SourceSecurityGroup: + additionalProperties: false + description: |- + Information about the source security group of the load balancer, which you can use as part of your inbound rules for your registered VMs.
+ To only allow traffic from load balancers, add a security group rule that specifies this source security group as the inbound source. + properties: + SecurityGroupAccountId: + description: The OUTSCALE account ID of the owner of the security group. + type: string + SecurityGroupName: + description: The name of the security group. + type: string + type: object + StartVmsRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + VmIds: + description: One or more IDs of VMs. + items: + type: string + type: array + required: + - VmIds + type: object + StartVmsResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + Vms: + description: Information about one or more started VMs. + items: + "$ref": "#/components/schemas/VmState" + type: array + type: object + StateComment: + additionalProperties: false + description: Information about the change of state. + properties: + StateCode: + description: The code of the change of state. + type: string + StateMessage: + description: A message explaining the change of state. + type: string + type: object + StopVmsRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + ForceStop: + description: Forces the VM to stop. + type: boolean + VmIds: + description: One or more IDs of VMs. + items: + type: string + type: array + required: + - VmIds + type: object + StopVmsResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + Vms: + description: Information about one or more stopped VMs. + items: + "$ref": "#/components/schemas/VmState" + type: array + type: object + Subnet: + additionalProperties: false + description: Information about the Subnet. + properties: + AvailableIpsCount: + description: The number of available IPs in the Subnets. + type: integer + IpRange: + description: The IP range in the Subnet, in CIDR notation (for example, + `10.0.0.0/16`). + type: string + MapPublicIpOnLaunch: + description: If true, a public IP is assigned to the network interface cards + (NICs) created in the specified Subnet. + type: boolean + NetId: + description: The ID of the Net in which the Subnet is. + type: string + State: + description: The state of the Subnet (`pending` \| `available` \| `deleted`). + type: string + SubnetId: + description: The ID of the Subnet. + type: string + SubregionName: + description: The name of the Subregion in which the Subnet is located. + type: string + Tags: + description: One or more tags associated with the Subnet. + items: + "$ref": "#/components/schemas/ResourceTag" + type: array + type: object + Subregion: + additionalProperties: false + description: Information about the Subregion. + properties: + LocationCode: + description: The location code (physical zone) of the Subregion. For more + information, see [About Regions > Mapping Between Subregions and Physical + Zones](https://docs.outscale.com/en/userguide/About-Regions-and-Subregions.html#_mapping_between_subregions_and_physical_zones). + type: string + RegionName: + description: The name of the Region containing the Subregion. + type: string + State: + description: The state of the Subregion. + type: string + SubregionName: + description: The name of the Subregion. + type: string + type: object + Tag: + additionalProperties: false + description: Information about the tag. + properties: + Key: + description: The key of the tag, between 1 and 255 characters. + type: string + ResourceId: + description: The ID of the resource. + type: string + ResourceType: + description: The type of the resource. + type: string + Value: + description: The value of the tag, between 0 and 255 characters. + type: string + type: object + UnitPriceEntry: + additionalProperties: false + description: Information about the unit price entry. + properties: + Currency: + description: The currency of your account for the `UnitPrice` parameter, + in the ISO-4217 format (for example, `EUR`). + type: string + Operation: + description: The operation associated with the catalog entry (for example, + `RunInstances-OD` or `CreateVolume`). + type: string + Service: + description: The service associated with the catalog entry (for example, + `TinaOS-FCU` or `TinaOS-OOS`). + type: string + Type: + description: The type associated with the catalog entry (for example, `BSU:VolumeIOPS:io1` + or `BoxUsage:tinav6.c6r16p3`). + type: string + Unit: + description: The unit associated with the catalog entry (for example, `PER_MONTH` + or `PER_COUNT`). + type: string + UnitPrice: + description: The unit price of the catalog entry in the currency of your + account, in the ISO-4217 format (for example, `EUR`). + format: double + type: number + type: object + UnlinkFlexibleGpuRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + FlexibleGpuId: + description: The ID of the fGPU you want to detach from your VM. + type: string + required: + - FlexibleGpuId + type: object + UnlinkFlexibleGpuResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + UnlinkInternetServiceRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + InternetServiceId: + description: The ID of the internet service you want to detach. + type: string + NetId: + description: The ID of the Net from which you want to detach the internet + service. + type: string + required: + - InternetServiceId + - NetId + type: object + UnlinkInternetServiceResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + UnlinkLoadBalancerBackendMachinesRequest: + additionalProperties: false + properties: + BackendIps: + description: One or more public IPs of backend VMs. + items: + type: string + type: array + BackendVmIds: + description: One or more IDs of backend VMs. + items: + type: string + type: array + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + LoadBalancerName: + description: The name of the load balancer. + type: string + required: + - LoadBalancerName + type: object + UnlinkLoadBalancerBackendMachinesResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + UnlinkManagedPolicyFromUserGroupRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + PolicyOrn: + description: The OUTSCALE Resource Name (ORN) of the policy. For more information, + see [Resource Identifiers](https://docs.outscale.com/en/userguide/Resource-Identifiers.html). + type: string + UserGroupName: + description: The name of the group you want to unlink the policy from. + type: string + required: + - PolicyOrn + - UserGroupName + type: object + UnlinkManagedPolicyFromUserGroupResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + UnlinkNicRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + LinkNicId: + description: The ID of the attachment operation. + type: string + required: + - LinkNicId + type: object + UnlinkNicResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + UnlinkPolicyRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + PolicyOrn: + description: The OUTSCALE Resource Name (ORN) of the policy. For more information, + see [Resource Identifiers](https://docs.outscale.com/en/userguide/Resource-Identifiers.html). + pattern: "^orn:ows:(iam|idauth):\\S*:\\d{12}:policy/\\S+$" + type: string + UserName: + description: The name of the user you want to detach the policy from. + type: string + required: + - PolicyOrn + - UserName + type: object + UnlinkPolicyResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + UnlinkPrivateIpsRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + NicId: + description: The ID of the NIC. + type: string + PrivateIps: + description: One or more secondary private IPs you want to unassign from + the NIC. + items: + type: string + type: array + required: + - NicId + - PrivateIps + type: object + UnlinkPrivateIpsResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + UnlinkPublicIpRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + LinkPublicIpId: + description: The ID representing the association of the public IP with the + VM or the NIC. This parameter is required unless you use the `PublicIp` + parameter. + type: string + PublicIp: + description: The public IP. This parameter is required unless you use the + `LinkPublicIpId` parameter. + type: string + type: object + UnlinkPublicIpResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + UnlinkRouteTableRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + LinkRouteTableId: + description: The ID of the association between the route table and the Subnet. + type: string + required: + - LinkRouteTableId + type: object + UnlinkRouteTableResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + UnlinkVirtualGatewayRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + NetId: + description: The ID of the Net from which you want to detach the virtual + gateway. + type: string + VirtualGatewayId: + description: The ID of the virtual gateway. + type: string + required: + - NetId + - VirtualGatewayId + type: object + UnlinkVirtualGatewayResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + UnlinkVolumeRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + ForceUnlink: + description: 'Forces the detachment of the volume in case of previous failure. + Important: This action may damage your data or file systems.' + type: boolean + VolumeId: + description: The ID of the volume you want to detach. + type: string + required: + - VolumeId + type: object + UnlinkVolumeResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + UpdateAccessKeyRequest: + additionalProperties: false + properties: + AccessKeyId: + description: The ID of the access key. + type: string + ClearExpirationDate: + description: If true, the current expiration date is deleted and the access + key is set to not expire. + type: boolean + ClearTag: + description: If true, the current tag of the access key is deleted. + type: boolean + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + ExpirationDate: + description: The date and time, or the date, at which you want the access + key to expire, in ISO 8601 format (for example, `2020-06-14T00:00:00.000Z` + or `2020-06-14`). If not specified, the access key is set to not expire. + If the `ClearExpirationDate` parameter is set to true, the expiration + date is ignored. + format: datetime + type: string + State: + description: The new state for the access key (`ACTIVE` \| `INACTIVE`). + When set to `ACTIVE`, the access key is enabled and can be used to send + requests. When set to `INACTIVE`, the access key is disabled. + type: string + Tag: + description: A new tag to add to the access key. If the access key already + had a tag, this replaces it. If the `ClearTag` parameter is set to true, + the tag is ignored. + type: string + UserName: + description: The name of the EIM user that the access key you want to modify + is associated with. If you do not specify a user name, this action modifies + the access key of the user who sends the request (which can be the root + user). + type: string + required: + - AccessKeyId + type: object + UpdateAccessKeyResponse: + additionalProperties: false + properties: + AccessKey: + "$ref": "#/components/schemas/AccessKey" + description: Information about the access key. + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + UpdateAccountRequest: + additionalProperties: false + properties: + AdditionalEmails: + description: One or more additional email addresses for the account. These + addresses are used for notifications only. If you already have a list + of additional emails registered, you cannot add to it, only replace it. + To remove all registered additional emails, specify an empty list. + items: + pattern: "^.+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)+$" + type: string + type: array + City: + description: The new city of the account owner. + type: string + CompanyName: + description: The new name of the company for the account. + type: string + Country: + description: The new country of the account owner. + type: string + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Email: + description: The main email address for the account. This address is used + for your credentials and notifications. + type: string + FirstName: + description: The new first name of the account owner. + type: string + JobTitle: + description: The new job title of the account owner. + type: string + LastName: + description: The new last name of the account owner. + type: string + MobileNumber: + description: The new mobile phone number of the account owner. + type: string + PhoneNumber: + description: The new landline phone number of the account owner. + type: string + StateProvince: + description: The new state/province of the account owner. + type: string + VatNumber: + description: The new value added tax (VAT) number for the account. + type: string + ZipCode: + description: The new ZIP code of the city. + type: string + type: object + UpdateAccountResponse: + additionalProperties: false + properties: + Account: + "$ref": "#/components/schemas/Account" + description: Information about the account. + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + UpdateApiAccessPolicyRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + MaxAccessKeyExpirationSeconds: + description: The maximum possible lifetime for your access keys, in seconds + (between `0` and `3153600000`, both included). If set to `O`, your access + keys can have unlimited lifetimes, but a trusted session cannot be activated. + Otherwise, all your access keys must have an expiration date. This value + must be greater than the remaining lifetime of each access key of your + account. + format: int64 + type: integer + RequireTrustedEnv: + description: |- + If true, a trusted session is activated, provided that you specify the `MaxAccessKeyExpirationSeconds` parameter with a value greater than `0`.
+ Enabling this will require you and all your users to log in to Cockpit v2 using the WebAuthn method for multi-factor authentication. For more information, see [About Authentication > Multi-Factor Authentication](https://docs.outscale.com/en/userguide/About-Authentication.html#_multi_factor_authentication). + type: boolean + required: + - MaxAccessKeyExpirationSeconds + - RequireTrustedEnv + type: object + UpdateApiAccessPolicyResponse: + additionalProperties: false + properties: + ApiAccessPolicy: + "$ref": "#/components/schemas/ApiAccessPolicy" + description: Information about the API access policy. + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + UpdateApiAccessRuleRequest: + additionalProperties: false + properties: + ApiAccessRuleId: + description: The ID of the API access rule you want to update. + type: string + CaIds: + description: One or more IDs of Client Certificate Authorities (CAs). + items: + type: string + type: array + Cns: + description: One or more Client Certificate Common Names (CNs). + items: + type: string + type: array + Description: + description: A new description for the API access rule. + type: string + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + IpRanges: + description: One or more IPs or CIDR blocks (for example, `192.0.2.0/16`). + items: + type: string + type: array + required: + - ApiAccessRuleId + type: object + UpdateApiAccessRuleResponse: + additionalProperties: false + properties: + ApiAccessRule: + "$ref": "#/components/schemas/ApiAccessRule" + description: Information about the API access rule. + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + UpdateCaRequest: + additionalProperties: false + properties: + CaId: + description: The ID of the CA. + type: string + Description: + description: The description of the CA. + type: string + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + required: + - CaId + type: object + UpdateCaResponse: + additionalProperties: false + properties: + Ca: + "$ref": "#/components/schemas/Ca" + description: Information about the Client Certificate Authority (CA). + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + UpdateDedicatedGroupRequest: + additionalProperties: false + properties: + DedicatedGroupId: + description: The ID of the dedicated group you want to update. + type: string + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Name: + description: The new name of the dedicated group. + type: string + required: + - DedicatedGroupId + - Name + type: object + UpdateDedicatedGroupResponse: + additionalProperties: false + properties: + DedicatedGroup: + "$ref": "#/components/schemas/DedicatedGroup" + description: Information about the dedicated group. + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + UpdateDirectLinkInterfaceRequest: + additionalProperties: false + properties: + DirectLinkInterfaceId: + description: The ID of the DirectLink interface you want to update. + type: string + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Mtu: + description: The maximum transmission unit (MTU) of the DirectLink interface, + in bytes. + enum: + - 1500 + type: integer + required: + - DirectLinkInterfaceId + - Mtu + type: object + UpdateDirectLinkInterfaceResponse: + additionalProperties: false + properties: + DirectLinkInterface: + "$ref": "#/components/schemas/DirectLinkInterfaces" + description: Information about the DirectLink interfaces. + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + UpdateFlexibleGpuRequest: + additionalProperties: false + properties: + DeleteOnVmDeletion: + description: If true, the fGPU is deleted when the VM is terminated. + type: boolean + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + FlexibleGpuId: + description: The ID of the fGPU you want to modify. + type: string + required: + - FlexibleGpuId + type: object + UpdateFlexibleGpuResponse: + additionalProperties: false + properties: + FlexibleGpu: + "$ref": "#/components/schemas/FlexibleGpu" + description: Information about the flexible GPU (fGPU). + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + UpdateImageRequest: + additionalProperties: false + properties: + Description: + description: A new description for the image. + type: string + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + ImageId: + description: The ID of the OMI you want to modify. + type: string + PermissionsToLaunch: + "$ref": "#/components/schemas/PermissionsOnResourceCreation" + description: |- + Information about the permissions for the resource.
+ Specify either the `Additions` or the `Removals` parameter. + ProductCodes: + description: The product codes associated with the OMI. Any previously set + value is deleted. Make sure to specify all product codes you want to associate + with the OMI. + items: + type: string + type: array + required: + - ImageId + type: object + UpdateImageResponse: + additionalProperties: false + properties: + Image: + "$ref": "#/components/schemas/Image" + description: Information about the OMI. + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + UpdateListenerRuleRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + HostPattern: + description: A host-name pattern for the rule, with a maximum length of + 128 characters. This host-name pattern supports maximum three wildcards, + and must not contain any special characters except `-.?`. + nullable: true + type: string + ListenerRuleName: + description: The name of the listener rule. + type: string + PathPattern: + description: A path pattern for the rule, with a maximum length of 128 characters. + This path pattern supports maximum three wildcards, and must not contain + any special characters except `_-.$/~"'@:+?`. + nullable: true + type: string + required: + - ListenerRuleName + type: object + UpdateListenerRuleResponse: + additionalProperties: false + properties: + ListenerRule: + "$ref": "#/components/schemas/ListenerRule" + description: Information about the listener rule. + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + UpdateLoadBalancerRequest: + additionalProperties: false + properties: + AccessLog: + "$ref": "#/components/schemas/AccessLog" + description: Information about access logs. + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + HealthCheck: + "$ref": "#/components/schemas/HealthCheck" + description: Information about the health check configuration. + LoadBalancerName: + description: The name of the load balancer. + type: string + LoadBalancerPort: + description: The port on which the load balancer is listening (between `1` + and `65535`, both included). This parameter is required if you want to + update the server certificate. + type: integer + PolicyNames: + description: The name of the policy you want to enable for the listener. + items: + type: string + type: array + PublicIp: + description: "(internet-facing only) The public IP you want to associate + with the load balancer. The former public IP of the load balancer is then + disassociated. If you specify an empty string and the former public IP + belonged to you, it is disassociated and replaced by a public IP owned + by 3DS OUTSCALE." + type: string + SecuredCookies: + description: If true, secure cookies are enabled for the load balancer. + type: boolean + SecurityGroups: + description: "(Net only) One or more IDs of security groups you want to + assign to the load balancer. You need to specify the already assigned + security groups that you want to keep along with the new ones you are + assigning. If the list is empty, the default security group of the Net + is assigned to the load balancer." + items: + type: string + type: array + ServerCertificateId: + description: The OUTSCALE Resource Name (ORN) of the server certificate. + For more information, see [Resource Identifiers > OUTSCALE Resource Names + (ORNs)](https://docs.outscale.com/en/userguide/Resource-Identifiers.html#_outscale_resource_names_orns). + If this parameter is specified, you must also specify the `LoadBalancerPort` + parameter. + type: string + required: + - LoadBalancerName + type: object + UpdateLoadBalancerResponse: + additionalProperties: false + properties: + LoadBalancer: + "$ref": "#/components/schemas/LoadBalancer" + description: Information about the load balancer. + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + UpdateNetAccessPointRequest: + additionalProperties: false + properties: + AddRouteTableIds: + description: One or more IDs of route tables to associate with the specified + Net access point. + items: + type: string + type: array + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + NetAccessPointId: + description: The ID of the Net access point. + type: string + RemoveRouteTableIds: + description: One or more IDs of route tables to disassociate from the specified + Net access point. + items: + type: string + type: array + required: + - NetAccessPointId + type: object + UpdateNetAccessPointResponse: + additionalProperties: false + properties: + NetAccessPoint: + "$ref": "#/components/schemas/NetAccessPoint" + description: Information about the Net access point. + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + UpdateNetRequest: + additionalProperties: false + properties: + DhcpOptionsSetId: + description: The ID of the DHCP options set (or `default` if you want to + associate the default one). + type: string + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + NetId: + description: The ID of the Net. + type: string + required: + - DhcpOptionsSetId + - NetId + type: object + UpdateNetResponse: + additionalProperties: false + properties: + Net: + "$ref": "#/components/schemas/Net" + description: Information about the Net. + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + UpdateNicRequest: + additionalProperties: false + properties: + Description: + description: A new description for the NIC. + type: string + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + LinkNic: + "$ref": "#/components/schemas/LinkNicToUpdate" + description: Information about the NIC attachment. If you are modifying + the `DeleteOnVmDeletion` attribute, you must specify the ID of the NIC + attachment. + NicId: + description: The ID of the NIC you want to modify. + type: string + SecurityGroupIds: + description: |- + One or more IDs of security groups for the NIC.
+ You must specify at least one group, even if you use the default security group in the Net. + items: + type: string + type: array + required: + - NicId + type: object + UpdateNicResponse: + additionalProperties: false + properties: + Nic: + "$ref": "#/components/schemas/Nic" + description: Information about the NIC. + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + UpdateRoutePropagationRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Enable: + description: If true, a virtual gateway can propagate routes to a specified + route table of a Net. If false, the propagation is disabled. + type: boolean + RouteTableId: + description: The ID of the route table. + type: string + VirtualGatewayId: + description: The ID of the virtual gateway. + type: string + required: + - Enable + - RouteTableId + - VirtualGatewayId + type: object + UpdateRoutePropagationResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + RouteTable: + "$ref": "#/components/schemas/RouteTable" + description: Information about the route table. + type: object + UpdateRouteRequest: + additionalProperties: false + properties: + DestinationIpRange: + description: The IP range used for the destination match, in CIDR notation + (for example, `10.0.0.0/24`). + type: string + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + GatewayId: + description: The ID of an internet service or virtual gateway attached to + your Net. + type: string + NatServiceId: + description: The ID of a NAT service. + type: string + NetPeeringId: + description: The ID of a Net peering. + type: string + NicId: + description: The ID of a network interface card (NIC). + type: string + RouteTableId: + description: The ID of the route table. + type: string + VmId: + description: The ID of a NAT VM in your Net. + type: string + required: + - RouteTableId + - DestinationIpRange + type: object + UpdateRouteResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + RouteTable: + "$ref": "#/components/schemas/RouteTable" + description: Information about the route table. + type: object + UpdateRouteTableLinkRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + LinkRouteTableId: + description: The ID of the current route table link. + type: string + RouteTableId: + description: The ID of the new route table to associate with the Subnet. + type: string + required: + - RouteTableId + - LinkRouteTableId + type: object + UpdateRouteTableLinkResponse: + additionalProperties: false + properties: + LinkRouteTableId: + description: The ID of the association between the route table and the Subnet. + type: string + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + type: object + UpdateServerCertificateRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Name: + description: The name of the server certificate you want to modify. + type: string + NewName: + description: A new name for the server certificate. + type: string + NewPath: + description: A new path for the server certificate. + type: string + required: + - Name + type: object + UpdateServerCertificateResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + ServerCertificate: + "$ref": "#/components/schemas/ServerCertificate" + description: Information about the server certificate. + type: object + UpdateSnapshotRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + PermissionsToCreateVolume: + "$ref": "#/components/schemas/PermissionsOnResourceCreation" + description: |- + Information about the permissions for the resource.
+ Specify either the `Additions` or the `Removals` parameter. + SnapshotId: + description: The ID of the snapshot. + type: string + required: + - SnapshotId + - PermissionsToCreateVolume + type: object + UpdateSnapshotResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + Snapshot: + "$ref": "#/components/schemas/Snapshot" + description: Information about the snapshot. + type: object + UpdateSubnetRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + MapPublicIpOnLaunch: + description: If true, a public IP is assigned to the network interface cards + (NICs) created in the specified Subnet. + type: boolean + SubnetId: + description: The ID of the Subnet. + type: string + required: + - SubnetId + - MapPublicIpOnLaunch + type: object + UpdateSubnetResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + Subnet: + "$ref": "#/components/schemas/Subnet" + description: Information about the Subnet. + type: object + UpdateUserGroupRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + NewPath: + description: A new path for the group. If not specified, it is set to a + slash (`/`). + type: string + NewUserGroupName: + description: A new name for the user group. + type: string + Path: + description: The path to the group. If not specified, it is set to a slash + (`/`). + type: string + UserGroupName: + description: The name of the group you want to update. + type: string + required: + - UserGroupName + type: object + UpdateUserGroupResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + UserGroup: + "$ref": "#/components/schemas/UserGroup" + description: Information about the user group. + Users: + description: A list of EIM users. + items: + "$ref": "#/components/schemas/User" + type: array + type: object + UpdateUserRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + NewPath: + description: A new path for the EIM user. + type: string + NewUserEmail: + description: A new email address for the EIM user. + type: string + NewUserName: + description: A new name for the EIM user. + type: string + UserName: + description: The name of the EIM user you want to modify. + type: string + required: + - UserName + type: object + UpdateUserResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + User: + "$ref": "#/components/schemas/User" + description: Information about the EIM user. + type: object + UpdateVmGroupRequest: + additionalProperties: false + properties: + Description: + description: A new description for the VM group. + type: string + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Tags: + description: New tags for your VM group. + items: + "$ref": "#/components/schemas/ResourceTag" + type: array + VmGroupId: + description: The ID of the VM group you want to update. + type: string + VmGroupName: + description: A new name for your VM group. + type: string + VmTemplateId: + description: A new VM template ID for your VM group. + type: string + required: + - VmGroupId + type: object + UpdateVmGroupResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + VmGroup: + "$ref": "#/components/schemas/VmGroup" + description: Information about the VM group. + type: object + UpdateVmRequest: + additionalProperties: false + properties: + ActionsOnNextBoot: + "$ref": "#/components/schemas/ActionsOnNextBoot" + description: The action to perform on the next boot of the VM. + BlockDeviceMappings: + description: One or more block device mappings of the VM. + items: + "$ref": "#/components/schemas/BlockDeviceMappingVmUpdate" + type: array + BsuOptimized: + description: This parameter is not available. It is present in our API for + the sake of historical compatibility with AWS. + type: boolean + DeletionProtection: + description: If true, you cannot delete the VM unless you change this parameter + back to false. + type: boolean + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + IsSourceDestChecked: + description: "(Net only) If true, the source/destination check is enabled. + If false, it is disabled." + type: boolean + KeypairName: + description: |- + The name of a keypair you want to associate with the VM.
+ When you replace the keypair of a VM with another one, the metadata of the VM is modified to reflect the new public key, but the replacement is still not effective in the operating system of the VM. To complete the replacement and effectively apply the new keypair, you need to perform other actions inside the VM. For more information, see [Modifying the Keypair of a VM](https://docs.outscale.com/en/userguide/Modifying-the-Keypair-of-a-VM.html). + type: string + NestedVirtualization: + description: "(dedicated tenancy only) If true, nested virtualization is + enabled. If false, it is disabled." + type: boolean + Performance: + description: The performance of the VM. + enum: + - medium + - high + - highest + type: string + SecurityGroupIds: + description: One or more IDs of security groups for the VM. + items: + type: string + type: array + UserData: + description: The Base64-encoded MIME user data, limited to 500 kibibytes + (KiB). + type: string + VmId: + description: The ID of the VM. + type: string + VmInitiatedShutdownBehavior: + description: The VM behavior when you stop it. If set to `stop`, the VM + stops. If set to `restart`, the VM stops then automatically restarts. + If set to `terminate`, the VM stops and is terminated. + type: string + VmType: + description: The type of VM. For more information, see [VM Types](https://docs.outscale.com/en/userguide/VM-Types.html). + type: string + required: + - VmId + type: object + UpdateVmResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + Vm: + "$ref": "#/components/schemas/Vm" + description: Information about the VM. + type: object + UpdateVmTemplateRequest: + additionalProperties: false + properties: + Description: + description: A new description for the VM template. + type: string + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Tags: + description: New tags for your VM template. + items: + "$ref": "#/components/schemas/ResourceTag" + type: array + VmTemplateId: + description: The ID of the VM template you want to update. + type: string + VmTemplateName: + description: A new name for your VM template. + type: string + required: + - VmTemplateId + type: object + UpdateVmTemplateResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + VmTemplate: + "$ref": "#/components/schemas/VmTemplate" + description: Information about the VM template. + type: object + UpdateVolumeRequest: + additionalProperties: false + properties: + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + Iops: + description: The new number of I/O operations per second (IOPS). This parameter + can be specified only if you update an `io1` volume or if you change the + type of the volume for an `io1`. + type: integer + Size: + description: The new size of the volume, in gibibytes (GiB). This value + must be equal to or greater than the current size of the volume. This + modification is not instantaneous. + type: integer + VolumeId: + description: The ID of the volume you want to update. + type: string + VolumeType: + description: The new type of the volume (`standard` \| `io1` \| `gp2`). + If you update to an `io1` volume, you must also specify the `Iops` parameter. + type: string + required: + - VolumeId + type: object + UpdateVolumeResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + Volume: + "$ref": "#/components/schemas/Volume" + description: Information about the volume. + type: object + UpdateVpnConnectionRequest: + additionalProperties: false + properties: + ClientGatewayId: + description: The ID of the client gateway. + type: string + DryRun: + description: If true, checks whether you have the required permissions to + perform the action. + type: boolean + VirtualGatewayId: + description: The ID of the virtual gateway. + type: string + VpnConnectionId: + description: The ID of the VPN connection you want to modify. + type: string + VpnOptions: + "$ref": "#/components/schemas/VpnOptions" + description: Information about the VPN options. + required: + - VpnConnectionId + type: object + UpdateVpnConnectionResponse: + additionalProperties: false + properties: + ResponseContext: + "$ref": "#/components/schemas/ResponseContext" + description: Information about the context of the response. + VpnConnection: + "$ref": "#/components/schemas/VpnConnection" + description: Information about a VPN connection. + type: object + User: + additionalProperties: false + description: Information about the EIM user. + properties: + CreationDate: + description: The date and time (UTC) of creation of the EIM user. + format: date-time + type: string + LastModificationDate: + description: The date and time (UTC) of the last modification of the EIM + user. + format: date-time + type: string + OutscaleLoginAllowed: + description: Whether the user is allowed to log in to Cockpit v2 using its + Outscale credentials when identity federation is activated. + type: boolean + Path: + description: The path to the EIM user. + type: string + UserEmail: + description: The email address of the EIM user. + type: string + UserId: + description: The ID of the EIM user. + type: string + UserName: + description: The name of the EIM user. + type: string + type: object + UserGroup: + additionalProperties: false + description: Information about the user group. + properties: + CreationDate: + description: The date and time (UTC) of creation of the user group. + format: date-time + type: string + LastModificationDate: + description: The date and time (UTC) of the last modification of the user + group. + format: date-time + type: string + Name: + description: The name of the user group. + type: string + Orn: + description: The Outscale Resource Name (ORN) of the user group. For more + information, see [Resource Identifiers](https://docs.outscale.com/en/userguide/Resource-Identifiers.html). + type: string + Path: + description: The path to the user group. + type: string + UserGroupId: + description: The ID of the user group. + type: string + type: object + VgwTelemetry: + additionalProperties: false + description: Information about the current state of a VPN tunnel. + properties: + AcceptedRouteCount: + description: The number of routes accepted through BGP (Border Gateway Protocol) + route exchanges. + type: integer + LastStateChangeDate: + description: The date and time (UTC) of the latest state update. + format: datetime + type: string + OutsideIpAddress: + description: The IP on the OUTSCALE side of the tunnel. + type: string + State: + description: The state of the IPSEC tunnel (`UP` \| `DOWN`). + type: string + StateDescription: + description: A description of the current state of the tunnel. + type: string + type: object + VirtualGateway: + additionalProperties: false + description: Information about the virtual gateway. + properties: + ConnectionType: + description: The type of VPN connection supported by the virtual gateway + (always `ipsec.1`). + type: string + NetToVirtualGatewayLinks: + description: The Net to which the virtual gateway is attached. + items: + "$ref": "#/components/schemas/NetToVirtualGatewayLink" + type: array + State: + description: The state of the virtual gateway (`pending` \| `available` + \| `deleting` \| `deleted`). + type: string + Tags: + description: One or more tags associated with the virtual gateway. + items: + "$ref": "#/components/schemas/ResourceTag" + type: array + VirtualGatewayId: + description: The ID of the virtual gateway. + type: string + type: object + Vm: + additionalProperties: false + description: Information about the VM. + properties: + ActionsOnNextBoot: + "$ref": "#/components/schemas/ActionsOnNextBoot" + description: The action to perform on the next boot of the VM. + Architecture: + description: The architecture of the VM (`i386` \| `x86_64`). + type: string + BlockDeviceMappings: + description: The block device mapping of the VM. + items: + "$ref": "#/components/schemas/BlockDeviceMappingCreated" + type: array + BootMode: + "$ref": "#/components/schemas/BootMode" + description: The boot mode of the VM. + BsuOptimized: + description: This parameter is not available. It is present in our API for + the sake of historical compatibility with AWS. + type: boolean + ClientToken: + description: The idempotency token provided when launching the VM. + type: string + CreationDate: + description: The date and time (UTC) at which the VM was created. + format: datetime + type: string + DeletionProtection: + description: If true, you cannot delete the VM unless you change this parameter + back to false. + type: boolean + Hypervisor: + description: The hypervisor type of the VMs (`ovm` \| `xen`). + type: string + ImageId: + description: The ID of the OMI used to create the VM. + type: string + IsSourceDestChecked: + description: "(Net only) If true, the source/destination check is enabled. + If false, it is disabled." + type: boolean + KeypairName: + description: The name of the keypair used when launching the VM. + type: string + LaunchNumber: + description: The number for the VM when launching a group of several VMs + (for example, `0`, `1`, `2`, and so on). + type: integer + NestedVirtualization: + description: If true, nested virtualization is enabled. If false, it is + disabled. + type: boolean + NetId: + description: The ID of the Net in which the VM is running. + type: string + Nics: + description: "(Net only) The network interface cards (NICs) the VMs are + attached to." + items: + "$ref": "#/components/schemas/NicLight" + type: array + OsFamily: + description: Indicates the operating system (OS) of the VM. + type: string + Performance: + description: The performance of the VM. + type: string + Placement: + "$ref": "#/components/schemas/Placement" + description: Information about the placement of the VM. + PrivateDnsName: + description: The name of the private DNS. + type: string + PrivateIp: + description: The primary private IP of the VM. + type: string + ProductCodes: + description: The product codes associated with the OMI used to create the + VM. + items: + type: string + type: array + PublicDnsName: + description: The name of the public DNS. + type: string + PublicIp: + description: The public IP of the VM. + type: string + ReservationId: + description: The reservation ID of the VM. + type: string + RootDeviceName: + description: The name of the root device for the VM (for example, `/dev/sda1`). + type: string + RootDeviceType: + description: The type of root device used by the VM (always `bsu`). + type: string + SecurityGroups: + description: One or more security groups associated with the VM. + items: + "$ref": "#/components/schemas/SecurityGroupLight" + type: array + State: + description: The state of the VM (`pending` \| `running` \| `stopping` \| + `stopped` \| `shutting-down` \| `terminated` \| `quarantine`). + type: string + StateReason: + description: The reason explaining the current state of the VM. + type: string + SubnetId: + description: The ID of the Subnet for the VM. + type: string + Tags: + description: One or more tags associated with the VM. + items: + "$ref": "#/components/schemas/ResourceTag" + type: array + TpmEnabled: + description: If true, a virtual Trusted Platform Module (vTPM) is enabled + on the VM. If false, it is not.
The default behavior for this parameter + varies depending on the source OMI of the VM.
If the `TpmMandatory` + parameter of the source OMI is true, a vTPM has to be attached to the + VM and it will be created by default. Setting `TpmEnabled` to false will + cause the creation request to fail.
If the `TpmMandatory` parameter + of the source OMI is false, only setting `TpmEnabled` to true will create + and attach a vTPM to the VM. + type: boolean + UserData: + description: The Base64-encoded MIME user data. + type: string + VmId: + description: The ID of the VM. + type: string + VmInitiatedShutdownBehavior: + description: The VM behavior when you stop it. If set to `stop`, the VM + stops. If set to `restart`, the VM stops then automatically restarts. + If set to `terminate`, the VM stops and is deleted. + type: string + VmType: + description: The type of VM. For more information, see [VM Types](https://docs.outscale.com/en/userguide/VM-Types.html). + type: string + type: object + VmGroup: + additionalProperties: false + description: Information about the VM group. + properties: + CreationDate: + description: The date and time (UTC) at which the VM group was created. + format: datetime + type: string + Description: + description: The description of the VM group. + type: string + PositioningStrategy: + description: The positioning strategy of the VMs on hypervisors. If set + to `no-strategy`, TINA determines the most adequate position for the VMs. + If set to `attract`, the VMs are deployed on the same hypervisor, which + improves network performance. If set to `repulse`, the VMs are deployed + on a different hypervisor, which improves fault tolerance. + enum: + - attract + - no-strategy + - repulse + type: string + SecurityGroupIds: + description: One or more IDs of security groups for the VM group. + items: + type: string + type: array + State: + description: The state of the VM group. + enum: + - available + - deleted + - deleting + - pending + - scaling down + - scaling up + type: string + SubnetId: + description: The ID of the Subnet for the VM group. + type: string + Tags: + description: One or more tags associated with the VM group. + items: + "$ref": "#/components/schemas/ResourceTag" + type: array + VmCount: + description: The number of VMs in the VM group. + type: integer + VmGroupId: + description: The ID of the VM group. + type: string + VmGroupName: + description: The name of the VM group. + type: string + VmIds: + description: The IDs of the VMs in the VM group. + items: + type: string + type: array + VmTemplateId: + description: The ID of the VM template used by the VM group. + type: string + type: object + VmState: + additionalProperties: false + description: Information about the state of the VM. + properties: + CurrentState: + description: The current state of the VM (`InService` \| `OutOfService` + \| `Unknown`). + type: string + PreviousState: + description: The previous state of the VM (`InService` \| `OutOfService` + \| `Unknown`). + type: string + VmId: + description: The ID of the VM. + type: string + type: object + VmStates: + additionalProperties: false + description: Information about the states of the VMs. + properties: + MaintenanceEvents: + description: One or more scheduled events associated with the VM. + items: + "$ref": "#/components/schemas/MaintenanceEvent" + type: array + SubregionName: + description: The name of the Subregion of the VM. + type: string + VmId: + description: The ID of the VM. + type: string + VmState: + description: The state of the VM (`pending` \| `running` \| `stopping` \| + `stopped` \| `shutting-down` \| `terminated` \| `quarantine`). + type: string + type: object + VmTemplate: + additionalProperties: false + description: Information about the VM template. + properties: + CpuCores: + description: The number of vCores. + type: integer + CpuGeneration: + description: The processor generation. + type: string + CpuPerformance: + description: The performance of the VMs. + enum: + - medium + - high + - highest + type: string + CreationDate: + description: The date and time (UTC) at which the VM was created. + format: date-time + type: string + Description: + description: The description of the VM template. + type: string + ImageId: + description: The ID of the OMI. + type: string + KeypairName: + description: The name of the keypair. + type: string + Ram: + description: The amount of RAM. + type: integer + Tags: + description: One or more tags associated with the VM template. + items: + "$ref": "#/components/schemas/ResourceTag" + type: array + VmTemplateId: + description: The ID of the VM template. + type: string + VmTemplateName: + description: The name of the VM template. + type: string + required: + - CpuCores + - CpuGeneration + - ImageId + - Ram + - VmTemplateId + - VmTemplateName + type: object + VmType: + additionalProperties: false + description: Information about the VM type. + properties: + BsuOptimized: + description: This parameter is not available. It is present in our API for + the sake of historical compatibility with AWS. + type: boolean + EphemeralsType: + description: The type of ephemeral storage disk. + type: string + Eth: + description: The number of Ethernet interface available. + type: integer + Gpu: + description: The number of GPU available. + type: integer + MaxPrivateIps: + description: The maximum number of private IPs per network interface card + (NIC). + type: integer + MemorySize: + description: The amount of memory, in gibibytes. + format: float + type: number + VcoreCount: + description: The number of vCores. + type: integer + VmTypeName: + description: The name of the VM type. + type: string + VolumeCount: + description: The maximum number of ephemeral storage disks. + type: integer + VolumeSize: + description: The size of one ephemeral storage disk, in gibibytes (GiB). + type: integer + type: object + Volume: + additionalProperties: false + description: Information about the volume. + properties: + ClientToken: + description: The idempotency token provided when creating the volume. + type: string + CreationDate: + description: The date and time (UTC) at which the volume was created. + format: datetime + type: string + Iops: + description: |- + The number of I/O operations per second (IOPS):
+ - For `io1` volumes, the number of provisioned IOPS
+ - For `gp2` volumes, the baseline performance of the volume + type: integer + LinkedVolumes: + description: Information about your volume attachment. + items: + "$ref": "#/components/schemas/LinkedVolume" + type: array + Size: + description: The size of the volume, in gibibytes (GiB). + type: integer + SnapshotId: + description: The snapshot from which the volume was created. + type: string + State: + description: The state of the volume (`creating` \| `available` \| `in-use` + \| `deleting` \| `error`). + type: string + SubregionName: + description: The Subregion in which the volume was created. + type: string + Tags: + description: One or more tags associated with the volume. + items: + "$ref": "#/components/schemas/ResourceTag" + type: array + TaskId: + description: The ID of the volume update task in progress. Otherwise, it + is not returned. + nullable: true + type: string + VolumeId: + description: The ID of the volume. + type: string + VolumeType: + description: The type of the volume (`standard` \| `gp2` \| `io1`). + type: string + type: object + VolumeUpdate: + additionalProperties: false + description: Information about the update of a volume. + properties: + Origin: + "$ref": "#/components/schemas/VolumeUpdateParameters" + description: Information about the parameters of the update of a volume. + Target: + "$ref": "#/components/schemas/VolumeUpdateParameters" + description: Information about the parameters of the update of a volume. + type: object + VolumeUpdateParameters: + additionalProperties: false + description: Information about the parameters of the update of a volume. + properties: + Iops: + description: |- + The new number of I/O operations per second (IOPS):
+ - For `io1` volumes, the number of provisioned IOPS.
+ - For `gp2` volumes, the baseline performance of the volume. + example: 200 + nullable: true + type: integer + Size: + description: The new size of the volume, in gibibytes (GiB). + example: 50 + type: integer + VolumeType: + description: The type of the volume (`standard` \| `io1` \| `gp2`). + example: io1 + type: string + required: + - Iops + - Size + - VolumeType + type: object + VolumeUpdateTask: + additionalProperties: false + description: Information about the volume update task. + properties: + Comment: + description: If the update volume task fails, an error message appears. + example: Update of volume vol-12345678 + type: string + CompletionDate: + description: The date at which the volume update task was marked as completed. + format: date-time + type: string + Progress: + description: The progress of the volume update task, as a percentage. + example: 100 + type: integer + StartDate: + description: The creation date of the volume update task. + format: date-time + type: string + State: + description: The state of the volume (`pending` \| `active` \| `completed` + \| `failed` \| `canceled`). + example: completed + type: string + Tags: + description: One or more tags associated with the volume update task. + items: + "$ref": "#/components/schemas/ResourceTag" + type: array + TaskId: + description: The ID of the volume update task in progress. Otherwise, it + is not returned. + example: vol-update-12345678 + type: string + VolumeId: + description: The ID of the updated volume. + example: vol-12345678 + type: string + VolumeUpdate: + "$ref": "#/components/schemas/VolumeUpdate" + description: Information about the update of a volume. + type: object + VpnConnection: + additionalProperties: false + description: Information about a VPN connection. + properties: + ClientGatewayConfiguration: + description: Example configuration for the client gateway. + type: string + ClientGatewayId: + description: The ID of the client gateway used on the client end of the + connection. + type: string + ConnectionType: + description: The type of VPN connection (always `ipsec.1`). + type: string + Routes: + description: Information about one or more static routes associated with + the VPN connection, if any. + items: + "$ref": "#/components/schemas/RouteLight" + type: array + State: + description: The state of the VPN connection (`pending` \| `available` \| + `deleting` \| `deleted`). + type: string + StaticRoutesOnly: + description: If false, the VPN connection uses dynamic routing with Border + Gateway Protocol (BGP). If true, routing is controlled using static routes. + For more information about how to create and delete static routes, see + [CreateVpnConnectionRoute](#createvpnconnectionroute) and [DeleteVpnConnectionRoute](#deletevpnconnectionroute). + type: boolean + Tags: + description: One or more tags associated with the VPN connection. + items: + "$ref": "#/components/schemas/ResourceTag" + type: array + VgwTelemetries: + description: Information about the current state of one or more of the VPN + tunnels. + items: + "$ref": "#/components/schemas/VgwTelemetry" + type: array + VirtualGatewayId: + description: The ID of the virtual gateway used on the OUTSCALE end of the + connection. + type: string + VpnConnectionId: + description: The ID of the VPN connection. + type: string + VpnOptions: + "$ref": "#/components/schemas/VpnOptions" + description: Information about the VPN options. + type: object + VpnOptions: + additionalProperties: false + description: Information about the VPN options. + properties: + Phase1Options: + "$ref": "#/components/schemas/Phase1Options" + description: This parameter is not available. It is present in our API for + the sake of historical compatibility with AWS. + Phase2Options: + "$ref": "#/components/schemas/Phase2Options" + description: Information about Phase 2 of the Internet Key Exchange (IKE) + negotiation. + TunnelInsideIpRange: + description: The range of inside IPs for the tunnel. This must be a /30 + CIDR block from the 169.254.254.0/24 range. + type: string + type: object + With: + additionalProperties: false + description: The information to display in each returned log. + properties: + AccountId: + default: true + description: If true, the OUTSCALE account ID is displayed. + type: boolean + CallDuration: + default: true + description: If true, the duration of the call is displayed. + type: boolean + QueryAccessKey: + default: true + description: If true, the access key is displayed. + type: boolean + QueryApiName: + default: true + description: If true, the name of the API is displayed. + type: boolean + QueryApiVersion: + default: true + description: If true, the version of the API is displayed. + type: boolean + QueryCallName: + default: true + description: If true, the name of the call is displayed. + type: boolean + QueryDate: + default: true + description: If true, the date of the call is displayed. + type: boolean + QueryHeaderRaw: + default: true + description: If true, the raw header of the HTTP request is displayed. + type: boolean + QueryHeaderSize: + default: true + description: If true, the size of the raw header of the HTTP request is + displayed. + type: boolean + QueryIpAddress: + default: true + description: If true, the IP is displayed. + type: boolean + QueryPayloadRaw: + default: true + description: If true, the raw payload of the HTTP request is displayed. + type: boolean + QueryPayloadSize: + default: true + description: If true, the size of the raw payload of the HTTP request is + displayed. + type: boolean + QueryUserAgent: + default: true + description: If true, the user agent of the HTTP request is displayed. + type: boolean + RequestId: + default: true + description: If true, the request ID is displayed. + type: boolean + ResponseSize: + default: true + description: If true, the size of the response is displayed. + type: boolean + ResponseStatusCode: + default: true + description: If true, the HTTP status code of the response is displayed. + type: boolean + type: object + securitySchemes: + ApiKeyAuth: + description: |- + With this authentication scheme, you must use an access key to sign your API requests. For more information, see [About Signatures of API Requests](https://docs.outscale.com/en/userguide/About-Signatures-of-API-Requests.html).
+ * In addition to your access key, you can configure API access rules with Certificate Authorities (CAs), requiring you to provide a certificate to perform actions. In that case, you can bypass systematically providing a certificate by activating a trusted session. For more information, see the [UpdateApiAccessPolicy](#updateapiaccesspolicy) method and [About Your API Access Policy](https://docs.outscale.com/en/userguide/About-Your-API-Access-Policy.html). + in: header + name: Authorization + type: apiKey + ApiKeyAuthSec: + description: |- + With this authentication scheme, you must use an access key to sign your API requests. For more information, see [About Signatures of API Requests](https://docs.outscale.com/en/userguide/About-Signatures-of-API-Requests.html).
+ * In addition to your access key, if you have configured API access rules with a Certificate Authority (CA), you cannot bypass systematically providing a certificate even if you activate a trusted session. For more information, see [About Your API Access Policy](https://docs.outscale.com/en/userguide/About-Your-API-Access-Policy.html). + in: header + name: Authorization + type: apiKey + BasicAuth: + description: |- + With this authentication scheme, you must specify the following headers in your API request:
+ * `Authorization: Basic XXXX`, where `XXXX` is your `email:password` encoded in Base64 + * `X-Osc-Date` in the `YYYYMMDDTHHMMSSZ` format + * Example with Curl: ``$ curl -X POST https://api.eu-west-2.outscale.com/api/v1/ReadAccessKeys -H "Authorization: Basic `echo -n "MYEMAIL:MYPASSWORD" | base64`" -H "X-Osc-Date: `TZ=GMT date "+%Y%m%dT%H%M%SZ"`"`` + * In addition to your email and password combination, if you have configured API access rules with a Certificate Authority (CA), you cannot bypass systematically providing a certificate even if you activate a trusted session. For more information, see [About Your API Access Policy](https://docs.outscale.com/en/userguide/About-Your-API-Access-Policy.html). + scheme: basic + type: http +info: + contact: + email: support@outscale.com + description: |- + Welcome to the OUTSCALE API documentation.
+ The OUTSCALE API enables you to manage your resources in the OUTSCALE Cloud. This documentation describes the different actions available along with code examples.

+ Throttling: To protect against overloads, the number of identical requests allowed in a given time period is limited.
+ Brute force: To protect against brute force attacks, the number of failed authentication attempts in a given time period is limited.

+ Note that the OUTSCALE Cloud is compatible with Amazon Web Services (AWS) APIs, but there are [differences in resource names](https://docs.outscale.com/en/userguide/About-the-APIs.html) between AWS and the OUTSCALE API.
+ You can also manage your resources using the [Cockpit](https://docs.outscale.com/en/userguide/About-Cockpit.html) web interface.

+ An OpenAPI description of this API is also available for download:
+ # Authentication Schemes + ### Access Key/Secret Key + The main way to authenticate your requests to the OUTSCALE API is to use an access key and a secret key.
+ The mechanism behind this is based on AWS Signature Version 4, whose technical implementation details are described in [Signature of API Requests](https://docs.outscale.com/en/userguide/Signature-of-API-Requests.html).

+ In practice, the way to specify your access key and secret key depends on the tool or SDK you want to use to interact with the API.
+ + > For example, if you use OSC CLI: + > 1. You need to create an **~/.osc/config.json** file to specify your access key, secret key, and the Region of your account. + > 2. You then specify the `--profile` option when executing OSC CLI commands. + > + > For more information, see [Installing and Configuring OSC CLI](https://docs.outscale.com/en/userguide/Installing-and-Configuring-OSC-CLI.html). + + See the code samples in each section of this documentation for specific examples in different programming languages.
+ For more information about access keys, see [About Access Keys](https://docs.outscale.com/en/userguide/About-Access-Keys.html). + + > If you try to sign requests with an invalid access key four times in a row, further authentication attempts will be prevented for 1 minute. This lockout time increases 1 minute every four failed attempts, for up to 10 minutes. + + ### Login/Password + For certain API actions, you can also use basic authentication with the login (email address) and password of your OUTSCALE account.
+ This is useful only in special circumstances, for example if you do not know your access key/secret key and want to retrieve them programmatically.
+ In most cases, however, you can use the Cockpit web interface to retrieve them.
+ + > For example, if you use OSC CLI: + > 1. You need to create an **~/.osc/config.json** file to specify the Region of your account, but you leave the access key value and secret key value empty (`""`). + > 2. You then specify the `--profile`, `--authentication-method`, `--login`, and `--password` options when executing OSC CLI commands. + + See the code samples in each section of this documentation for specific examples in different programming languages. + + > If you try to sign requests with an invalid password four times in a row, further authentication attempts will be prevented for 1 minute. This lockout time increases 1 minute every four failed attempts, for up to 10 minutes. + + ### No Authentication + A few API actions do not require any authentication. They are indicated as such in this documentation.
+ ### Other Security Mechanisms + In parallel with the authentication schemes, you can add other security mechanisms to your OUTSCALE account, for example to restrict API requests by IP or other criteria.
+ For more information, see [Managing Your API Accesses](https://docs.outscale.com/en/userguide/Managing-Your-API-Accesses.html). + # Pagination Tutorial + You can learn more about the pagination methods for read calls in the dedicated [pagination tutorial](https://docs.outscale.com/en/userguide/Tutorial-Paginating-an-API-Request.html). + # Error Codes Reference + You can learn more about errors returned by the API in the dedicated [errors page](api-errors.html). + license: + name: BSD 3 Clause + url: https://opensource.org/licenses/BSD-3-Clause + termsOfService: https://en.outscale.com/terms-of-service/ + title: 3DS OUTSCALE API + version: 1.40.1 + x-osc-api-osc-billing: 1.38.0 + x-osc-api-osc-cloud-region: 1.37.0 + x-osc-api-osc-cloud-vision: 1.36.0 + x-osc-api-osc-core-iaas: 1.38.1 + x-osc-api-osc-iam: 1.37.5 + x-osc-api-type: external +openapi: 3.0.0 +paths: + "/AcceptNetPeering": + post: + description: |- + Accepts a Net peering request.
+ To accept this request, you must be the owner of the peer Net. If you do not accept the request within 7 days, the state of the Net peering becomes `expired`.

+ + **[NOTE]**
+ A peering connection between two Nets works both ways. Therefore, when an A-to-B peering connection is accepted, any pending B-to-A peering connection is automatically rejected as redundant. + operationId: AcceptNetPeering + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/AcceptNetPeeringRequest" + examples: + ex1: + value: + NetPeeringId: pcx-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/AcceptNetPeeringResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + NetPeering: + Tags: [] + State: + Name: active + Message: Active + AccepterNet: + NetId: vpc-12345678 + IpRange: 172.16.0.0/16 + AccountId: '123456789012' + ExpirationDate: '2063-04-05T00:00:00.000Z' + SourceNet: + NetId: vpc-12345678 + IpRange: 10.0.0.0/16 + AccountId: '123456789012' + NetPeeringId: pcx-12345678 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '409': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 409 response (Conflict). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - NetPeering + "/AddUserToUserGroup": + post: + description: Adds a user to a specified group. + operationId: AddUserToUserGroup + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/AddUserToUserGroupRequest" + examples: + ex1: + value: + UserGroupName: example-usergroup + UserGroupPath: "/example/" + UserName: example-user + UserPath: "/example/" + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/AddUserToUserGroupResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - UserGroup + "/CheckAuthentication": + post: + description: Validates the authenticity of the OUTSCALE account. + operationId: CheckAuthentication + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/CheckAuthenticationRequest" + examples: + ex1: + value: + Login: example@example.com + Password: "$OSC_PASSWORD" + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/CheckAuthenticationResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - Account + "/CreateAccessKey": + post: + description: |- + Creates an access key for either the root user or an EIM user. The new key is automatically set to `ACTIVE`.

+ For more information, see [About Access Keys](https://docs.outscale.com/en/userguide/About-Access-Keys.html). + operationId: CreateAccessKey + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateAccessKeyRequest" + examples: + ex1: + value: + ExpirationDate: '2063-04-05' + Tag: Group1 + UserName: example-user + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateAccessKeyResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + AccessKey: + State: ACTIVE + AccessKeyId: ABCDEFGHIJ0123456789 + CreationDate: 2010-10-01 12:34:56.789000000 +00:00 + ExpirationDate: 2063-04-05 00:00:00.000000000 +00:00 + SecretKey: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + LastModificationDate: 2010-10-01 12:34:56.789000000 +00:00 + Tag: Group1 + description: The HTTP 200 response (OK). + security: + - ApiKeyAuthSec: [] + - BasicAuth: [] + tags: + - AccessKey + "/CreateAccount": + post: + description: |- + Creates an OUTSCALE account.

+ + **[IMPORTANT]**
+ * You need OUTSCALE credentials and the appropriate quotas to create an account via API. To get quotas, you can send an email to sales@outscale.com.
+ * If you want to pass a numeral value as a string instead of an integer, you must wrap your string in additional quotes (for example, `'"92000"'`). + + For more information, see [About Your Account](https://docs.outscale.com/en/userguide/About-Your-OUTSCALE-Account.html). + operationId: CreateAccount + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateAccountRequest" + examples: + ex1: + value: + City: SAINT-CLOUD + CompanyName: EXAMPLE SAS + Country: FRANCE + CustomerId: '87654321' + Email: example@example.com + FirstName: JEAN + LastName: DUPONT + ZipCode: '92210' + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateAccountResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + Account: + ZipCode: '92210' + CompanyName: EXAMPLE SAS + FirstName: JEAN + City: SAINT-CLOUD + Country: FRANCE + LastName: DUPONT + AccountId: '123456789012' + Email: example@example.com + description: The HTTP 200 response (OK). + tags: + - Account + "/CreateApiAccessRule": + post: + description: |- + Creates a rule to allow access to the API from your OUTSCALE account.
+ You need to specify at least the `CaIds` or the `IpRanges` parameter.

+ + **[NOTE]**
+ By default, your account has a set of rules allowing global access, that you can delete.

+ For more information, see [About API Access Rules](https://docs.outscale.com/en/userguide/About-API-Access-Rules.html). + operationId: CreateApiAccessRule + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateApiAccessRuleRequest" + examples: + ex1: + summary: Creating an API access rule based on IPs + value: + IpRanges: + - 192.0.2.0 + - 198.51.100.0/24 + Description: Basic API Access Rule with IPs + ex2: + summary: Creating an API access rule based on IPs and Certificate + Authority (CA) + value: + IpRanges: + - 192.0.2.0 + - 198.51.100.0/24 + CaIds: + - ca-fedcba0987654321fedcba0987654321 + Description: API Access Rule with IPs and CA + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateApiAccessRuleResponse" + examples: + ex1: + summary: Creating an API access rule based on IPs + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + ApiAccessRule: + IpRanges: + - 192.0.2.0 + - 198.51.100.0/24 + ApiAccessRuleId: aar-fedcba0987654321fedcba0987654321 + CaIds: [] + Cns: [] + Description: Basic API Access Rule with IPs + ex2: + summary: Creating an API access rule based on IPs and Certificate + Authority (CA) + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + ApiAccessRule: + IpRanges: + - 192.0.2.0 + - 198.51.100.0/24 + ApiAccessRuleId: aar-fedcba0987654321fedcba0987654321 + CaIds: + - ca-fedcba0987654321fedcba0987654321 + Cns: [] + Description: API Access Rule with IPs and CA + description: The HTTP 200 response (OK). + security: + - ApiKeyAuthSec: [] + - BasicAuth: [] + tags: + - ApiAccessRule + "/CreateCa": + post: + description: |- + Creates a Client Certificate Authority (CA).

+ For more information, see [About API Access Rules](https://docs.outscale.com/en/userguide/About-API-Access-Rules.html). + operationId: CreateCa + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateCaRequest" + examples: + ex1: + value: + CaPem: XXXX + Description: CA example + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateCaResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + Ca: + Description: CA example + CaId: ca-fedcba0987654321fedcba0987654321 + CaFingerprint: 1234567890abcdef1234567890abcdef12345678 + description: The HTTP 200 response (OK). + security: + - ApiKeyAuthSec: [] + - BasicAuth: [] + tags: + - Ca + "/CreateClientGateway": + post: + description: |- + Provides information about your client gateway.
+ This action registers information to identify the client gateway that you deployed in your network.
+ To open a tunnel to the client gateway, you must provide the communication protocol type, the fixed public IP of the gateway, and an Autonomous System Number (ASN).

+ For more information, see [About Client Gateways](https://docs.outscale.com/en/userguide/About-Client-Gateways.html). + operationId: CreateClientGateway + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateClientGatewayRequest" + examples: + ex1: + value: + ConnectionType: ipsec.1 + PublicIp: 192.0.2.0 + BgpAsn: 65000 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateClientGatewayResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + ClientGateway: + State: available + BgpAsn: 65000 + Tags: [] + ClientGatewayId: cgw-12345678 + ConnectionType: ipsec.1 + PublicIp: 192.0.2.0 + description: The HTTP 200 response (OK). + tags: + - ClientGateway + "/CreateDedicatedGroup": + post: + description: |- + Creates a dedicated group for virtual machines (VMs).

+ For more information, see [About Dedicated Groups](https://docs.outscale.com/en/userguide/About-Dedicated-Groups.html). + operationId: CreateDedicatedGroup + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateDedicatedGroupRequest" + examples: + ex1: + value: + CpuGeneration: 4 + Name: dedicated-group-example + SubregionName: eu-west-2a + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateDedicatedGroupResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + DedicatedGroup: + VmIds: [] + NetIds: [] + AccountId: '123456789012' + CpuGeneration: 4 + Name: dedicated-group-example + SubregionName: eu-west-2a + DedicatedGroupId: ded-12345678 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - DedicatedGroup + "/CreateDhcpOptions": + post: + description: |- + Creates a set of DHCP options, that you can then associate with a Net using the [UpdateNet](#updatenet) method.

+ For more information, see [About DHCP Options](https://docs.outscale.com/en/userguide/About-DHCP-Options.html). + operationId: CreateDhcpOptions + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateDhcpOptionsRequest" + examples: + ex1: + value: + DomainName: example.com + DomainNameServers: + - 192.0.2.0 + - 198.51.100.0 + NtpServers: + - 203.0.113.0 + - 203.0.113.1 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateDhcpOptionsResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + DhcpOptionsSet: + Tags: [] + NtpServers: + - 203.0.113.0 + - 203.0.113.1 + Default: false + DhcpOptionsSetId: dopt-12345678 + DomainName: example.com + DomainNameServers: + - 192.0.2.0 + - 198.51.100.0 + description: The HTTP 200 response (OK). + tags: + - DhcpOption + "/CreateDirectLink": + post: + description: |- + Creates a DirectLink between a customer network and a specified DirectLink location.

+ For more information, see [About DirectLink](https://docs.outscale.com/en/userguide/About-DirectLink.html). + operationId: CreateDirectLink + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateDirectLinkRequest" + examples: + ex1: + value: + Location: PAR1 + Bandwidth: 1Gbps + DirectLinkName: Connection to Outscale + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateDirectLinkResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + DirectLink: + AccountId: '123456789012' + Bandwidth: 1Gbps + DirectLinkId: dxcon-12345678 + DirectLinkName: Connection to Outscale + Location: PAR1 + RegionName: eu-west-2 + State: requested + description: The HTTP 200 response (OK). + tags: + - DirectLink + "/CreateDirectLinkInterface": + post: + description: |- + Creates a DirectLink interface.
+ DirectLink interfaces enable you to reach one of your Nets through a virtual gateway.

+ For more information, see [About DirectLink](https://docs.outscale.com/en/userguide/About-DirectLink.html). + operationId: CreateDirectLinkInterface + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateDirectLinkInterfaceRequest" + examples: + ex1: + value: + DirectLinkId: dxcon-12345678 + DirectLinkInterface: + DirectLinkInterfaceName: MyDirectLinkInterface + Vlan: 101 + BgpAsn: 65000 + BgpKey: tgyn26example + OutscalePrivateIp: 172.16.0.4/30 + ClientPrivateIp: 172.16.0.5/30 + VirtualGatewayId: vgw-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateDirectLinkInterfaceResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + DirectLinkInterface: + Vlan: 101 + OutscalePrivateIp: 172.16.0.4/30 + DirectLinkInterfaceId: dxvif-12345678 + BgpAsn: 65000 + AccountId: '123456789012' + ClientPrivateIp: 172.16.0.5/30 + VirtualGatewayId: vgw-12345678 + DirectLinkInterfaceName: MyDirectLinkInterface + DirectLinkId: dxcon-12345678 + Mtu: 1500 + State: pending + InterfaceType: private + Location: PAR1 + description: The HTTP 200 response (OK). + tags: + - DirectLinkInterface + "/CreateFlexibleGpu": + post: + description: |- + Allocates a flexible GPU (fGPU) to your OUTSCALE account.
+ You can then attach this fGPU to a virtual machine (VM).

+ For more information, see [About Flexible GPUs](https://docs.outscale.com/en/userguide/About-Flexible-GPUs.html). + operationId: CreateFlexibleGpu + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateFlexibleGpuRequest" + examples: + ex1: + value: + ModelName: nvidia-p100 + Generation: v5 + SubregionName: eu-west-2a + DeleteOnVmDeletion: true + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateFlexibleGpuResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + FlexibleGpu: + SubregionName: eu-west-2a + DeleteOnVmDeletion: true + Generation: v5 + ModelName: nvidia-p100 + State: allocated + FlexibleGpuId: fgpu-12345678 + Tags: [] + description: The HTTP 200 response (OK). + tags: + - FlexibleGpu + "/CreateImage": + post: + description: |- + Creates an OUTSCALE machine image (OMI).
+ You can use this method for different use cases: + * **Creating from a VM**: You create an OMI from one of your virtual machines (VMs).
+ * **Copying an OMI**: You copy an existing OMI. The source OMI can be one of your own OMIs, or an OMI owned by another OUTSCALE account that has granted you permission via the [UpdateImage](#updateimage) method.
+ * **Registering from a snapshot**: You register an OMI from an existing snapshot. The source snapshot can be one of your own snapshots, or a snapshot owned by another OUTSCALE account that has granted you permission via the [UpdateSnapshot](#updatesnapshot) method.
+ * **Registering from a bucket by using a manifest file**: You register an OMI from the manifest file of an OMI that was exported to an OUTSCALE Object Storage (OOS) bucket. First, the owner of the source OMI must export it to the bucket by using the [CreateImageExportTask](#createimageexporttask) method. Then, they must grant you permission to read the manifest file via a pre-signed URL. For more information, see [Creating a Pre-Signed URL](https://docs.outscale.com/en/userguide/Creating-a-Pre-Signed-URL.html). + + **[TIP]**
+ Registering from a bucket enables you to copy an OMI across Regions. + + For more information, see [About OMIs](https://docs.outscale.com/en/userguide/About-OMIs.html). + operationId: CreateImage + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateImageRequest" + examples: + ex1: + summary: Creating from a VM + value: + ImageName: create-image-example + VmId: i-12345678 + NoReboot: true + ex2: + summary: Copying an OMI + value: + ImageName: copy-image-example + SourceImageId: ami-12345678 + SourceRegionName: eu-west-2 + ex3: + summary: Registering from a snapshot + value: + ImageName: register-image-from-snapshot-example + BlockDeviceMappings: + - DeviceName: "/dev/sda1" + Bsu: + SnapshotId: snap-12345678 + VolumeSize: 120 + VolumeType: io1 + Iops: 150 + DeleteOnVmDeletion: true + RootDeviceName: "/dev/sda1" + ex4: + summary: Registering from a bucket by using a manifest file + value: + ImageName: register-image-from-bucket-example + FileLocation: https://oos.eu-west-2.outscale.com/BUCKET/KEY?AWSAccessKeyId=ABCDEFGHIJ0123456789&Expires=1493372309&Signature=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateImageResponse" + examples: + ex1: + summary: Creating from a VM + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + Image: + TpmMandatory: false + StateComment: {} + State: pending + RootDeviceType: bsu + RootDeviceName: "/dev/sda1" + ProductCodes: + - '0001' + PermissionsToLaunch: + GlobalPermission: false + AccountIds: [] + AccountId: '123456789012' + Tags: [] + Description: '' + ImageId: ami-12345678 + BlockDeviceMappings: + - DeviceName: "/dev/sda1" + Bsu: + VolumeType: standard + DeleteOnVmDeletion: true + VolumeSize: 50 + SnapshotId: snap-12345678 + BootModes: + - legacy + SecureBoot: false + ImageType: machine + CreationDate: '2010-10-01T12:34:56.789Z' + FileLocation: 123456789012/create-image-example + Architecture: x86_64 + ImageName: create-image-example + ex2: + summary: Copying an OMI + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + Image: + TpmMandatory: false + StateComment: {} + State: available + RootDeviceType: bsu + RootDeviceName: "/dev/sda1" + ProductCodes: + - '0001' + PermissionsToLaunch: + GlobalPermission: false + AccountIds: [] + AccountId: '123456789012' + Tags: [] + Description: '' + ImageId: ami-12345678 + BlockDeviceMappings: + - DeviceName: "/dev/sda1" + Bsu: + VolumeType: standard + DeleteOnVmDeletion: true + VolumeSize: 50 + SnapshotId: snap-12345678 + BootModes: + - legacy + SecureBoot: false + ImageType: machine + CreationDate: '2010-10-01T12:34:56.789Z' + FileLocation: 123456789012/copy-image-example + Architecture: x86_64 + ImageName: copy-image-example + ex3: + summary: Registering from a snapshot + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + Image: + TpmMandatory: false + StateComment: {} + State: available + RootDeviceType: bsu + RootDeviceName: "/dev/sda1" + ProductCodes: + - '0001' + PermissionsToLaunch: + GlobalPermission: false + AccountIds: [] + AccountId: '123456789012' + Tags: [] + Description: '' + ImageId: ami-12345678 + BlockDeviceMappings: + - DeviceName: "/dev/sda1" + Bsu: + VolumeType: io1 + DeleteOnVmDeletion: true + VolumeSize: 120 + Iops: 150 + SnapshotId: snap-12345678 + BootModes: + - legacy + SecureBoot: false + ImageType: machine + CreationDate: '2010-10-01T12:34:56.789Z' + FileLocation: 123456789012/register-image-from-snapshot-example + Architecture: x86_64 + ImageName: register-image-from-snapshot-example + ex4: + summary: Registering from a bucket by using a manifest file + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + Image: + TpmMandatory: false + StateComment: {} + State: pending + RootDeviceType: bsu + RootDeviceName: "/dev/sda1" + ProductCodes: + - '0001' + PermissionsToLaunch: + GlobalPermission: false + AccountIds: [] + AccountId: '123456789012' + Tags: [] + Description: '' + ImageId: ami-12345678 + BlockDeviceMappings: + - DeviceName: "/dev/sda1" + Bsu: + VolumeType: standard + DeleteOnVmDeletion: true + VolumeSize: 50 + SnapshotId: snap-12345678 + BootModes: + - legacy + SecureBoot: false + ImageType: machine + CreationDate: '2010-10-01T12:34:56.789Z' + FileLocation: https://oos.eu-west-2.outscale.com/BUCKET/KEY?AWSAccessKeyId=ABCDEFGHIJ0123456789&Expires=1493372309&Signature=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + Architecture: x86_64 + ImageName: register-image-from-bucket-example + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - Image + "/CreateImageExportTask": + post: + description: |- + Exports an OUTSCALE machine image (OMI) to an OUTSCALE Object Storage (OOS) bucket.
+ This enables you to copy an OMI between OUTSCALE accounts in different Regions.

+ This action creates the necessary snapshots and manifest file in the bucket. The OMI can then be imported to another account using a pre-signed URL of its manifest file. For more information, see [Creating a Pre-Signed URL](https://docs.outscale.com/en/userguide/Creating-a-Pre-Signed-URL.html).

+ To copy an OMI in the same Region, you can also use the [CreateImage](#createimage) method.
+ + **[IMPORTANT]**
+ * You cannot export a shared or public OMI, as they do not belong to you. To do so, you must first copy it to your account. The copy then belongs to you and you can export it.
+ * Export tasks can only be canceled while in the `pending/queued` state. + + For more information, see [About OMIs](https://docs.outscale.com/en/userguide/About-OMIs.html). + operationId: CreateImageExportTask + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateImageExportTaskRequest" + examples: + ex1: + value: + ImageId: ami-12345678 + OsuExport: + DiskImageFormat: qcow2 + OsuBucket: BUCKET + OsuPrefix: PREFIX + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateImageExportTaskResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + ImageExportTask: + Tags: [] + ImageId: ami-12345678 + TaskId: image-export-12345678 + Comment: Export of image ami-12345678 + OsuExport: + OsuPrefix: PREFIX/ami-12345678/ + OsuBucket: BUCKET + DiskImageFormat: qcow2 + State: pending/queued + Progress: 0 + description: The HTTP 200 response (OK). + tags: + - Image + "/CreateInternetService": + post: + description: |- + Creates an internet service you can use with a Net.
+ An internet service enables virtual machines (VMs) launched in a Net to connect to the Internet. It allows routing of incoming and outgoing Internet traffic and management of public IPs.

+ For more information, see [About Internet Services](https://docs.outscale.com/en/userguide/About-Internet-Services.html). + operationId: CreateInternetService + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateInternetServiceRequest" + examples: + ex1: + value: {} + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateInternetServiceResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + InternetService: + Tags: [] + InternetServiceId: igw-12345678 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - InternetService + "/CreateKeypair": + post: + description: |- + Creates a keypair to use with your virtual machines (VMs).
+ You can use this method in two different ways: + * **Creating a keypair**: In that case, 3DS OUTSCALE creates a 2048-bit RSA keypair, stores its public key in your OUTSCALE account, and returns its private key in the response of the call so that you can save it in a file.
+ When you save the returned private key, make sure you replace the `\n` escape sequences with real line breaks. + * **Importing a keypair created locally**: If you already have a keypair that you have created locally with a third-party tool, you can import its public key in your account. The following types of key can be imported: RSA (2048 bits or preferably 4096 bits), Ed25519, and ECDSA (256 bits, 384 bits, or 521 bits). The following formats can be used: PEM, PKCS8, RFC4716, and OpenSSH. + + For more information, see [About Keypairs](https://docs.outscale.com/en/userguide/About-Keypairs.html). + operationId: CreateKeypair + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateKeypairRequest" + examples: + ex1: + summary: Creating a keypair + value: + KeypairName: create-keypair-example + ex2: + summary: Importing a keypair created locally + value: + KeypairName: import-keypair-example + PublicKey: "..." + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateKeypairResponse" + examples: + ex1: + summary: Creating a keypair + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + Keypair: + PrivateKey: |- + -----BEGIN RSA PRIVATE KEY----- + ... + -----END RSA PRIVATE KEY----- + KeypairType: ssh-rsa + KeypairName: create-keypair-example + KeypairId: key-abcdef1234567890abcdef1234567890 + KeypairFingerprint: 11:22:33:44:55:66:77:88:99:00:aa:bb:cc:dd:ee:ff + ex2: + summary: Importing a keypair created locally + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + Keypair: + KeypairType: ssh-rsa + KeypairName: create-keypair-example + KeypairId: key-abcdef1234567890abcdef1234567890 + KeypairFingerprint: 11:22:33:44:55:66:77:88:99:00:aa:bb:cc:dd:ee:ff + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '409': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 409 response (Conflict). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - Keypair + "/CreateListenerRule": + post: + description: |- + Creates a rule for traffic redirection for the specified listener. Each rule must have either the `HostNamePattern` or `PathPattern` parameter specified. Rules are treated in priority order, from the highest value to the lowest value.
+ Once the rule is created, you need to register backend VMs with it. For more information, see the [RegisterVmsInLoadBalancer](#registervmsinloadbalancer) method.

+ For more information, see [About Load Balancers](https://docs.outscale.com/en/userguide/About-Load-Balancers.html). + operationId: CreateListenerRule + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateListenerRuleRequest" + examples: + ex1: + summary: Creating a listener rule based on a host pattern + value: + Listener: + LoadBalancerName: example-lbu + LoadBalancerPort: 80 + ListenerRule: + Action: forward + HostNamePattern: "*.example.com" + ListenerRuleName: example-listener-rule + Priority: 10 + VmIds: + - i-12345678 + ex2: + summary: Creating a listener rule based on a path pattern + value: + Listener: + LoadBalancerName: example-lbu + LoadBalancerPort: 80 + ListenerRule: + Action: forward + PathPattern: "/docs/*" + ListenerRuleName: example-listener-rule + Priority: 100 + VmIds: + - i-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateListenerRuleResponse" + examples: + ex1: + summary: Creating a listener rule based on a host pattern + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + ListenerRule: + Priority: 10 + VmIds: + - i-12345678 + ListenerRuleName: example-listener-rule + Action: forward + ListenerId: 123456 + HostNamePattern: "*.example.com" + ListenerRuleId: 1234 + ex2: + summary: Creating a listener rule based on a path pattern + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + ListenerRule: + Priority: 100 + VmIds: + - i-12345678 + ListenerRuleName: example-listener-rule + Action: forward + ListenerId: 123456 + PathPattern: "/docs/*" + ListenerRuleId: 1234 + description: The HTTP 200 response (OK). + tags: + - Listener + "/CreateLoadBalancer": + post: + description: |- + Creates a load balancer.
+ The load balancer is created with a unique Domain Name Service (DNS) name. It receives the incoming traffic and routes it to its registered virtual machines (VMs).
+ By default, this action creates an Internet-facing load balancer, resolving to public IPs. To create an internal load balancer in a Net, resolving to private IPs, use the `LoadBalancerType` parameter.
+ You must specify either the `Subnets` or the `SubregionNames` parameters.

+ For more information, see [About Load Balancers](https://docs.outscale.com/en/userguide/About-Load-Balancers.html). + operationId: CreateLoadBalancer + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateLoadBalancerRequest" + examples: + ex1: + summary: Creating an internal load balancer in a Net + value: + LoadBalancerName: private-lb-example + Listeners: + - BackendPort: 80 + BackendProtocol: TCP + LoadBalancerPort: 80 + LoadBalancerProtocol: TCP + Subnets: + - subnet-12345678 + SecurityGroups: + - sg-12345678 + LoadBalancerType: internal + ex2: + summary: Creating an internet-facing load balancer in a Net + value: + LoadBalancerName: private-lb-example + Listeners: + - BackendPort: 80 + BackendProtocol: HTTP + LoadBalancerPort: 443 + LoadBalancerProtocol: HTTPS + ServerCertificateId: orn:ows:idauth::012345678910:server-certificate/Certificate + Subnets: + - subnet-12345678 + SecurityGroups: + - sg-12345678 + LoadBalancerType: internet-facing + PublicIp: 192.0.2.0 + ex3: + summary: Creating an internet-facing load balancer in the public Cloud + value: + LoadBalancerName: public-lb-example + SubregionNames: + - eu-west-2a + Listeners: + - BackendPort: 8080 + BackendProtocol: HTTP + LoadBalancerPort: 8080 + LoadBalancerProtocol: HTTP + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateLoadBalancerResponse" + examples: + ex1: + summary: Creating an internal load balancer in a Net + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + LoadBalancer: + Tags: [] + SourceSecurityGroup: + SecurityGroupName: security-group-example + SecurityGroupAccountId: '123456789012' + SecuredCookies: false + Subnets: + - subnet-12345678 + NetId: vpc-12345678 + BackendVmIds: [] + ApplicationStickyCookiePolicies: [] + SecurityGroups: + - sg-12345678 + LoadBalancerType: internal + AccessLog: + PublicationInterval: 60 + IsEnabled: false + DnsName: internal-private-lb-example.123456789.eu-west-2.lbu.outscale.com + HealthCheck: + UnhealthyThreshold: 2 + Timeout: 5 + CheckInterval: 30 + Protocol: TCP + HealthyThreshold: 10 + Port: 80 + LoadBalancerStickyCookiePolicies: [] + SubregionNames: + - eu-west-2a + Listeners: + - BackendPort: 80 + BackendProtocol: TCP + LoadBalancerPort: 80 + LoadBalancerProtocol: TCP + LoadBalancerName: private-lb-example + ex2: + summary: Creating an internet-facing load balancer in a Net + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + LoadBalancer: + Tags: [] + SourceSecurityGroup: + SecurityGroupName: security-group-example + SecurityGroupAccountId: '123456789012' + SecuredCookies: false + PublicIp: 192.0.2.0 + Subnets: + - subnet-12345678 + NetId: vpc-12345678 + BackendVmIds: [] + ApplicationStickyCookiePolicies: [] + SecurityGroups: + - sg-12345678 + LoadBalancerType: internet-facing + AccessLog: + PublicationInterval: 60 + IsEnabled: false + DnsName: private-lb-example.123456789.eu-west-2.lbu.outscale.com + HealthCheck: + UnhealthyThreshold: 2 + Timeout: 5 + CheckInterval: 30 + Protocol: TCP + HealthyThreshold: 10 + Port: 80 + LoadBalancerStickyCookiePolicies: [] + SubregionNames: + - eu-west-2a + Listeners: + - ServerCertificateId: orn:ows:idauth::012345678910:server-certificate/Certificate + BackendPort: 80 + BackendProtocol: HTTP + LoadBalancerPort: 443 + LoadBalancerProtocol: HTTPS + LoadBalancerName: private-lb-example + ex3: + summary: Creating an internet-facing load balancer in the public + Cloud + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + LoadBalancer: + Tags: [] + SourceSecurityGroup: + SecurityGroupName: outscale-elb-sg + SecurityGroupAccountId: outscale-elb + SecuredCookies: false + Subnets: [] + BackendVmIds: [] + ApplicationStickyCookiePolicies: [] + LoadBalancerType: internet-facing + AccessLog: + PublicationInterval: 60 + IsEnabled: false + DnsName: public-lb-example.123456789.eu-west-2.lbu.outscale.com + HealthCheck: + UnhealthyThreshold: 2 + Timeout: 5 + CheckInterval: 30 + Protocol: TCP + HealthyThreshold: 10 + Port: 8080 + LoadBalancerStickyCookiePolicies: [] + SubregionNames: + - eu-west-2a + Listeners: + - BackendPort: 8080 + BackendProtocol: HTTP + LoadBalancerPort: 8080 + LoadBalancerProtocol: HTTP + LoadBalancerName: public-lb-example + description: The HTTP 200 response (OK). + tags: + - LoadBalancer + "/CreateLoadBalancerListeners": + post: + description: |- + Creates one or more listeners for a specified load balancer.

+ For more information, see [About Load Balancers](https://docs.outscale.com/en/userguide/About-Load-Balancers.html). + operationId: CreateLoadBalancerListeners + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateLoadBalancerListenersRequest" + examples: + ex1: + value: + LoadBalancerName: example-lbu + Listeners: + - BackendPort: 58 + BackendProtocol: TCP + LoadBalancerPort: 62 + LoadBalancerProtocol: TCP + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateLoadBalancerListenersResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + LoadBalancer: + Tags: [] + SourceSecurityGroup: + SecurityGroupName: security-group-example + SecurityGroupAccountId: '123456789012' + SecuredCookies: false + Subnets: + - subnet-12345678 + NetId: vpc-12345678 + BackendVmIds: [] + ApplicationStickyCookiePolicies: [] + SecurityGroups: + - sg-12345678 + LoadBalancerType: internal + AccessLog: + PublicationInterval: 60 + IsEnabled: false + DnsName: internal-example-lbu.123456789.eu-west-2.lbu.outscale.com + HealthCheck: + UnhealthyThreshold: 2 + Timeout: 5 + CheckInterval: 30 + Protocol: TCP + HealthyThreshold: 10 + Port: 80 + LoadBalancerStickyCookiePolicies: [] + SubregionNames: + - eu-west-2a + Listeners: + - BackendPort: 58 + BackendProtocol: TCP + LoadBalancerPort: 62 + LoadBalancerProtocol: TCP + - BackendPort: 80 + BackendProtocol: TCP + LoadBalancerPort: 80 + LoadBalancerProtocol: TCP + LoadBalancerName: example-lbu + description: The HTTP 200 response (OK). + tags: + - Listener + "/CreateLoadBalancerPolicy": + post: + description: |- + Creates a stickiness policy with sticky session lifetimes defined by the browser lifetime.
+ The created policy can be used with HTTP or HTTPS listeners only.
+ If this policy is implemented by a load balancer, this load balancer uses this cookie in all incoming requests to direct them to the specified backend server virtual machine (VM). If this cookie is not present, the load balancer sends the request to any other server according to its load-balancing algorithm.

+ + You can also create a stickiness policy with sticky session lifetimes following the lifetime of an application-generated cookie.
+ Unlike the other type of stickiness policy, the lifetime of the special Load Balancer Unit (LBU) cookie follows the lifetime of the application-generated cookie specified in the policy configuration. The load balancer inserts a new stickiness cookie only when the application response includes a new application cookie.
+ The session stops being sticky if the application cookie is removed or expires, until a new application cookie is issued.

+ For more information, see [About Load Balancers](https://docs.outscale.com/en/userguide/About-Load-Balancers.html). + operationId: CreateLoadBalancerPolicy + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateLoadBalancerPolicyRequest" + examples: + ex1: + summary: Creating a load balancer policy based on browser + value: + LoadBalancerName: example-lbu + PolicyName: example-browser-policy + PolicyType: load_balancer + ex2: + summary: Creating a load balancer policy based on application cookie + value: + LoadBalancerName: example-lbu + PolicyName: example-app-policy + PolicyType: app + CookieName: example-cookie + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateLoadBalancerPolicyResponse" + examples: + ex1: + summary: Creating a load balancer policy based on browser + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + LoadBalancer: + Tags: [] + SourceSecurityGroup: + SecurityGroupName: default + SecurityGroupAccountId: '123456789012' + Subnets: + - subnet-12345678 + NetId: vpc-12345678 + BackendVmIds: [] + ApplicationStickyCookiePolicies: [] + SecurityGroups: + - sg-12345678 + LoadBalancerType: internet-facing + AccessLog: + PublicationInterval: 60 + IsEnabled: false + DnsName: example-lbu-123456789.eu-west-2.lbu.outscale.com + HealthCheck: + UnhealthyThreshold: 2 + Timeout: 5 + CheckInterval: 30 + Protocol: TCP + HealthyThreshold: 10 + Port: 80 + LoadBalancerStickyCookiePolicies: + - PolicyName: example-browser-policy + CookieExpirationPeriod: 1 + SubregionNames: + - eu-west-2a + Listeners: + - BackendPort: 80 + BackendProtocol: HTTP + LoadBalancerPort: 80 + LoadBalancerProtocol: HTTP + LoadBalancerName: example-lbu + ex2: + summary: Creating a load balancer policy based on application cookie + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + LoadBalancer: + Tags: [] + SourceSecurityGroup: + SecurityGroupName: default + SecurityGroupAccountId: '123456789012' + Subnets: + - subnet-12345678 + NetId: vpc-12345678 + BackendVmIds: [] + ApplicationStickyCookiePolicies: + - PolicyName: example-app-policy + CookieName: example-cookie + SecurityGroups: + - sg-12345678 + LoadBalancerType: internet-facing + AccessLog: + PublicationInterval: 60 + IsEnabled: false + DnsName: example-lbu-123456789.eu-west-2.lbu.outscale.com + HealthCheck: + UnhealthyThreshold: 2 + Timeout: 5 + CheckInterval: 30 + Protocol: TCP + HealthyThreshold: 10 + Port: 80 + LoadBalancerStickyCookiePolicies: [] + SubregionNames: + - eu-west-2a + Listeners: + - BackendPort: 80 + BackendProtocol: HTTP + LoadBalancerPort: 80 + LoadBalancerProtocol: HTTP + LoadBalancerName: example-lbu + description: The HTTP 200 response (OK). + tags: + - LoadBalancerPolicy + "/CreateLoadBalancerTags": + post: + description: |- + Adds one or more tags to the specified load balancers.
+ If a tag with the same key already exists for the load balancer, the tag value is replaced.

+ For more information, see [About Tags](https://docs.outscale.com/en/userguide/About-Tags.html). + operationId: CreateLoadBalancerTags + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateLoadBalancerTagsRequest" + examples: + ex1: + value: + LoadBalancerNames: + - private-lb-example + Tags: + - Key: key1 + Value: value1 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateLoadBalancerTagsResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - LoadBalancer + "/CreateNatService": + post: + description: |- + Creates a network address translation (NAT) service in the specified public Subnet of a Net.
+ A NAT service enables virtual machines (VMs) placed in the private Subnet of this Net to connect to the Internet, without being accessible from the Internet.
+ When creating a NAT service, you specify the allocation ID of the public IP you want to use as public IP for the NAT service. Once the NAT service is created, you need to create a route in the route table of the private Subnet, with 0.0.0.0/0 as destination and the ID of the NAT service as target. For more information, see [LinkPublicIP](#linkpublicip) and [CreateRoute](#createroute).
+ This action also enables you to create multiple NAT services in the same Net (one per public Subnet).

+ + **[IMPORTANT]**
+ You cannot modify the public IP associated with a NAT service after its creation. To do so, you need to delete the NAT service and create a new one with another public IP.

+ For more information, see [About NAT Services](https://docs.outscale.com/en/userguide/About-NAT-Services.html). + operationId: CreateNatService + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateNatServiceRequest" + examples: + ex1: + value: + SubnetId: subnet-12345678 + PublicIpId: eipalloc-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateNatServiceResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + NatService: + Tags: [] + SubnetId: subnet-12345678 + NatServiceId: nat-12345678 + PublicIps: + - PublicIpId: eipalloc-12345678 + PublicIp: 192.0.2.0 + NetId: vpc-12345678 + State: available + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - NatService + "/CreateNet": + post: + description: |- + Creates a Net with a specified IP range.
+ The IP range (network range) of your Net must be between a /28 netmask (16 IPs) and a /16 netmask (65536 IPs).

+ For more information, see [About Nets](https://docs.outscale.com/en/userguide/About-Nets.html). + operationId: CreateNet + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateNetRequest" + examples: + ex1: + value: + IpRange: 10.0.0.0/16 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateNetResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + Net: + Tags: [] + DhcpOptionsSetId: dopt-12345678 + IpRange: 10.0.0.0/16 + Tenancy: default + NetId: vpc-12345678 + State: available + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '409': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 409 response (Conflict). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - Net + "/CreateNetAccessPoint": + post: + description: |- + Creates a Net access point to access an OUTSCALE service from this Net without using the Internet and public IPs.
+ You specify the service using its name. For more information about the available services, see [ReadNetAccessPointServices](#readnetaccesspointservices).

+ To control the routing of traffic between the Net and the specified service, you can specify one or more route tables. Virtual machines placed in Subnets associated with the specified route table thus use the Net access point to access the service. When you specify a route table, a route is automatically added to it with the destination set to the prefix list ID of the service, and the target set to the ID of the access point.

+ When a Net access point is created, a public IP is automatically allocated to your OUTSCALE account and used for the Net access point. This public IP is not connected to the Internet. It is counted in your quota, but it is not billed.

+ For more information, see [About Net Access Points](https://docs.outscale.com/en/userguide/About-Net-Access-Points.html). + operationId: CreateNetAccessPoint + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateNetAccessPointRequest" + examples: + ex1: + value: + NetId: vpc-12345678 + RouteTableIds: + - rtb-12345678 + ServiceName: com.outscale.eu-west-2.oos + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateNetAccessPointResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + NetAccessPoint: + Tags: [] + NetAccessPointId: vpce-12345678 + RouteTableIds: + - rtb-12345678 + State: pending + NetId: vpc-12345678 + ServiceName: com.outscale.eu-west-2.oos + description: The HTTP 200 response (OK). + tags: + - NetAccessPoint + "/CreateNetPeering": + post: + description: |- + Requests a Net peering between a Net you own and a peer Net that belongs to you or another OUTSCALE account.
+ This action creates a Net peering that remains in the `pending-acceptance` state until it is accepted by the owner of the peer Net. If the owner of the peer Net does not accept the request within 7 days, the state of the Net peering becomes `expired`. For more information, see [AcceptNetPeering](#acceptnetpeering).

+ + **[IMPORTANT]**
+ * The two Nets must not have overlapping IP ranges. Otherwise, the Net peering is in the `failed` state.
+ * A peering connection between two Nets works both ways. If an A-to-B connection is already created and accepted, creating a B-to-A connection is not necessary and would be automatically rejected. + + For more information, see [About Net Peerings](https://docs.outscale.com/en/userguide/About-Net-Peerings.html). + operationId: CreateNetPeering + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateNetPeeringRequest" + examples: + ex1: + summary: Creating a Net peering between two Nets belonging to you + value: + SourceNetId: vpc-12345678 + AccepterNetId: vpc-87654321 + ex2: + summary: Creating a Net peering with a Net that belongs to another + account + value: + SourceNetId: vpc-12345678 + AccepterNetId: vpc-87654321 + AccepterOwnerId: '987654321098' + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateNetPeeringResponse" + examples: + ex1: + summary: Creating a Net peering between two Nets belonging to you + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + NetPeering: + Tags: [] + State: + Name: pending-acceptance + Message: Pending acceptance by 123456789012 + AccepterNet: + NetId: vpc-12345678 + IpRange: 172.16.0.0/16 + AccountId: '123456789012' + SourceNet: + NetId: vpc-87654321 + IpRange: 10.0.0.0/16 + AccountId: '123456789012' + NetPeeringId: pcx-12345678 + ex2: + summary: Creating a Net peering with a Net that belongs to another + account + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + NetPeering: + Tags: [] + State: + Name: pending-acceptance + Message: Pending acceptance by 123456789012 + AccepterNet: + NetId: vpc-87654321 + IpRange: 172.16.0.0/16 + AccountId: '987654321098' + SourceNet: + NetId: vpc-12345678 + IpRange: 10.0.0.0/16 + AccountId: '123456789012' + NetPeeringId: pcx-12345678 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - NetPeering + "/CreateNic": + post: + description: |- + Creates a network interface card (NIC) in the specified Subnet.

+ For more information, see [About NICs](https://docs.outscale.com/en/userguide/About-NICs.html). + operationId: CreateNic + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateNicRequest" + examples: + ex1: + summary: Creating a NIC + value: + SubnetId: subnet-12345678 + SecurityGroupIds: + - sg-12345678 + ex2: + summary: Creating a NIC with specific private IPs + value: + Description: Terraform nic with private IPs + SubnetId: subnet-12345678 + SecurityGroupIds: + - sg-12345678 + PrivateIps: + - IsPrimary: true + PrivateIp: 10.0.0.4 + - IsPrimary: false + PrivateIp: 10.0.0.5 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateNicResponse" + examples: + ex1: + summary: Creating a NIC + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + Nic: + SubregionName: eu-west-2a + SubnetId: subnet-12345678 + State: available + IsSourceDestChecked: true + PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal + Tags: [] + Description: '' + AccountId: '123456789012' + SecurityGroups: + - SecurityGroupName: security-group-example + SecurityGroupId: sg-12345678 + MacAddress: A1:B2:C3:D4:E5:F6 + NetId: vpc-12345678 + NicId: eni-12345678 + PrivateIps: + - PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal + PrivateIp: 10.0.0.4 + IsPrimary: true + ex2: + summary: Creating a NIC with specific private IPs + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + Nic: + SubregionName: eu-west-2a + SubnetId: subnet-12345678 + State: available + IsSourceDestChecked: true + PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal + Tags: [] + Description: '' + AccountId: '123456789012' + SecurityGroups: + - SecurityGroupName: security-group-example + SecurityGroupId: sg-12345678 + MacAddress: A1:B2:C3:D4:E5:F6 + NetId: vpc-12345678 + NicId: eni-12345678 + PrivateIps: + - PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal + PrivateIp: 10.0.0.4 + IsPrimary: true + - PrivateDnsName: ip-10-0-0-5.eu-west-2.compute.internal + PrivateIp: 10.0.0.5 + IsPrimary: false + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - Nic + "/CreatePolicy": + post: + description: |- + Creates a managed policy to apply to a user.
+ This action creates a policy version and sets v1 as the default one. + operationId: CreatePolicy + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/CreatePolicyRequest" + examples: + ex1: + value: + Description: Example of description + Document: '{"Statement": [ {"Effect": "Allow", "Action": ["*"], + "Resource": ["*"]} ]}' + Path: "/example/" + PolicyName: example-user-policy + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/CreatePolicyResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + Policy: + ResourcesCount: 0 + PolicyName: example-user-policy + PolicyDefaultVersionId: v1 + Path: "/example/" + CreationDate: 2010-10-01 12:34:56.789000000 +00:00 + Description: Example of description + PolicyId: ABCDEFGHIJKLMNOPQRSTUVWXYZ01234 + Orn: orn:ows:idauth::012345678910:policy/example/example-user-policy + IsLinkable: true + LastModificationDate: 2010-10-01 12:34:56.789000000 +00:00 + description: The HTTP 200 response (OK). + tags: + - Policy + "/CreatePolicyVersion": + post: + description: |- + Creates a version of a specified managed policy.
+ A managed policy can have up to five versions. +

+ + **[IMPORTANT]**
+ A delay of up to 15 seconds can occur when attaching, detaching, or updating a managed policy. + operationId: CreatePolicyVersion + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/CreatePolicyVersionRequest" + examples: + ex1: + value: + Document: '{"Statement": [ {"Effect": "Allow", "Action": ["*"], + "Resource": ["*"]} ]}' + PolicyOrn: orn:ows:idauth::012345678910:policy/example/example-user-policy + SetAsDefault: true + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/CreatePolicyVersionResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + PolicyVersion: + VersionId: v2 + DefaultVersion: true + CreationDate: 2017-05-10 12:34:56.789000000 +00:00 + Body: '{"Statement": [ {"Effect": "Allow", "Action": ["*"], + "Resource": ["*"]} ]}' + description: The HTTP 200 response (OK). + tags: + - Policy + "/CreateProductType": + post: + description: Creates a product type you can associate with an OMI for consumption + monitoring and billing purposes. + operationId: CreateProductType + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateProductTypeRequest" + examples: + ex1: + value: + Vendor: vendor-name + Description: Example of description + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateProductTypeResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + ProductType: + Vendor: vendor-name + ProductTypeId: pty-12345678 + Description: Example of description + description: The HTTP 200 response (OK). + tags: + - ProductType + "/CreatePublicIp": + post: + description: |- + Acquires a public IP for your account.
+ A public IP is a static IP designed for dynamic Cloud computing. It can be associated with a virtual machine (VM) in the public Cloud or in a Net, a network interface card (NIC), a NAT service.

+ For more information, see [About Public IPs](https://docs.outscale.com/en/userguide/About-Public-IPs.html). + operationId: CreatePublicIp + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/CreatePublicIpRequest" + examples: + ex1: + value: {} + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/CreatePublicIpResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + PublicIp: + Tags: [] + PublicIpId: eipalloc-12345678 + PublicIp: 192.0.2.0 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - PublicIp + "/CreateRoute": + post: + description: |- + Creates a route in a specified route table within a specified Net.
+ You must specify one of the following elements as the target:

+ + * Net peering
+ * NAT VM
+ * Internet service
+ * Virtual gateway
+ * NAT service
+ * Network interface card (NIC)

+ + The routing algorithm is based on the most specific match.

+ For more information, see [About Route Tables](https://docs.outscale.com/en/userguide/About-Route-Tables.html). + operationId: CreateRoute + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateRouteRequest" + examples: + ex1: + summary: Creating a route to an Internet service + value: + RouteTableId: rtb-12345678 + DestinationIpRange: 0.0.0.0/0 + GatewayId: igw-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateRouteResponse" + examples: + ex1: + summary: Creating a route to an Internet service + value: + RouteTable: + Routes: + - DestinationIpRange: 10.0.0.0/16 + CreationMethod: CreateRouteTable + State: active + - GatewayId: igw-12345678 + DestinationIpRange: 0.0.0.0/0 + CreationMethod: CreateRoute + State: active + LinkRouteTables: [] + NetId: vpc-12345678 + Tags: [] + RoutePropagatingVirtualGateways: [] + RouteTableId: rtb-12345678 + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - Route + "/CreateRouteTable": + post: + description: |- + Creates a route table for a specified Net.
+ You can then add routes and associate this route table with a Subnet.

+ For more information, see [About Route Tables](https://docs.outscale.com/en/userguide/About-Route-Tables.html). + operationId: CreateRouteTable + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateRouteTableRequest" + examples: + ex1: + value: + NetId: vpc-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateRouteTableResponse" + examples: + ex1: + value: + RouteTable: + Routes: + - DestinationIpRange: 10.0.0.0/16 + CreationMethod: CreateRouteTable + State: active + LinkRouteTables: [] + NetId: vpc-12345678 + Tags: [] + RoutePropagatingVirtualGateways: [] + RouteTableId: rtb-12345678 + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - RouteTable + "/CreateSecurityGroup": + post: + description: |- + Creates a security group.
+ This action creates a security group either in the public Cloud or in a specified Net. By default, a default security group for use in the public Cloud and a default security group for use in a Net are created.
+ When launching a virtual machine (VM), if no security group is explicitly specified, the appropriate default security group is assigned to the VM. Default security groups include a default rule granting VMs network access to each other.
+ When creating a security group, you specify a name. Two security groups for use in the public Cloud or for use in a Net cannot have the same name.
+ You can have up to 500 security groups in the public Cloud. You can create up to 500 security groups per Net.
+ To add or remove rules, use the [CreateSecurityGroupRule](#createsecuritygrouprule) method.

+ For more information, see [About Security Groups](https://docs.outscale.com/en/userguide/About-Security-Groups.html). + operationId: CreateSecurityGroup + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateSecurityGroupRequest" + examples: + ex1: + value: + NetId: vpc-12345678 + SecurityGroupName: security-group-example + Description: Security group example + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateSecurityGroupResponse" + examples: + ex1: + value: + SecurityGroup: + Tags: [] + SecurityGroupName: security-group-example + OutboundRules: + - FromPortRange: -1 + IpProtocol: "-1" + ToPortRange: -1 + IpRanges: + - 0.0.0.0/0 + SecurityGroupId: sg-12345678 + AccountId: '123456789012' + Description: Example of security group + InboundRules: [] + NetId: vpc-12345678 + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - SecurityGroup + "/CreateSecurityGroupRule": + post: + description: |- + Adds one or more rules to a security group.
+ Use the `SecurityGroupId` parameter to specify the security group for which you want to create a rule.
+ Use the `Flow` parameter to specify if you want an inbound rule or an outbound rule.

+ An inbound rule allows the security group to receive traffic: + * Either from a specific IP range (`IpRange` parameter) on a specific port range (`FromPortRange` and `ToPortRange` parameters) and specific protocol (`IpProtocol` parameter). + * Or from another specific security group (`SecurityGroupAccountIdToLink` and `SecurityGroupNameToLink` parameters).
+ + (Net only) An outbound rule works similarly but allows the security group to send traffic rather than receive traffic.
+ + Alternatively, you can use the `Rules` parameter to add several rules at the same time. Note that the `SecurityGroupName` subparameter can only be used for security groups in the public Cloud. + + **[NOTE]**
+ * The modifications are effective as quickly as possible, but a small delay may occur.
+ * By default, traffic between two security groups is allowed through both public and private IPs. To restrict traffic to private IPs only, contact our Support team at support@outscale.com. + + For more information, see [About Security Group Rules](https://docs.outscale.com/en/userguide/About-Security-Group-Rules.html). + operationId: CreateSecurityGroupRule + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateSecurityGroupRuleRequest" + examples: + ex1: + summary: Creating an inbound rule from an IP range + value: + Flow: Inbound + SecurityGroupId: sg-12345678 + FromPortRange: 80 + ToPortRange: 80 + IpProtocol: tcp + IpRange: 10.0.0.0/16 + ex2: + summary: Creating an inbound rule from another security group + value: + Flow: Inbound + SecurityGroupId: sg-12345678 + Rules: + - FromPortRange: 22 + ToPortRange: 22 + IpProtocol: tcp + SecurityGroupsMembers: + - AccountId: '123456789012' + SecurityGroupName: another-security-group + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateSecurityGroupRuleResponse" + examples: + ex1: + summary: Creating an inbound rule from an IP range + value: + SecurityGroup: + Tags: [] + SecurityGroupName: security-group-example + OutboundRules: + - FromPortRange: -1 + IpProtocol: "-1" + ToPortRange: -1 + IpRanges: + - 0.0.0.0/0 + SecurityGroupId: sg-12345678 + AccountId: '123456789012' + Description: Example of security group + InboundRules: + - FromPortRange: 80 + IpProtocol: tcp + ToPortRange: 80 + IpRanges: + - 10.0.0.0/16 + NetId: vpc-12345678 + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + ex2: + summary: Creating an inbound rule from another security group + value: + SecurityGroup: + Tags: [] + SecurityGroupName: security-group-example + OutboundRules: + - FromPortRange: -1 + IpProtocol: "-1" + ToPortRange: -1 + IpRanges: + - 0.0.0.0/0 + SecurityGroupId: sg-12345678 + AccountId: '123456789012' + Description: Example of security group + InboundRules: + - FromPortRange: 22 + IpProtocol: tcp + ToPortRange: 22 + SecurityGroupsMembers: + - SecurityGroupName: another-security-group + SecurityGroupId: sg-87654321 + AccountId: '987654321098' + NetId: vpc-12345678 + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - SecurityGroupRule + "/CreateServerCertificate": + post: + description: |- + Creates a server certificate and its matching private key.

+ These elements can be used with other services (for example, to configure SSL termination on load balancers).

+ You can also specify the chain of intermediate certification authorities if your certificate is not directly signed by a root one. You can specify multiple intermediate certification authorities in the `CertificateChain` parameter. To do so, concatenate all certificates in the correct order (the first certificate must be the authority of your certificate, the second must be the authority of the first one, and so on).

+ The private key must be a RSA key in PKCS1 form. To check this, open the PEM file and ensure its header reads as follows: BEGIN RSA PRIVATE KEY.

+ [IMPORTANT]

+ This private key must not be protected by a password or a passphrase.

+ For more information, see [About Server Certificates in EIM](https://docs.outscale.com/en/userguide/About-Server-Certificates-in-EIM.html). + operationId: CreateServerCertificate + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateServerCertificateRequest" + examples: + ex1: + value: + Name: server-cert-example + Body: "..." + Chain: "..." + PrivateKey: "..." + Path: "/example/" + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateServerCertificateResponse" + examples: + ex1: + value: + ServerCertificate: + Path: "/example/" + Id: ABCDEFGHIJKLMNOPQRSTUVWXYZ1234 + Orn: orn:ows:idauth::012345678910:server-certificate/example/server-cert-example + Name: server-cert-example + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - ServerCertificate + "/CreateSnapshot": + post: + description: |- + Creates a snapshot. Snapshots are point-in-time images of a volume that you can use to back up your data or to create replicas of this volume.
+ You can use this method in three different ways: + * **Creating from a volume**: You create a snapshot from one of your volumes.
+ * **Copying a snapshot**: You copy an existing snapshot. The source snapshot can be one of your own snapshots, or a snapshot owned by another OUTSCALE account that has granted you permission via the [UpdateSnapshot](#updatesnapshot) method.
+ * **Importing from a bucket**: You import a snapshot located in an OUTSCALE Object Storage (OOS) bucket. First, the owner of the source snapshot must export it to a bucket by using the [CreateSnapshotExportTask](#createsnapshotexporttask) method. Then, they must grant you permission to read the snapshot via a pre-signed URL. For more information, see [Creating a Pre-Signed URL](https://docs.outscale.com/en/userguide/Creating-a-Pre-Signed-URL.html). + + **[NOTE]**
+ In case of excessive use of the snapshot creation feature on the same volume over a short period of time, 3DS OUTSCALE reserves the right to temporarily block the feature. + + For more information, see [About Snapshots](https://docs.outscale.com/en/userguide/About-Snapshots.html). + operationId: CreateSnapshot + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateSnapshotRequest" + examples: + ex1: + summary: Creating from a volume + value: + VolumeId: vol-12345678 + Description: Snapshot created from a volume + ex2: + summary: Copying a snapshot + value: + SourceSnapshotId: snap-12345678 + SourceRegionName: eu-west-2 + Description: Snapshot created from another snapshot + ex3: + summary: Importing from a bucket + value: + FileLocation: https://oos.eu-west-2.outscale.com/BUCKET/KEY?AWSAccessKeyId=ABCDEFGHIJ0123456789&Expires=1493372309&Signature=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + SnapshotSize: 10737418240 + Description: Snapshot imported from a bucket + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateSnapshotResponse" + examples: + ex1: + summary: Creating from a volume + value: + Snapshot: + VolumeSize: 10 + AccountId: '123456789012' + VolumeId: vol-12345678 + CreationDate: '2010-10-01T12:34:56.789Z' + PermissionsToCreateVolume: + GlobalPermission: false + AccountIds: [] + Progress: 0 + SnapshotId: snap-12345678 + State: pending/queued + Description: Snapshot created from a volume + Tags: [] + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + ex2: + summary: Copying a snapshot + value: + Snapshot: + VolumeSize: 10 + AccountId: '123456789012' + VolumeId: vol-12345678 + CreationDate: '2010-10-01T12:34:56.789Z' + PermissionsToCreateVolume: + GlobalPermission: false + AccountIds: [] + Progress: 100 + SnapshotId: snap-12345678 + State: completed + Description: Snapshot copied from another snapshot + Tags: [] + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + ex3: + summary: Importing from a bucket + value: + Snapshot: + VolumeSize: 10 + AccountId: '123456789012' + VolumeId: vol-12345678 + CreationDate: '2010-10-01T12:34:56.789Z' + PermissionsToCreateVolume: + GlobalPermission: false + AccountIds: [] + Progress: 0 + SnapshotId: snap-12345678 + State: importing + Description: Snapshot imported from a bucket + Tags: [] + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - Snapshot + "/CreateSnapshotExportTask": + post: + description: |- + Exports a snapshot to an OUTSCALE Object Storage (OOS) bucket that belongs to you. This action enables you to create a backup of your snapshot.

+ You can share this snapshot with others OUTSCALE accounts by granting permission to read it via pre-signed URLs. For more information, see [Creating a Pre-Signed URL](https://docs.outscale.com/en/userguide/Creating-a-Pre-Signed-URL.html).

+ **[IMPORTANT]**
+ Export tasks can only be canceled while in the `pending/queued` state.

+ For more information, see [About Snapshots](https://docs.outscale.com/en/userguide/About-Snapshots.html). + operationId: CreateSnapshotExportTask + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateSnapshotExportTaskRequest" + examples: + ex1: + value: + SnapshotId: snap-12345678 + OsuExport: + DiskImageFormat: qcow2 + OsuBucket: BUCKET + OsuPrefix: PREFIX + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateSnapshotExportTaskResponse" + examples: + ex1: + value: + SnapshotExportTask: + Tags: [] + TaskId: snap-export-12345678 + Comment: Export of snapshot snap-12345678 + OsuExport: + OsuPrefix: PREFIX + OsuBucket: BUCKET + DiskImageFormat: qcow2 + State: pending + SnapshotId: snap-12345678 + Progress: 0 + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - Snapshot + "/CreateSubnet": + post: + description: |- + Creates a Subnet in an existing Net.
+ To create a Subnet in a Net, you have to provide the ID of the Net and the IP range for the Subnet (its network range). Once the Subnet is created, you cannot modify its IP range.

+ For more information, see [About Nets](https://docs.outscale.com/en/userguide/About-Nets.html). + operationId: CreateSubnet + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateSubnetRequest" + examples: + ex1: + value: + NetId: vpc-12345678 + IpRange: 10.0.0.0/18 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateSubnetResponse" + examples: + ex1: + value: + Subnet: + Tags: [] + SubregionName: eu-west-2a + SubnetId: subnet-12345678 + AvailableIpsCount: 16379 + IpRange: 10.0.0.0/18 + MapPublicIpOnLaunch: false + State: available + NetId: vpc-12345678 + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '409': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 409 response (Conflict). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - Subnet + "/CreateTags": + post: + description: |- + Adds one or more tags to the specified resources.
+ If a tag with the same key already exists for the resource, the tag value is replaced.
+ You can tag the following resources using their IDs:

+ + * Client gateways (cgw-xxxxxxxx)
+ * DHCP options (dopt-xxxxxxxx)
+ * Flexible GPU (fgpu-xxxxxxxx)
+ * Images (ami-xxxxxxxx)
+ * Internet services (igw-xxxxxxxx)
+ * Keypairs (key-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)
+ * NAT services (nat-xxxxxxxx)
+ * Net endpoints (vpce-xxxxxxxx)
+ * Net peerings (vpcx-xxxxxxxx)
+ * Nets (vpc-xxxxxxxx)
+ * Network interface cards (NIC) (eni-xxxxxxxx)
+ * OMI export tasks (image-export-xxxxxxxx)
+ * Public IPs (eipalloc-xxxxxxxx)
+ * Route tables (rtb-xxxxxxxx)
+ * Security groups (sg-xxxxxxxx)
+ * Snapshot export tasks (snap-export-xxxxxxxx) + * Snapshots (snap-xxxxxxxx)
+ * Subnets (subnet-xxxxxxxx)
+ * Virtual gateways (vgw-xxxxxxxx)
+ * Virtual machines (VMs) (i-xxxxxxxx)
+ * Volumes (vol-xxxxxxxx)
+ * VPN connections (vpn-xxxxxxxx)
+ + For more information, see [About Tags](https://docs.outscale.com/en/userguide/About-Tags.html). + operationId: CreateTags + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateTagsRequest" + examples: + ex1: + value: + ResourceIds: + - i-12345678 + Tags: + - Key: key1 + Value: value1 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateTagsResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - Tag + "/CreateUser": + post: + description: |- + Creates an EIM user for your OUTSCALE account.

+ For more information, see [About EIM Users](https://docs.outscale.com/en/userguide/About-EIM-Users.html). + operationId: CreateUser + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateUserRequest" + examples: + ex1: + value: + UserEmail: user@example.com + UserName: example-user + Path: "/documentation/" + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateUserResponse" + examples: + ex1: + value: + User: + CreationDate: 2010-10-01 12:34:56.789000000 +00:00 + LastModificationDate: 2017-05-10 12:34:56.789000000 +00:00 + UserEmail: user@example.com + UserName: example-user + UserId: ABCDEFGHIJKLMNOPQRSTUVWXYZ12345 + Path: "/documentation/" + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - User + "/CreateUserGroup": + post: + description: |- + Creates a group to which you can add users.
+ You can also add an inline policy or link a managed policy to the group, which is applied to all its users. + operationId: CreateUserGroup + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateUserGroupRequest" + examples: + ex1: + value: + Path: "/example/" + UserGroupName: example-usergroup + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateUserGroupResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + UserGroup: + CreationDate: '2010-10-01T12:34:56.789Z' + LastModificationDate: 2010-10-01 12:34:56.789000000 +00:00 + Name: example-usergroup + Orn: orn:ows:idauth::012345678910:usergroup/example/usergroup-example + Path: "/example/" + UserGroupId: ug-12345678 + description: The HTTP 200 response (OK). + tags: + - UserGroup + "/CreateVirtualGateway": + post: + description: |- + Creates a virtual gateway.
+ A virtual gateway is the access point on the Net side of a VPN connection.

+ For more information, see [About Virtual Gateways](https://docs.outscale.com/en/userguide/About-Virtual-Gateways.html). + operationId: CreateVirtualGateway + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateVirtualGatewayRequest" + examples: + ex1: + value: + ConnectionType: ipsec.1 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateVirtualGatewayResponse" + examples: + ex1: + value: + VirtualGateway: + VirtualGatewayId: vgw-12345678 + ConnectionType: ipsec.1 + NetToVirtualGatewayLinks: [] + State: available + Tags: [] + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - VirtualGateway + "/CreateVmGroup": + post: + description: |- + > [WARNING]
+ > This feature is currently under development and may not function properly.
+ + Creates a group of virtual machines (VMs) containing the same characteristics as a specified VM template, and then launches them.
+ You can create up to 100 VM groups in your OUTSCALE account. + operationId: CreateVmGroup + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateVmGroupRequest" + examples: + ex1: + value: + Description: Production log collector + PositioningStrategy: attract + SecurityGroupIds: + - sg-12345678 + SubnetId: subnet-12345678 + Tags: + - Key: key1 + Value: value1 + VmCount: 2 + VmGroupName: ClusterLog-PPD01 + VmTemplateId: vmtemplate-98765432109876543210987654321012 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateVmGroupResponse" + examples: + ex1: + value: + VmGroup: + CreationDate: '2010-10-01T12:34:56.789Z' + Description: Production log collector + PositioningStrategy: attract + SecurityGroupIds: + - sg-12345678 + State: available + SubnetId: subnet-12345678 + Tags: + - Key: key1 + Value: value1 + VmCount: 2 + VmGroupId: vmgroup-12345678901234567890123456789012 + VmGroupName: ClusterLog-PPD01 + VmIds: [] + VmTemplateId: vmtemplate-98765432109876543210987654321012 + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - VmGroup + "/CreateVmTemplate": + post: + description: |- + > [WARNING]
+ > This feature is currently under development and may not function properly.
+ + Creates a virtual machine (VM) template. You can then use the VM template to create VM groups.
+ You can create up to 50 VM templates in your OUTSCALE account. + operationId: CreateVmTemplate + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateVmTemplateRequest" + examples: + ex1: + value: + CpuCores: 2 + CpuGeneration: v4 + CpuPerformance: high + Description: Log collector template + ImageId: ami-12345678 + KeypairName: keypair-example + Ram: 2 + Tags: + - Key: key1 + Value: value1 + VmTemplateName: vmtemplate-example + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateVmTemplateResponse" + examples: + ex1: + value: + VmTemplate: + VmTemplateName: vmtemplate-example + CpuPerformance: high + CreationDate: 2010-10-01 12:34:56.789000000 +00:00 + CpuCores: 2 + Tags: + - Key: key1 + Value: value1 + Description: Log collector template + ImageId: ami-12345678 + CpuGeneration: v4 + VmTemplateId: vmtemplate-98765432109876543210987654321012 + Ram: 2 + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - VmTemplate + "/CreateVms": + post: + description: |- + Creates virtual machines (VMs), and then launches them.
+ This action enables you to create a specified number of VMs using an OUTSCALE machine image (OMI) that you are allowed to use, and then to automatically launch them.
+ The VMs remain in the `pending` state until they are created and ready to be used. Once automatically launched, they are in the `running` state.
+ To check the state of your VMs, call the [ReadVms](#readvms) method.
+ The metadata server enables you to get the public key provided when the VM is launched. Official OMIs contain a script to get this public key and put it inside the VM to provide secure access without password.
+ If not specified, the security group used by the service is the default one.
+ + **[NOTE]**
+ When you attach a security group to a VM, it is actually attached to the primary network interface of the VM.
+ + For more information, see [About VMs](https://docs.outscale.com/en/userguide/About-VMs.html). + operationId: CreateVms + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateVmsRequest" + examples: + ex1: + summary: Creating a VM (minimal syntax) + value: + ImageId: ami-12345678 + ex2: + summary: Creating a VM in a Net + value: + ImageId: ami-12345678 + VmType: tinav5.c1r1p2 + KeypairName: keypair-example + SecurityGroupIds: + - sg-12345678 + SubnetId: subnet-12345678 + UserData: "..." + ex3: + summary: Creating a VM with block device mappings + value: + ImageId: ami-12345678 + VmType: tinav5.c1r1p2 + KeypairName: keypair-example + SecurityGroupIds: + - sg-12345678 + SubnetId: subnet-12345678 + UserData: "..." + BlockDeviceMappings: + - DeviceName: "/dev/sda1" + Bsu: + VolumeSize: 15 + VolumeType: gp2 + - DeviceName: "/dev/sdb" + Bsu: + SnapshotId: snap-12345678 + VolumeSize: 22 + VolumeType: io1 + Iops: 150 + ex4: + summary: Creating a VM with a NIC + value: + ImageId: ami-12345678 + VmType: tinav5.c1r1p2 + KeypairName: keypair-example + UserData: "..." + Nics: + - DeviceNumber: 0 + NicId: eni-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateVmsResponse" + examples: + ex1: + summary: Creating a VM (minimal syntax) + value: + Vms: + - VmType: t2.small + VmInitiatedShutdownBehavior: stop + State: pending + StateReason: '' + RootDeviceType: ebs + RootDeviceName: "/dev/sda1" + IsSourceDestChecked: true + ImageId: ami-12345678 + DeletionProtection: false + BootMode: legacy + TpmEnabled: false + Architecture: x86_64 + NestedVirtualization: false + BlockDeviceMappings: + - DeviceName: "/dev/sda1" + Bsu: + VolumeId: vol-12345678 + State: attaching + LinkDate: '2010-10-01T12:34:56.789Z' + DeleteOnVmDeletion: true + VmId: i-12345678 + ReservationId: r-12345678 + Hypervisor: xen + Placement: + Tenancy: default + SubregionName: eu-west-2a + ProductCodes: + - '0001' + CreationDate: '2010-10-01T12:34:56.789Z' + UserData: "..." + PrivateIp: 10.0.0.4 + SecurityGroups: + - SecurityGroupName: default + SecurityGroupId: sg-12345678 + BsuOptimized: false + LaunchNumber: 0 + Performance: medium + Tags: [] + ActionsOnNextBoot: + SecureBoot: none + PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + ex2: + summary: Creating a VM in a Net + value: + Vms: + - VmType: tinav5.c1r1p2 + VmInitiatedShutdownBehavior: stop + State: pending + StateReason: '' + RootDeviceType: ebs + RootDeviceName: "/dev/sda1" + IsSourceDestChecked: true + KeypairName: keypair-example + ImageId: ami-12345678 + DeletionProtection: false + BootMode: legacy + TpmEnabled: false + Architecture: x86_64 + NestedVirtualization: false + BlockDeviceMappings: + - DeviceName: "/dev/sda1" + Bsu: + VolumeId: vol-12345678 + State: attaching + LinkDate: '2010-10-01T12:34:56.789Z' + DeleteOnVmDeletion: true + VmId: i-12345678 + ReservationId: r-12345678 + Hypervisor: xen + Placement: + Tenancy: default + SubregionName: eu-west-2a + ProductCodes: + - '0001' + CreationDate: '2010-10-01T12:34:56.789Z' + UserData: "..." + SubnetId: subnet-12345678 + PrivateIp: 10.0.0.4 + SecurityGroups: + - SecurityGroupName: security-group-example + SecurityGroupId: sg-12345678 + BsuOptimized: false + LaunchNumber: 0 + NetId: vpc-12345678 + Nics: + - SubnetId: subnet-12345678 + State: in-use + LinkNic: + State: attached + DeviceNumber: 0 + LinkNicId: eni-attach-12345678 + DeleteOnVmDeletion: true + IsSourceDestChecked: true + PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal + Description: Primary network interface + AccountId: '123456789012' + SecurityGroups: + - SecurityGroupName: security-group-example + SecurityGroupId: sg-12345678 + MacAddress: A1:B2:C3:D4:E5:F6 + NetId: vpc-12345678 + NicId: eni-12345678 + PrivateIps: + - PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal + PrivateIp: 10.0.0.4 + IsPrimary: true + Performance: high + Tags: [] + ActionsOnNextBoot: + SecureBoot: none + PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + ex3: + summary: Creating a VM with block device mappings + value: + Vms: + - VmType: tinav5.c1r1p2 + VmInitiatedShutdownBehavior: stop + State: pending + StateReason: '' + RootDeviceType: ebs + RootDeviceName: "/dev/sda1" + IsSourceDestChecked: true + KeypairName: keypair-example + ImageId: ami-12345678 + DeletionProtection: false + BootMode: legacy + TpmEnabled: false + Architecture: x86_64 + NestedVirtualization: false + BlockDeviceMappings: + - DeviceName: "/dev/sda1" + Bsu: + VolumeId: vol-12345678 + State: attaching + LinkDate: '2010-10-01T12:34:56.789Z' + DeleteOnVmDeletion: true + - DeviceName: "/dev/sda1" + Bsu: + VolumeId: vol-87654321 + State: attaching + LinkDate: '2010-10-01T12:34:56.789Z' + DeleteOnVmDeletion: true + VmId: i-12345678 + ReservationId: r-12345678 + Hypervisor: xen + Placement: + Tenancy: default + SubregionName: eu-west-2a + ProductCodes: + - '0001' + CreationDate: '2010-10-01T12:34:56.789Z' + UserData: "..." + SubnetId: subnet-12345678 + PrivateIp: 10.0.0.4 + SecurityGroups: + - SecurityGroupName: security-group-example + SecurityGroupId: sg-12345678 + BsuOptimized: false + LaunchNumber: 0 + NetId: vpc-12345678 + Nics: + - SubnetId: subnet-12345678 + State: in-use + LinkNic: + State: attached + DeviceNumber: 0 + LinkNicId: eni-attach-12345678 + DeleteOnVmDeletion: true + IsSourceDestChecked: true + PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal + Description: Primary network interface + AccountId: '123456789012' + SecurityGroups: + - SecurityGroupName: security-group-example + SecurityGroupId: sg-12345678 + MacAddress: A1:B2:C3:D4:E5:F6 + NetId: vpc-12345678 + NicId: eni-12345678 + PrivateIps: + - PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal + PrivateIp: 10.0.0.4 + IsPrimary: true + Performance: high + Tags: [] + ActionsOnNextBoot: + SecureBoot: none + PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + ex4: + summary: Creating a VM with a NIC + value: + Vms: + - VmType: tinav5.c1r1p2 + VmInitiatedShutdownBehavior: stop + State: pending + StateReason: '' + RootDeviceType: ebs + RootDeviceName: "/dev/sda1" + IsSourceDestChecked: true + KeypairName: keypair-example + ImageId: ami-12345678 + DeletionProtection: false + BootMode: legacy + TpmEnabled: false + Architecture: x86_64 + NestedVirtualization: false + BlockDeviceMappings: + - DeviceName: "/dev/sda1" + Bsu: + VolumeId: vol-12345678 + State: attaching + LinkDate: '2010-10-01T12:34:56.789Z' + DeleteOnVmDeletion: true + VmId: i-12345678 + ReservationId: r-12345678 + Hypervisor: xen + Placement: + Tenancy: default + SubregionName: eu-west-2a + ProductCodes: + - '0001' + CreationDate: '2010-10-01T12:34:56.789Z' + UserData: "..." + SubnetId: subnet-12345678 + PrivateIp: 10.0.0.4 + SecurityGroups: + - SecurityGroupName: security-group-example + SecurityGroupId: sg-12345678 + BsuOptimized: false + LaunchNumber: 0 + NetId: vpc-12345678 + Nics: + - SubnetId: subnet-12345678 + State: in-use + LinkNic: + State: attached + DeviceNumber: 0 + LinkNicId: eni-attach-12345678 + DeleteOnVmDeletion: true + IsSourceDestChecked: true + PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal + Description: Example NIC + AccountId: '123456789012' + SecurityGroups: + - SecurityGroupName: security-group-example + SecurityGroupId: sg-12345678 + MacAddress: A1:B2:C3:D4:E5:F6 + NetId: vpc-12345678 + NicId: eni-12345678 + PrivateIps: + - PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal + PrivateIp: 10.0.0.4 + IsPrimary: true + Performance: high + Tags: [] + ActionsOnNextBoot: + SecureBoot: none + PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - Vm + "/CreateVolume": + post: + description: |- + Creates a Block Storage Unit (BSU) volume in a specified Region.
+ BSU volumes can be attached to a virtual machine (VM) in the same Subregion. You can create an empty volume or restore a volume from an existing snapshot.
+ You can create the following volume types: Enterprise (`io1`) for provisioned IOPS SSD volumes, Performance (`gp2`) for general purpose SSD volumes, or Magnetic (`standard`) volumes.

+ For more information, see [About Volumes](https://docs.outscale.com/en/userguide/About-Volumes.html). + operationId: CreateVolume + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateVolumeRequest" + examples: + ex1: + summary: Creating an io1 volume + value: + VolumeType: io1 + SubregionName: eu-west-2a + Size: 10 + Iops: 100 + ex2: + summary: Creating a volume from a snapshot + value: + SnapshotId: snap-12345678 + VolumeType: gp2 + SubregionName: eu-west-2a + Size: 10 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateVolumeResponse" + examples: + ex1: + summary: Creating an io1 volume + value: + Volume: + VolumeId: vol-12345678 + Tags: [] + VolumeType: io1 + SubregionName: eu-west-2a + State: creating + CreationDate: '2010-10-01T12:34:56.789Z' + Iops: 100 + LinkedVolumes: [] + Size: 10 + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + ex2: + summary: Creating a volume from a snapshot + value: + Volume: + VolumeId: vol-12345678 + Tags: [] + VolumeType: gp2 + SubregionName: eu-west-2a + State: creating + SnapshotId: snap-12345678 + CreationDate: '2010-10-01T12:34:56.789Z' + Iops: 100 + LinkedVolumes: [] + Size: 10 + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - Volume + "/CreateVpnConnection": + post: + description: |- + Creates a VPN connection between a specified virtual gateway and a specified client gateway.
+ You can create only one VPN connection between a virtual gateway and a client gateway.

+ + **[IMPORTANT]**
+ This action can be done only if the virtual gateway is in the `available` state.

+ For more information, see [About VPN Connections](https://docs.outscale.com/en/userguide/About-VPN-Connections.html). + operationId: CreateVpnConnection + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateVpnConnectionRequest" + examples: + ex1: + value: + ClientGatewayId: cgw-12345678 + VirtualGatewayId: vgw-12345678 + ConnectionType: ipsec.1 + StaticRoutesOnly: true + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateVpnConnectionResponse" + examples: + ex1: + value: + VpnConnection: + Routes: [] + Tags: [] + ClientGatewayConfiguration: "..." + StaticRoutesOnly: true + VirtualGatewayId: vgw-12345678 + ConnectionType: ipsec.1 + ClientGatewayId: cgw-12345678 + State: pending + VgwTelemetries: + - StateDescription: IPSEC IS DOWN + AcceptedRouteCount: 0 + LastStateChangeDate: '2017-05-10T12:34:56.789Z' + OutsideIpAddress: 192.0.2.0 + VpnConnectionId: vpn-12345678 + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - VpnConnection + "/CreateVpnConnectionRoute": + post: + description: |- + Creates a static route to a VPN connection.
+ This enables you to select the network flows sent by the virtual gateway to the target VPN connection.

+ For more information, see [About Routing Configuration for VPN Connections](https://docs.outscale.com/en/userguide/About-Routing-Configuration-for-VPN-Connections.html). + operationId: CreateVpnConnectionRoute + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateVpnConnectionRouteRequest" + examples: + ex1: + value: + VpnConnectionId: vpn-12345678 + DestinationIpRange: 10.0.0.0/16 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateVpnConnectionRouteResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - VpnConnection + "/DeleteAccessKey": + post: + description: |- + Deletes the specified access key of either the root user or an EIM user.

+ The access key of an EIM user must be in the `INACTIVE` state to be deleted. + operationId: DeleteAccessKey + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteAccessKeyRequest" + examples: + ex1: + summary: Deleting one of your own access keys (if you are the root + user or an EIM user) + value: + AccessKeyId: ABCDEFGHIJ0123456789 + ex2: + summary: Deleting the access key of a specific EIM user + value: + AccessKeyId: ABCDEFGHIJ0123456789 + UserName: example-user + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteAccessKeyResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + security: + - ApiKeyAuthSec: [] + - BasicAuth: [] + tags: + - AccessKey + "/DeleteApiAccessRule": + post: + description: |- + Deletes a specified API access rule.

+ + **[IMPORTANT]**
+ You cannot delete the last remaining API access rule. However, if you delete all the API access rules that allow you to access the APIs, you need to contact the Support team to regain access. For more information, see [Technical Support](https://docs.outscale.com/en/userguide/Technical-Support.html). + operationId: DeleteApiAccessRule + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteApiAccessRuleRequest" + examples: + ex1: + value: + ApiAccessRuleId: aar-1234567890abcdef1234567890abcdef + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteApiAccessRuleResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + security: + - ApiKeyAuthSec: [] + - BasicAuth: [] + tags: + - ApiAccessRule + "/DeleteCa": + post: + description: Deletes a specified Client Certificate Authority (CA). + operationId: DeleteCa + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteCaRequest" + examples: + ex1: + value: + CaId: ca-fedcba0987654321fedcba0987654321 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteCaResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + security: + - ApiKeyAuthSec: [] + - BasicAuth: [] + tags: + - Ca + "/DeleteClientGateway": + post: + description: |- + Deletes a client gateway.
+ You must delete the VPN connection before deleting the client gateway. + operationId: DeleteClientGateway + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteClientGatewayRequest" + examples: + ex1: + value: + ClientGatewayId: cgw-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteClientGatewayResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - ClientGateway + "/DeleteDedicatedGroup": + post: + description: |- + Deletes a specified dedicated group of virtual machines (VMs).
+ + **[WARNING]**
+ A dedicated group can be deleted only if no VM or Net is in the dedicated group. Otherwise, you need to force the deletion.
+ If you force the deletion:
+ - all VMs are terminated.
+ - all Nets are deleted, and all resources associated with Nets are detached. + operationId: DeleteDedicatedGroup + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteDedicatedGroupRequest" + examples: + ex1: + summary: Deleting a dedicated group without any resource in it. + value: + DedicatedGroupId: ded-12345678 + ex2: + summary: Forcing the deletion of a dedicated group and all resources + in it. + value: + DedicatedGroupId: ded-12345678 + Force: true + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteDedicatedGroupResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - DedicatedGroup + "/DeleteDhcpOptions": + post: + description: |- + Deletes a specified DHCP options set.
+ Before deleting a DHCP options set, you must disassociate it from the Nets you associated it with. To do so, you need to associate with each Net a new set of DHCP options, or the `default` one if you do not want to associate any DHCP options with the Net.

+ + **[IMPORTANT]**
+ You cannot delete the `default` set. + operationId: DeleteDhcpOptions + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteDhcpOptionsRequest" + examples: + ex1: + value: + DhcpOptionsSetId: dopt-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteDhcpOptionsResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - DhcpOption + "/DeleteDirectLink": + post: + description: |- + Deletes a specified DirectLink.
+ Before deleting a DirectLink, ensure that all your DirectLink interfaces related to this DirectLink are deleted. + operationId: DeleteDirectLink + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteDirectLinkRequest" + examples: + ex1: + value: + DirectLinkId: dxcon-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteDirectLinkResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - DirectLink + "/DeleteDirectLinkInterface": + post: + description: Deletes a specified DirectLink interface. + operationId: DeleteDirectLinkInterface + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteDirectLinkInterfaceRequest" + examples: + ex1: + value: + DirectLinkInterfaceId: dxvif-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteDirectLinkInterfaceResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - DirectLinkInterface + "/DeleteExportTask": + post: + description: |- + Deletes an export task.
+ If the export task is not in the `active` or `pending` state, the command fails and an error is returned. + operationId: DeleteExportTask + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteExportTaskRequest" + examples: + ex1: + summary: Deleting an image export task + value: + ExportTaskId: image-export-12345678 + ex2: + summary: Deleting a snapshot export task + value: + ExportTaskId: snap-export-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteExportTaskResponse" + examples: + ex1: + summary: Deleting an image export task + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + ex2: + summary: Deleting a snapshot export task + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - Task + "/DeleteFlexibleGpu": + post: + description: |- + Releases a flexible GPU (fGPU) from your OUTSCALE account.
+ The fGPU becomes free to be used by someone else. + operationId: DeleteFlexibleGpu + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteFlexibleGpuRequest" + examples: + ex1: + value: + FlexibleGpuId: fgpu-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteFlexibleGpuResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - FlexibleGpu + "/DeleteImage": + post: + description: Deletes an OUTSCALE machine image (OMI) so that you cannot use + it anymore to launch virtual machines (VMs). However, you can still use VMs + already launched from this OMI. + operationId: DeleteImage + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteImageRequest" + examples: + ex1: + value: + ImageId: ami-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteImageResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - Image + "/DeleteInternetService": + post: + description: |- + Deletes an internet service.
+ Before deleting an internet service, you must detach it from any Net it is attached to. + operationId: DeleteInternetService + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteInternetServiceRequest" + examples: + ex1: + value: + InternetServiceId: igw-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteInternetServiceResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - InternetService + "/DeleteKeypair": + post: + description: |- + Deletes the specified keypair.
+ This action deletes the public key stored by 3DS OUTSCALE, thus deleting the keypair. + operationId: DeleteKeypair + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteKeypairRequest" + examples: + ex1: + summary: Deleting a keypair with its name + value: + KeypairName: keypair-example + ex2: + summary: Deleting a keypair with its ID + value: + KeypairId: key-abcdef1234567890abcdef1234567890 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteKeypairResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - Keypair + "/DeleteListenerRule": + post: + description: |- + Deletes a listener rule.
+ The previously active rule is disabled after deletion. + operationId: DeleteListenerRule + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteListenerRuleRequest" + examples: + ex1: + value: + ListenerRuleName: example-listener-rule + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteListenerRuleResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - Listener + "/DeleteLoadBalancer": + post: + description: Deletes a specified load balancer. + operationId: DeleteLoadBalancer + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteLoadBalancerRequest" + examples: + ex1: + value: + LoadBalancerName: example-lbu + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteLoadBalancerResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + LoadBalancer: + Tags: [] + SourceSecurityGroup: + SecurityGroupName: security-group-example + SecurityGroupAccountId: '123456789012' + SecuredCookies: false + PublicIp: 192.0.2.0 + Subnets: + - subnet-12345678 + NetId: vpc-12345678 + BackendVmIds: [] + ApplicationStickyCookiePolicies: [] + SecurityGroups: + - sg-12345678 + LoadBalancerType: internet-facing + AccessLog: + PublicationInterval: 60 + IsEnabled: false + DnsName: private-lb-example.123456789.eu-west-2.lbu.outscale.com + HealthCheck: + UnhealthyThreshold: 2 + Timeout: 5 + CheckInterval: 30 + Protocol: TCP + HealthyThreshold: 10 + Port: 80 + LoadBalancerStickyCookiePolicies: [] + SubregionNames: + - eu-west-2a + Listeners: + - ServerCertificateId: orn:ows:idauth::012345678910:server-certificate/Certificate + BackendPort: 80 + BackendProtocol: HTTP + LoadBalancerPort: 443 + LoadBalancerProtocol: HTTPS + LoadBalancerName: private-lb-example + description: The HTTP 200 response (OK). + tags: + - LoadBalancer + "/DeleteLoadBalancerListeners": + post: + description: Deletes listeners of a specified load balancer. + operationId: DeleteLoadBalancerListeners + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteLoadBalancerListenersRequest" + examples: + ex1: + value: + LoadBalancerName: example-lbu + LoadBalancerPorts: + - 80 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteLoadBalancerListenersResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + LoadBalancer: + Tags: [] + SourceSecurityGroup: + SecurityGroupName: security-group-example + SecurityGroupAccountId: '123456789012' + SecuredCookies: false + Subnets: + - subnet-12345678 + NetId: vpc-12345678 + BackendVmIds: [] + ApplicationStickyCookiePolicies: [] + SecurityGroups: + - sg-12345678 + LoadBalancerType: internal + AccessLog: + PublicationInterval: 60 + IsEnabled: false + DnsName: internal-example-lbu.123456789.eu-west-2.lbu.outscale.com + HealthCheck: + UnhealthyThreshold: 2 + Timeout: 5 + CheckInterval: 30 + Protocol: TCP + HealthyThreshold: 10 + Port: 80 + LoadBalancerStickyCookiePolicies: [] + SubregionNames: + - eu-west-2a + Listeners: [] + LoadBalancerName: example-lbu + description: The HTTP 200 response (OK). + tags: + - Listener + "/DeleteLoadBalancerPolicy": + post: + description: |- + Deletes a specified policy from a load balancer.
+ In order to be deleted, the policy must not be enabled for any listener. + operationId: DeleteLoadBalancerPolicy + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteLoadBalancerPolicyRequest" + examples: + ex1: + value: + LoadBalancerName: example-lbu + PolicyName: example-browser-policy + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteLoadBalancerPolicyResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + LoadBalancer: + Tags: [] + SourceSecurityGroup: + SecurityGroupName: default + SecurityGroupAccountId: '123456789012' + SecuredCookies: false + PublicIp: 192.0.2.0 + Subnets: + - subnet-12345678 + NetId: vpc-12345678 + BackendVmIds: [] + ApplicationStickyCookiePolicies: [] + SecurityGroups: + - sg-12345678 + LoadBalancerType: internet-facing + AccessLog: + PublicationInterval: 60 + IsEnabled: false + DnsName: example-lbu-123456789.eu-west-2.lbu.outscale.com + HealthCheck: + UnhealthyThreshold: 2 + Timeout: 5 + CheckInterval: 30 + Protocol: TCP + HealthyThreshold: 10 + Port: 80 + LoadBalancerStickyCookiePolicies: [] + SubregionNames: + - eu-west-2a + Listeners: + - BackendPort: 80 + BackendProtocol: HTTP + LoadBalancerPort: 80 + LoadBalancerProtocol: HTTP + LoadBalancerName: example-lbu + description: The HTTP 200 response (OK). + tags: + - LoadBalancerPolicy + "/DeleteLoadBalancerTags": + post: + description: Deletes one or more tags from the specified load balancers. + operationId: DeleteLoadBalancerTags + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteLoadBalancerTagsRequest" + examples: + ex1: + value: + LoadBalancerNames: + - example-lbu + Tags: + - Key: key1 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteLoadBalancerTagsResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - LoadBalancer + "/DeleteNatService": + post: + description: |- + Deletes a specified network address translation (NAT) service.
+ This action disassociates the public IP from the NAT service, but does not release this public IP from your OUTSCALE account. However, it does not delete any NAT service routes in your route tables. + operationId: DeleteNatService + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteNatServiceRequest" + examples: + ex1: + value: + NatServiceId: nat-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteNatServiceResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - NatService + "/DeleteNet": + post: + description: |- + Deletes a specified Net.
+ Before deleting the Net, you need to delete or detach all the resources associated with the Net:

+ + * Virtual machines (VMs)
+ * Net peerings
+ * Custom route tables
+ * Public IPs allocated to resources in the Net
+ * Network Interface Cards (NICs) created in the Subnets
+ * Virtual gateways, internet services and NAT services
+ * Load balancers
+ * Security groups
+ * Subnets + operationId: DeleteNet + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteNetRequest" + examples: + ex1: + value: + NetId: vpc-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteNetResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - Net + "/DeleteNetAccessPoint": + post: + description: |- + Deletes a specified Net access point.
+ This action also deletes the corresponding routes added to the route tables you specified for the Net access point. + operationId: DeleteNetAccessPoint + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteNetAccessPointRequest" + examples: + ex1: + value: + NetAccessPointId: vpce-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteNetAccessPointResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - NetAccessPoint + "/DeleteNetPeering": + post: + description: |- + Deletes a Net peering.
+ If the Net peering is in the `active` state, it can be deleted either by the owner of the requester Net or the owner of the peer Net.
+ If it is in the `pending-acceptance` state, it can be deleted only by the owner of the requester Net.
+ If it is in the `rejected`, `failed`, or `expired` states, it cannot be deleted. + operationId: DeleteNetPeering + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteNetPeeringRequest" + examples: + ex1: + value: + NetPeeringId: pcx-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteNetPeeringResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '409': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 409 response (Conflict). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - NetPeering + "/DeleteNic": + post: + description: |- + Deletes the specified network interface card (NIC).
+ The network interface must not be attached to any virtual machine (VM). + operationId: DeleteNic + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteNicRequest" + examples: + ex1: + value: + NicId: eni-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteNicResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - Nic + "/DeletePolicy": + post: + description: |- + Deletes a managed policy.
+ Before deleting a managed policy, you must unlink all users linked to it and delete all the versions of the policy, except the default one, using the `DeletePolicyVersion` method. + operationId: DeletePolicy + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/DeletePolicyRequest" + examples: + ex1: + value: + PolicyOrn: orn:ows:idauth::012345678910:policy/example/example-user-policy + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/DeletePolicyResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - Policy + "/DeletePolicyVersion": + post: + description: |- + Deletes a specified version of a managed policy, if it is not set as the default one. +

+ + **[IMPORTANT]**
+ A delay of up to 15 seconds can occur when attaching, detaching, or updating a managed policy. + operationId: DeletePolicyVersion + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/DeletePolicyVersionRequest" + examples: + ex1: + value: + PolicyOrn: orn:ows:idauth::012345678910:policy/example/example-user-policy + VersionId: v1 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/DeletePolicyVersionResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - Policy + "/DeleteProductType": + post: + description: |- + Deletes a specified product type that belongs to you.
+ + **[WARNING]**
+ The product type must not be associated with one or more OMIs to be deleted. Otherwise, you need to force the deletion.
+ If you force the deletion, the product type is deleted and remains associated with the OMIs.
+ operationId: DeleteProductType + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteProductTypeRequest" + examples: + ex1: + value: + ProductTypeId: pty-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteProductTypeResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - ProductType + "/DeletePublicIp": + post: + description: |- + Releases a public IP.
+ You can release a public IP associated with your OUTSCALE account. This address is released in the public IP pool and can be used by someone else. Before releasing a public IP, ensure you updated all your resources communicating with this address. + operationId: DeletePublicIp + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/DeletePublicIpRequest" + examples: + ex1: + value: + PublicIp: 192.0.2.0 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/DeletePublicIpResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - PublicIp + "/DeleteRoute": + post: + description: Deletes a route from a specified route table. + operationId: DeleteRoute + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteRouteRequest" + examples: + ex1: + value: + RouteTableId: rtb-12345678 + DestinationIpRange: 198.51.100.0/24 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteRouteResponse" + examples: + ex1: + value: + RouteTable: + Routes: + - DestinationIpRange: 10.0.0.0/16 + CreationMethod: CreateRouteTable + State: active + LinkRouteTables: [] + NetId: vpc-12345678 + Tags: [] + RoutePropagatingVirtualGateways: [] + RouteTableId: rtb-12345678 + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - Route + "/DeleteRouteTable": + post: + description: |- + Deletes a specified route table.
+ Before deleting a route table, you must disassociate it from any Subnet. You cannot delete the main route table. + operationId: DeleteRouteTable + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteRouteTableRequest" + examples: + ex1: + value: + RouteTableId: rtb-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteRouteTableResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - RouteTable + "/DeleteSecurityGroup": + post: + description: |- + Deletes a specified security group.
+ You can specify either the name of the security group or its ID.
+ This action fails if the specified group is associated with a virtual machine (VM) or referenced by another security group. + operationId: DeleteSecurityGroup + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteSecurityGroupRequest" + examples: + ex1: + value: + SecurityGroupId: sg-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteSecurityGroupResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - SecurityGroup + "/DeleteSecurityGroupRule": + post: + description: |- + Deletes one or more inbound or outbound rules from a security group.
+ For the rule to be deleted, the values specified in the deletion request must exactly match the value of the existing rule.
+ In case of TCP and UDP protocols, you have to indicate the destination port or range of ports. In case of ICMP protocol, you have to specify the ICMP type and code numbers.
+ Rules (IP permissions) consist of the protocol, IP range or source security group.
+ To remove outbound access to a destination security group, we recommend to use a set of IP permissions. We also recommend to specify the protocol in a set of IP permissions.
+ + Alternatively, you can use the `Rules` parameter to delete several rules at the same time. + operationId: DeleteSecurityGroupRule + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteSecurityGroupRuleRequest" + examples: + ex1: + summary: Deleting an inbound rule from an IP range + value: + Flow: Inbound + SecurityGroupId: sg-12345678 + FromPortRange: 80 + ToPortRange: 80 + IpProtocol: tcp + IpRange: 10.0.0.0/16 + ex2: + summary: Deleting an inbound rule from another security group + value: + Flow: Inbound + SecurityGroupId: sg-12345678 + Rules: + - FromPortRange: 22 + ToPortRange: 22 + IpProtocol: tcp + SecurityGroupsMembers: + - AccountId: '123456789012' + SecurityGroupName: another-security-group + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteSecurityGroupRuleResponse" + examples: + ex1: + summary: Deleting an inbound rule from an IP range + value: + SecurityGroup: + Tags: [] + SecurityGroupName: security-group-example + OutboundRules: + - FromPortRange: -1 + IpProtocol: "-1" + ToPortRange: -1 + IpRanges: + - 0.0.0.0/0 + SecurityGroupId: sg-12345678 + AccountId: '123456789012' + Description: Example of security group + InboundRules: [] + NetId: vpc-12345678 + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + ex2: + summary: Creating an inbound rule from another security group + value: + SecurityGroup: + Tags: [] + SecurityGroupName: security-group-example + OutboundRules: + - FromPortRange: -1 + IpProtocol: "-1" + ToPortRange: -1 + IpRanges: + - 0.0.0.0/0 + SecurityGroupId: sg-12345678 + AccountId: '123456789012' + Description: Example of security group + InboundRules: [] + NetId: vpc-12345678 + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - SecurityGroupRule + "/DeleteServerCertificate": + post: + description: Deletes a specified server certificate. + operationId: DeleteServerCertificate + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteServerCertificateRequest" + examples: + ex1: + value: + Name: server-cert-example + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteServerCertificateResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - ServerCertificate + "/DeleteSnapshot": + post: + description: |- + Deletes a specified snapshot.
+ You cannot delete a snapshot that is currently used by an OUTSCALE machine image (OMI). To do so, you first need to delete the corresponding OMI. For more information, see the [DeleteImage](#deleteimage) method. + operationId: DeleteSnapshot + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteSnapshotRequest" + examples: + ex1: + value: + SnapshotId: snap-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteSnapshotResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - Snapshot + "/DeleteSubnet": + post: + description: |- + Deletes a specified Subnet.
+ Before deleting the Subnet, you need to delete all resources associated with the Subnet:

+ + * Virtual machines (VMs)
+ * Network Interface Cards (NICs)
+ * NAT services
+ * Load balancers + operationId: DeleteSubnet + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteSubnetRequest" + examples: + ex1: + value: + SubnetId: subnet-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteSubnetResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - Subnet + "/DeleteTags": + post: + description: Deletes one or more tags from the specified resources. + operationId: DeleteTags + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteTagsRequest" + examples: + ex1: + value: + ResourceIds: + - i-12345678 + Tags: + - Key: key1 + Value: value1 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteTagsResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - Tag + "/DeleteUser": + post: + description: Deletes a specified EIM user. The EIM user must not belong to any + group, nor have any key or linked policy. + operationId: DeleteUser + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteUserRequest" + examples: + ex1: + value: + UserName: example-user + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteUserResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - User + "/DeleteUserGroup": + post: + description: |- + Deletes a specified user group.
+ + **[WARNING]**
+ The user group must be empty of any user and must not have any linked policy. Otherwise, you need to force the deletion.
+ If you force the deletion, all inline policies will be deleted with the user group.
+ operationId: DeleteUserGroup + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteUserGroupRequest" + examples: + ex1: + value: + Force: false + Path: "/example/" + UserGroupName: example-usergroup + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteUserGroupResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - UserGroup + "/DeleteUserGroupPolicy": + post: + description: |- + Deletes a specified inline policy from a specific group. +

+ + **[IMPORTANT]**
+ A delay of up to 15 seconds can occur when creating or deleting an inline policy. + operationId: DeleteUserGroupPolicy + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteUserGroupPolicyRequest" + examples: + ex1: + value: + PolicyName: example-usergroup-policy + UserGroupName: example-usergroup + UserGroupPath: "/example/" + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteUserGroupPolicyResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - Policy + "/DeleteUserPolicy": + post: + description: |- + Deletes a specified inline policy from a specific user. +

+ + **[IMPORTANT]**
+ A delay of up to 15 seconds can occur when creating or deleting an inline policy. + operationId: DeleteUserPolicy + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteUserPolicyRequest" + examples: + ex1: + value: + PolicyName: example-user-policy + UserName: example-user + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteUserPolicyResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - Policy + "/DeleteVirtualGateway": + post: + description: |- + Deletes a specified virtual gateway.
+ **[IMPORTANT]**
+ Before deleting a virtual gateway, we recommend detaching it from any associated Net, DirectLink, and DirectLink interface, and deleting the VPN connection. + operationId: DeleteVirtualGateway + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteVirtualGatewayRequest" + examples: + ex1: + value: + VirtualGatewayId: vgw-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteVirtualGatewayResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - VirtualGateway + "/DeleteVmGroup": + post: + description: |- + > [WARNING]
+ > This feature is currently under development and may not function properly.
+ + Deletes a specified VM group. + operationId: DeleteVmGroup + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteVmGroupRequest" + examples: + ex1: + value: + VmGroupId: vmgroup-12345678901234567890123456789012 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteVmGroupResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - VmGroup + "/DeleteVmTemplate": + post: + description: |- + > [WARNING]
+ > This feature is currently under development and may not function properly.
+ + Deletes a virtual machine (VM) template.
+ You cannot delete a template currently used by a VM group. + operationId: DeleteVmTemplate + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteVmTemplateRequest" + examples: + ex1: + value: + VmTemplateId: vmtemplate-98765432109876543210987654321012 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteVmTemplateResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - VmTemplate + "/DeleteVms": + post: + description: |- + Terminates one or more virtual machines (VMs).
+ This operation is idempotent, that means that all calls succeed if you terminate a VM more than once. + operationId: DeleteVms + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteVmsRequest" + examples: + ex1: + value: + VmIds: + - i-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteVmsResponse" + examples: + ex1: + value: + Vms: + - VmId: i-12345678 + PreviousState: running + CurrentState: shutting-down + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - Vm + "/DeleteVolume": + post: + description: |- + Deletes a specified Block Storage Unit (BSU) volume.
+ You can delete available volumes only, that is, volumes that are not attached to a virtual machine (VM). + operationId: DeleteVolume + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteVolumeRequest" + examples: + ex1: + value: + VolumeId: vol-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteVolumeResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - Volume + "/DeleteVpnConnection": + post: + description: |- + Deletes a specified VPN connection.
+ If you want to delete a Net and all its dependencies, we recommend to detach the virtual gateway from the Net and delete the Net before deleting the VPN connection. This enables you to delete the Net without waiting for the VPN connection to be deleted. + operationId: DeleteVpnConnection + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteVpnConnectionRequest" + examples: + ex1: + value: + VpnConnectionId: vpn-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteVpnConnectionResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - VpnConnection + "/DeleteVpnConnectionRoute": + post: + description: Deletes a static route to a VPN connection previously created using + the CreateVpnConnectionRoute method. + operationId: DeleteVpnConnectionRoute + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteVpnConnectionRouteRequest" + examples: + ex1: + value: + VpnConnectionId: vpn-12345678 + DestinationIpRange: 10.0.0.0/16 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteVpnConnectionRouteResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - VpnConnection + "/DeregisterVmsInLoadBalancer": + post: + description: |- + > [WARNING]
+ > Deprecated: This call is deprecated and will be removed.
+ + Deregisters a specified virtual machine (VM) from a load balancer. + operationId: DeregisterVmsInLoadBalancer + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/DeregisterVmsInLoadBalancerRequest" + examples: + ex1: + value: + LoadBalancerName: example-lbu + BackendVmIds: + - i-12345678 + - i-87654321 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/DeregisterVmsInLoadBalancerResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - LoadBalancer + "/DisableOutscaleLogin": + post: + description: Disables the possibility of logging in using the Outscale credentials + of your root user when identity federation is activated. + operationId: DisableOutscaleLogin + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/DisableOutscaleLoginRequest" + examples: + ex1: + value: {} + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/DisableOutscaleLoginResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - IdentityProvider + "/DisableOutscaleLoginForUsers": + post: + description: Disables the possibility of logging in using the Outscale credentials + of your EIM users when identity federation is activated. + operationId: DisableOutscaleLoginForUsers + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/DisableOutscaleLoginRequest" + examples: + ex1: + value: {} + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/DisableOutscaleLoginResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - IdentityProvider + "/DisableOutscaleLoginPerUsers": + post: + description: Disables the possibility for one or more specific users to log + in using their Outscale credentials when identity federation is activated. + operationId: DisableOutscaleLoginPerUsers + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/DisableOutscaleLoginPerUsersRequest" + examples: + ex1: + value: + UserNames: + - example-user + - test-user + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/DisableOutscaleLoginPerUsersResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - IdentityProvider + "/EnableOutscaleLogin": + post: + description: Enables the possibility of logging in using the Outscale credentials + of your root user when identity federation is activated. + operationId: EnableOutscaleLogin + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/EnableOutscaleLoginRequest" + examples: + ex1: + value: {} + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/EnableOutscaleLoginResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - IdentityProvider + "/EnableOutscaleLoginForUsers": + post: + description: Enables the possibility for all your EIM users to log in using + their Outscale credentials when identity federation is activated. + operationId: EnableOutscaleLoginForUsers + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/EnableOutscaleLoginForUsersRequest" + examples: + ex1: + value: {} + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/EnableOutscaleLoginForUsersResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - IdentityProvider + "/EnableOutscaleLoginPerUsers": + post: + description: Enables the possibility for one or more specific users to log in + using their Outscale credentials when identity federation is activated. + operationId: EnableOutscaleLoginPerUsers + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/EnableOutscaleLoginPerUsersRequest" + examples: + ex1: + value: + UserNames: + - example-user + - test-user + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/EnableOutscaleLoginPerUsersResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - IdentityProvider + "/LinkFlexibleGpu": + post: + description: |- + Attaches one of your allocated flexible GPUs (fGPUs) to one of your virtual machines (VMs).
+ To complete the linking of the fGPU, you need to do a stop/start of the VM. A simple restart is not sufficient, as the linking of the fGPU is done when the VM goes through the `stopped` state. For the difference between stop/start and restart, see [About VM Lifecycle](https://docs.outscale.com/en/userguide/About-VM-Lifecycle.html).

+ + **[NOTE]**
+ You can attach fGPUs only to VMs with the `highest` (1) performance flag. For more information see [About Flexible GPUs](https://docs.outscale.com/en/userguide/About-Flexible-GPUs.html) and [VM Types](https://docs.outscale.com/en/userguide/VM-Types.html). + operationId: LinkFlexibleGpu + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/LinkFlexibleGpuRequest" + examples: + ex1: + value: + FlexibleGpuId: fgpu-12345678 + VmId: i-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/LinkFlexibleGpuResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - FlexibleGpu + "/LinkInternetService": + post: + description: |- + Attaches an internet service to a Net.
+ To enable the connection between the Internet and a Net, you must attach an internet service to this Net. + operationId: LinkInternetService + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/LinkInternetServiceRequest" + examples: + ex1: + value: + InternetServiceId: igw-12345678 + NetId: vpc-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/LinkInternetServiceResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - InternetService + "/LinkLoadBalancerBackendMachines": + post: + description: |- + Attaches one or more virtual machines (VMs) to a specified load balancer. You need to specify at least the `BackendIps` or the `BackendVmIds` parameter.
+ The VMs can be in different Subnets and different Subregions than the load balancer, as long as the VMs and load balancers are all in the public Cloud or all in the same Net. It may take a little time for a VM to be registered with the load balancer. Once the VM is registered with a load balancer, it receives traffic and requests from this load balancer and is called a backend VM. + operationId: LinkLoadBalancerBackendMachines + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/LinkLoadBalancerBackendMachinesRequest" + examples: + ex1: + summary: Linking VMs to a load balancer + value: + LoadBalancerName: example-lbu + BackendVmIds: + - i-12345678 + - i-87654321 + ex2: + summary: Linking public IPs to a load balancer + value: + LoadBalancerName: example-lbu + BackendIps: + - 192.0.2.0 + - 198.51.100.0 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/LinkLoadBalancerBackendMachinesResponse" + examples: + ex1: + summary: Linking VMs to a load balancer + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + ex2: + summary: Linking public IPs to a load balancer + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - LoadBalancer + "/LinkManagedPolicyToUserGroup": + post: + description: |- + Links a managed policy to a specific group. This policy applies to all the users contained in this group. +

+ + **[IMPORTANT]**
+ A delay of up to 15 seconds can occur when attaching, detaching, or updating a managed policy. + operationId: LinkManagedPolicyToUserGroup + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/LinkManagedPolicyToUserGroupRequest" + examples: + ex1: + value: + PolicyOrn: orn:ows:idauth::012345678910:policy/example/example-user-policy + UserGroupName: example-usergroup + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/LinkManagedPolicyToUserGroupResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - Policy + "/LinkNic": + post: + description: |- + Attaches a network interface card (NIC) to a virtual machine (VM).
+ The interface and the VM must be in the same Subregion. The VM can be either `running` or `stopped`. The NIC must be in the `available` state. For more information, see [Attaching a NIC to a VM](https://docs.outscale.com/en/userguide/Attaching-a-NIC-to-a-VM.html). + operationId: LinkNic + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/LinkNicRequest" + examples: + ex1: + value: + NicId: eni-12345678 + VmId: i-12345678 + DeviceNumber: 1 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/LinkNicResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + LinkNicId: eni-attach-12345678 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - Nic + "/LinkPolicy": + post: + description: |- + Links a managed policy to a specific user. +

+ + **[IMPORTANT]**
+ A delay of up to 15 seconds can occur when attaching, detaching, or updating a managed policy. + operationId: LinkPolicy + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/LinkPolicyRequest" + examples: + ex1: + value: + PolicyOrn: orn:ows:idauth::012345678910:policy/example/example-user-policy + UserName: example-user + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/LinkPolicyResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - Policy + "/LinkPrivateIps": + post: + description: Assigns one or more secondary private IPs to a specified network + interface card (NIC). This action is only available in a Net. The private + IPs to be assigned can be added individually using the `PrivateIps` parameter, + or you can specify the number of private IPs to be automatically chosen within + the Subnet range using the `SecondaryPrivateIpCount` parameter. You can specify + only one of these two parameters. If none of these parameters are specified, + a private IP is chosen within the Subnet range. + operationId: LinkPrivateIps + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/LinkPrivateIpsRequest" + examples: + ex1: + summary: Linking specific secondary private IPs to a NIC + value: + NicId: eni-12345678 + PrivateIps: + - 10.0.0.6 + - 10.0.0.7 + ex2: + summary: Linking a number of random secondary private IPs to a NIC + value: + NicId: eni-12345678 + SecondaryPrivateIpCount: 3 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/LinkPrivateIpsResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - Nic + "/LinkPublicIp": + post: + description: |- + Associates a public IP with a virtual machine (VM) or a network interface card (NIC), in the public Cloud or in a Net. You can associate a public IP with only one VM or network interface at a time.
+ To associate a public IP in a Net, ensure that the Net has an internet service attached. For more information, see the [LinkInternetService](#linkinternetservice) method.
+ By default, the public IP is disassociated every time you stop and start the VM. For a persistent association, you can add the `osc.fcu.eip.auto-attach` tag to the VM with the public IP as value. For more information, see the [CreateTags](#createtags) method.

+ + **[IMPORTANT]**
+ You can associate a public IP with a network address translation (NAT) service only when creating the NAT service. To modify its public IP, you need to delete the NAT service and re-create it with the new public IP. For more information, see the [CreateNatService](#createnatservice) method. + operationId: LinkPublicIp + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/LinkPublicIpRequest" + examples: + ex1: + summary: Linking a public IP to a VM + value: + PublicIp: 192.0.2.0 + VmId: i-12345678 + ex2: + summary: Linking a public IP to a NIC + value: + PublicIp: 192.0.2.0 + NicId: eni-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/LinkPublicIpResponse" + examples: + ex1: + summary: Linking a public IP to a VM + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + LinkPublicIpId: eipassoc-12345678 + ex2: + summary: Linking a public IP to a NIC + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + LinkPublicIpId: eipassoc-12345678 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - PublicIp + "/LinkRouteTable": + post: + description: |- + Associates a Subnet with a route table.
+ The Subnet and the route table must be in the same Net. The traffic is routed according to the route table defined within this Net. You can associate a route table with several Subnets. + operationId: LinkRouteTable + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/LinkRouteTableRequest" + examples: + ex1: + value: + RouteTableId: rtb-12345678 + SubnetId: subnet-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/LinkRouteTableResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + LinkRouteTableId: rtbassoc-12345678 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - RouteTable + "/LinkVirtualGateway": + post: + description: |- + Attaches a virtual gateway to a Net. + + **[IMPORTANT]**
+ This action can be done only if the virtual gateway is in the `available` state. + operationId: LinkVirtualGateway + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/LinkVirtualGatewayRequest" + examples: + ex1: + value: + VirtualGatewayId: vgw-12345678 + NetId: vpc-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/LinkVirtualGatewayResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + NetToVirtualGatewayLink: + State: attached + NetId: vpc-12345678 + description: The HTTP 200 response (OK). + tags: + - VirtualGateway + "/LinkVolume": + post: + description: |- + Attaches a Block Storage Unit (BSU) volume to a virtual machine (VM).
+ The volume and the VM must be in the same Subregion. The VM can be running or stopped. The volume is attached to the specified VM device. + operationId: LinkVolume + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/LinkVolumeRequest" + examples: + ex1: + value: + VolumeId: vol-12345678 + VmId: i-12345678 + DeviceName: "/dev/sdb" + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/LinkVolumeResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - Volume + "/PutUserGroupPolicy": + post: + description: |- + Creates or updates an inline policy included in a specified group.
+ The policy is automatically applied to all the users of the group after its creation. +

+ + **[IMPORTANT]**
+ A delay of up to 15 seconds can occur when creating or deleting an inline policy. + operationId: PutUserGroupPolicy + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/PutUserGroupPolicyRequest" + examples: + ex1: + value: + PolicyDocument: '{"Statement": [ {"Effect": "Allow", "Action": ["*"], + "Resource": ["*"]} ]}' + PolicyName: example-usergroup-policy + UserGroupName: example-usergroup + UserGroupPath: "/example/" + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/PutUserGroupPolicyResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - Policy + "/PutUserPolicy": + post: + description: |- + Creates or updates an inline policy included in a specified user.
+ The policy is automatically applied to the user after its creation. +

+ + **[IMPORTANT]**
+ A delay of up to 15 seconds can occur when creating or deleting an inline policy. + operationId: PutUserPolicy + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/PutUserPolicyRequest" + examples: + ex1: + value: + PolicyDocument: '{"Statement": [ {"Effect": "Allow", "Action": ["*"], + "Resource": ["*"]} ]}' + PolicyName: example-user-policy + UserName: example-user + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/PutUserPolicyResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - Policy + "/ReadAccessKeys": + post: + description: Lists the access key IDs of either your root user or an EIM user. + operationId: ReadAccessKeys + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadAccessKeysRequest" + examples: + ex1: + value: + Filters: + States: + - ACTIVE + Tag: Group1 + UserName: example-user + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadAccessKeysResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + AccessKeys: + - State: ACTIVE + AccessKeyId: ABCDEFGHIJ0123456789 + CreationDate: 2010-10-01 12:34:56.789000000 +00:00 + ExpirationDate: 2063-04-05 00:00:00.000000000 +00:00 + LastModificationDate: 2010-10-01 12:34:56.789000000 +00:00 + Tag: Group1 + description: The HTTP 200 response (OK). + security: + - ApiKeyAuthSec: [] + - BasicAuth: [] + tags: + - AccessKey + "/ReadAccounts": + post: + description: Gets information about the account that sent the request. + operationId: ReadAccounts + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadAccountsRequest" + examples: + ex1: + value: {} + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadAccountsResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + Accounts: + - ZipCode: '92210' + CompanyName: EXAMPLE SAS + FirstName: JEAN + City: SAINT-CLOUD + Country: FRANCE + LastName: DUPONT + AccountId: '123456789012' + CustomerId: '87654321' + Email: example@example.com + description: The HTTP 200 response (OK). + tags: + - Account + "/ReadAdminPassword": + post: + description: |- + Gets the administrator password for a Windows running virtual machine (VM).
+ The administrator password is encrypted using the keypair you specified when launching the VM.

+ + **[IMPORTANT]**
+ * Only RSA keypairs can decrypt the password of a Windows VM.
+ * The administrator password is generated only on the first boot of the Windows VM. It is not returned after the first boot. + operationId: ReadAdminPassword + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadAdminPasswordRequest" + examples: + ex1: + value: + VmId: i-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadAdminPasswordResponse" + examples: + ex1: + value: + VmId: i-12345678 + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + AdminPassword: "..." + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - Vm + "/ReadApiAccessPolicy": + post: + description: |- + Gets information about the API access policy of your OUTSCALE account.

+ For more information, see [About Your API Access Policy](https://docs.outscale.com/en/userguide/About-Your-API-Access-Policy.html). + operationId: ReadApiAccessPolicy + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadApiAccessPolicyRequest" + examples: + ex1: + value: {} + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadApiAccessPolicyResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + ApiAccessPolicy: + RequireTrustedEnv: false + MaxAccessKeyExpirationSeconds: 0 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + security: + - ApiKeyAuthSec: [] + - BasicAuth: [] + tags: + - ApiAccessPolicy + "/ReadApiAccessRules": + post: + description: Lists one or more API access rules. + operationId: ReadApiAccessRules + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadApiAccessRulesRequest" + examples: + ex1: + value: + Filters: + ApiAccessRuleIds: + - aar-1234567890abcdef1234567890abcdef + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadApiAccessRulesResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + ApiAccessRules: + - IpRanges: + - 0.0.0.0/0 + ApiAccessRuleId: aar-1234567890abcdef1234567890abcdef + CaIds: [] + Cns: [] + Description: Allows all IPv4 domain + description: The HTTP 200 response (OK). + security: + - ApiKeyAuthSec: [] + - BasicAuth: [] + tags: + - ApiAccessRule + "/ReadApiLogs": + post: + description: |- + Lists the logs of the API calls you have performed with this OUTSCALE account. + + **[IMPORTANT]**
+ Past logs are accessible for up to 32 days.
+ By default, the retrieved interval is 48 hours. If neither of the `QueryDateBefore` nor `QueryDateAfter` parameters are specified, logs from the past 48 hours are retrieved. If you only specify one of two, logs are retrieved from a 2-day interval based on the date you provided. To retrieve logs beyond a 2-day interval, specify both parameters.

+ For more information, see [About OMS](https://docs.outscale.com/en/userguide/About-OMS.html). + operationId: ReadApiLogs + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadApiLogsRequest" + examples: + ex1: + value: + Filters: + QueryIpAddresses: + - 192.0.2.0 + - 198.51.100.0 + QueryDateAfter: '2017-05-10' + QueryDateBefore: '2017-05-10' + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadApiLogsResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + Logs: + - ResponseStatusCode: 200 + ResponseSize: 1887 + QueryPayloadRaw: "{}" + QueryApiName: oapi + QueryIpAddress: 192.0.2.0 + QueryUserAgent: oAPI CLI v0.1 - 2018-09-28 + CallDuration: 47 + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + QueryApiVersion: '1.27' + AccountId: '123456789012' + QueryPayloadSize: 2 + QueryCallName: ReadAccessKeys + QueryAccessKey: ABCDEFGHIJ0123456789 + QueryHeaderSize: 287 + QueryDate: '2017-05-10T12:34:56.789Z' + QueryHeaderRaw: 'Host: api.eu-west-2.outscale.com\nAccept: */*\nConnection: + close\nUser-Agent: oAPI CLI v0.1 - 2018-09-28\nX-Osc-Date: + 20170510T000000Z\nContent-Type: application/json; charset=utf-8\nAuthorization: + *****\nContent-Length: 2\nAccept-Encoding: gzip, deflate\nX-Forwarded-For: + 192.0.2.0' + description: The HTTP 200 response (OK). + tags: + - ApiLog + "/ReadCO2EmissionAccount": + post: + description: Gets information about the estimated carbon footprint of your account + for the current Region within the specified time period. + operationId: ReadCO2EmissionAccount + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadCO2EmissionAccountRequest" + examples: + ex1: + value: + FromMonth: '2025-05-01' + ToMonth: '2025-06-01' + Overall: true + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadCO2EmissionAccountResponse" + examples: + ex1: + value: + Unit: KG + Value: 2.469 + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + CO2EmissionEntries: + - Value: 2.469 + AccountId: '123456789012' + CategoryDistribution: + - Value: 1.2345 + Category: compute + Month: '2025-05-01' + PayingAccountId: '123456789012' + FactorDistribution: + - Value: 1.2345 + Factor: electricity + description: The HTTP 200 response (OK). + tags: + - Account + "/ReadCas": + post: + description: Gets information about one or more of your Client Certificate Authorities + (CAs). + operationId: ReadCas + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadCasRequest" + examples: + ex1: + value: + Filters: + CaIds: + - ca-fedcba0987654321fedcba0987654321 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadCasResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + Cas: + - Description: CA example + CaId: ca-fedcba0987654321fedcba0987654321 + CaFingerprint: 1234567890abcdef1234567890abcdef12345678 + description: The HTTP 200 response (OK). + security: + - ApiKeyAuthSec: [] + - BasicAuth: [] + tags: + - Ca + "/ReadCatalog": + post: + description: Returns the price list of OUTSCALE services for the current Region. + operationId: ReadCatalog + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadCatalogRequest" + examples: + ex1: + value: {} + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadCatalogResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + Catalog: + Entries: + - UnitPrice: 0.04 + Type: CustomCore:v5-p1 + Title: Instance - On demand - Unite de vCore pour une instance + Tina v5 CxRy Performance highest - par heure + SubregionName: eu-west-2 + Category: compute + Service: TinaOS-FCU + Operation: RunInstances-OD + description: The HTTP 200 response (OK). + tags: + - Catalog + "/ReadCatalogs": + post: + description: Returns the price list of OUTSCALE services for the current Region + within a specific time period. + operationId: ReadCatalogs + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadCatalogsRequest" + examples: + ex1: + value: + Filters: + CurrentCatalogOnly: true + FromDate: '2021-01-01' + ToDate: '2023-01-01' + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadCatalogsResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + Catalogs: + - State: CURRENT + FromDate: 2021-01-01 00:00:00.000000000 +00:00 + Entries: + - UnitPrice: 0.04 + Type: CustomCore:v5-p1 + Title: Instance - On demand - Unite de vCore pour une instance + Tina v5 CxRy Performance highest - par heure + SubregionName: eu-west-2 + Category: compute + Service: TinaOS-FCU + Operation: RunInstances-OD + description: The HTTP 200 response (OK). + tags: + - Catalog + "/ReadClientGateways": + post: + description: Lists one or more of your client gateways. + operationId: ReadClientGateways + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadClientGatewaysRequest" + examples: + ex1: + value: + Filters: + ClientGatewayIds: + - cgw-12345678 + ex2: + value: + Filters: + BgpAsns: + - 65000 + PublicIps: + - 192.0.2.0 + - 198.51.100.0 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadClientGatewaysResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + ClientGateways: + - State: available + BgpAsn: 65000 + Tags: [] + ClientGatewayId: cgw-12345678 + ConnectionType: ipsec.1 + PublicIp: 192.0.2.0 + description: The HTTP 200 response (OK). + tags: + - ClientGateway + "/ReadConsoleOutput": + post: + description: |- + Gets the console output for a virtual machine (VM). This console is not in real-time. It is refreshed every two seconds and provides the most recent 64 KiB output.

+ + **[IMPORTANT]**
+ On Windows VMs, the console is handled only on the first boot. It returns no output after the first boot. + operationId: ReadConsoleOutput + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadConsoleOutputRequest" + examples: + ex1: + value: + VmId: i-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadConsoleOutputResponse" + examples: + ex1: + value: + VmId: i-12345678 + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + ConsoleOutput: "..." + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - Vm + "/ReadConsumptionAccount": + post: + description: Gets information about the consumption of your OUTSCALE account + for each billable resource within the specified time period. + operationId: ReadConsumptionAccount + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadConsumptionAccountRequest" + examples: + ex1: + value: + FromDate: '2023-06-01' + ToDate: '2023-07-01' + ShowPrice: false + ShowResourceDetails: false + ex2: + value: + FromDate: '2023-06-01' + ToDate: '2023-07-01' + ShowPrice: true + ShowResourceDetails: true + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadConsumptionAccountResponse" + examples: + ex1: + summary: ReadConsumptionAccount with ShowPrice and ShowResourceDetails + at false + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + ConsumptionEntries: + - UnitPrice: 0.18 + Type: BoxUsage:tinav5.c4r8p2 + - FromDate: 2023-06-01 00:00:00.000000000 +00:00 + SubregionName: eu-west-2a + Value: 1488 + Title: Instance - On demand - tinav5.c4r8 high performance - + par heure + Category: compute + ToDate: 2023-06-30 00:00:00.000000000 +00:00 + Service: TinaOS-FCU + AccountId: '123456789012' + PayingAccountId: '123456789012' + Operation: RunInstances-OD + Type: BoxUsage:tinav5.c4r8p2 + ex2: + summary: ReadConsumptionAccount with ShowPrice and ShowResourceDetails + at true + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + Currency: EUR + ConsumptionEntries: + - FromDate: 2023-06-01 00:00:00.000000000 +00:00 + SubregionName: eu-west-2a + Value: 720 + Title: Instance - On demand - tinav5.c4r8 high performance - + par heure + Category: compute + ToDate: 2023-06-30 00:00:00.000000000 +00:00 + Service: TinaOS-FCU + AccountId: '123456789012' + PayingAccountId: '123456789012' + Operation: RunInstances-OD + Type: BoxUsage:tinav5.c4r8p2 + UnitPrice: 0.18 + Price: 267.84 + ResourceId: i-12345678 + - FromDate: 2023-06-01 00:00:00.000000000 +00:00 + SubregionName: eu-west-2a + Value: 1488 + Title: Instance - On demand - tinav5.c4r8p2 high performance + - par heure + Category: compute + ToDate: 2023-06-30 00:00:00.000000000 +00:00 + Service: TinaOS-FCU + AccountId: '123456789012' + PayingAccountId: '123456789012' + Operation: RunInstances-OD + Type: BoxUsage:tinav5.c4r8p2 + UnitPrice: 0.18 + Price: 267.84 + ResourceId: i-87654321 + description: The HTTP 200 response (OK). + tags: + - Account + "/ReadDedicatedGroups": + post: + description: List one or more dedicated groups of virtual machines (VMs). + operationId: ReadDedicatedGroups + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadDedicatedGroupsRequest" + examples: + ex1: + summary: Filtering on a specific dedicated group + value: + Filters: + DedicatedGroupIds: + - ded-12345678 + ex2: + summary: Filtering on a specific Subregion and CPU generation + value: + Filters: + SubregionNames: + - eu-west-2a + CpuGenerations: + - 4 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadDedicatedGroupsResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + DedicatedGroups: + - VmIds: + - i-12345678 + NetIds: [] + AccountId: '123456789012' + CpuGeneration: 4 + Name: dedicated-group-example + SubregionName: eu-west-2a + DedicatedGroupId: ded-12345678 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - DedicatedGroup + "/ReadDhcpOptions": + post: + description: Gets information about the content of one or more DHCP options + sets. + operationId: ReadDhcpOptions + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadDhcpOptionsRequest" + examples: + ex1: + value: + Filters: + DhcpOptionsSetIds: + - dopt-12345678 + ex2: + value: + Filters: + DomainNameServers: + - 192.0.2.0 + - 198.51.100.0 + DomainNames: + - example.com + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadDhcpOptionsResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + DhcpOptionsSets: + - Tags: [] + NtpServers: + - 203.0.113.0 + - 203.0.113.1 + Default: false + DhcpOptionsSetId: dopt-12345678 + DomainName: example.com + DomainNameServers: + - 192.0.2.0 + - 198.51.100.0 + description: The HTTP 200 response (OK). + tags: + - DhcpOption + "/ReadDirectLinkInterfaces": + post: + description: Lists one or more of your DirectLink interfaces. + operationId: ReadDirectLinkInterfaces + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadDirectLinkInterfacesRequest" + examples: + ex1: + value: + Filters: + DirectLinkInterfaceIds: + - dxvif-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadDirectLinkInterfacesResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + DirectLinkInterfaces: + - Vlan: 101 + OutscalePrivateIp: 172.16.0.4/30 + DirectLinkInterfaceId: dxvif-12345678 + BgpAsn: 65000 + AccountId: '123456789012' + ClientPrivateIp: 172.16.0.5/30 + VirtualGatewayId: vgw-12345678 + DirectLinkInterfaceName: MyDirectLinkInterface + DirectLinkId: dxcon-12345678 + Mtu: 1500 + State: available + InterfaceType: private + Location: PAR1 + description: The HTTP 200 response (OK). + tags: + - DirectLinkInterface + "/ReadDirectLinks": + post: + description: Lists all DirectLinks in the Region. + operationId: ReadDirectLinks + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadDirectLinksRequest" + examples: + ex1: + value: + Filters: + DirectLinkIds: + - dxcon-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadDirectLinksResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + DirectLinks: + - AccountId: '123456789012' + Bandwidth: 1Gbps + DirectLinkId: dxcon-12345678 + DirectLinkName: Connection to Outscale + Location: PAR1 + RegionName: eu-west-2 + State: available + description: The HTTP 200 response (OK). + tags: + - DirectLink + "/ReadEntitiesLinkedToPolicy": + post: + description: Lists all entities (account, users, or user groups) linked to a + specific managed policy. + operationId: ReadEntitiesLinkedToPolicy + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadEntitiesLinkedToPolicyRequest" + examples: + ex1: + summary: Reading all entities linked to a specific policy + value: + PolicyOrn: orn:ows:idauth::012345678910:policy/example/example-user-policy + ResultsPerPage: 2 + ex2: + summary: Reading only users linked to a specific policy + value: + EntitiesType: + - USER + PolicyOrn: orn:ows:idauth::012345678910:policy/example/example-user-policy + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadEntitiesLinkedToPolicyResponse" + examples: + ex1: + summary: Reading all entities linked to a specific policy + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + PolicyEntities: + Users: + - Id: ABCDEFGHIJKLMNOPQRSTUVWXYZ12345 + Name: example-user + Orn: orn:ows:idauth::012345678910:user/example/user-example + Groups: + - Id: ug-12345678 + Name: example-usergroup + Orn: orn:ows:idauth::012345678910:usergroup/example/usergroup-example + HasMoreItems: true + ItemsCount: 3 + MaxResultsLimit: 100 + MaxResultsTruncated: false + ex2: + summary: Reading only users linked to a specific policy + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + PolicyEntities: + Users: + - Id: ABCDEFGHIJKLMNOPQRSTUVWXYZ12345 + Name: example-user + Orn: orn:ows:idauth::012345678910:user/example/user-example + description: The HTTP 200 response (OK). + tags: + - Policy + "/ReadFlexibleGpuCatalog": + post: + description: Lists all flexible GPUs available in the public catalog. + operationId: ReadFlexibleGpuCatalog + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadFlexibleGpuCatalogRequest" + examples: + ex1: + value: {} + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadFlexibleGpuCatalogResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + FlexibleGpuCatalog: + - VRam: 16000 + Generations: + - v5 + MaxCpu: 80 + MaxRam: 512 + ModelName: nvidia-p100 + description: The HTTP 200 response (OK). + security: [] + tags: + - FlexibleGpu + "/ReadFlexibleGpus": + post: + description: Lists one or more flexible GPUs (fGPUs) allocated to your OUTSCALE + account. + operationId: ReadFlexibleGpus + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadFlexibleGpusRequest" + examples: + ex1: + value: + Filters: + FlexibleGpuIds: + - fgpu-12345678 + ex2: + value: + Filters: + ModelNames: + - nvidia-p6 + - nvidia-p100 + States: + - attached + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadFlexibleGpusResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + FlexibleGpus: + - DeleteOnVmDeletion: true + FlexibleGpuId: fgpu-12345678 + Generation: v5 + ModelName: nvidia-p100 + State: attached + SubregionName: eu-west-2a + VmId: i-12345678 + Tags: [] + description: The HTTP 200 response (OK). + tags: + - FlexibleGpu + "/ReadImageExportTasks": + post: + description: Lists one or more image export tasks. + operationId: ReadImageExportTasks + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadImageExportTasksRequest" + examples: + ex1: + value: + Filters: + TaskIds: + - image-export-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadImageExportTasksResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + ImageExportTasks: + - Tags: [] + ImageId: ami-12345678 + TaskId: image-export-12345678 + Comment: Export of image ami-12345678 + OsuExport: + OsuPrefix: PREFIX/ami-12345678/ + OsuBucket: BUCKET + DiskImageFormat: qcow2 + State: pending/queued + Progress: 0 + description: The HTTP 200 response (OK). + tags: + - Image + "/ReadImages": + post: + description: Lists one or more OUTSCALE machine images (OMIs) you can use. + operationId: ReadImages + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadImagesRequest" + examples: + ex1: + summary: Reading a specific image + value: + Filters: + ImageIds: + - ami-12345678 + ex2: + summary: Reading Ubuntu and RockyLinux images created by Outscale + value: + Filters: + AccountAliases: + - Outscale + ImageNames: + - Ubuntu* + - RockyLinux* + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadImagesResponse" + examples: + ex1: + summary: Reading a specific image + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + Images: + - TpmMandatory: false + StateComment: {} + State: available + RootDeviceType: bsu + RootDeviceName: "/dev/sda1" + ProductCodes: + - '0001' + PermissionsToLaunch: + GlobalPermission: false + AccountIds: [] + AccountId: '123456789012' + Tags: [] + Description: '' + ImageId: ami-12345678 + BlockDeviceMappings: + - DeviceName: "/dev/sda1" + Bsu: + VolumeType: standard + DeleteOnVmDeletion: true + VolumeSize: 50 + SnapshotId: snap-12345678 + BootModes: + - legacy + ImageType: machine + CreationDate: '2010-10-01T12:34:56.789Z' + SecureBoot: false + FileLocation: 123456789012/create-image-example + Architecture: x86_64 + ImageName: create-image-example + ex2: + summary: Reading Ubuntu and RockyLinux images created by Outscale + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + Images: + - TpmMandatory: false + StateComment: {} + State: available + RootDeviceType: bsu + RootDeviceName: "/dev/sda1" + ProductCodes: + - '0001' + PermissionsToLaunch: + GlobalPermission: true + AccountIds: [] + AccountId: '123456789012' + Tags: [] + Description: '' + ImageId: ami-12345678 + BlockDeviceMappings: + - DeviceName: "/dev/sda1" + Bsu: + VolumeType: standard + DeleteOnVmDeletion: true + VolumeSize: 10 + SnapshotId: snap-12345678 + ImageType: machine + AccountAlias: Outscale + CreationDate: '2010-10-01T12:34:56.789Z' + FileLocation: Outscale/Ubuntu-2010.10.01-0 + Architecture: x86_64 + ImageName: Ubuntu-2010.10.01-0 + - TpmMandatory: false + StateComment: {} + State: available + RootDeviceType: bsu + RootDeviceName: "/dev/sda1" + ProductCodes: + - '0001' + PermissionsToLaunch: + GlobalPermission: true + AccountIds: [] + AccountId: '123456789012' + Tags: [] + Description: '' + ImageId: ami-12345678 + BlockDeviceMappings: + - DeviceName: "/dev/sda1" + Bsu: + VolumeType: standard + DeleteOnVmDeletion: true + VolumeSize: 10 + SnapshotId: snap-12345678 + ImageType: machine + AccountAlias: Outscale + CreationDate: '2010-10-01T12:34:56.789Z' + BootModes: + - legacy + SecureBoot: false + FileLocation: Outscale/RockyLinux-2010.10.01-0 + Architecture: x86_64 + ImageName: RockyLinux-2010.10.01-0 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - Image + "/ReadInternetServices": + post: + description: |- + Lists one or more of your internet services.
+ An internet service enables virtual machines (VMs) launched in a Net to connect to the Internet. It allows the routing of incoming and outgoing Internet traffic and management of public IPs. + operationId: ReadInternetServices + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadInternetServicesRequest" + examples: + ex1: + value: + Filters: + InternetServiceIds: + - igw-12345678 + ex2: + value: + Filters: + TagKeys: + - env + TagValues: + - prod + - test + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadInternetServicesResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + InternetServices: + - Tags: + - Value: prod + Key: env + State: available + NetId: vpc-12345678 + InternetServiceId: igw-12345678 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - InternetService + "/ReadKeypairs": + post: + description: Lists one or more of your keypairs. + operationId: ReadKeypairs + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadKeypairsRequest" + examples: + ex1: + value: + Filters: + KeypairNames: + - keypair-example + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadKeypairsResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + Keypairs: + - KeypairType: ssh-rsa + KeypairName: keypair-example + KeypairId: key-abcdef1234567890abcdef1234567890 + KeypairFingerprint: 11:22:33:44:55:66:77:88:99:00:aa:bb:cc:dd:ee:ff + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - Keypair + "/ReadLinkedPolicies": + post: + description: Lists the managed policies linked to a specified user. + operationId: ReadLinkedPolicies + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadLinkedPoliciesRequest" + examples: + ex1: + value: + Filters: + PathPrefix: "/example/" + FirstItem: 1 + ResultsPerPage: 30 + UserName: example-user + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadLinkedPoliciesResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + HasMoreItems: true + Policies: + - PolicyName: example-user-policy + CreationDate: 2010-10-01 12:34:56.789000000 +00:00 + LastModificationDate: 2010-10-01 12:34:56.789000000 +00:00 + Orn: orn:ows:idauth::012345678910:policy/example/example-user-policy + PolicyId: ABCDEFGHIJKLMNOPQRSTUVWXYZ01234 + MaxResultsLimit: 30 + MaxResultsTruncated: false + description: The HTTP 200 response (OK). + tags: + - Policy + "/ReadListenerRules": + post: + description: Lists one or more listener rules. By default, this action returns + the full list of listener rules for the OUTSCALE account. + operationId: ReadListenerRules + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadListenerRulesRequest" + examples: + ex1: + value: + Filters: + ListenerRuleNames: + - example-listener-rule + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadListenerRulesResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + ListenerRules: + - Priority: 10 + VmIds: + - i-12345678 + ListenerRuleName: example-listener-rule + Action: forward + ListenerId: 123456 + HostNamePattern: "*.example.com" + ListenerRuleId: 1234 + description: The HTTP 200 response (OK). + tags: + - Listener + "/ReadLoadBalancerTags": + post: + description: Lists the tags associated with one or more specified load balancers. + operationId: ReadLoadBalancerTags + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadLoadBalancerTagsRequest" + examples: + ex1: + value: + LoadBalancerNames: + - private-lb-example + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadLoadBalancerTagsResponse" + examples: + ex1: + value: + Tags: + - Value: value1 + LoadBalancerName: private-lb-example + Key: key1 + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - LoadBalancer + "/ReadLoadBalancers": + post: + description: Lists one or more load balancers and their attributes. + operationId: ReadLoadBalancers + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadLoadBalancersRequest" + examples: + ex1: + value: + Filters: + LoadBalancerNames: + - private* + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadLoadBalancersResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + LoadBalancers: + - Tags: [] + SourceSecurityGroup: + SecurityGroupName: security-group-example + SecurityGroupAccountId: '123456789012' + SecuredCookies: false + PublicIp: 192.0.2.0 + Subnets: + - subnet-12345678 + NetId: vpc-12345678 + BackendVmIds: [] + ApplicationStickyCookiePolicies: [] + SecurityGroups: + - sg-12345678 + LoadBalancerType: internet-facing + AccessLog: + PublicationInterval: 60 + IsEnabled: false + DnsName: private-lb-example.123456789.eu-west-2.lbu.outscale.com + HealthCheck: + UnhealthyThreshold: 2 + Timeout: 5 + CheckInterval: 30 + Protocol: TCP + HealthyThreshold: 10 + Port: 80 + LoadBalancerStickyCookiePolicies: [] + SubregionNames: + - eu-west-2a + Listeners: + - ServerCertificateId: orn:ows:idauth::012345678910:server-certificate/Certificate + BackendPort: 80 + BackendProtocol: HTTP + LoadBalancerPort: 443 + LoadBalancerProtocol: HTTPS + LoadBalancerName: private-lb-example + description: The HTTP 200 response (OK). + tags: + - LoadBalancer + "/ReadLocations": + post: + description: |- + Lists the locations, corresponding to datacenters, where you can set up a DirectLink.

+ For more information, see [About DirectLink](https://docs.outscale.com/en/userguide/About-DirectLink.html). + operationId: ReadLocations + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadLocationsRequest" + examples: + ex1: + value: {} + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadLocationsResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + Locations: + - Name: Telehouse 3, France + Code: PAR1 + - Name: Equinix Pantin, France + Code: PAR4 + description: The HTTP 200 response (OK). + security: [] + tags: + - Location + "/ReadManagedPoliciesLinkedToUserGroup": + post: + description: Lists the managed policies linked to a specified group. + operationId: ReadManagedPoliciesLinkedToUserGroup + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadManagedPoliciesLinkedToUserGroupRequest" + examples: + ex1: + value: + Filters: + PathPrefix: "/ex" + UserGroupIds: + - ug-12345678 + FirstItem: 1 + ResultsPerPage: 30 + UserGroupName: example-usergroup + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadManagedPoliciesLinkedToUserGroupResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + HasMoreItems: true + MaxResultsLimit: 30 + MaxResultsTruncated: true + Policies: + - CreationDate: '2010-10-01T12:34:56.789Z' + LastModificationDate: '2010-10-01T12:34:56.789Z' + Orn: orn:ows:idauth::012345678910:policy/example/example-user-policy + PolicyId: ABCDEFGHIJKLMNOPQRSTUVWXYZ01234 + PolicyName: example-policy + description: The HTTP 200 response (OK). + tags: + - Policy + "/ReadNatServices": + post: + description: Lists one or more network address translation (NAT) services. + operationId: ReadNatServices + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadNatServicesRequest" + examples: + ex1: + value: + Filters: + NatServiceIds: + - nat-12345678 + ex2: + value: + Filters: + NetIds: + - vpc-12345678 + - vpc-87654321 + SubnetIds: + - subnet-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadNatServicesResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + NatServices: + - Tags: [] + SubnetId: subnet-12345678 + NatServiceId: nat-12345678 + PublicIps: + - PublicIpId: eipalloc-12345678 + PublicIp: 192.0.2.0 + NetId: vpc-12345678 + State: available + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - NatService + "/ReadNetAccessPointServices": + post: + description: |- + Lists OUTSCALE services available to create Net access points.
+ For more information, see [CreateNetAccessPoint](#createnetaccesspoint). + operationId: ReadNetAccessPointServices + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadNetAccessPointServicesRequest" + examples: + ex1: + summary: Listing one or more services according to their service IDs + value: + Filters: + ServiceIds: + - pl-12345678 + - pl-87654321 + ex2: + summary: Listing one or more services according to their service names + value: + Filters: + ServiceNames: + - com.outscale.eu-west-2.api + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadNetAccessPointServicesResponse" + examples: + ex1: + summary: Listing one or more services according to their service + IDs + value: + Services: + - ServiceName: com.outscale.eu-west-2.api + ServiceId: pl-12345678 + IpRanges: + - 192.0.2.0 + - ServiceName: com.outscale.eu-west-2.oos + ServiceId: pl-87654321 + IpRanges: + - 198.51.100.0 + - 203.0.113.0 + - 203.0.113.1 + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + ex2: + summary: Listing one or more services according to their service + names + value: + Services: + - ServiceName: com.outscale.eu-west-2.api + ServiceId: pl-12345678 + IpRanges: + - 192.0.2.0 + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + security: [] + tags: + - NetAccessPoint + "/ReadNetAccessPoints": + post: + description: Lists one or more Net access points. + operationId: ReadNetAccessPoints + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadNetAccessPointsRequest" + examples: + ex1: + value: + Filters: + NetAccessPointIds: + - vpce-12345678 + ex2: + value: + Filters: + NetIds: + - vpc-12345678 + States: + - available + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadNetAccessPointsResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + NetAccessPoints: + - Tags: [] + NetAccessPointId: vpce-12345678 + RouteTableIds: + - rtb-12345678 + State: available + NetId: vpc-12345678 + ServiceName: com.outscale.eu-west-2.oos + description: The HTTP 200 response (OK). + tags: + - NetAccessPoint + "/ReadNetPeerings": + post: + description: Lists one or more peering connections between two Nets. + operationId: ReadNetPeerings + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadNetPeeringsRequest" + examples: + ex1: + value: + Filters: + NetPeeringIds: + - pcx-12345678 + ex2: + value: + Filters: + SourceNetNetIds: + - vpc-12345678 + StateNames: + - active + - pending-acceptance + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadNetPeeringsResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + NetPeerings: + - Tags: [] + State: + Name: active + Message: Active + AccepterNet: + NetId: vpc-12345678 + IpRange: 172.16.0.0/16 + AccountId: '123456789012' + SourceNet: + NetId: vpc-12345678 + IpRange: 10.0.0.0/16 + AccountId: '123456789012' + NetPeeringId: pcx-12345678 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - NetPeering + "/ReadNets": + post: + description: Lists one or more Nets. + operationId: ReadNets + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadNetsRequest" + examples: + ex1: + value: + Filters: + NetIds: + - vpc-12345678 + ex2: + value: + Filters: + States: + - available + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadNetsResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + Nets: + - Tags: [] + DhcpOptionsSetId: dopt-12345678 + IpRange: 10.0.0.0/16 + Tenancy: default + NetId: vpc-12345678 + State: available + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - Net + "/ReadNics": + post: + description: |- + Lists one or more network interface cards (NICs).
+ A NIC is a virtual network interface that you can attach to a virtual machine (VM) in a Net. + operationId: ReadNics + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadNicsRequest" + examples: + ex1: + value: + Filters: + NicIds: + - eni-12345678 + ex2: + value: + Filters: + LinkNicVmIds: + - i-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadNicsResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + Nics: + - SubregionName: eu-west-2a + SubnetId: subnet-12345678 + State: in-use + LinkNic: + VmId: i-12345678 + LinkNicId: eni-attach-12345678 + VmAccountId: '123456789012' + DeleteOnVmDeletion: false + DeviceNumber: 0 + State: attached + IsSourceDestChecked: true + PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal + Tags: [] + Description: Primary network interface + AccountId: '123456789012' + SecurityGroups: + - SecurityGroupName: security-group-example + SecurityGroupId: sg-12345678 + MacAddress: A1:B2:C3:D4:E5:F6 + NetId: vpc-12345678 + NicId: eni-12345678 + PrivateIps: + - PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal + PrivateIp: 10.0.0.4 + IsPrimary: true + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - Nic + "/ReadPolicies": + post: + description: Lists all the managed policies available for your OUTSCALE account. + operationId: ReadPolicies + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadPoliciesRequest" + examples: + ex1: + value: + Filters: + OnlyLinked: true + PathPrefix: "/" + Scope: OWS + FirstItem: 1 + ResultsPerPage: 30 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadPoliciesResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + HasMoreItems: true + Policies: + - ResourcesCount: 1 + PolicyName: example-user-policy + PolicyDefaultVersionId: v1 + Path: "/example/" + CreationDate: 2010-10-01 12:34:56.789000000 +00:00 + Description: Example of description + PolicyId: ABCDEFGHIJKLMNOPQRSTUVWXYZ01234 + Orn: orn:ows:idauth::012345678910:policy/example/example-user-policy + IsLinkable: true + LastModificationDate: 2010-10-01 12:34:56.789000000 +00:00 + MaxResultsLimit: 30 + MaxResultsTruncated: false + description: The HTTP 200 response (OK). + tags: + - Policy + "/ReadPolicy": + post: + description: Lists information about a specified managed policy. + operationId: ReadPolicy + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadPolicyRequest" + examples: + ex1: + value: + PolicyOrn: orn:ows:idauth::012345678910:policy/example/example-user-policy + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadPolicyResponse" + examples: + ex1: + value: + Policy: + ResourcesCount: 0 + PolicyName: example-user-policy + PolicyDefaultVersionId: v1 + Path: "/example/" + CreationDate: 2010-10-01 12:34:56.789000000 +00:00 + Description: Example of description + PolicyId: ABCDEFGHIJKLMNOPQRSTUVWXYZ01234 + Orn: orn:ows:idauth::012345678910:policy/example/example-user-policy + IsLinkable: true + LastModificationDate: 2010-10-01 12:34:56.789000000 +00:00 + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - Policy + "/ReadPolicyVersion": + post: + description: Lists information about a specified version of a managed policy. + operationId: ReadPolicyVersion + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadPolicyVersionRequest" + examples: + ex1: + value: + PolicyOrn: orn:ows:idauth::012345678910:policy/example/example-user-policy + VersionId: v1 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadPolicyVersionResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + PolicyVersion: + VersionId: v1 + DefaultVersion: true + CreationDate: 2010-10-01 12:34:56.789000000 +00:00 + Body: '{"Statement": [ {"Effect": "Allow", "Action": ["*"], + "Resource": ["*"]} ]}' + description: The HTTP 200 response (OK). + tags: + - Policy + "/ReadPolicyVersions": + post: + description: Lists information about all the policy versions of a specified + managed policy. + operationId: ReadPolicyVersions + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadPolicyVersionsRequest" + examples: + ex1: + value: + FirstItem: 1 + PolicyOrn: orn:ows:idauth::012345678910:policy/example/example-user-policy + ResultsPerPage: 30 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadPolicyVersionsResponse" + examples: + ex1: + value: + MaxResultsLimit: 30 + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + PolicyVersions: + - VersionId: v1 + DefaultVersion: true + CreationDate: 2010-10-01 12:34:56.789000000 +00:00 + Body: '{"Statement": [ {"Effect": "Allow", "Action": ["*"], + "Resource": ["*"]} ]}' + HasMoreItems: true + description: The HTTP 200 response (OK). + tags: + - Policy + "/ReadProductTypes": + post: + description: Lists one or more product types. + operationId: ReadProductTypes + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadProductTypesRequest" + examples: + ex1: + value: + Filters: + ProductTypeIds: + - '0001' + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadProductTypesResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + ProductTypes: + - ProductTypeId: '0001' + Description: Linux + description: The HTTP 200 response (OK). + security: [] + tags: + - ProductType + "/ReadPublicCatalog": + post: + description: Returns the price list of OUTSCALE products and services for the + Region specified in the endpoint of the request. For more information, see + [About Regions and Subregions](https://docs.outscale.com/en/userguide/About-Regions-and-Subregions.html). + operationId: ReadPublicCatalog + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadPublicCatalogRequest" + examples: + ex1: + value: {} + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadPublicCatalogResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + Catalog: + Entries: + - UnitPrice: 0.04 + Type: CustomCore:v5-p1 + Title: Instance - On demand - Unite de vCore pour une instance + Tina v5 CxRy Performance highest - par heure + SubregionName: eu-west-2 + Category: compute + Service: TinaOS-FCU + Operation: RunInstances-OD + description: The HTTP 200 response (OK). + security: [] + tags: + - PublicCatalog + "/ReadPublicIpRanges": + post: + description: Gets the public IPv4 addresses in CIDR notation for the Region + specified in the endpoint of the request. For more information, see [About + Regions and Subregions](https://docs.outscale.com/en/userguide/About-Regions-and-Subregions.html). + operationId: ReadPublicIpRanges + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadPublicIpRangesRequest" + examples: + ex1: + value: {} + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadPublicIpRangesResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + PublicIps: + - 198.51.100.0/24 + - 203.0.113.0/24 + description: The HTTP 200 response (OK). + security: [] + tags: + - PublicIp + "/ReadPublicIps": + post: + description: |- + Lists one or more public IPs allocated to your OUTSCALE account.
+ By default, this action returns information about all your public IPs: available or associated with a virtual machine (VM), a network interface card (NIC) or a NAT service. + operationId: ReadPublicIps + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadPublicIpsRequest" + examples: + ex1: + value: + Filters: + PublicIps: + - 192.0.2.0 + ex2: + value: + Filters: + VmIds: + - i-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadPublicIpsResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + PublicIps: + - VmId: i-12345678 + Tags: [] + PublicIpId: eipalloc-12345678 + PublicIp: 192.0.2.0 + LinkPublicIpId: eipassoc-12345678 + NicAccountId: '123456789012' + NicId: eni-12345678 + PrivateIp: 10.0.0.4 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - PublicIp + "/ReadQuotas": + post: + description: |- + Lists one or more of your quotas.

+ For more information, see [About Your Account](https://docs.outscale.com/en/userguide/About-Your-OUTSCALE-Account.html). + operationId: ReadQuotas + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadQuotasRequest" + examples: + ex1: + summary: Reading specific quota + value: + Filters: + QuotaNames: + - lb_limit + ex2: + summary: Reading collection of quotas + value: + Filters: + Collections: + - VPC + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadQuotasResponse" + examples: + ex1: + summary: Reading specific quota + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + QuotaTypes: + - Quotas: + - ShortDescription: Load Balancer Limit + QuotaCollection: LBU + AccountId: '123456789012' + Description: Maximum number of load balancers per region + MaxValue: 20 + UsedValue: 0 + Name: lb_limit + QuotaType: global + ex2: + summary: Reading collection of quotas + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + QuotaTypes: + - Quotas: + - ShortDescription: Example Limit + QuotaCollection: VPC + AccountId: '123456789012' + Description: Maximum number of examples + MaxValue: 5 + UsedValue: 0 + Name: example_limit + QuotaType: global + - Quotas: + - ShortDescription: Other Example Limit + QuotaCollection: VPC + AccountId: '123456789012' + Description: Maximum number of other examples + MaxValue: 50 + UsedValue: 1 + Name: other_example_limit + QuotaType: vpc-12345678 + description: The HTTP 200 response (OK). + tags: + - Quota + "/ReadRegions": + post: + description: |- + Lists one or more Regions of the OUTSCALE Cloud.

+ For more information, see [About Regions and Subregions](https://docs.outscale.com/en/userguide/About-Regions-and-Subregions.html). + operationId: ReadRegions + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadRegionsRequest" + examples: + ex1: + value: {} + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadRegionsResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + Regions: + - RegionName: eu-west-2 + Endpoint: api.eu-west-2.outscale.com + - RegionName: us-east-2 + Endpoint: api.us-east-2.outscale.com + - RegionName: us-west-1 + Endpoint: api.us-west-1.outscale.com + description: The HTTP 200 response (OK). + security: [] + tags: + - Region + "/ReadRouteTables": + post: + description: |- + Lists one or more of your route tables.
+ In your Net, each Subnet must be associated with a route table. If a Subnet is not explicitly associated with a route table, it is implicitly associated with the main route table of the Net. + operationId: ReadRouteTables + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadRouteTablesRequest" + examples: + ex1: + value: + Filters: + RouteTableIds: + - rtb-12345678 + ex2: + value: + Filters: + NetIds: + - vpc-12345678 + - vpc-87654321 + LinkRouteTableMain: true + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadRouteTablesResponse" + examples: + ex1: + value: + RouteTables: + - Routes: + - DestinationIpRange: 10.0.0.0/16 + CreationMethod: CreateRouteTable + State: active + LinkRouteTables: + - Main: true + LinkRouteTableId: rtbassoc-12345678 + RouteTableId: rtb-12345678 + NetId: vpc-12345678 + NetId: vpc-12345678 + Tags: [] + RoutePropagatingVirtualGateways: [] + RouteTableId: rtb-12345678 + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - RouteTable + "/ReadSecurityGroups": + post: + description: |- + Lists one or more security groups.
+ You can specify either the name of the security groups or their IDs. + operationId: ReadSecurityGroups + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadSecurityGroupsRequest" + examples: + ex1: + value: + Filters: + SecurityGroupIds: + - sg-12345678 + ex2: + value: + Filters: + InboundRuleIpRanges: + - 192.0.2.0 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadSecurityGroupsResponse" + examples: + ex1: + value: + SecurityGroups: + - Tags: [] + SecurityGroupName: security-group-example + OutboundRules: + - FromPortRange: -1 + IpProtocol: "-1" + ToPortRange: -1 + IpRanges: + - 0.0.0.0/0 + SecurityGroupId: sg-12345678 + AccountId: '123456789012' + Description: Example of security group + InboundRules: + - FromPortRange: 22 + IpProtocol: tcp + ToPortRange: 22 + IpRanges: + - 192.0.2.0 + - 198.51.100.0 + NetId: vpc-12345678 + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - SecurityGroup + "/ReadServerCertificates": + post: + description: Lists your server certificates. + operationId: ReadServerCertificates + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadServerCertificatesRequest" + examples: + ex1: + value: + Filters: + Paths: + - "/example/" + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadServerCertificatesResponse" + examples: + ex1: + value: + ServerCertificates: + - Path: "/example/" + Id: ABCDEFGHIJKLMNOPQRSTUVWXYZ1234 + Orn: orn:ows:idauth::012345678910:server-certificate/example/server-cert-example + Name: server-cert-example + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - ServerCertificate + "/ReadSnapshotExportTasks": + post: + description: Lists one or more snapshot export tasks. + operationId: ReadSnapshotExportTasks + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadSnapshotExportTasksRequest" + examples: + ex1: + value: + Filters: + TaskIds: + - snap-export-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadSnapshotExportTasksResponse" + examples: + ex1: + value: + SnapshotExportTasks: + - Tags: [] + TaskId: snap-export-12345678 + Comment: Export of snapshot snap-12345678 + OsuExport: + OsuPrefix: PREFIX + OsuBucket: BUCKET + DiskImageFormat: qcow2 + State: pending + SnapshotId: snap-12345678 + Progress: 99 + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - Snapshot + "/ReadSnapshots": + post: + description: Lists one or more snapshots that are available to you and the permissions + to create volumes from them. + operationId: ReadSnapshots + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadSnapshotsRequest" + examples: + ex1: + value: + Filters: + SnapshotIds: + - snap-12345678 + ex2: + value: + Filters: + TagKeys: + - env + TagValues: + - prod + - test + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadSnapshotsResponse" + examples: + ex1: + value: + Snapshots: + - VolumeSize: 10 + AccountId: '123456789012' + VolumeId: vol-12345678 + CreationDate: '2010-10-01T12:34:56.789Z' + PermissionsToCreateVolume: + GlobalPermission: false + AccountIds: [] + Progress: 100 + SnapshotId: snap-12345678 + State: completed + Description: Snapshot created from a volume + Tags: [] + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + ex2: + value: + Snapshots: + - VolumeSize: 10 + AccountId: '123456789012' + VolumeId: vol-12345678 + CreationDate: '2010-10-01T12:34:56.789Z' + PermissionsToCreateVolume: + GlobalPermission: false + AccountIds: [] + Progress: 100 + SnapshotId: snap-12345678 + State: completed + Description: Test snapshot + Tags: + - Value: test + Key: env + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - Snapshot + "/ReadSubnets": + post: + description: |- + Lists one or more of your Subnets.
+ If you do not specify any Subnet ID, this action describes all of your Subnets. + operationId: ReadSubnets + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadSubnetsRequest" + examples: + ex1: + value: + Filters: + NetIds: + - vpc-12345678 + ex2: + value: + Filters: + States: + - available + - pending + SubregionNames: + - eu-west-2a + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadSubnetsResponse" + examples: + ex1: + value: + Subnets: + - Tags: [] + SubregionName: eu-west-2a + SubnetId: subnet-12345678 + AvailableIpsCount: 16379 + IpRange: 10.0.0.0/18 + MapPublicIpOnLaunch: false + State: available + NetId: vpc-12345678 + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - Subnet + "/ReadSubregions": + post: + description: |- + Lists one or more of the enabled Subregions that you can access in the current Region.

+ + For more information, see [About Regions and Subregions](https://docs.outscale.com/en/userguide/About-Regions-and-Subregions.html). + operationId: ReadSubregions + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadSubregionsRequest" + examples: + ex1: + summary: Listing a specific Subregion in the current Region + value: + Filters: + SubregionNames: + - eu-west-2a + ex2: + summary: Listing two specific Subregions in the current Region + value: + Filters: + SubregionNames: + - eu-west-2a + - eu-west-2b + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadSubregionsResponse" + examples: + ex1: + summary: Listing a specific Subregion in the current Region + value: + Subregions: + - State: available + RegionName: eu-west-2 + SubregionName: eu-west-2a + LocationCode: PAR1 + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + ex2: + summary: Listing two specific Subregions in the current Region + value: + Subregions: + - State: available + RegionName: eu-west-2 + SubregionName: eu-west-2a + LocationCode: PAR1 + - State: available + RegionName: eu-west-2 + SubregionName: eu-west-2b + LocationCode: PAR4 + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - Subregion + "/ReadTags": + post: + description: Lists one or more tags for your resources. + operationId: ReadTags + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadTagsRequest" + examples: + ex1: + value: + Filters: + ResourceTypes: + - snapshot + Keys: + - key1 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadTagsResponse" + examples: + ex1: + value: + Tags: + - Value: value1 + ResourceType: snapshot + ResourceId: snap-12345678 + Key: key1 + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - Tag + "/ReadUnitPrice": + post: + description: Gets unit price information for the specified parameters. + operationId: ReadUnitPrice + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadUnitPriceRequest" + examples: + ex1: + value: + Operation: CreateVolume + Service: TinaOS-FCU + Type: BSU:VolumeIOPS:io1 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadUnitPriceResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + UnitPriceEntry: + UnitPrice: 0.01 + Unit: PER_IOPS_PER_MONTH + Currency: EUR + Operation: CreateVolume + Type: BSU:VolumeIOPS:io1 + Service: TinaOS-FCU + description: The HTTP 200 response (OK). + tags: + - Catalog + "/ReadUserGroup": + post: + description: Lists information about a specified user group, including its users. + operationId: ReadUserGroup + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadUserGroupRequest" + examples: + ex1: + value: + Path: "/example/" + UserGroupName: example-usergroup + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadUserGroupResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + UserGroup: + CreationDate: '2010-10-01T12:34:56.789Z' + LastModificationDate: '2010-10-01T12:34:56.789Z' + Name: example-usergroup + Orn: orn:ows:idauth::012345678910:usergroup/example/usergroup-example + Path: "/example/" + UserGroupId: ug-12345678 + Users: + - CreationDate: '2010-10-01T12:34:56.789Z' + LastModificationDate: '2010-10-01T12:34:56.789Z' + Path: "/example/" + UserEmail: user@example.com + UserId: ABCDEFGHIJKLMNOPQRSTUVWXYZ12345 + UserName: example-user + description: The HTTP 200 response (OK). + tags: + - UserGroup + "/ReadUserGroupPolicies": + post: + description: Lists the names of the inline policies embedded in a specific group. + operationId: ReadUserGroupPolicies + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadUserGroupPoliciesRequest" + examples: + ex1: + value: + FirstItem: 1 + ResultsPerPage: 30 + UserGroupName: example-usergroup + UserGroupPath: "/example/" + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadUserGroupPoliciesResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + HasMoreItems: true + MaxResultsLimit: 30 + MaxResultsTruncated: true + Policies: + - Body: '{"Statement": [ {"Effect": "Allow", "Action": ["*"], + "Resource": ["*"]} ]}' + Name: example-policy + description: The HTTP 200 response (OK). + tags: + - Policy + "/ReadUserGroupPolicy": + post: + description: Returns information about an inline policy included in a specified + group. + operationId: ReadUserGroupPolicy + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadUserGroupPolicyRequest" + examples: + ex1: + value: + PolicyName: example-policy + UserGroupName: example-usergroup + UserGroupPath: "/example/" + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadUserGroupPolicyResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + Policy: + Body: '{"Statement": [ {"Effect": "Allow", "Action": ["*"], + "Resource": ["*"]} ]}' + Name: example-policy + description: The HTTP 200 response (OK). + tags: + - Policy + "/ReadUserGroups": + post: + description: |- + Lists all the user groups of the OUTSCALE account.
+ The response can be filtered using either the PathPrefix or the UserGroupIds. + operationId: ReadUserGroups + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadUserGroupsRequest" + examples: + ex1: + value: + Filters: + PathPrefix: "/ex" + UserGroupIds: + - ug-12345678 + FirstItem: 1 + ResultsPerPage: 30 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadUserGroupsResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + HasMoreItems: true + MaxResultsLimit: 30 + MaxResultsTruncated: true + UserGroups: + - CreationDate: '2010-10-01T12:34:56.789Z' + LastModificationDate: '2010-10-01T12:34:56.789Z' + Name: example-usergroup + Orn: orn:ows:idauth::012345678910:usergroup/example/usergroup-example + Path: "/example/" + UserGroupId: ug-12345678 + description: The HTTP 200 response (OK). + tags: + - UserGroup + "/ReadUserGroupsPerUser": + post: + description: Lists the groups a specified user belongs to. + operationId: ReadUserGroupsPerUser + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadUserGroupsPerUserRequest" + examples: + ex1: + value: + UserName: example-user + UserPath: "/example/" + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadUserGroupsPerUserResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + UserGroups: + - CreationDate: '2010-10-01T12:34:56.789Z' + LastModificationDate: '2010-10-01T12:34:56.789Z' + Name: example-usergroup + Orn: orn:ows:idauth::012345678910:usergroup/example/usergroup-example + Path: "/example/" + UserGroupId: ug-12345678 + description: The HTTP 200 response (OK). + tags: + - UserGroup + "/ReadUserPolicies": + post: + description: Lists the names of inline policies included in a specified user. + operationId: ReadUserPolicies + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadUserPoliciesRequest" + examples: + ex1: + value: + UserName: example-user + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadUserPoliciesResponse" + examples: + ex1: + value: + PolicyNames: + - example-policy + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - Policy + "/ReadUserPolicy": + post: + description: Returns information about an inline policy included in a specified + user. + operationId: ReadUserPolicy + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadUserPolicyRequest" + examples: + ex1: + value: + UserName: example-user + PolicyName: example-user-policy + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadUserPolicyResponse" + examples: + ex1: + value: + PolicyDocument: '{"Statement": [ {"Effect": "Allow", "Action": + ["*"], "Resource": ["*"]} ]}' + PolicyName: example-user-policy + UserName: example-user + description: The HTTP 200 response (OK). + tags: + - Policy + "/ReadUsers": + post: + description: |- + Lists all EIM users in the OUTSCALE account.
+ The response can be filtered using the UserIds. + operationId: ReadUsers + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadUsersRequest" + examples: + ex1: + value: + Filters: + UserIds: + - ABCDEFGHIJKLMNOPQRSTUVWXYZ12345 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadUsersResponse" + examples: + ex1: + value: + Users: + - UserEmail: user@example.com + UserName: example-user + UserId: ABCDEFGHIJKLMNOPQRSTUVWXYZ12345 + Path: "/documentation/" + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - User + "/ReadVirtualGateways": + post: + description: Lists one or more virtual gateways. + operationId: ReadVirtualGateways + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadVirtualGatewaysRequest" + examples: + ex1: + value: + Filters: + VirtualGatewayIds: + - vgw-12345678 + ex2: + value: + Filters: + States: + - available + LinkStates: + - attached + - detached + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadVirtualGatewaysResponse" + examples: + ex1: + value: + VirtualGateways: + - VirtualGatewayId: vgw-12345678 + ConnectionType: ipsec.1 + NetToVirtualGatewayLinks: [] + State: available + Tags: [] + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + ex2: + value: + VirtualGateways: + - VirtualGatewayId: vgw-12345678 + ConnectionType: ipsec.1 + NetToVirtualGatewayLinks: + - State: attached + NetId: vpc-12345678 + State: available + Tags: [] + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - VirtualGateway + "/ReadVmGroups": + post: + description: |- + > [WARNING]
+ > This feature is currently under development and may not function properly.
+ + Lists one or more group of virtual machines (VMs). + operationId: ReadVmGroups + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadVmGroupsRequest" + examples: + ex1: + value: + Filters: + VmGroupIds: + - vmgroup-12345678901234567890123456789012 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadVmGroupsResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + VmGroups: + - SecurityGroupIds: + - sg-87654321 + VmIds: + - i-12345678 + CreationDate: 2010-10-01 12:34:56.789000000 +00:00 + VmCount: 1 + VmGroupName: ClusterLog-PPD01 + SubnetId: subnet-12345678 + PositioningStrategy: attract + State: available + VmGroupId: vmgroup-12345678901234567890123456789012 + Tags: + - Value: value1 + Key: key1 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - VmGroup + "/ReadVmTemplates": + post: + description: |- + > [WARNING]
+ > This feature is currently under development and may not function properly.
+ + Lists one or more virtual machine (VM) templates. + operationId: ReadVmTemplates + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadVmTemplatesRequest" + examples: + ex1: + value: + Filters: + VmTemplateNames: + - vmtemplate-example + ex2: + value: + Filters: + CpuCores: + - 2 + CpuGenerations: + - v4 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadVmTemplatesResponse" + examples: + ex1: + value: + VmTemplates: + - VmTemplateName: vmtemplate-example + CpuPerformance: high + CreationDate: 2010-10-01 12:34:56.789000000 +00:00 + CpuCores: 2 + Tags: [] + Description: '' + ImageId: ami-12345678 + CpuGeneration: v4 + VmTemplateId: vmtemplate-98765432109876543210987654321012 + Ram: 2 + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - VmTemplate + "/ReadVmTypes": + post: + description: Lists one or more predefined VM types. + operationId: ReadVmTypes + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadVmTypesRequest" + examples: + ex1: + value: + Filters: + VmTypeNames: + - t2.small + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadVmTypesResponse" + examples: + ex1: + value: + VmTypes: + - VolumeCount: 0 + VmTypeName: t2.small + BsuOptimized: false + MaxPrivateIps: 4 + MemorySize: 2 + VcoreCount: 1 + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + security: [] + tags: + - Vm + "/ReadVms": + post: + description: |- + Lists one or more of your virtual machines (VMs).
+ If you provide one or more VM IDs, this action returns a description for all of these VMs. If you do not provide any VM ID, this action returns a description for all of the VMs that belong to you. If you provide an invalid VM ID, an error is returned. If you provide the ID of a VM that does not belong to you, the description of this VM is not included in the response. The refresh interval for data returned by this action is one hour, meaning that a terminated VM may appear in the response. + operationId: ReadVms + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadVmsRequest" + examples: + ex1: + value: + Filters: + VmIds: + - i-12345678 + ex2: + value: + Filters: + TagKeys: + - env + TagValues: + - prod + - test + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadVmsResponse" + examples: + ex1: + value: + Vms: + - VmType: tinav5.c1r1p2 + VmInitiatedShutdownBehavior: stop + State: running + StateReason: '' + RootDeviceType: ebs + RootDeviceName: "/dev/sda1" + IsSourceDestChecked: true + KeypairName: keypair-example + ImageId: ami-12345678 + DeletionProtection: false + BootMode: legacy + Architecture: x86_64 + NestedVirtualization: false + BlockDeviceMappings: + - DeviceName: "/dev/sda1" + Bsu: + VolumeId: vol-12345678 + State: attached + LinkDate: '2010-10-01T12:34:56.789Z' + DeleteOnVmDeletion: true + VmId: i-12345678 + TpmEnabled: false + ReservationId: r-12345678 + Hypervisor: xen + Placement: + Tenancy: default + SubregionName: eu-west-2a + ProductCodes: + - '0001' + CreationDate: '2010-10-01T12:34:56.789Z' + UserData: '' + SubnetId: subnet-12345678 + PrivateIp: 10.0.0.4 + SecurityGroups: + - SecurityGroupName: security-group-example + SecurityGroupId: sg-12345678 + BsuOptimized: false + LaunchNumber: 0 + NetId: vpc-12345678 + Nics: + - SubnetId: subnet-12345678 + State: in-use + LinkNic: + State: attached + DeviceNumber: 0 + LinkNicId: eni-attach-12345678 + DeleteOnVmDeletion: true + IsSourceDestChecked: true + PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal + Description: Primary network interface + AccountId: '123456789012' + SecurityGroups: + - SecurityGroupName: security-group-example + SecurityGroupId: sg-12345678 + MacAddress: A1:B2:C3:D4:E5:F6 + NetId: vpc-12345678 + NicId: eni-12345678 + PrivateIps: + - PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal + PrivateIp: 10.0.0.4 + IsPrimary: true + Performance: high + Tags: + - Value: prod + Key: env + ActionsOnNextBoot: + SecureBoot: none + PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - Vm + "/ReadVmsHealth": + post: + description: Lists the state of one or more backend virtual machines (VMs) registered + with a specified load balancer. + operationId: ReadVmsHealth + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadVmsHealthRequest" + examples: + ex1: + value: + LoadBalancerName: example-lbu + BackendVmIds: + - i-12345678 + - i-87654321 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadVmsHealthResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + BackendVmHealth: + - VmId: i-12345678 + State: UP + - VmId: i-87654321 + StateReason: ELB + State: DOWN + Description: Instance registration is pending + description: The HTTP 200 response (OK). + tags: + - LoadBalancer + "/ReadVmsState": + post: + description: Lists the status of one or more virtual machines (VMs). + operationId: ReadVmsState + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadVmsStateRequest" + examples: + ex1: + value: + AllVms: true + ex2: + value: + Filters: + SubregionNames: + - eu-west-2a + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadVmsStateResponse" + examples: + ex1: + value: + VmStates: + - VmId: i-12345678 + VmState: running + SubregionName: eu-west-2a + MaintenanceEvents: [] + - VmId: i-87654321 + VmState: stopped + SubregionName: eu-west-2a + MaintenanceEvents: [] + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + ex2: + value: + VmStates: + - VmId: i-12345678 + VmState: running + SubregionName: eu-west-2a + MaintenanceEvents: [] + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - Vm + "/ReadVolumeUpdateTasks": + post: + description: Lists one or more specified tasks of volume update. + operationId: ReadVolumeUpdateTasks + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadVolumeUpdateTasksRequest" + examples: + ex1: + summary: Read a specific volume update task + value: + Filters: + TaskIds: + - vol-update-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadVolumeUpdateTasksResponse" + examples: + ex1: + summary: Read a specific volume update task + value: + VolumeUpdateTasks: + - VolumeUpdate: + Target: + Iops: 200 + Size: 50 + VolumeType: io1 + Origin: + Iops: 100 + Size: 25 + VolumeType: standard + Tags: [] + TaskId: vol-update-12345678 + Comment: Update of volume vol-12345678 + VolumeId: vol-12345678 + State: completed + Progress: 100 + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + summary: Lists one or more update tasks of volumes + tags: + - Volume + "/ReadVolumes": + post: + description: Lists one or more specified Block Storage Unit (BSU) volumes. + operationId: ReadVolumes + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadVolumesRequest" + examples: + ex1: + value: + Filters: + VolumeIds: + - vol-12345678 + ex2: + value: + Filters: + VolumeStates: + - in-use + VolumeTypes: + - gp2 + - io1 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadVolumesResponse" + examples: + ex1: + value: + Volumes: + - VolumeId: vol-12345678 + Tags: [] + VolumeType: gp2 + SubregionName: eu-west-2a + State: in-use + CreationDate: '2010-10-01T12:34:56.789Z' + Iops: 100 + LinkedVolumes: + - VolumeId: vol-12345678 + DeleteOnVmDeletion: false + DeviceName: "/dev/sdb" + State: attached + VmId: i-12345678 + Size: 10 + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - Volume + "/ReadVpnConnections": + post: + description: Lists one or more VPN connections. + operationId: ReadVpnConnections + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadVpnConnectionsRequest" + examples: + ex1: + value: + Filters: + VpnConnectionIds: + - vpn-12345678 + ex2: + value: + Filters: + ClientGatewayIds: + - cgw-12345678 + VirtualGatewayIds: + - vgw-12345678 + - vgw-87654321 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ReadVpnConnectionsResponse" + examples: + ex1: + value: + VpnConnections: + - Routes: [] + Tags: [] + ClientGatewayConfiguration: "..." + StaticRoutesOnly: true + VirtualGatewayId: vgw-12345678 + ConnectionType: ipsec.1 + ClientGatewayId: cgw-12345678 + State: pending + VgwTelemetries: + - StateDescription: IPSEC IS DOWN + AcceptedRouteCount: 0 + LastStateChangeDate: '2017-05-10T12:34:56.789Z' + OutsideIpAddress: 192.0.2.0 + VpnConnectionId: vpn-12345678 + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - VpnConnection + "/RebootVms": + post: + description: |- + Reboots one or more virtual machines (VMs).
+ This operation sends a reboot request to one or more specified VMs. This is an asynchronous action that queues this reboot request. This action only reboots VMs that are valid and that belong to you. + operationId: RebootVms + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/RebootVmsRequest" + examples: + ex1: + value: + VmIds: + - i-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/RebootVmsResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - Vm + "/RegisterVmsInLoadBalancer": + post: + description: |- + > [WARNING]
+ > Deprecated: This call is deprecated and will be removed.
+ + Registers one or more virtual machines (VMs) with a specified load balancer.
+ The VMs can be in different Subnets and different Subregions than the load balancer, as long as the VMs and load balancers are all in the public Cloud or all in the same Net. It may take a little time for a VM to be registered with the load balancer. Once the VM is registered with a load balancer, it receives traffic and requests from this load balancer and is called a backend VM. + operationId: RegisterVmsInLoadBalancer + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/RegisterVmsInLoadBalancerRequest" + examples: + ex1: + value: + LoadBalancerName: example-lbu + BackendVmIds: + - i-12345678 + - i-87654321 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/RegisterVmsInLoadBalancerResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - LoadBalancer + "/RejectNetPeering": + post: + description: |- + Rejects a Net peering request.
+ The Net peering must be in the `pending-acceptance` state to be rejected. The rejected Net peering is then in the `rejected` state. + operationId: RejectNetPeering + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/RejectNetPeeringRequest" + examples: + ex1: + value: + NetPeeringId: pcx-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/RejectNetPeeringResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '409': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 409 response (Conflict). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - NetPeering + "/RemoveUserFromUserGroup": + post: + description: Removes a specified user from a specified group. + operationId: RemoveUserFromUserGroup + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/RemoveUserFromUserGroupRequest" + examples: + ex1: + value: + UserGroupName: example-usergroup + UserGroupPath: "/example/" + UserName: example-user + UserPath: "/example/" + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/RemoveUserFromUserGroupResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - UserGroup + "/ScaleDownVmGroup": + post: + description: |- + > [WARNING]
+ > This feature is currently under development and may not function properly.
+ + Deletes virtual machines (VMs) from a VM group.
+ The oldest VMs are the first to be deleted. + operationId: ScaleDownVmGroup + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ScaleDownVmGroupRequest" + examples: + ex1: + summary: Removing 1 VM from a VM group + value: + VmGroupId: vmgroup-12345678901234567890123456789012 + VmSubtraction: 1 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ScaleDownVmGroupResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - VmGroup + "/ScaleUpVmGroup": + post: + description: |- + > [WARNING]
+ > This feature is currently under development and may not function properly.
+ + Creates additional virtual machines (VMs) in a VM group.
+ The new VMs use the current version of the VM template. + operationId: ScaleUpVmGroup + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/ScaleUpVmGroupRequest" + examples: + ex1: + summary: Adding 2 VMs in a VM group + value: + VmGroupId: vmgroup-12345678901234567890123456789012 + VmAddition: 2 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/ScaleUpVmGroupResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - VmGroup + "/SetDefaultPolicyVersion": + post: + description: |- + Sets a specified version of a managed policy as the default (operative) one.
+ You can modify the default version of a policy at any time. +

+ + **[IMPORTANT]**
+ A delay of up to 15 seconds can occur when attaching, detaching, or updating a managed policy. + operationId: SetDefaultPolicyVersion + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/SetDefaultPolicyVersionRequest" + examples: + ex1: + value: + PolicyOrn: orn:ows:idauth::012345678910:policy/example/example-user-policy + VersionId: v1 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/SetDefaultPolicyVersionResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - Policy + "/StartVms": + post: + description: |- + Start one or more virtual machines (VMs).
+ You can start only VMs that are valid and that belong to you. + operationId: StartVms + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/StartVmsRequest" + examples: + ex1: + value: + VmIds: + - i-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/StartVmsResponse" + examples: + ex1: + value: + Vms: + - VmId: i-12345678 + PreviousState: stopped + CurrentState: pending + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - Vm + "/StopVms": + post: + description: |- + Stops one or more running virtual machines (VMs).
+ You can stop only VMs that are valid and that belong to you. Data stored in the VM RAM is lost. + operationId: StopVms + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/StopVmsRequest" + examples: + ex1: + value: + VmIds: + - i-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/StopVmsResponse" + examples: + ex1: + value: + Vms: + - VmId: i-12345678 + PreviousState: running + CurrentState: stopping + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - Vm + "/UnlinkFlexibleGpu": + post: + description: |- + Detaches a flexible GPU (fGPU) from a virtual machine (VM).
+ The fGPU is in the `detaching` state until the VM is stopped, after which it becomes `allocated`. It is then available again for attachment to a VM. + operationId: UnlinkFlexibleGpu + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/UnlinkFlexibleGpuRequest" + examples: + ex1: + value: + FlexibleGpuId: fgpu-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/UnlinkFlexibleGpuResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - FlexibleGpu + "/UnlinkInternetService": + post: + description: |- + Detaches an internet service from a Net.
+ This action disables and detaches an internet service from a Net. The Net must not contain virtual machines (VMs) using public IPs nor internet-facing load balancers. + operationId: UnlinkInternetService + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/UnlinkInternetServiceRequest" + examples: + ex1: + value: + InternetServiceId: igw-12345678 + NetId: vpc-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/UnlinkInternetServiceResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - InternetService + "/UnlinkLoadBalancerBackendMachines": + post: + description: Detaches one or more backend virtual machines (VMs) from a load + balancer. You need to specify at least the `BackendIps` or the `BackendVmIds` + parameter. + operationId: UnlinkLoadBalancerBackendMachines + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/UnlinkLoadBalancerBackendMachinesRequest" + examples: + ex1: + summary: Unlinking VMs from a load balancer + value: + LoadBalancerName: example-lbu + BackendVmIds: + - i-12345678 + - i-87654321 + ex2: + summary: Unlinking public IPs from a load balancer + value: + LoadBalancerName: example-lbu + BackendIps: + - 192.0.2.0 + - 198.51.100.0 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/UnlinkLoadBalancerBackendMachinesResponse" + examples: + ex1: + summary: Unlinking VMs from a load balancer + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + ex2: + summary: Unlinking public IPs from a load balancer + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - LoadBalancer + "/UnlinkManagedPolicyFromUserGroup": + post: + description: |- + Unlinks a managed policy from a specific group. +

+ + **[IMPORTANT]**
+ A delay of up to 15 seconds can occur when attaching, detaching, or updating a managed policy. + operationId: UnlinkManagedPolicyFromUserGroup + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/UnlinkManagedPolicyFromUserGroupRequest" + examples: + ex1: + value: + PolicyOrn: orn:ows:idauth::012345678910:policy/example/example-user-policy + UserGroupName: example-usergroup + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/UnlinkManagedPolicyFromUserGroupResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - Policy + "/UnlinkNic": + post: + description: |- + Detaches a network interface card (NIC) from a virtual machine (VM).
+ The primary NIC cannot be detached. + operationId: UnlinkNic + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/UnlinkNicRequest" + examples: + ex1: + value: + LinkNicId: eni-attach-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/UnlinkNicResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - Nic + "/UnlinkPolicy": + post: + description: |- + Removes a managed policy from a specific user. +

+ + **[IMPORTANT]**
+ A delay of up to 15 seconds can occur when attaching, detaching, or updating a managed policy. + operationId: UnlinkPolicy + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/UnlinkPolicyRequest" + examples: + ex1: + value: + PolicyOrn: orn:ows:idauth::012345678910:policy/example/example-user-policy + UserName: example-user + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/UnlinkPolicyResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - Policy + "/UnlinkPrivateIps": + post: + description: Unassigns one or more secondary private IPs from a network interface + card (NIC). + operationId: UnlinkPrivateIps + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/UnlinkPrivateIpsRequest" + examples: + ex1: + value: + NicId: eni-12345678 + PrivateIps: + - 10.0.0.6 + - 10.0.0.7 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/UnlinkPrivateIpsResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - Nic + "/UnlinkPublicIp": + post: + description: |- + Disassociates a public IP from the virtual machine (VM) or network interface card (NIC) it is associated with.

+ + **[IMPORTANT]**
+ To disassociate the public IP from a NAT service, you need to delete the NAT service. For more information, see the [DeleteNatService](#deletenatservice) method. + operationId: UnlinkPublicIp + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/UnlinkPublicIpRequest" + examples: + ex1: + value: + PublicIp: 192.0.2.0 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/UnlinkPublicIpResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - PublicIp + "/UnlinkRouteTable": + post: + description: |- + Disassociates a Subnet from a route table.
+ After disassociation, the Subnet can no longer use the routes in this route table, but uses the routes in the main route table of the Net instead. + operationId: UnlinkRouteTable + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/UnlinkRouteTableRequest" + examples: + ex1: + value: + LinkRouteTableId: rtbassoc-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/UnlinkRouteTableResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - RouteTable + "/UnlinkVirtualGateway": + post: + description: |- + Detaches a virtual gateway from a Net.
+ You must wait until the virtual gateway is in the detached state before you can attach another Net to it or delete the Net it was previously attached to. + operationId: UnlinkVirtualGateway + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/UnlinkVirtualGatewayRequest" + examples: + ex1: + value: + VirtualGatewayId: vgw-12345678 + NetId: vpc-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/UnlinkVirtualGatewayResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - VirtualGateway + "/UnlinkVolume": + post: + description: |- + Detaches a Block Storage Unit (BSU) volume from a virtual machine (VM).
+ To detach the root device of a VM, this VM must be stopped. + operationId: UnlinkVolume + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/UnlinkVolumeRequest" + examples: + ex1: + value: + VolumeId: vol-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/UnlinkVolumeResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - Volume + "/UpdateAccessKey": + post: + description: |- + Modifies the attributes of the specified access key of either the root user or an EIM user.

+ The parameter `ExpirationDate` is not required when updating the state of your access key. However, if you do not specify the expiration date of an access key when updating its state, it is then set to not expire. + operationId: UpdateAccessKey + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/UpdateAccessKeyRequest" + examples: + ex1: + summary: Updating the expiration date of the access key + value: + AccessKeyId: ABCDEFGHIJ0123456789 + State: ACTIVE + ExpirationDate: '2063-04-05' + ex2: + summary: Updating the state of one of your own access keys (if you + are the root user or an EIM user) + value: + AccessKeyId: ABCDEFGHIJ0123456789 + State: ACTIVE + ex3: + summary: Updating the access key of a specific EIM user + value: + AccessKeyId: ABCDEFGHIJ0123456789 + State: ACTIVE + UserName: example-user + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/UpdateAccessKeyResponse" + examples: + ex1: + summary: Updating an access key when using the parameter ExpirationDate + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + AccessKey: + State: ACTIVE + AccessKeyId: ABCDEFGHIJ0123456789 + CreationDate: 2010-10-01 12:34:56.789000000 +00:00 + ExpirationDate: 2063-04-05 00:00:00.000000000 +00:00 + LastModificationDate: 2017-05-10 12:34:56.789000000 +00:00 + Tag: Group1 + ex2: + summary: Updating an access key when not using the parameter ExpirationDate + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + AccessKey: + State: ACTIVE + AccessKeyId: ABCDEFGHIJ0123456789 + CreationDate: 2010-10-01 12:34:56.789000000 +00:00 + LastModificationDate: 2017-05-10 12:34:56.789000000 +00:00 + Tag: Group1 + description: The HTTP 200 response (OK). + security: + - ApiKeyAuthSec: [] + - BasicAuth: [] + tags: + - AccessKey + "/UpdateAccount": + post: + description: Updates the OUTSCALE account information for the account that sends + the request. + operationId: UpdateAccount + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/UpdateAccountRequest" + examples: + ex1: + value: + AdditionalEmails: + - another@example.com + - yet.another@example.com + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/UpdateAccountResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + Account: + ZipCode: '92210' + CompanyName: EXAMPLE SAS + FirstName: JEAN + AdditionalEmails: + - another@example.com + - yet.another@example.com + City: SAINT-CLOUD + Country: FRANCE + LastName: DUPONT + AccountId: '123456789012' + CustomerId: '87654321' + Email: example@example.com + description: The HTTP 200 response (OK). + tags: + - Account + "/UpdateApiAccessPolicy": + post: + description: |- + Updates the API access policy of your OUTSCALE account.

+ + **[IMPORTANT]**
+ Only one API access policy can be associated with your account. + operationId: UpdateApiAccessPolicy + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/UpdateApiAccessPolicyRequest" + examples: + ex1: + summary: Require expiration dates of maximum 1 year + value: + MaxAccessKeyExpirationSeconds: 31536000 + RequireTrustedEnv: false + ex2: + summary: Require expiration dates of maximum 100 years and activate + a trusted session + value: + MaxAccessKeyExpirationSeconds: 3153600000 + RequireTrustedEnv: true + ex3: + summary: Do not require expiration dates and deactivate a trusted + session + value: + MaxAccessKeyExpirationSeconds: 0 + RequireTrustedEnv: false + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/UpdateApiAccessPolicyResponse" + examples: + ex1: + summary: Require expiration dates of maximum 1 year + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + ApiAccessPolicy: + RequireTrustedEnv: false + MaxAccessKeyExpirationSeconds: 31536000 + ex2: + summary: Require expiration dates of maximum 100 years and activate + a trusted session + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + ApiAccessPolicy: + RequireTrustedEnv: true + MaxAccessKeyExpirationSeconds: 3153600000 + ex3: + summary: Do not require expiration dates and deactivate a trusted + session + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + ApiAccessPolicy: + RequireTrustedEnv: false + MaxAccessKeyExpirationSeconds: 0 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + security: + - ApiKeyAuthSec: [] + - BasicAuth: [] + tags: + - ApiAccessPolicy + "/UpdateApiAccessRule": + post: + description: |- + Modifies a specified API access rule.

+ + **[WARNING]**
+ - The new rule you specify fully replaces the old rule. Therefore, for a parameter that is not specified, any previously set value is deleted.
+ - If, as result of your modification, you no longer have access to the APIs, you will need to contact the Support team to regain access. For more information, see [Technical Support](https://docs.outscale.com/en/userguide/Technical-Support.html). + operationId: UpdateApiAccessRule + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/UpdateApiAccessRuleRequest" + examples: + ex1: + value: + ApiAccessRuleId: aar-1234567890abcdef1234567890abcdef + IpRanges: + - 0.0.0.0/0 + Description: Allows all Ipv4 domain + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/UpdateApiAccessRuleResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + ApiAccessRule: + IpRanges: + - 0.0.0.0/0 + ApiAccessRuleId: aar-1234567890abcdef1234567890abcdef + CaIds: [] + Cns: [] + Description: Allows all IPv4 domain + description: The HTTP 200 response (OK). + security: + - ApiKeyAuthSec: [] + - BasicAuth: [] + tags: + - ApiAccessRule + "/UpdateCa": + post: + description: Modifies the specified attribute of a Client Certificate Authority + (CA). + operationId: UpdateCa + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/UpdateCaRequest" + examples: + ex1: + value: + CaId: ca-fedcba0987654321fedcba0987654321 + Description: New description + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/UpdateCaResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + Ca: + Description: New description + CaId: ca-fedcba0987654321fedcba0987654321 + CaFingerprint: 1234567890abcdef1234567890abcdef12345678 + description: The HTTP 200 response (OK). + security: + - ApiKeyAuthSec: [] + - BasicAuth: [] + tags: + - Ca + "/UpdateDedicatedGroup": + post: + description: Modifies the name of a specified dedicated group. + operationId: UpdateDedicatedGroup + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/UpdateDedicatedGroupRequest" + examples: + ex1: + value: + DedicatedGroupId: ded-12345678 + Name: New-dedicated-group-name + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/UpdateDedicatedGroupResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + DedicatedGroup: + VmIds: + - i-12345678 + NetIds: + - vpc-12345678 + AccountId: '123456789012' + CpuGeneration: 4 + Name: New-dedicated-group-name + SubregionName: eu-west-2a + DedicatedGroupId: ded-12345678 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - DedicatedGroup + "/UpdateDirectLinkInterface": + post: + description: Modifies the maximum transmission unit (MTU) of a DirectLink interface. + operationId: UpdateDirectLinkInterface + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/UpdateDirectLinkInterfaceRequest" + examples: + ex1: + value: + DirectLinkInterfaceId: dxvif-12345678 + Mtu: 1500 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/UpdateDirectLinkInterfaceResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + DirectLinkInterface: + Vlan: 101 + OutscalePrivateIp: 172.16.0.4/30 + DirectLinkInterfaceId: dxvif-12345678 + BgpAsn: 65000 + AccountId: '123456789012' + ClientPrivateIp: 172.16.0.5/30 + VirtualGatewayId: vgw-12345678 + DirectLinkInterfaceName: MyDirectLinkInterface + DirectLinkId: dxcon-12345678 + Mtu: 1500 + State: available + InterfaceType: private + Location: PAR1 + description: The HTTP 200 response (OK). + tags: + - DirectLinkInterface + "/UpdateFlexibleGpu": + post: + description: Modifies a flexible GPU (fGPU) behavior. + operationId: UpdateFlexibleGpu + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/UpdateFlexibleGpuRequest" + examples: + ex1: + value: + FlexibleGpuId: fgpu-12345678 + DeleteOnVmDeletion: false + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/UpdateFlexibleGpuResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + FlexibleGpu: + DeleteOnVmDeletion: false + FlexibleGpuId: fgpu-12345678 + Generation: v5 + ModelName: nvidia-p100 + State: allocated + SubregionName: eu-west-2a + Tags: [] + description: The HTTP 200 response (OK). + tags: + - FlexibleGpu + "/UpdateImage": + post: + description: |- + Modifies the access permissions for an OUTSCALE machine image (OMI).
+ You must specify either the `Additions` or the `Removals` parameter.
+ After sharing an OMI with an OUTSCALE account, the other account can create a copy of it that they own. For more information about copying OMIs, see [CreateImage](#createimage). + operationId: UpdateImage + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/UpdateImageRequest" + examples: + ex1: + summary: Adding permission + value: + ImageId: ami-12345678 + PermissionsToLaunch: + Additions: + AccountIds: + - '987654321098' + ex2: + summary: Removing permission + value: + ImageId: ami-12345678 + PermissionsToLaunch: + Removals: + AccountIds: + - '987654321098' + ex3: + summary: Making an image public to everyone + value: + ImageId: ami-12345678 + PermissionsToLaunch: + Additions: + GlobalPermission: true + ex4: + summary: Making an image private to everyone + value: + ImageId: ami-12345678 + Description: Private image + PermissionsToLaunch: + Removals: + GlobalPermission: true + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/UpdateImageResponse" + examples: + ex1: + summary: Adding permission + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + Image: + StateComment: {} + State: available + RootDeviceType: bsu + RootDeviceName: "/dev/sda1" + ProductCodes: + - '0001' + PermissionsToLaunch: + GlobalPermission: false + AccountIds: + - '987654321098' + AccountId: '123456789012' + Tags: [] + Description: '' + ImageId: ami-12345678 + BlockDeviceMappings: + - DeviceName: "/dev/sda1" + Bsu: + VolumeType: standard + DeleteOnVmDeletion: true + VolumeSize: 50 + SnapshotId: snap-12345678 + ImageType: machine + CreationDate: '2010-10-01T12:34:56.789Z' + FileLocation: 123456789012/image-example + Architecture: x86_64 + ImageName: image-example + ex2: + summary: Removing permission + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + Image: + StateComment: {} + State: available + RootDeviceType: bsu + RootDeviceName: "/dev/sda1" + ProductCodes: + - '0001' + PermissionsToLaunch: + GlobalPermission: false + AccountIds: [] + AccountId: '123456789012' + Tags: [] + Description: '' + ImageId: ami-12345678 + BlockDeviceMappings: + - DeviceName: "/dev/sda1" + Bsu: + VolumeType: standard + DeleteOnVmDeletion: true + VolumeSize: 50 + SnapshotId: snap-12345678 + ImageType: machine + CreationDate: '2010-10-01T12:34:56.789Z' + FileLocation: 123456789012/image-example + Architecture: x86_64 + ImageName: image-example + ex3: + summary: Making an image public to everyone + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + Image: + StateComment: {} + State: available + RootDeviceType: bsu + RootDeviceName: "/dev/sda1" + ProductCodes: + - '0001' + PermissionsToLaunch: + GlobalPermission: true + AccountIds: [] + AccountId: '123456789012' + Tags: [] + Description: '' + ImageId: ami-12345678 + BlockDeviceMappings: + - DeviceName: "/dev/sda1" + Bsu: + VolumeType: standard + DeleteOnVmDeletion: true + VolumeSize: 50 + SnapshotId: snap-12345678 + ImageType: machine + CreationDate: '2010-10-01T12:34:56.789Z' + FileLocation: 123456789012/image-example + Architecture: x86_64 + ImageName: image-example + ex4: + summary: Making an image private to everyone + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + Image: + StateComment: {} + State: available + RootDeviceType: bsu + RootDeviceName: "/dev/sda1" + ProductCodes: + - '0001' + PermissionsToLaunch: + GlobalPermission: false + AccountIds: [] + AccountId: '123456789012' + Tags: [] + Description: Private image + ImageId: ami-12345678 + BlockDeviceMappings: + - DeviceName: "/dev/sda1" + Bsu: + VolumeType: standard + DeleteOnVmDeletion: true + VolumeSize: 50 + SnapshotId: snap-12345678 + ImageType: machine + CreationDate: '2010-10-01T12:34:56.789Z' + FileLocation: 123456789012/image-example + Architecture: x86_64 + ImageName: image-example + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - Image + "/UpdateListenerRule": + post: + description: |- + Updates the pattern of the listener rule.
+ This call updates the pattern matching algorithm for incoming traffic. + operationId: UpdateListenerRule + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/UpdateListenerRuleRequest" + examples: + ex1: + value: + ListenerRuleName: example-listener-rule + HostPattern: "*.newhost.com" + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/UpdateListenerRuleResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + ListenerRule: + Priority: 10 + VmIds: + - i-12345678 + ListenerRuleName: example-listener-rule + Action: forward + ListenerId: 123456 + HostNamePattern: "*.newhost.com" + ListenerRuleId: 1234 + description: The HTTP 200 response (OK). + tags: + - Listener + "/UpdateLoadBalancer": + post: + description: |- + Modifies the specified attribute of a load balancer. You can specify only one attribute at a time.

+ + You can set a new SSL certificate to an SSL or HTTPS listener of a load balancer.
+ This certificate replaces any certificate used on the same load balancer and port.

+ + You can also replace the currently enabled policy for the load balancer with another one.
+ If the `PolicyNames` parameter is empty, the currently enabled policy is disabled. + operationId: UpdateLoadBalancer + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/UpdateLoadBalancerRequest" + examples: + ex1: + summary: Updating health checks + value: + LoadBalancerName: private-lb-example + HealthCheck: + HealthyThreshold: 10 + CheckInterval: 30 + Path: "/index.html" + Port: 8080 + Protocol: HTTPS + Timeout: 5 + UnhealthyThreshold: 5 + ex2: + summary: Updating access logs + value: + LoadBalancerName: private-lb-example + AccessLog: + PublicationInterval: 5 + IsEnabled: true + OsuBucketName: BUCKET + OsuBucketPrefix: PREFIX + ex3: + summary: Updating policies + value: + LoadBalancerName: private-lb-example + LoadBalancerPort: 443 + PolicyNames: + - example-browser-policy + ex4: + summary: Updating SSL certificate + value: + LoadBalancerName: private-lb-example + LoadBalancerPort: 443 + ServerCertificateId: orn:ows:idauth::012345678910:server-certificate/AnotherCertificate + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/UpdateLoadBalancerResponse" + examples: + ex1: + summary: Updating health checks + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + LoadBalancer: + Tags: [] + SourceSecurityGroup: + SecurityGroupName: security-group-example + SecurityGroupAccountId: '123456789012' + SecuredCookies: false + PublicIp: 192.0.2.0 + Subnets: + - subnet-12345678 + NetId: vpc-12345678 + BackendVmIds: [] + ApplicationStickyCookiePolicies: [] + SecurityGroups: + - sg-12345678 + LoadBalancerType: internet-facing + AccessLog: + PublicationInterval: 60 + IsEnabled: false + DnsName: private-lb-example.123456789.eu-west-2.lbu.outscale.com + HealthCheck: + UnhealthyThreshold: 5 + Timeout: 5 + CheckInterval: 30 + Path: "/index.html" + Protocol: HTTPS + HealthyThreshold: 10 + Port: 8080 + LoadBalancerStickyCookiePolicies: [] + SubregionNames: + - eu-west-2a + Listeners: + - ServerCertificateId: orn:ows:idauth::012345678910:server-certificate/Certificate + BackendPort: 80 + BackendProtocol: HTTP + LoadBalancerPort: 443 + LoadBalancerProtocol: HTTPS + LoadBalancerName: private-lb-example + ex2: + summary: Updating access logs + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + LoadBalancer: + Tags: [] + SourceSecurityGroup: + SecurityGroupName: security-group-example + SecurityGroupAccountId: '123456789012' + SecuredCookies: false + PublicIp: 192.0.2.0 + Subnets: + - subnet-12345678 + NetId: vpc-12345678 + BackendVmIds: [] + ApplicationStickyCookiePolicies: [] + SecurityGroups: + - sg-12345678 + LoadBalancerType: internet-facing + AccessLog: + PublicationInterval: 5 + OsuBucketPrefix: PREFIX + OsuBucketName: BUCKET + IsEnabled: true + DnsName: private-lb-example.123456789.eu-west-2.lbu.outscale.com + HealthCheck: + UnhealthyThreshold: 2 + Timeout: 5 + CheckInterval: 30 + Protocol: TCP + HealthyThreshold: 10 + Port: 80 + LoadBalancerStickyCookiePolicies: [] + SubregionNames: + - eu-west-2a + Listeners: + - ServerCertificateId: orn:ows:idauth::012345678910:server-certificate/Certificate + BackendPort: 80 + BackendProtocol: HTTP + LoadBalancerPort: 443 + LoadBalancerProtocol: HTTPS + LoadBalancerName: private-lb-example + ex3: + summary: Updating policies + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + LoadBalancer: + Tags: [] + SourceSecurityGroup: + SecurityGroupName: security-group-example + SecurityGroupAccountId: '123456789012' + SecuredCookies: false + PublicIp: 192.0.2.0 + Subnets: + - subnet-12345678 + NetId: vpc-12345678 + BackendVmIds: [] + ApplicationStickyCookiePolicies: [] + SecurityGroups: + - sg-12345678 + LoadBalancerType: internet-facing + AccessLog: + PublicationInterval: 60 + IsEnabled: false + DnsName: private-lb-example.123456789.eu-west-2.lbu.outscale.com + HealthCheck: + UnhealthyThreshold: 2 + Timeout: 5 + CheckInterval: 30 + Protocol: TCP + HealthyThreshold: 10 + Port: 80 + LoadBalancerStickyCookiePolicies: + - PolicyName: example-browser-policy + CookieExpirationPeriod: 1 + SubregionNames: + - eu-west-2a + Listeners: + - ServerCertificateId: orn:ows:idauth::012345678910:server-certificate/Certificate + BackendPort: 80 + BackendProtocol: HTTP + LoadBalancerPort: 443 + LoadBalancerProtocol: HTTPS + LoadBalancerName: private-lb-example + ex4: + summary: Updating SSL certificate + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + LoadBalancer: + Tags: [] + SourceSecurityGroup: + SecurityGroupName: security-group-example + SecurityGroupAccountId: '123456789012' + SecuredCookies: false + PublicIp: 192.0.2.0 + Subnets: + - subnet-12345678 + NetId: vpc-12345678 + BackendVmIds: [] + ApplicationStickyCookiePolicies: [] + SecurityGroups: + - sg-12345678 + LoadBalancerType: internet-facing + AccessLog: + PublicationInterval: 60 + IsEnabled: false + DnsName: private-lb-example.123456789.eu-west-2.lbu.outscale.com + HealthCheck: + UnhealthyThreshold: 2 + Timeout: 5 + CheckInterval: 30 + Protocol: TCP + HealthyThreshold: 10 + Port: 80 + LoadBalancerStickyCookiePolicies: [] + SubregionNames: + - eu-west-2a + Listeners: + - ServerCertificateId: orn:ows:idauth::012345678910:server-certificate/AnotherCertificate + BackendPort: 80 + BackendProtocol: HTTP + LoadBalancerPort: 443 + LoadBalancerProtocol: HTTPS + LoadBalancerName: private-lb-example + description: The HTTP 200 response (OK). + tags: + - LoadBalancer + "/UpdateNet": + post: + description: Associates a DHCP options set with a specified Net. + operationId: UpdateNet + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/UpdateNetRequest" + examples: + ex1: + value: + NetId: vpc-12345678 + DhcpOptionsSetId: dopt-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/UpdateNetResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + Net: + Tags: [] + DhcpOptionsSetId: dopt-12345678 + IpRange: 10.0.0.0/16 + Tenancy: default + NetId: vpc-12345678 + State: available + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - Net + "/UpdateNetAccessPoint": + post: + description: |- + Modifies the attributes of a Net access point.
+ This action enables you to add or remove route tables associated with the specified Net access point. + operationId: UpdateNetAccessPoint + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/UpdateNetAccessPointRequest" + examples: + ex1: + summary: Adding a route table + value: + NetAccessPointId: vpce-12345678 + AddRouteTableIds: + - rtb-87654321 + ex2: + summary: Removing a route table + value: + NetAccessPointId: vpce-12345678 + RemoveRouteTableIds: + - rtb-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/UpdateNetAccessPointResponse" + examples: + ex1: + summary: Adding a route table + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + NetAccessPoint: + Tags: [] + NetAccessPointId: vpce-12345678 + RouteTableIds: + - rtb-12345678 + - rtb-87654321 + State: available + NetId: vpc-12345678 + ServiceName: com.outscale.eu-west-2.oos + ex2: + summary: Removing a route table + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + NetAccessPoint: + Tags: [] + NetAccessPointId: vpce-12345678 + RouteTableIds: [] + State: available + NetId: vpc-12345678 + ServiceName: com.outscale.eu-west-2.oos + description: The HTTP 200 response (OK). + tags: + - NetAccessPoint + "/UpdateNic": + post: + description: Modifies the specified network interface card (NIC). You can specify + only one attribute at a time. + operationId: UpdateNic + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/UpdateNicRequest" + examples: + ex1: + summary: Modifying the DeleteOnVmDeletion value of a NIC + value: + NicId: eni-12345678 + LinkNic: + DeleteOnVmDeletion: false + LinkNicId: eni-attach-12345678 + ex2: + summary: Modifying the security groups of a NIC + value: + NicId: eni-12345678 + SecurityGroupIds: + - sg-12345678 + ex3: + summary: Modifying the description of a NIC + value: + NicId: eni-12345678 + Description: Example of description + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/UpdateNicResponse" + examples: + ex1: + summary: Modifying the DeleteOnVmDeletion value of a NIC + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + Nic: + SubregionName: eu-west-2a + SubnetId: subnet-12345678 + State: in-use + LinkNic: + VmId: i-12345678 + LinkNicId: eni-attach-12345678 + VmAccountId: '123456789012' + DeleteOnVmDeletion: false + DeviceNumber: 0 + State: attached + IsSourceDestChecked: true + PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal + Tags: [] + Description: Primary network interface + AccountId: '123456789012' + SecurityGroups: + - SecurityGroupName: default + SecurityGroupId: sg-12345678 + MacAddress: A1:B2:C3:D4:E5:F6 + NetId: vpc-12345678 + NicId: eni-12345678 + PrivateIps: + - PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal + PrivateIp: 10.0.0.4 + IsPrimary: true + ex2: + summary: Modifying the security groups of a NIC + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + Nic: + SubregionName: eu-west-2a + SubnetId: subnet-12345678 + State: in-use + LinkNic: + VmId: i-12345678 + LinkNicId: eni-attach-12345678 + VmAccountId: '123456789012' + DeleteOnVmDeletion: true + DeviceNumber: 0 + State: attached + IsSourceDestChecked: true + PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal + Tags: [] + Description: Primary network interface + AccountId: '123456789012' + SecurityGroups: + - SecurityGroupName: security-group-example + SecurityGroupId: sg-12345678 + MacAddress: A1:B2:C3:D4:E5:F6 + NetId: vpc-12345678 + NicId: eni-12345678 + PrivateIps: + - PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal + PrivateIp: 10.0.0.4 + IsPrimary: true + ex3: + summary: Modifying the description of a NIC + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + Nic: + SubregionName: eu-west-2a + SubnetId: subnet-12345678 + State: in-use + LinkNic: + VmId: i-12345678 + LinkNicId: eni-attach-12345678 + VmAccountId: '123456789012' + DeleteOnVmDeletion: true + DeviceNumber: 0 + State: attached + IsSourceDestChecked: true + PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal + Tags: [] + Description: Example of description + AccountId: '123456789012' + SecurityGroups: + - SecurityGroupName: default + SecurityGroupId: sg-12345678 + MacAddress: A1:B2:C3:D4:E5:F6 + NetId: vpc-12345678 + NicId: eni-12345678 + PrivateIps: + - PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal + PrivateIp: 10.0.0.4 + IsPrimary: true + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - Nic + "/UpdateRoute": + post: + description: |- + Replaces an existing route within a route table in a Net.
+ You must specify one of the following elements as the target:

+ + * Net peering
+ * NAT virtual machine (VM)
+ * Internet service
+ * Virtual gateway
+ * NAT service
+ * Network interface card (NIC)

+ + The routing algorithm is based on the most specific match. + operationId: UpdateRoute + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/UpdateRouteRequest" + examples: + ex1: + summary: Updating a route to a virtual gateway + value: + RouteTableId: rtb-12345678 + DestinationIpRange: 198.51.100.0/24 + GatewayId: vgw-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/UpdateRouteResponse" + examples: + ex1: + summary: Updating a route to a virtual gateway + value: + RouteTable: + Routes: + - DestinationIpRange: 10.0.0.0/16 + CreationMethod: CreateRouteTable + State: active + - GatewayId: vgw-12345678 + DestinationIpRange: 198.51.100.0/24 + CreationMethod: CreateRoute + State: active + LinkRouteTables: + - RouteTableId: rtb-12345678 + Main: false + SubnetId: subnet-12345678 + LinkRouteTableId: rtbassoc-12345678 + NetId: vpc-12345678 + Tags: [] + RoutePropagatingVirtualGateways: [] + RouteTableId: rtb-12345678 + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - Route + "/UpdateRoutePropagation": + post: + description: Configures the propagation of routes to a specified route table + of a Net by a virtual gateway. + operationId: UpdateRoutePropagation + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/UpdateRoutePropagationRequest" + examples: + ex1: + value: + VirtualGatewayId: vgw-12345678 + RouteTableId: rtb-12345678 + Enable: true + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/UpdateRoutePropagationResponse" + examples: + ex1: + value: + RouteTable: + Routes: + - DestinationIpRange: 10.0.0.0/16 + CreationMethod: CreateRouteTable + State: active + LinkRouteTables: + - RouteTableId: rtb-12345678 + Main: true + LinkRouteTableId: rtbassoc-12345678 + NetId: vpc-12345678 + Tags: [] + RoutePropagatingVirtualGateways: + - VirtualGatewayId: vgw-12345678 + RouteTableId: rtb-12345678 + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - VirtualGateway + "/UpdateRouteTableLink": + post: + description: |- + Replaces the route table associated with a specific Subnet in a Net with another one.
+ After the route table is replaced, the Subnet uses the routes in the new route table it is associated with. + operationId: UpdateRouteTableLink + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/UpdateRouteTableLinkRequest" + examples: + ex1: + value: + LinkRouteTableId: rtbassoc-12345678 + RouteTableId: rtb-12345678 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/UpdateRouteTableLinkResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + LinkRouteTableId: rtbassoc-12345678 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - RouteTable + "/UpdateServerCertificate": + post: + description: Modifies the name and/or the path of a specified server certificate. + operationId: UpdateServerCertificate + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/UpdateServerCertificateRequest" + examples: + ex1: + value: + Name: server-cert-example + NewName: new-name + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/UpdateServerCertificateResponse" + examples: + ex1: + value: + ServerCertificate: + Path: "/example/" + Id: ABCDEFGHIJKLMNOPQRSTUVWXYZ1234 + Name: new-name + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - ServerCertificate + "/UpdateSnapshot": + post: + description: |- + Modifies the permissions for a specified snapshot.
+ You must specify either the `Additions` or the `Removals` parameter.
+ After sharing a snapshot with an OUTSCALE account, the other account can create a copy of it that they own. For more information about copying snapshots, see [CreateSnapshot](#createsnapshot). + operationId: UpdateSnapshot + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/UpdateSnapshotRequest" + examples: + ex1: + summary: Adding permission + value: + SnapshotId: snap-12345678 + PermissionsToCreateVolume: + Additions: + AccountIds: + - '987654321098' + ex2: + summary: Removing permission + value: + SnapshotId: snap-12345678 + PermissionsToCreateVolume: + Removals: + AccountIds: + - '987654321098' + ex3: + summary: Making a snapshot public to everyone + value: + SnapshotId: snap-12345678 + PermissionsToCreateVolume: + Additions: + GlobalPermission: true + ex4: + summary: Making a snapshot private to everyone + value: + SnapshotId: snap-12345678 + PermissionsToCreateVolume: + Removals: + GlobalPermission: true + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/UpdateSnapshotResponse" + examples: + ex1: + summary: Adding permission + value: + Snapshot: + VolumeSize: 10 + AccountId: '123456789012' + VolumeId: vol-12345678 + CreationDate: '2010-10-01T12:34:56.789Z' + PermissionsToCreateVolume: + GlobalPermission: false + AccountIds: + - '987654321098' + Progress: 100 + SnapshotId: snap-12345678 + State: completed + Description: Snapshot created from a volume + Tags: [] + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + ex2: + summary: Removing permission + value: + Snapshot: + VolumeSize: 10 + AccountId: '123456789012' + VolumeId: vol-12345678 + CreationDate: '2010-10-01T12:34:56.789Z' + PermissionsToCreateVolume: + GlobalPermission: false + AccountIds: [] + Progress: 100 + SnapshotId: snap-12345678 + State: completed + Description: Snapshot created from a volume + Tags: [] + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + ex3: + summary: Making a snapshot public to everyone + value: + Snapshot: + VolumeSize: 10 + AccountId: '123456789012' + VolumeId: vol-12345678 + CreationDate: '2010-10-01T12:34:56.789Z' + PermissionsToCreateVolume: + GlobalPermission: true + AccountIds: [] + Progress: 100 + SnapshotId: snap-12345678 + State: completed + Description: Snapshot created from a volume + Tags: [] + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + ex4: + summary: Making a snapshot private to everyone + value: + Snapshot: + VolumeSize: 10 + AccountId: '123456789012' + VolumeId: vol-12345678 + CreationDate: '2010-10-01T12:34:56.789Z' + PermissionsToCreateVolume: + GlobalPermission: false + AccountIds: [] + Progress: 100 + SnapshotId: snap-12345678 + State: completed + Description: Snapshot created from a volume + Tags: [] + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - Snapshot + "/UpdateSubnet": + post: + description: Modifies the specified attribute of a Subnet. + operationId: UpdateSubnet + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/UpdateSubnetRequest" + examples: + ex1: + value: + SubnetId: subnet-12345678 + MapPublicIpOnLaunch: true + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/UpdateSubnetResponse" + examples: + ex1: + value: + Subnet: + Tags: [] + SubregionName: eu-west-2a + SubnetId: subnet-12345678 + AvailableIpsCount: 16379 + IpRange: 10.0.0.0/18 + MapPublicIpOnLaunch: true + State: available + NetId: vpc-12345678 + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - Subnet + "/UpdateUser": + post: + description: Modifies the name and/or the path of a specified EIM user. + operationId: UpdateUser + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/UpdateUserRequest" + examples: + ex1: + value: + UserName: example-user + NewUserEmail: user@example.com + NewUserName: test-user + NewPath: "/product/" + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/UpdateUserResponse" + examples: + ex1: + value: + User: + CreationDate: 2010-10-01 12:34:56.789000000 +00:00 + LastModificationDate: 2017-05-10 12:34:56.789000000 +00:00 + UserEmail: user@example.com + UserName: test-user + UserId: ABCDEFGHIJKLMNOPQRSTUVWXYZ12345 + Path: "/product/" + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - User + "/UpdateUserGroup": + post: + description: Modifies the name and/or the path of a specified group. + operationId: UpdateUserGroup + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/UpdateUserGroupRequest" + examples: + ex1: + value: + NewPath: "/new-path/" + NewUserGroupName: new-usergroup + Path: "/example/" + UserGroupName: example-usergroup + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/UpdateUserGroupResponse" + examples: + ex1: + value: + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + UserGroup: + CreationDate: '2010-10-01T12:34:56.789Z' + LastModificationDate: '2010-10-01T12:34:56.789Z' + Name: new-usergroup + Orn: orn:ows:idauth::012345678910:usergroup/example/usergroup-example + Path: "/new-path/" + UserGroupId: ug-12345678 + Users: + - CreationDate: '2010-10-01T12:34:56.789Z' + LastModificationDate: '2010-10-01T12:34:56.789Z' + Path: "/example/" + UserEmail: user@example.com + UserId: ABCDEFGHIJKLMNOPQRSTUVWXYZ12345 + UserName: example-user + description: The HTTP 200 response (OK). + tags: + - UserGroup + "/UpdateVm": + post: + description: |- + Modifies the specified attributes of a virtual machine (VM).
+ You must stop the VM before modifying the following attributes:
+ * `NestedVirtualization`
+ * `Performance`
+ * `UserData`
+ * `VmType` + + To complete the update of secure boot, you need to do a stop/start of the VM. A simple restart is not sufficient, as the update is done when the VM goes through the stopped state. For the difference between stop/start and restart, see [About VM Lifecycle](https://docs.outscale.com/en/userguide/About-VM-Lifecycle.html). + operationId: UpdateVm + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/UpdateVmRequest" + examples: + ex1: + value: + VmId: i-12345678 + VmType: tinav5.c2r2p2 + ex2: + value: + VmId: i-12345678 + UserData: "..." + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/UpdateVmResponse" + examples: + ex1: + value: + Vm: + VmType: tinav5.c2r2p2 + VmInitiatedShutdownBehavior: stop + State: stopped + StateReason: '' + RootDeviceType: ebs + RootDeviceName: "/dev/sda1" + IsSourceDestChecked: true + KeypairName: keypair-example + ImageId: ami-12345678 + DeletionProtection: false + Architecture: x86_64 + NestedVirtualization: false + BlockDeviceMappings: + - DeviceName: "/dev/sda1" + Bsu: + VolumeId: vol-12345678 + State: attached + LinkDate: '2010-10-01T12:34:56.789Z' + DeleteOnVmDeletion: true + VmId: i-12345678 + ReservationId: r-12345678 + Hypervisor: xen + Placement: + Tenancy: default + SubregionName: eu-west-2a + ProductCodes: + - '0001' + CreationDate: '2010-10-01T12:34:56.789Z' + UserData: '' + SubnetId: subnet-12345678 + PrivateIp: 10.0.0.4 + SecurityGroups: + - SecurityGroupName: security-group-example + SecurityGroupId: sg-12345678 + BsuOptimized: false + LaunchNumber: 0 + NetId: vpc-12345678 + Nics: + - SubnetId: subnet-12345678 + State: in-use + LinkNic: + State: attached + DeviceNumber: 0 + LinkNicId: eni-attach-12345678 + DeleteOnVmDeletion: true + IsSourceDestChecked: true + PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal + Description: Primary network interface + AccountId: '123456789012' + SecurityGroups: + - SecurityGroupName: security-group-example + SecurityGroupId: sg-12345678 + MacAddress: A1:B2:C3:D4:E5:F6 + NetId: vpc-12345678 + NicId: eni-12345678 + PrivateIps: + - PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal + PrivateIp: 10.0.0.4 + IsPrimary: true + Performance: high + Tags: + - Value: prod + Key: env + PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal + ActionsOnNextBoot: + SecureBoot: none + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + ex2: + value: + Vm: + VmType: tinav5.c1r1p2 + VmInitiatedShutdownBehavior: stop + State: stopped + StateReason: '' + RootDeviceType: ebs + RootDeviceName: "/dev/sda1" + IsSourceDestChecked: true + KeypairName: keypair-example + ImageId: ami-12345678 + DeletionProtection: true + Architecture: x86_64 + NestedVirtualization: false + BlockDeviceMappings: + - DeviceName: "/dev/sda1" + Bsu: + VolumeId: vol-12345678 + State: attached + LinkDate: '2010-10-01T12:34:56.789Z' + DeleteOnVmDeletion: true + VmId: i-12345678 + ReservationId: r-12345678 + Hypervisor: xen + Placement: + Tenancy: default + SubregionName: eu-west-2a + ProductCodes: + - '0001' + CreationDate: '2010-10-01T12:34:56.789Z' + UserData: "..." + SubnetId: subnet-12345678 + PrivateIp: 10.0.0.4 + SecurityGroups: + - SecurityGroupName: security-group-example + SecurityGroupId: sg-12345678 + BsuOptimized: false + LaunchNumber: 0 + NetId: vpc-12345678 + Nics: + - SubnetId: subnet-12345678 + State: in-use + LinkNic: + State: attached + DeviceNumber: 0 + LinkNicId: eni-attach-12345678 + DeleteOnVmDeletion: true + IsSourceDestChecked: true + PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal + Description: Primary network interface + AccountId: '123456789012' + SecurityGroups: + - SecurityGroupName: security-group-example + SecurityGroupId: sg-12345678 + MacAddress: A1:B2:C3:D4:E5:F6 + NetId: vpc-12345678 + NicId: eni-12345678 + PrivateIps: + - PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal + PrivateIp: 10.0.0.4 + IsPrimary: true + Performance: high + Tags: + - Value: prod + Key: env + PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal + ActionsOnNextBoot: + SecureBoot: none + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - Vm + "/UpdateVmGroup": + post: + description: |- + > [WARNING]
+ > This feature is currently under development and may not function properly.
+ + Modifies the specified attributes of a group of virtual machines (VMs). + operationId: UpdateVmGroup + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/UpdateVmGroupRequest" + examples: + ex1: + summary: Updating the name and description of a VM group + value: + VmGroupId: vmgroup-12345678901234567890123456789012 + VmGroupName: new-name + Description: New description of the VM group + ex2: + summary: Updating the VM template of a VM group + value: + VmGroupId: vmgroup-12345678901234567890123456789012 + VmTemplateId: vmtemplate-98765432109876543210987654321012 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/UpdateVmGroupResponse" + examples: + ex1: + value: + VmGroup: + VmTemplateId: vmtemplate-98765432109876543210987654321012 + SecurityGroupIds: + - sg-12345678 + VmIds: [] + CreationDate: 2010-10-01 12:34:56.789000000 +00:00 + VmCount: 2 + VmGroupName: new-name + SubnetId: subnet-12345678 + PositioningStrategy: attract + State: available + VmGroupId: vmgroup-12345678901234567890123456789012 + Description: New description of the VM group + Tags: [] + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - VmGroup + "/UpdateVmTemplate": + post: + description: |- + > [WARNING]
+ > This feature is currently under development and may not function properly.
+ + Modifies the specified attributes of a template of virtual machines (VMs). + operationId: UpdateVmTemplate + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/UpdateVmTemplateRequest" + examples: + ex1: + value: + Description: The new description of the VM template + VmTemplateId: vmtemplate-98765432109876543210987654321012 + VmTemplateName: second-name + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/UpdateVmTemplateResponse" + examples: + ex1: + value: + VmTemplate: + VmTemplateName: second-name + CpuPerformance: high + CreationDate: 2010-10-01 12:34:56.789000000 +00:00 + CpuCores: 2 + Tags: [] + Description: The new description of the VM template + ImageId: ami-12345678 + CpuGeneration: v4 + VmTemplateId: vmtemplate-98765432109876543210987654321012 + Ram: 2 + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + tags: + - VmTemplate + "/UpdateVolume": + post: + description: |- + Modifies the specified attributes of a volume.
+ + **[WARNING]**
+ - We recommend creating a snapshot of your volume before updating it, in case any issue occurs during the process. For more information, see [Creating a Snapshot of a Volume](https://docs.outscale.com/en/userguide/Creating-a-Snapshot-of-a-Volume.html). + - Do not shut down or restart the virtual machine (VM) from within the guest operating system while a volume update is in progress. This interrupts the process and compromises the integrity of the volume. + - When the modification is not instantaneous, the response displays the previous value. You can use the [ReadVolumeUpdateTasks](#readvolumeupdatetasks) method to see the progression of the update.
+ operationId: UpdateVolume + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/UpdateVolumeRequest" + examples: + ex1: + summary: Updating the size of a volume + value: + VolumeId: vol-12345678 + Size: 50 + ex2: + summary: Updating the type of a volume to io1 + value: + VolumeId: vol-12345678 + VolumeType: io1 + Iops: 200 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/UpdateVolumeResponse" + examples: + ex1: + summary: Updating the size of a volume + value: + Volume: + VolumeId: vol-12345678 + Tags: [] + VolumeType: gp2 + SubregionName: eu-west-2a + State: available + CreationDate: '2010-10-01T12:34:56.789Z' + Iops: 100 + LinkedVolumes: [] + Size: 10 + TaskId: vol-update-12345678 + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + ex2: + summary: Updating the type of a volume to io1 + value: + Volume: + VolumeId: vol-12345678 + Tags: [] + VolumeType: io1 + SubregionName: eu-west-2a + State: available + CreationDate: '2010-10-01T12:34:56.789Z' + Iops: 200 + LinkedVolumes: [] + Size: 10 + TaskId: vol-update-12345678 + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - Volume + "/UpdateVpnConnection": + post: + description: Modifies the specified attributes of a VPN connection. + operationId: UpdateVpnConnection + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/UpdateVpnConnectionRequest" + examples: + ex1: + value: + VpnConnectionId: vpn-12345678 + VpnOptions: + TunnelInsideIpRange: 169.254.254.22/30 + responses: + '200': + content: + application/json: + schema: + "$ref": "#/components/schemas/UpdateVpnConnectionResponse" + examples: + ex1: + value: + VpnConnection: + VpnOptions: + TunnelInsideIpRange: 169.254.254.22/30 + Routes: [] + Tags: [] + ClientGatewayConfiguration: "..." + StaticRoutesOnly: true + VirtualGatewayId: vgw-12345678 + ConnectionType: ipsec.1 + ClientGatewayId: cgw-12345678 + State: pending + VgwTelemetries: + - StateDescription: IPSEC IS DOWN + AcceptedRouteCount: 0 + LastStateChangeDate: '2017-05-10T12:34:56.789Z' + OutsideIpAddress: 192.0.2.0 + VpnConnectionId: vpn-12345678 + ResponseContext: + RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 + description: The HTTP 200 response (OK). + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). + '401': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 401 response (Unauthorized). + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). + tags: + - VpnConnection +security: +- ApiKeyAuth: [] +servers: +- url: https://api.{region}.outscale.com/api/v1 + variables: + region: + default: eu-west-2 + enum: + - ap-northeast-1 + - cloudgouv-eu-west-1 + - eu-west-2 + - us-east-2 + - us-west-1 diff --git a/osc_sdk_python/resources/osc/cfg.yaml b/osc_sdk_python/resources/osc/cfg.yaml new file mode 100644 index 0000000..e34f446 --- /dev/null +++ b/osc_sdk_python/resources/osc/cfg.yaml @@ -0,0 +1,2 @@ +spec: ./api.yaml +overlay: ./patch.yaml diff --git a/osc_sdk_python/resources/osc/patch.yaml b/osc_sdk_python/resources/osc/patch.yaml new file mode 100644 index 0000000..e1afe4d --- /dev/null +++ b/osc_sdk_python/resources/osc/patch.yaml @@ -0,0 +1,899 @@ +overlay: 1.0.0 +info: + title: "Example to indicate how to use the OpenAPI Overlay specification (https://github.com/OAI/Overlay-Specification)" + version: 1.0.0 +actions: +- target: $.components.schemas.Vm + description: Required fields for Vm + update: + required: + - ActionsOnNextBoot + - Architecture + - BlockDeviceMappings + - BootMode + - CreationDate + - DeletionProtection + - Hypervisor + - ImageId + - LaunchNumber + - NestedVirtualization + - Nics + - OsFamily + - Performance + - Placement + - PrivateIp + - ProductCodes + - ReservationId + - RootDeviceName + - RootDeviceType + - SecurityGroups + - State + - StateReason + - Tags + - TpmEnabled + - UserData + - VmId + - VmInitiatedShutdownBehavior + - VmType +- target: $.components.schemas.VmState + description: Rename VmState type + update: + x-rs-name: VmStateInfo +- target: $.components.schemas.Vm.*.State + description: Type for Vm.State + update: + enum: + - pending + - running + - stopping + - stopped + - shutting-down + - terminated + - quarantine +- target: $.components.schemas.FiltersVm.*.VmStateNames.items + description: + update: + x-rs-type: VmState +- target: $.components.schemas.VmStates + description: Required fields for VmStates + update: + required: + - MaintenanceEvents + - SubregionName + - VmId + - VmState +- target: $.components.schemas.VmStates.*.VmState + description: + update: + x-rs-type: VmState +- target: $.components.schemas.FiltersVmsState.*.VmStates.items + description: + update: + x-rs-type: VmState +- target: $.components.schemas.BlockDeviceMappingCreated + description: Required fields for BlockDeviceMappingCreated + update: + required: + - Bsu + - DeviceName +- target: $.components.schemas.BsuCreated + description: Required fields for BsuCreated + update: + required: + - DeleteOnVmDeletion + - LinkDate + - State + - VolumeId +- target: $.components.schemas.Nic + description: Required fields for Nic + update: + required: + - AccountId + - Description + - IsSourceDestChecked + - MacAddress + - NetId + - NicId + - PrivateDnsName + - PrivateIps + - SecurityGroups + - State + - SubnetId + - SubregionName + - Tags +- target: $.components.schemas.NicLight + description: Required fields for NicLight + update: + required: + - AccountId + - Description + - IsSourceDestChecked + - MacAddress + - NetId + - NicId + - PrivateDnsName + - PrivateIps + - SecurityGroups + - State + - SubnetId +- target: $.components.schemas.LinkNic + description: Required fields for LinkNic + update: + required: + - LinkNicId + - DeleteOnVmDeletion + - DeviceNumber + - MacAddress + - LinkNicId + - State + - VmAccountId + - VmId +- target: $.components.schemas.LinkNicLight + description: Required fields for LinkNicLight + update: + required: + - DeleteOnVmDeletion + - DeviceNumber + - MacAddress + - LinkNicId + - State +- target: $.components.schemas.LinkPublicIp + description: Required fields for LinkPublicIp + update: + required: + - LinkPublicIpId + - PublicIpId + - PublicDnsName + - PublicIp + - PublicIpAccountId +- target: $.components.schemas.LinkPublicIpLightForVm + description: Required fields for LinkPublicIpLightForVm + update: + required: + - PublicDnsName + - PublicIp + - PublicIpAccountId +- target: $.components.schemas.PrivateIp + description: Required fields for PrivateIp + update: + required: + - IsPrimary + - PrivateDnsName + - PrivateIp +- target: $.components.schemas.PrivateIpLight + description: Required fields for PrivateIpLight + update: + required: + - IsPrimary + - PrivateDnsName + - PrivateIp +- target: $.components.schemas.PrivateIpLightForVm + description: Required fields for PrivateIpLightForVm + update: + required: + - IsPrimary + - PrivateDnsName + - PrivateIp +- target: $.components.schemas.Placement + description: Required fields for Placement + update: + required: + - SubregionName + - Tenancy +- target: $.components.schemas.SecurityGroupLight + description: Required fields for SecurityGroupLight + update: + required: + - SecurityGroupId + - SecurityGroupName +- target: $.components.schemas.CreateVmsRequest.*.*[?(@.type == 'array')] + description: Remove pointer from CreateVmsRequest attributes + update: + x-rs-type-skip-optional-pointer: true +- target: $.components.schemas.UpdateVmRequest.*.*[?(@.type == 'array')] + description: Remove pointer from UpdateVmRequest attributes + update: + x-rs-type-skip-optional-pointer: true +- target: $.components.schemas.BsuToUpdateVm + description: Required fields for BsuToUpdateVm + update: + required: + - DeleteOnVmDeletion + - VolumeId +- target: $.components.schemas.SecurityGroup + description: Required fields for SecurityGroup + update: + required: + - AccountId + - Description + - InboundRules + - OutboundRules + - SecurityGroupId + - SecurityGroupName + - Tags +- target: $.components.schemas.SecurityGroupRule.*.* + description: Remove pointer from SecurityGroupRule attributes + update: + x-rs-type-skip-optional-pointer: true +- target: $.components.schemas.SecurityGroupsMember + description: Required fields for SecurityGroupsMember + update: + required: + - SecurityGroupId +- target: $.components.schemas.CreateSecurityGroupRuleRequest.*.Rules + description: Remove pointer from CreateSecurityGroupRuleRequest attributes + update: + x-rs-type-skip-optional-pointer: true +- target: $.components.schemas.DeleteSecurityGroupRuleRequest.*.Rules + description: Remove pointer from DeleteSecurityGroupRuleRequest attributes + update: + x-rs-type-skip-optional-pointer: true +- target: $.components.schemas.SecurityGroupsMember + description: Required fields for SecurityGroupsMember + update: + required: + - SecurityGroupId +- target: $.components.schemas.Net + description: Required fields for Net + update: + required: + - DhcpOptionsSetId + - IpRange + - NetId + - State + - Tags + - Tenancy +- target: $.components.schemas.Net.*.State + description: Type for Net.State + update: + enum: + - pending + - available + - deleting +- target: $.components.schemas.FiltersNet.*.States.items + description: + update: + x-rs-type: NetState +- target: $.components.schemas.Subnet + description: Required fields for Subnet + update: + required: + - AvailableIpsCount + - IpRange + - MapPublicIpOnLaunch + - NetId + - State + - SubnetId + - SubregionName + - Tags +- target: $.components.schemas.Subnet.*.State + description: Type for Subnet.State + update: + enum: + - pending + - available + - deleted +- target: $.components.schemas.FiltersSubnet.*.States.items + description: + update: + x-rs-type: SubnetState +- target: $.components.schemas.InternetService + description: Required fields for InternetService + update: + required: + - InternetServiceId + - NetId + - State + - Tags +- target: $.components.schemas.NatService + description: Required fields for NatService + update: + required: + - NatServiceId + - NetId + - PublicIps + - State + - SubnetId + - Tags +- target: $.components.schemas.NatService.*.State + description: Type for NatService.State + update: + enum: + - pending + - available + - deleting + - deleted +- target: $.components.schemas.FiltersNatService.*.States.items + description: + update: + x-rs-type: NatServiceState +- target: $.components.schemas.NetPeering + description: Required fields for NetPeering + update: + required: + - AccepterNet + - NetPeeringId + - SourceNet + - State + - Tags +- target: $.components.schemas.NetPeeringState + description: Required fields for NetPeeringState + update: + required: + - Message + - Name +- target: $.components.schemas.NetPeeringState.*.Name + description: Type for NetPeeringState.Name + update: + enum: + - pending-acceptance + - active + - rejected + - failed + - expired + - deleted +- target: $.components.schemas.FiltersNetPeering.*.StateNames.items + description: + update: + x-rs-type: NetPeeringStateName +- target: $.components.schemas.Image + description: Required fields for Image + update: + required: + - AccountId + - Architecture + - BlockDeviceMapping + - CreationDate + - ImageId + - State + - BootModes + - RootDeviceType + - SecureBoot + - Tags +- target: $.components.schemas.Image.*.State + description: Type for Image.State + update: + enum: + - pending + - available + - failed +- target: $.components.schemas.FiltersImage.*.States.items + description: + update: + x-rs-type: ImageState +- target: $.components.schemas.Snapshot + description: Required fields for Snapshot + update: + required: + - CreationDate + - SnapshotId + - State + - AccountId + - VolumeId + - VolumeSize +- target: $.components.schemas.Snapshot.*.State + description: Type for Snapshot.State + update: + enum: + - in-queue + - pending + - completed + - error + - deleting +- target: $.components.schemas.FiltersSnapshot.*.States.items + description: + update: + x-rs-type: SnapshotState +- target: $.components.schemas.SnapshotExportTask + description: Required fields for SnapshotExportTask + update: + required: + - Comment + - OsuExport + - Progress + - SnapshotId + - State + - Tags + - TaskId +- target: $.components.schemas.SnapshotExportTask.*.State + description: Type for SnapshotExportTask.State + update: + enum: + - pending + - active + - completed + - cancelled + - failed +- target: $.components.schemas.ErrorResponse + description: Required fields for ErrorResponse + update: + required: + - Errors +- target: $.components.schemas.Errors + description: Required fields for Errors + update: + required: + - Code + - Details + - Type +- target: $.components.schemas.BackendVmHealth.*.State + description: Type for BackendVmHealth.State + update: + enum: + - InService + - OutOfService + - Unknown +- target: $.components.schemas.Volume + description: Required fields for Volume + update: + required: + - VolumeId + - CreationDate + - Iops + - Size + - State + - SubregionName + - Tags + - VolumeType + - LinkedVolumes +- target: $.components.schemas + description: Create type VolumeType + update: + VolumeType: + type: string + enum: + - io1 + - gp2 + - standard +- target: $.components.schemas.Volume.*.VolumeType + description: Type for Volume.VolumeType + update: + x-rs-type: VolumeType +- target: $.components.schemas.FiltersImage.*.BlockDeviceMappingVolumeTypes.items + description: + update: + $ref: "#/components/schemas/VolumeType" +- target: $.components.schemas.FiltersVolume.*.VolumeTypes.items + description: + update: + $ref: "#/components/schemas/VolumeType" +- target: $.components.schemas.CreateVolumeRequest.*.VolumeType + description: + update: + x-rs-type: VolumeType +- target: $.components.schemas.UpdateVolumeRequest.*.VolumeType + description: + update: + x-rs-type: VolumeType +- target: $.components.schemas.BsuToCreate.*.VolumeType + description: + update: + x-rs-type: VolumeType +- target: $.components.schemas.Volume.*.State + description: Type for Volume.State + update: + enum: + - creating + - available + - in-use + - deleting + - error +- target: $.components.schemas.FiltersVolume.*.VolumeStates.items + description: + update: + x-rs-type: VolumeState +- target: $.components.schemas.BlockDeviceMappingCreated + description: Required fields for BlockDeviceMappingCreated + update: + required: + - Bsu + - DeviceName +- target: $.components.schemas.BsuCreated + description: Required fields for BsuCreated + update: + required: + - VolumeId + - DeleteOnVmDeletion + - LinkDate + - State +- target: $.components.schemas.BsuCreated.*.State + description: + update: + x-rs-type: LinkedVolumeState +- target: $.components.schemas.LinkedVolume + description: Required fields for LinkedVolume + update: + required: + - DeleteOnVmDeletion + - DeviceName + - State + - VmId + - VolumeId +- target: $.components.schemas.LinkedVolume.*.State + description: Type for LinkedVolume.State + update: + enum: + - attaching + - detaching + - attached + - detached +- target: $.components.schemas.FiltersVolume.*.LinkVolumeLinkStates.items + description: + update: + x-rs-type: LinkedVolumeState +- target: $.components.schemas.FlexibleGpu + description: Required fields for FlexibleGpu + update: + required: + - DeleteOnVmDeletion + - FlexibleGpuId + - Generation + - ModelName + - State + - SubregionName +- target: $.components.schemas.FlexibleGpu.*.State + description: Type for FlexibleGpu.State + update: + enum: + - allocated + - attaching + - attached + - detaching +- target: $.components.schemas.FiltersFlexibleGpu.*.States.items + description: + update: + x-rs-type: FlexibleGpuState +- target: $.components.schemas.NetAccessPoint.*.State + description: Type for NetAccessPoint.State + update: + enum: + - pending + - available + - deleting + - deleted +- target: $.components.schemas.FiltersNetAccessPoint.*.States.items + description: + update: + x-rs-type: NetAccessPointState +- target: $.components.schemas.AccessKey.*.State + description: Type for AccessKey.State + update: + enum: + - ACTIVE + - INACTIVE +- target: $.components.schemas.FiltersAccessKeys.*.States.items + description: + update: + x-rs-type: AccessKeyState +- target: $.components.schemas.Nic.*.State + description: Type for Nic.State + update: + enum: + - available + - attaching + - in-use + - detaching +- target: $.components.schemas.NicLight.*.State + description: + update: + x-rs-type: NicState +- target: $.components.schemas.FiltersNic.*.States.items + description: + update: + x-rs-type: NicState +- target: $.components.schemas.LinkNic.*.State + description: Type for LinkNic.State + update: + enum: + - attaching + - attached + - detaching + - detached +- target: $.components.schemas.FiltersLoadBalancer.*.States.items + description: + update: + x-rs-type: LoadBalancerState +- target: $.components.schemas.LoadBalancer.*.State + description: Type for LoadBalancer.State + update: + enum: + - provisioning + - starting + - reloading + - active + - reconfiguring + - deleting + - deleted +- target: $.components.schemas.LinkNicLight.*.State + description: + update: + x-rs-type: LinkNicState +- target: $.components.schemas.PublicIp + description: Required fields for PublicIp + update: + required: + - PublicIpId + - PublicIp + - Tags +- target: $.components.schemas.PublicIpLight + description: Required fields for PublicIpLight + update: + required: + - PublicIpId + - PublicIp +- target: $.components.schemas.LinkPublicIpLightForVm + description: Required fields for LinkPublicIpLightForVm + update: + required: + - PublicDnsName + - PublicIp +- target: $.components.schemas.PrivateIpLightForVm + description: Required fields for PrivateIpLightForVm + update: + required: + - IsPrimary + - PrivateDnsName + - PrivateIp +- target: $.components.schemas.Listener + description: Required fields for Listener + update: + required: + - BackendPort + - BackendProtocol + - LoadBalancerPort + - LoadBalancerProtocol +- target: $.components.schemas.Listener.*.PolicyNames + description: Remove pointer from Listener attributes + update: + x-rs-type-skip-optional-pointer: true +- target: $.components.schemas.AccessLog + description: Required fields for AccessLog + update: + required: + - IsEnabled +- target: $.components.schemas.LoadBalancer + description: Required fields for LoadBalancer + update: + required: + - State + - AccessLog + - ApplicationStickyCookiePolicies + - BackendIps + - BackendVmIds + - DnsName + - HealthCheck + - Listeners + - LoadBalancerName + - LoadBalancerStickyCookiePolicies + - LoadBalancerType + - SecuredCookies + - SecurityGroups + - SourceSecurityGroup + - SubregionNames + - Tags +- target: $.components.schemas.LoadBalancer.*.Subnets + description: Remove pointer from LoadBalancer attributes + update: + x-rs-type-skip-optional-pointer: true +- target: $.components.schemas.LoadBalancerTag + description: Required fields for LoadBalancerTag + update: + required: + - LoadBalancerName + - Key + - Value +- target: $.components.schemas.Tag + description: Required fields for Tag + update: + required: + - ResourceId + - ResourceType + - Key + - Value +- target: $.components.schemas.Tag.*.ResourceType + description: Enum for Tag.ResourceType + update: + enum: + - customer-gateway + - dhcpoptions + - flexible-gpu + - image + - instance + - keypair + - natgateway + - network-interface + - public-ip + - route-table + - security-group + - snapshot + - subnet + - task + - virtual-private-gateway + - volume + - vpc + - vpc-endpoint + - vpc-peering-connection + - vpn-connection + x-enum-varnames: + - ClientGateway + - DHCPOptions + - flexible-gpu + - image + - vm + - keypair + - NatServiceOrNetAccessPoint + - nic + - public-ip + - route-table + - security-group + - snapshot + - subnet + - task + - VirtualGateway + - volume + - Net + - NetEndpoint + - NetPeering + - vpn-connection +- target: $.components.schemas.RouteTable + description: Required fields for RouteTable + update: + required: + - LinkRouteTables + - NetId + - RoutePropagatingVirtualGateways + - RouteTableId + - Routes + - Tags +- target: $.components.schemas.LinkRouteTable + description: Required fields for LinkRouteTable + update: + required: + - LinkRouteTableId + - Main + - NetId + - RouteTableId + - SubnetId +- target: $.components.schemas.Route + description: Required fields for Route + update: + required: + - CreationMethod + - DestinationIpRange + - State +- target: $.components.schemas.RouteLight + description: Required fields for RouteLight + update: + required: + - DestinationIpRange + - RouteType + - State +- target: $.components.schemas.VirtualGateway + description: Required fields for VirtualGateway + update: + required: + - ConnectionType + - NetToVirtualGatewayLinks + - State + - Tags + - VirtualGatewayId +- target: $.components.schemas.ClientGateway + description: Required fields for ClientGateway + update: + required: + - BgpAsn + - ConnectionType + - PublicIp + - State + - Tags + - ClientGatewayId +- target: $.components.schemas.ClientGateway.*.State + description: Type for ClientGateway.State + update: + enum: + - pending + - available + - deleting + - deleted +- target: $.components.schemas.FiltersClientGateway.*.States.items + description: + update: + x-rs-type: ClientGatewayState +- target: $.components.schemas.VpnConnection + description: Required fields for VpnConnection + update: + required: + - ClientGatewayId + - ConnectionType + - Routes + - VirtualGatewayId + - VgwTelemetries + - StaticRoutesOnly + - State + - Tags + - VpnConnectionId +- target: $.components.schemas.NetAccessPoint + description: Required fields for NetAccessPoint + update: + required: + - NetId + - RouteTableIds + - ServiceName + - State + - Tags + - NetAccessPointId +- target: $.components.schemas.*.*.NextPageToken.format + description: Switch pagination to string + remove: true +- target: $.paths["/DeleteSecurityGroup"].post.responses + update: + '409': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 409 response (Conflict). +- target: $.paths["/DeleteSubnet"].post.responses + update: + '409': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 409 response (Conflict). +- target: $.paths["/CreateLoadBalancer"].post.responses + update: + '409': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 409 response (Conflict). +- target: $.paths["/UpdateLoadBalancer"].post.responses + update: + '409': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 409 response (Conflict). +- target: $.paths["/CreateNatService"].post.responses + update: + '409': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 409 response (Conflict). +- target: $.paths["/UnlinkInternetService"].post.responses + update: + '424': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 424 response (Failed Dependency). +- target: $.paths["/AddUserToUserGroup"].post.responses + update: + '404': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 404 response (Not Found). +- target: $.paths.*.post.responses + update: + '400': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 400 response (Bad Request). +- target: $.paths.*.post.responses + update: + '500': + content: + application/json: + schema: + "$ref": "#/components/schemas/ErrorResponse" + description: The HTTP 500 response (Internal Server Error). From 14b95ae40c36dd60013112934c521d6ef05d8732 Mon Sep 17 00:00:00 2001 From: Yash Gaykar Date: Mon, 18 May 2026 21:42:02 +0530 Subject: [PATCH 05/26] :sparkles: feat: add OKS client support --- .github/scripts/release-build.sh | 4 +- .github/workflows/code-check-identified.yml | 3 + README.md | 30 + docs/examples.md | 28 + osc_sdk_python/__init__.py | 4 + osc_sdk_python/authentication.py | 26 +- osc_sdk_python/outscale_gateway.py | 235 +- osc_sdk_python/resources/outscale.yaml | 25273 ------------------ osc_sdk_python/runtime/async_/call.py | 38 +- osc_sdk_python/runtime/async_/requester.py | 20 +- osc_sdk_python/runtime/request.py | 17 + osc_sdk_python/runtime/sync/call.py | 53 +- osc_sdk_python/runtime/sync/requester.py | 20 +- tests/async_/test_async_oks.py | 29 + tests/async_/test_async_vm.py | 12 +- 15 files changed, 464 insertions(+), 25328 deletions(-) delete mode 100644 osc_sdk_python/resources/outscale.yaml create mode 100644 osc_sdk_python/runtime/request.py create mode 100644 tests/async_/test_async_oks.py diff --git a/.github/scripts/release-build.sh b/.github/scripts/release-build.sh index a0d5379..f3520b8 100755 --- a/.github/scripts/release-build.sh +++ b/.github/scripts/release-build.sh @@ -18,8 +18,8 @@ new_sdk_version_minor=$(( local_sdk_version_minor + 1 )) new_sdk_version="$local_sdk_version_major.$new_sdk_version_minor.0" # Update osc-api version -curl --retry 10 -o "${root}/osc_sdk_python/resources/outscale.yaml" "https://raw.githubusercontent.com/outscale/osc-api/refs/tags/${osc_api_version}/outscale.yaml" -git add "${root}/osc_sdk_python/resources/outscale.yaml" +curl --retry 10 -o "${root}/osc_sdk_python/resources/osc/api.yaml" "https://raw.githubusercontent.com/outscale/osc-api/refs/tags/${osc_api_version}/outscale.yaml" +git add "${root}/osc_sdk_python/resources/osc/api.yaml" # Setup new SDK version for f in "$root/README.md" "$root/osc_sdk_python/VERSION"; do diff --git a/.github/workflows/code-check-identified.yml b/.github/workflows/code-check-identified.yml index 24e585d..4873135 100644 --- a/.github/workflows/code-check-identified.yml +++ b/.github/workflows/code-check-identified.yml @@ -28,6 +28,9 @@ jobs: env: OSC_ACCESS_KEY: ${{ secrets.OSC_ACCESS_KEY }} OSC_SECRET_KEY: ${{ secrets.OSC_SECRET_KEY }} + OSC_ACCESS_KEY_V2: ${{ secrets.OSC_ACCESS_KEY_V2 }} + OSC_SECRET_KEY_V2: ${{ secrets.OSC_SECRET_KEY_V2 }} + OSC_IAM_V2_SERVICES: ${{ secrets.OSC_IAM_V2_SERVICES }} OSC_TEST_LOGIN: ${{ secrets.OSC_TEST_LOGIN }} OSC_TEST_PASSWORD: ${{ secrets.OSC_TEST_PASSWORD }} run: make test-int diff --git a/README.md b/README.md index 7d0b7cd..9d1e835 100644 --- a/README.md +++ b/README.md @@ -169,6 +169,36 @@ async def main(): print(vms) +if __name__ == "__main__": + asyncio.run(main()) +``` + +### Multi-Service Client + +Use `Client` or `AsyncClient` to access multiple services from one SDK object: + +```python +from osc_sdk_python import Client + +with Client(profile="default") as client: + vms = client.osc.ReadVms() + projects = client.oks.ListProjects() +``` + +Async example: + +```python +import asyncio + +from osc_sdk_python import AsyncClient + + +async def main(): + async with AsyncClient(profile="default") as client: + vms = await client.osc.ReadVms() + projects = await client.oks.ListProjects() + + if __name__ == "__main__": asyncio.run(main()) ``` diff --git a/docs/examples.md b/docs/examples.md index 34cd11e..957a446 100644 --- a/docs/examples.md +++ b/docs/examples.md @@ -46,6 +46,34 @@ from osc_sdk_python import AsyncGateway gw = AsyncGateway(profile="profile_1") ``` +Using multiple services from one client: + +```python +from osc_sdk_python import Client + +with Client(profile="profile_1") as client: + vms = client.osc.ReadVms() + projects = client.oks.ListProjects() +``` + +Using multiple services from one async client: + +```python +import asyncio + +from osc_sdk_python import AsyncClient + + +async def main(): + async with AsyncClient(profile="profile_1") as client: + vms = await client.osc.ReadVms() + projects = await client.oks.ListProjects() + + +if __name__ == "__main__": + asyncio.run(main()) +``` + Calling actions: * **Typed methods**: `gw.ReadVms(...)`, `gw.CreateVms(...)`, etc. diff --git a/osc_sdk_python/__init__.py b/osc_sdk_python/__init__.py index f75028d..f37a89d 100644 --- a/osc_sdk_python/__init__.py +++ b/osc_sdk_python/__init__.py @@ -1,5 +1,7 @@ from .outscale_gateway import OutscaleGateway as Gateway from .outscale_gateway import AsyncOutscaleGateway as AsyncGateway +from .outscale_gateway import Client +from .outscale_gateway import AsyncClient from .outscale_gateway import LOG_NONE from .outscale_gateway import LOG_STDERR from .outscale_gateway import LOG_STDIO @@ -20,6 +22,8 @@ "__author__", "Gateway", "AsyncGateway", + "Client", + "AsyncClient", "LOG_NONE", "LOG_STDERR", "LOG_STDIO", diff --git a/osc_sdk_python/authentication.py b/osc_sdk_python/authentication.py index 23fd8ac..cac355c 100644 --- a/osc_sdk_python/authentication.py +++ b/osc_sdk_python/authentication.py @@ -22,8 +22,12 @@ def __init__( signed_headers="content-type;host;x-osc-date", user_agent=DEFAULT_USER_AGENT, ): - self.access_key = credentials.access_key - self.secret_key = credentials.secret_key + if service in credentials.iam_v2_services: + self.access_key = credentials.access_key_v2 + self.secret_key = credentials.secret_key_v2 + else: + self.access_key = credentials.access_key + self.secret_key = credentials.secret_key self.login = credentials.login self.password = credentials.password self.host = host @@ -36,13 +40,15 @@ def __init__( self.user_agent = user_agent self.x509_client_cert = credentials.x509_client_cert - def forge_headers_signed(self, uri, request_data): + def forge_headers_signed(self, uri, request_data, canonical_querystring=""): date_iso, date = self.build_dates() credential_scope = "{}/{}/{}/osc4_request".format( date, self.region, self.service ) - canonical_request = self.build_canonical_request(date_iso, uri, request_data) + canonical_request = self.build_canonical_request( + date_iso, uri, request_data, canonical_querystring + ) str_to_sign = self.create_string_to_sign( date_iso, credential_scope, canonical_request ) @@ -56,6 +62,13 @@ def forge_headers_signed(self, uri, request_data): "User-Agent": self.user_agent, } + def forge_headers_oks(self): + return { + "AccessKey": self.access_key, + "SecretKey": self.secret_key, + "User-Agent": self.user_agent, + } + def build_dates(self): """Return YYYYMMDDTHHmmssZ, YYYYMMDD""" t = datetime.datetime.now(datetime.timezone.utc) @@ -71,7 +84,9 @@ def get_signature_key(self, key, date_stamp_value): k_signing = self.sign(k_service, "osc4_request") return k_signing - def build_canonical_request(self, date_iso, canonical_uri, request_data): + def build_canonical_request( + self, date_iso, canonical_uri, request_data, canonical_querystring="" + ): # # Step 1 is to define the verb (GET, POST, etc.)--already done. # Step 2: Create canonical URI--the part of the URI from domain to query @@ -91,7 +106,6 @@ def build_canonical_request(self, date_iso, canonical_uri, request_data): # Step 6: Create payload hash. In this example, the payload (body of # the request) contains the request parameters. # Step 7: Combine elements to create canonical request - canonical_querystring = "" canonical_headers = ( "content-type:" + self.content_type diff --git a/osc_sdk_python/outscale_gateway.py b/osc_sdk_python/outscale_gateway.py index 7bd0ad7..c76d078 100644 --- a/osc_sdk_python/outscale_gateway.py +++ b/osc_sdk_python/outscale_gateway.py @@ -2,6 +2,7 @@ import sys from .runtime.async_.call import AsyncCall from .runtime.sync.call import Call +from .runtime.request import RequestSpec from .limiter import RateLimiter import ruamel.yaml from .version import get_version @@ -23,6 +24,9 @@ # Default DEFAULT_LIMITER_WINDOW = timedelta(seconds=1) # 1 second DEFAULT_LIMITER_MAX_REQUESTS = 5 # 5 requests / sec +RESOURCE_DIR = os.path.join(os.path.dirname(__file__), "resources") +OSC_SPEC = os.path.join(RESOURCE_DIR, "osc/api.yaml") +OKS_SPEC = os.path.join(RESOURCE_DIR, "oks/api.yaml") class ActionNotExists(NotImplementedError): @@ -70,8 +74,9 @@ def do_log(self, s): print(s, file=sys.stderr) -class BaseAPI: - def __init__(self, spec, **kwargs): +class OpenAPIActionAPI: + def __init__(self, spec, service="api", **kwargs): + self.service = service self._load_gateway_structure(spec) self._load_errors() self.log = Logger() @@ -232,7 +237,7 @@ def _get_action(self, action_name): def action(**kwargs): kwargs = self._remove_none_parameters(**kwargs) self._check(action_name, **kwargs) - result = self.call.api(action_name, **kwargs) + result = self.call.api(action_name, service=self.service, **kwargs) return result return action @@ -244,7 +249,7 @@ def __dir__(self): return self.gateway_structure.keys() def raw(self, action_name, **kwargs): - return self.call.api(action_name, **kwargs) + return self.call.api(action_name, service=self.service, **kwargs) def __enter__(self): return self @@ -252,16 +257,18 @@ def __enter__(self): def __exit__(self, type, value, traceback): self.call.close() + def close(self): + self.call.close() + -class OutscaleGateway(BaseAPI): +class OutscaleGateway(OpenAPIActionAPI): def __init__(self, **kwargs): - super().__init__( - os.path.join(os.path.dirname(__file__), "resources/osc/api.yaml"), **kwargs - ) + super().__init__(OSC_SPEC, service="api", **kwargs) -class AsyncBaseAPI(BaseAPI): - def __init__(self, spec, **kwargs): +class AsyncOpenAPIActionAPI(OpenAPIActionAPI): + def __init__(self, spec, service="api", **kwargs): + self.service = service self._load_gateway_structure(spec) self._load_errors() self.log = Logger() @@ -277,13 +284,13 @@ def _get_action(self, action_name): async def action(**kwargs): kwargs = self._remove_none_parameters(**kwargs) self._check(action_name, **kwargs) - result = await self.call.api(action_name, **kwargs) + result = await self.call.api(action_name, service=self.service, **kwargs) return result return action async def raw(self, action_name, **kwargs): - return await self.call.api(action_name, **kwargs) + return await self.call.api(action_name, service=self.service, **kwargs) async def __aenter__(self): return self @@ -301,11 +308,207 @@ async def close(self): await self.call.close() -class AsyncOutscaleGateway(AsyncBaseAPI): +class AsyncOutscaleGateway(AsyncOpenAPIActionAPI): def __init__(self, **kwargs): - super().__init__( - os.path.join(os.path.dirname(__file__), "resources/osc/api.yaml"), **kwargs - ) + super().__init__(OSC_SPEC, service="api", **kwargs) + + + + + + + +class OpenAPIPathAPI: + def __init__(self, spec, service, **kwargs): + self.service = service + self.operations = self._load_operations(spec) + self._load_errors() + self.log = Logger() + self.limiter = RateLimiter(DEFAULT_LIMITER_WINDOW, DEFAULT_LIMITER_MAX_REQUESTS) + self.call = Call(logger=self.log, limiter=self.limiter, **kwargs) + + def _load_operations(self, spec): + with open(spec, "r") as fi: + yaml = ruamel.yaml.YAML(typ="safe") + content = yaml.load(fi.read()) + + self.api_version = content["info"]["version"] + operations = {} + for path, path_item in content.get("paths", {}).items(): + path_parameters = path_item.get("parameters", []) + for method in ["get", "post", "put", "patch", "delete"]: + operation = path_item.get(method) + if operation is None: + continue + + parameters = path_parameters + operation.get("parameters", []) + operation_id = operation.get("operationId") + if operation_id: + operations[operation_id] = { + "method": method.upper(), + "path": path, + "parameters": parameters, + "request_body": operation.get("requestBody"), + } + return operations + + def _load_errors(self): + dir_path = os.path.join(os.path.dirname(__file__)) + yaml_file = os.path.abspath("{}/resources/gateway_errors.yaml".format(dir_path)) + with open(yaml_file, "r") as yam: + yaml = ruamel.yaml.YAML(typ="safe") + self.gateway_errors = yaml.load(yam.read()) + + def _build_request(self, operation_name, kwargs): + if operation_name not in self.operations: + raise ActionNotExists( + "Operation {} does not exists for python sdk: {} with api: {}".format( + operation_name, get_version(), self.api_version + ) + ) + + operation = self.operations[operation_name] + kwargs = OpenAPIActionAPI._remove_none_parameters(**kwargs) + path_params = {} + query_params = {} + + for parameter in operation["parameters"]: + name = parameter["name"] + location = parameter["in"] + if location == "path": + if name not in kwargs and parameter.get("required"): + raise ParameterIsRequired("Missing {}.".format(name)) + if name in kwargs: + path_params[name] = kwargs.pop(name) + elif location == "query": + if name in kwargs: + query_params[name] = kwargs.pop(name) + + body = kwargs.pop("body", None) + if operation["request_body"] is not None and body is None: + body = kwargs + kwargs = {} + + if kwargs: + raise ParameterNotValid( + "{}. Available parameters are path/query parameters or body.".format( + ", ".join(kwargs.keys()) + ) + ) + + return RequestSpec( + service=self.service, + method=operation["method"], + path=operation["path"], + json_body=body, + query_params=query_params, + ), path_params + + def _get_operation(self, operation_name): + def operation(**kwargs): + request, path_params = self._build_request(operation_name, kwargs) + return self.call.request(request, path_params=path_params) + + return operation + + def __getattr__(self, attr): + return self._get_operation(attr) + + def __dir__(self): + return self.operations.keys() + + def close(self): + self.call.close() + + def __enter__(self): + return self + + def __exit__(self, type, value, traceback): + self.close() + + +class AsyncOpenAPIPathAPI(OpenAPIPathAPI): + def __init__(self, spec, service, **kwargs): + self.service = service + self.operations = self._load_operations(spec) + self._load_errors() + self.log = Logger() + self.limiter = RateLimiter(DEFAULT_LIMITER_WINDOW, DEFAULT_LIMITER_MAX_REQUESTS) + self.call = AsyncCall(logger=self.log, limiter=self.limiter, **kwargs) + + def _get_operation(self, operation_name): + async def operation(**kwargs): + request, path_params = self._build_request(operation_name, kwargs) + return await self.call.request(request, path_params=path_params) + + return operation + + async def close(self): + await self.call.close() + + async def __aenter__(self): + return self + + async def __aexit__(self, type, value, traceback): + await self.close() + + def __enter__(self): + raise TypeError("Async service client must be used with 'async with'") + + def __exit__(self, type, value, traceback): + return None + + +BaseAPI = OpenAPIActionAPI +AsyncBaseAPI = AsyncOpenAPIActionAPI + + +class OksGateway(OpenAPIPathAPI): + def __init__(self, **kwargs): + super().__init__(OKS_SPEC, service="oks", **kwargs) + + +class AsyncOksGateway(AsyncOpenAPIPathAPI): + def __init__(self, **kwargs): + super().__init__(OKS_SPEC, service="oks", **kwargs) + + +class Client: + def __init__(self, **kwargs): + self.osc = OutscaleGateway(**kwargs) + self.oks = OksGateway(**kwargs) + + def close(self): + self.osc.close() + self.oks.close() + + def __enter__(self): + return self + + def __exit__(self, type, value, traceback): + self.close() + + +class AsyncClient: + def __init__(self, **kwargs): + self.osc = AsyncOutscaleGateway(**kwargs) + self.oks = AsyncOksGateway(**kwargs) + + async def close(self): + await self.osc.close() + await self.oks.close() + + async def __aenter__(self): + return self + + async def __aexit__(self, type, value, traceback): + await self.close() + + def __enter__(self): + raise TypeError("AsyncClient must be used with 'async with'") + + def __exit__(self, type, value, traceback): + return None def test(): diff --git a/osc_sdk_python/resources/outscale.yaml b/osc_sdk_python/resources/outscale.yaml deleted file mode 100644 index 9882430..0000000 --- a/osc_sdk_python/resources/outscale.yaml +++ /dev/null @@ -1,25273 +0,0 @@ -components: - schemas: - AcceptNetPeeringRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - NetPeeringId: - description: The ID of the Net peering you want to accept. - type: string - required: - - NetPeeringId - type: object - AcceptNetPeeringResponse: - additionalProperties: false - properties: - NetPeering: - $ref: '#/components/schemas/NetPeering' - description: Information about the Net peering. - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - AccepterNet: - additionalProperties: false - description: Information about the accepter Net. - properties: - AccountId: - description: The OUTSCALE account ID of the owner of the accepter Net. - type: string - IpRange: - description: The IP range for the accepter Net, in CIDR notation (for example, `10.0.0.0/16`). - type: string - NetId: - description: The ID of the accepter Net. - type: string - type: object - AccessKey: - additionalProperties: false - description: Information about the access key. - properties: - AccessKeyId: - description: The ID of the access key. - type: string - CreationDate: - description: The date and time (UTC) at which the access key was created. - format: date-time - type: string - ExpirationDate: - description: The date and time (UTC) at which the access key expires. - format: date-time - type: string - LastModificationDate: - description: The date and time (UTC) at which the access key was last modified. - format: date-time - type: string - State: - description: The state of the access key (`ACTIVE` if the key is valid for API calls, or `INACTIVE` if not). - type: string - Tag: - description: The tag added to the access key. - type: string - type: object - AccessKeySecretKey: - additionalProperties: false - description: Information about the access key. - properties: - AccessKeyId: - description: The ID of the access key. - type: string - CreationDate: - description: The date and time (UTC) at which the access key was created. - format: date-time - type: string - ExpirationDate: - description: The date and time (UTC) at which the access key expires. - format: date-time - type: string - LastModificationDate: - description: The date and time (UTC) at which the access key was last modified. - format: date-time - type: string - SecretKey: - description: The secret key that enables you to send requests. - type: string - State: - description: The state of the access key (`ACTIVE` if the key is valid for API calls, or `INACTIVE` if not). - type: string - Tag: - description: A tag added to the access key. - type: string - type: object - AccessLog: - additionalProperties: false - description: Information about access logs. - properties: - IsEnabled: - description: If true, access logs are enabled for your load balancer. If false, they are not. If you set this to true in your request, the `OsuBucketName` parameter is required. - type: boolean - OsuBucketName: - description: The name of the OOS bucket for the access logs. - type: string - OsuBucketPrefix: - description: The path to the folder of the access logs in your OOS bucket (by default, the `root` level of your bucket). - type: string - PublicationInterval: - description: The time interval for the publication of access logs in the OOS bucket, in minutes. This value can be either `5` or `60` (by default, `60`). - type: integer - type: object - Account: - additionalProperties: false - description: Information about the account. - properties: - AccountId: - description: The ID of the account. - type: string - AdditionalEmails: - description: One or more additional email addresses for the account. These addresses are used for notifications only. - items: - pattern: ^.+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)+$ - type: string - type: array - City: - description: The city of the account owner. - type: string - CompanyName: - description: The name of the company for the account. - type: string - Country: - description: The country of the account owner. - type: string - CustomerId: - description: The ID of the customer. - type: string - Email: - description: The main email address for the account. This address is used for your credentials and for notifications. - type: string - FirstName: - description: The first name of the account owner. - type: string - JobTitle: - description: The job title of the account owner. - type: string - LastName: - description: The last name of the account owner. - type: string - MobileNumber: - description: The mobile phone number of the account owner. - type: string - OutscaleLoginAllowed: - description: Whether the account is allowed to log in to Cockpit v2 using its Outscale credentials when identity federation is activated. - type: boolean - PhoneNumber: - description: The landline phone number of the account owner. - type: string - StateProvince: - description: The state/province of the account. - type: string - VatNumber: - description: The value added tax (VAT) number for the account. - type: string - ZipCode: - description: The ZIP code of the city. - type: string - type: object - ActionsOnNextBoot: - description: The action to perform on the next boot of the VM. - properties: - SecureBoot: - $ref: '#/components/schemas/SecureBootAction' - description: One action to perform on the next boot of the VM. For more information, see [About Secure Boot](https://docs.outscale.com/en/userguide/About-Secure-Boot.html#_secure_boot_actions). - type: object - AddUserToUserGroupRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - UserGroupName: - description: The name of the group you want to add a user to. - type: string - UserGroupPath: - description: The path to the group. If not specified, it is set to a slash (`/`). - type: string - UserName: - description: The name of the user you want to add to the group. - type: string - UserPath: - description: The path to the user. If not specified, it is set to a slash (`/`). - type: string - required: - - UserGroupName - - UserName - type: object - AddUserToUserGroupResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - ApiAccessPolicy: - additionalProperties: false - description: Information about the API access policy. - properties: - MaxAccessKeyExpirationSeconds: - description: The maximum possible lifetime for your access keys, in seconds. If `0`, your access keys can have unlimited lifetimes. - format: int64 - type: integer - RequireTrustedEnv: - description: |- - If true, a trusted session is activated, allowing you to bypass Certificate Authorities (CAs) enforcement. For more information, see [About Your API Access Policy](https://docs.outscale.com/en/userguide/About-Your-API-Access-Policy.html).
- If this is enabled, it is required that you and all your users log in to Cockpit v2 using the WebAuthn method for multi-factor authentication. For more information, see [About Authentication > Multi-Factor Authentication](https://docs.outscale.com/en/userguide/About-Authentication.html#_multi_factor_authentication). - type: boolean - type: object - ApiAccessRule: - additionalProperties: false - description: Information about the API access rule. - properties: - ApiAccessRuleId: - description: The ID of the API access rule. - type: string - CaIds: - description: One or more IDs of Client Certificate Authorities (CAs) used for the API access rule. - items: - type: string - type: array - Cns: - description: One or more Client Certificate Common Names (CNs). - items: - type: string - type: array - Description: - description: The description of the API access rule. - type: string - IpRanges: - description: One or more IP ranges used for the API access rule, in CIDR notation (for example, `192.0.2.0/16`). - items: - type: string - type: array - type: object - ApplicationStickyCookiePolicy: - additionalProperties: false - description: Information about the stickiness policy. - properties: - CookieName: - description: The name of the application cookie used for stickiness, between 1 and 255 characters. - type: string - PolicyName: - description: The mnemonic name for the policy being created. The name must be unique within a set of policies for this load balancer. - type: string - type: object - BackendVmHealth: - additionalProperties: false - description: Information about the health of a backend VM. - properties: - Description: - description: The description of the state of the backend VM. - type: string - State: - description: The state of the backend VM (`InService` \| `OutOfService` \| `Unknown`). - type: string - StateReason: - description: |- - Information about the cause of `OutOfService` VMs.
- Specifically, whether the cause is Elastic Load Balancing or the VM (`ELB` \| `Instance` \| `N/A`). - type: string - VmId: - description: The ID of the backend VM. - type: string - type: object - BlockDeviceMappingCreated: - additionalProperties: false - description: Information about the created block device mapping. - properties: - Bsu: - $ref: '#/components/schemas/BsuCreated' - description: Information about the created BSU volume. - DeviceName: - description: The name of the device. - type: string - type: object - BlockDeviceMappingImage: - additionalProperties: false - description: One or more parameters used to automatically set up volumes when the VM is created. - properties: - Bsu: - $ref: '#/components/schemas/BsuToCreate' - description: Information about the BSU volume to create. - DeviceName: - description: The device name for the volume. For a root device, you must use `/dev/sda1`. For other volumes, you must use `/dev/sdX`, `/dev/sdXX`, `/dev/xvdX`, or `/dev/xvdXX` (where the first `X` is a letter between `b` and `z`, and the second `X` is a letter between `a` and `z`). - type: string - VirtualDeviceName: - description: The name of the virtual device (`ephemeralN`). - type: string - type: object - BlockDeviceMappingVmCreation: - additionalProperties: false - description: Information about the block device mapping. - properties: - Bsu: - $ref: '#/components/schemas/BsuToCreate' - description: Information about the BSU volume to create. - DeviceName: - description: The device name for the volume. For a root device, you must use `/dev/sda1`. For other volumes, you must use `/dev/sdX`, `/dev/sdXX`, `/dev/xvdX`, or `/dev/xvdXX` (where the first `X` is a letter between `b` and `z`, and the second `X` is a letter between `a` and `z`). - type: string - NoDevice: - description: Removes the device which is included in the block device mapping of the OMI. - type: string - VirtualDeviceName: - description: The name of the virtual device (`ephemeralN`). - type: string - type: object - BlockDeviceMappingVmUpdate: - additionalProperties: false - description: Information about the block device mapping. - properties: - Bsu: - $ref: '#/components/schemas/BsuToUpdateVm' - description: Information about the BSU volume. - DeviceName: - description: The device name for the volume. For a root device, you must use `/dev/sda1`. For other volumes, you must use `/dev/sdX`, `/dev/sdXX`, `/dev/xvdX`, or `/dev/xvdXX` (where the first `X` is a letter between `b` and `z`, and the second `X` is a letter between `a` and `z`). - type: string - NoDevice: - description: Removes the device which is included in the block device mapping of the OMI. - type: string - VirtualDeviceName: - description: The name of the virtual device (`ephemeralN`). - type: string - type: object - BootMode: - description: Information about the boot mode of the VM. - enum: - - uefi - - legacy - type: string - BsuCreated: - additionalProperties: false - description: Information about the created BSU volume. - properties: - DeleteOnVmDeletion: - description: If true, the volume is deleted when terminating the VM. If false, the volume is not deleted when terminating the VM. - type: boolean - LinkDate: - description: The date and time (UTC) at which the volume was attached to the VM, in ISO 8601 date-time format. - format: date-time - type: string - State: - description: The state of the volume. - type: string - VolumeId: - description: The ID of the volume. - type: string - type: object - BsuToCreate: - additionalProperties: false - description: Information about the BSU volume to create. - properties: - DeleteOnVmDeletion: - default: true - description: If set to true, the volume is deleted when terminating the VM. If false, the volume is not deleted when terminating the VM. - type: boolean - Iops: - description: The number of I/O operations per second (IOPS). This parameter must be specified only if you create an `io1` volume. The maximum number of IOPS allowed for `io1` volumes is `13000` with a maximum performance ratio of 300 IOPS per gibibyte. - type: integer - SnapshotId: - description: The ID of the snapshot used to create the volume. - type: string - VolumeSize: - description: |- - The size of the volume, in gibibytes (GiB).
- If you specify a snapshot ID, the volume size must be at least equal to the snapshot size.
- If you specify a snapshot ID but no volume size, the volume is created with a size similar to the snapshot one. - type: integer - VolumeType: - description: |- - The type of the volume (`standard` \| `io1` \| `gp2`). If not specified in the request, a `standard` volume is created.
- For more information about volume types, see [About Volumes > Volume Types and IOPS](https://docs.outscale.com/en/userguide/About-Volumes.html#_volume_types_and_iops). - type: string - type: object - BsuToUpdateVm: - additionalProperties: false - description: Information about the BSU volume. - properties: - DeleteOnVmDeletion: - description: If set to true, the volume is deleted when terminating the VM. If set to false, the volume is not deleted when terminating the VM. - type: boolean - VolumeId: - description: The ID of the volume. - type: string - type: object - CO2CategoryDistribution: - additionalProperties: false - description: The allocation of the `Value` among categories. - properties: - Category: - description: The category of the resource (for example, `storage`). - type: string - Value: - description: The total CO2 emissions for the category. - format: double - type: number - type: object - CO2EmissionEntry: - additionalProperties: false - description: The CO2 emission by month and account, for the specified request. - properties: - AccountId: - description: The ID of the account associated with the consumption. - type: string - CategoryDistribution: - description: The allocation of the `Value` among categories. - items: - $ref: '#/components/schemas/CO2CategoryDistribution' - type: array - FactorDistribution: - description: The allocation of the `Value` among factors. - items: - $ref: '#/components/schemas/CO2FactorDistribution' - type: array - Month: - description: The month associated with the CO2 emission entry. - format: date - type: string - PayingAccountId: - description: The ID of the paying account related to the `AccountId` parameter. - type: string - Value: - description: The total CO2 emissions for the `Month` and `AccountId` specified. This value corresponds to the sum of all entries in `CategoryDistribution` and `FactorDistributionEntry`. - format: double - type: number - type: object - CO2FactorDistribution: - additionalProperties: false - description: The allocation of the `Value` among factors. - properties: - Factor: - description: The emission source (for example, `hardware`). - type: string - Value: - description: The total CO2 emissions for the factor. - format: double - type: number - type: object - Ca: - additionalProperties: false - description: Information about the Client Certificate Authority (CA). - properties: - CaFingerprint: - description: The fingerprint of the CA. - type: string - CaId: - description: The ID of the CA. - type: string - Description: - description: The description of the CA. - type: string - type: object - Catalog: - additionalProperties: false - description: Information about our catalog of prices. - properties: - Entries: - description: One or more catalog entries. - items: - $ref: '#/components/schemas/CatalogEntry' - type: array - type: object - CatalogEntry: - additionalProperties: false - description: Information about the catalog entry. - properties: - Category: - description: The category of the catalog entry (for example, `network`). - type: string - Flags: - description: When returned and equal to `PER_MONTH`, the price of the catalog entry is calculated on a monthly basis. - type: string - Operation: - description: The API call associated with the catalog entry (for example, `CreateVms` or `RunInstances`). - type: string - Service: - description: The service associated with the catalog entry (`TinaOS-FCU`, `TinaOS-LBU`, `TinaOS-DirectLink`, or `TinaOS-OOS`). - type: string - SubregionName: - description: The Subregion associated with the catalog entry. - type: string - Title: - description: The description of the catalog entry. - type: string - Type: - description: The type of resource associated with the catalog entry. - type: string - UnitPrice: - description: The unit price of the catalog entry in the currency of your account, in the ISO-4217 format (for example, `EUR`). - format: float - type: number - type: object - Catalogs: - additionalProperties: false - description: Information about the catalogs. - properties: - Entries: - description: One or more catalog entries. - items: - $ref: '#/components/schemas/CatalogEntry' - type: array - FromDate: - description: The beginning of the time period (UTC). - format: date-time - type: string - State: - description: The state of the catalog. - enum: - - CURRENT - - OBSOLETE - type: string - ToDate: - description: The end of the time period (UTC). - format: date-time - type: string - type: object - CheckAuthenticationRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Login: - description: The email address of the account. - type: string - Password: - description: The password of the account. - type: string - required: - - Login - - Password - type: object - CheckAuthenticationResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - ClientGateway: - additionalProperties: false - description: Information about the client gateway. - properties: - BgpAsn: - description: The Autonomous System Number (ASN) used by the Border Gateway Protocol (BGP) to find the path to your client gateway through the Internet. - type: integer - ClientGatewayId: - description: The ID of the client gateway. - type: string - ConnectionType: - description: The type of communication tunnel used by the client gateway (always `ipsec.1`). - type: string - PublicIp: - description: The public IPv4 address of the client gateway (must be a fixed address into a NATed network). - type: string - State: - description: The state of the client gateway (`pending` \| `available` \| `deleting` \| `deleted`). - type: string - Tags: - description: One or more tags associated with the client gateway. - items: - $ref: '#/components/schemas/ResourceTag' - type: array - type: object - ConsumptionEntry: - additionalProperties: false - description: Information about the resources consumed during the specified time period. - properties: - AccountId: - description: The ID of your OUTSCALE account. - type: string - Category: - description: The category of the resource (for example, `network`). - type: string - FromDate: - description: The beginning of the time period (UTC). - format: date-time - type: string - Operation: - description: The API call that triggered the resource consumption (for example, `RunInstances` or `CreateVolume`). - type: string - PayingAccountId: - description: The ID of the OUTSCALE account which is billed for your consumption. It can be different from your account in the `AccountId` parameter. - type: string - Price: - description: The total price of the consumed resource during the specified time period, in the currency of the Region's catalog. - format: double - type: number - ResourceId: - description: The ID of the consumed resource. - type: string - Service: - description: The service of the API call (`TinaOS-FCU`, `TinaOS-LBU`, `TinaOS-DirectLink`, `TinaOS-OOS`, `TinaOS-OSU`, or `OKS`). - type: string - SubregionName: - description: The name of the Subregion. - type: string - Title: - description: A description of the consumed resource. - type: string - ToDate: - description: The end of the time period (UTC). - format: date-time - type: string - Type: - description: The type of resource, depending on the API call. - type: string - UnitPrice: - description: The unit price of the consumed resource in the currency of your account, in the ISO-4217 format (for example, `EUR`). - format: double - type: number - Value: - description: The consumed amount for the resource. The unit depends on the resource type. For more information, see the `Title` element. - format: double - type: number - type: object - CreateAccessKeyRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - ExpirationDate: - description: The date and time, or the date, at which you want the access key to expire, in ISO 8601 format (for example, `2020-06-14T00:00:00.000Z`, or `2020-06-14`). If not specified, the access key is set to not expire. - oneOf: - - format: date-time - type: string - - format: date - type: string - Tag: - description: A tag to add to the access key. - type: string - UserName: - description: The name of the EIM user that owns the key to be created. If you do not specify a user name, this action creates an access key for the user who sends the request (which can be the root user). - type: string - type: object - CreateAccessKeyResponse: - additionalProperties: false - properties: - AccessKey: - $ref: '#/components/schemas/AccessKeySecretKey' - description: Information about the access key. - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - CreateAccountRequest: - additionalProperties: false - properties: - AdditionalEmails: - description: One or more additional email addresses for the account. These addresses are used for notifications only. If you already have a list of additional emails registered, you cannot add to it, only replace it. To remove all registered additional emails, specify an empty list. - items: - pattern: ^.+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)+$ - type: string - type: array - City: - description: The city of the account owner. - type: string - CompanyName: - description: The name of the company for the account. - type: string - Country: - description: The country of the account owner. - type: string - CustomerId: - description: The ID of the customer. It must be 8 digits. - type: string - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Email: - description: The main email address for the account. This address is used for your credentials and notifications. - type: string - FirstName: - description: The first name of the account owner. - type: string - JobTitle: - description: The job title of the account owner. - type: string - LastName: - description: The last name of the account owner. - type: string - MobileNumber: - description: The mobile phone number of the account owner. - type: string - PhoneNumber: - description: The landline phone number of the account owner. - type: string - StateProvince: - description: The state/province of the account. - type: string - VatNumber: - description: The value added tax (VAT) number for the account. - type: string - ZipCode: - description: The ZIP code of the city. - type: string - required: - - City - - CompanyName - - Country - - CustomerId - - Email - - FirstName - - LastName - - ZipCode - type: object - CreateAccountResponse: - additionalProperties: false - properties: - Account: - $ref: '#/components/schemas/Account' - description: Information about the account. - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - CreateApiAccessRuleRequest: - additionalProperties: false - properties: - CaIds: - description: One or more IDs of Client Certificate Authorities (CAs). - items: - type: string - type: array - Cns: - description: One or more Client Certificate Common Names (CNs). If this parameter is specified, you must also specify the `CaIds` parameter. - items: - type: string - type: array - Description: - description: A description for the API access rule. - type: string - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - IpRanges: - description: One or more IPs or CIDR blocks (for example, `192.0.2.0/16`). - items: - type: string - type: array - type: object - CreateApiAccessRuleResponse: - additionalProperties: false - properties: - ApiAccessRule: - $ref: '#/components/schemas/ApiAccessRule' - description: Information about the API access rule. - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - CreateCaRequest: - additionalProperties: false - properties: - CaPem: - description: 'The CA in PEM format.
With OSC CLI, use the following syntax to make sure your CA file is correctly parsed: `--CaPem="$(cat FILENAME)"`.' - type: string - Description: - description: The description of the CA. - type: string - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - required: - - CaPem - type: object - CreateCaResponse: - additionalProperties: false - properties: - Ca: - $ref: '#/components/schemas/Ca' - description: Information about the Client Certificate Authority (CA). - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - CreateClientGatewayRequest: - additionalProperties: false - properties: - BgpAsn: - description: |- - The Autonomous System Number (ASN) used by the Border Gateway Protocol (BGP) to find the path to your client gateway through the Internet.
- This number must be between `1` and `4294967295`, except `50624`, `53306`, and `132418`.
- If you do not have an ASN, you can choose one between `64512` and `65534` (both included), or between `4200000000` and `4294967295` (both included). - type: integer - ConnectionType: - description: The communication protocol used to establish tunnel with your client gateway (always `ipsec.1`). - type: string - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - PublicIp: - description: The public fixed IPv4 address of your client gateway. - type: string - required: - - BgpAsn - - PublicIp - - ConnectionType - type: object - CreateClientGatewayResponse: - additionalProperties: false - properties: - ClientGateway: - $ref: '#/components/schemas/ClientGateway' - description: Information about the client gateway. - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - CreateDedicatedGroupRequest: - additionalProperties: false - properties: - CpuGeneration: - description: The processor generation for the VMs in the dedicated group (for example, `4`). - type: integer - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Name: - description: A name for the dedicated group. - type: string - SubregionName: - description: The Subregion in which you want to create the dedicated group. - type: string - required: - - CpuGeneration - - Name - - SubregionName - type: object - CreateDedicatedGroupResponse: - additionalProperties: false - properties: - DedicatedGroup: - $ref: '#/components/schemas/DedicatedGroup' - description: Information about the dedicated group. - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - CreateDhcpOptionsRequest: - additionalProperties: false - properties: - DomainName: - description: 'Specify a domain name (for example, `MyCompany.com`). You can specify only one domain name. You must specify at least one of the following parameters: `DomainName`, `DomainNameServers`, `LogServers`, or `NtpServers`.' - type: string - DomainNameServers: - description: 'The IPs of domain name servers. If no IPs are specified, the `OutscaleProvidedDNS` value is set by default. You must specify at least one of the following parameters: `DomainName`, `DomainNameServers`, `LogServers`, or `NtpServers`.' - items: - type: string - type: array - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - LogServers: - description: 'The IPs of the log servers. You must specify at least one of the following parameters: `DomainName`, `DomainNameServers`, `LogServers`, or `NtpServers`.' - items: - type: string - type: array - NtpServers: - description: 'The IPs of the Network Time Protocol (NTP) servers. You must specify at least one of the following parameters: `DomainName`, `DomainNameServers`, `LogServers`, or `NtpServers`.' - items: - type: string - type: array - type: object - CreateDhcpOptionsResponse: - additionalProperties: false - properties: - DhcpOptionsSet: - $ref: '#/components/schemas/DhcpOptionsSet' - description: Information about the DHCP options set. - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - CreateDirectLinkInterfaceRequest: - additionalProperties: false - properties: - DirectLinkId: - description: The ID of the existing DirectLink for which you want to create the DirectLink interface. - type: string - DirectLinkInterface: - $ref: '#/components/schemas/DirectLinkInterface' - description: Information about the DirectLink interface. - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - required: - - DirectLinkId - - DirectLinkInterface - type: object - CreateDirectLinkInterfaceResponse: - additionalProperties: false - properties: - DirectLinkInterface: - $ref: '#/components/schemas/DirectLinkInterfaces' - description: Information about the DirectLink interfaces. - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - CreateDirectLinkRequest: - additionalProperties: false - properties: - Bandwidth: - description: The bandwidth of the DirectLink (`1Gbps` \| `10Gbps`). - type: string - DirectLinkName: - description: The name of the DirectLink. - type: string - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Location: - description: The code of the requested location for the DirectLink, returned by the [ReadLocations](#readlocations) method. - type: string - required: - - Bandwidth - - DirectLinkName - - Location - type: object - CreateDirectLinkResponse: - additionalProperties: false - properties: - DirectLink: - $ref: '#/components/schemas/DirectLink' - description: Information about the DirectLink. - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - CreateFlexibleGpuRequest: - additionalProperties: false - properties: - DeleteOnVmDeletion: - default: false - description: If true, the fGPU is deleted when the VM is terminated. - type: boolean - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Generation: - description: The processor generation that the fGPU must be compatible with. If not specified, the oldest possible processor generation is selected (as provided by [ReadFlexibleGpuCatalog](#readflexiblegpucatalog) for the specified model of fGPU). - type: string - ModelName: - description: The model of fGPU you want to allocate. For more information, see [About Flexible GPUs](https://docs.outscale.com/en/userguide/About-Flexible-GPUs.html). - type: string - SubregionName: - description: The Subregion in which you want to create the fGPU. - type: string - required: - - ModelName - - SubregionName - type: object - CreateFlexibleGpuResponse: - additionalProperties: false - properties: - FlexibleGpu: - $ref: '#/components/schemas/FlexibleGpu' - description: Information about the flexible GPU (fGPU). - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - CreateImageExportTaskRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - ImageId: - description: The ID of the OMI to export. - type: string - OsuExport: - $ref: '#/components/schemas/OsuExportToCreate' - description: Information about the OOS export task to create. - required: - - OsuExport - - ImageId - type: object - CreateImageExportTaskResponse: - additionalProperties: false - properties: - ImageExportTask: - $ref: '#/components/schemas/ImageExportTask' - description: Information about the OMI export task. - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - CreateImageRequest: - additionalProperties: false - properties: - Architecture: - description: '**(when registering from a snapshot)** The architecture of the OMI (`i386` or `x86_64`). By default, set to `x86_64`.' - type: string - BlockDeviceMappings: - description: '**(required when registering from a snapshot)** One or more block device mappings.' - items: - $ref: '#/components/schemas/BlockDeviceMappingImage' - type: array - BootModes: - description: The boot modes compatible with the OMI. - items: - $ref: '#/components/schemas/BootMode' - type: array - Description: - description: A description for the new OMI. - type: string - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - FileLocation: - description: '**(required when registering from a bucket by using a manifest file)** The pre-signed URL of the manifest file for the OMI you want to register. For more information, see [Creating a Pre-signed URL](https://docs.outscale.com/en/userguide/Creating-a-Pre-Signed-URL.html).' - type: string - ImageName: - description: |- - A unique name for the new OMI.
- Constraints: 3-128 alphanumeric characters, underscores (`_`), spaces (` `), parentheses (`()`), slashes (`/`), periods (`.`), or dashes (`-`). - type: string - NoReboot: - description: '**(when creating from a VM)** If false, the VM shuts down before creating the OMI and then reboots. If true, the VM does not.' - type: boolean - ProductCodes: - description: The product codes associated with the OMI. - items: - type: string - type: array - RootDeviceName: - description: '**(required when registering from a snapshot)** The name of the root device for the new OMI.' - type: string - SourceImageId: - description: '**(required when copying an OMI)** The ID of the OMI you want to copy.' - type: string - SourceRegionName: - description: '**(required when copying an OMI)** The name of the source Region (always the same as the Region of your account).' - type: string - TpmMandatory: - description: By default or if set to false, a virtual Trusted Platform Module (vTPM) is not mandatory on VMs created from this OMI. If true, VMs created from this OMI must have a vTPM enabled. - type: boolean - VmId: - description: '**(required when creating from a VM)** The ID of the VM from which you want to create the OMI.' - type: string - type: object - CreateImageResponse: - additionalProperties: false - properties: - Image: - $ref: '#/components/schemas/Image' - description: Information about the OMI. - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - CreateInternetServiceRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - type: object - CreateInternetServiceResponse: - additionalProperties: false - properties: - InternetService: - $ref: '#/components/schemas/InternetService' - description: Information about the internet service. - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - CreateKeypairRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - KeypairName: - description: A unique name for the keypair, with a maximum length of 255 [ASCII printable characters](https://en.wikipedia.org/wiki/ASCII#Printable_characters). - type: string - PublicKey: - description: The public key to import in your account, if you are importing an existing keypair. This value must be Base64-encoded. - type: string - required: - - KeypairName - type: object - CreateKeypairResponse: - additionalProperties: false - properties: - Keypair: - $ref: '#/components/schemas/KeypairCreated' - description: Information about the created keypair. - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - CreateListenerRuleRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Listener: - $ref: '#/components/schemas/LoadBalancerLight' - description: Information about the load balancer. - ListenerRule: - $ref: '#/components/schemas/ListenerRuleForCreation' - description: Information about the listener rule. - VmIds: - description: The IDs of the backend VMs. - items: - type: string - type: array - required: - - VmIds - - Listener - - ListenerRule - type: object - CreateListenerRuleResponse: - additionalProperties: false - properties: - ListenerRule: - $ref: '#/components/schemas/ListenerRule' - description: Information about the listener rule. - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - CreateLoadBalancerListenersRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Listeners: - description: One or more listeners for the load balancer. - items: - $ref: '#/components/schemas/ListenerForCreation' - type: array - LoadBalancerName: - description: The name of the load balancer for which you want to create listeners. - type: string - required: - - Listeners - - LoadBalancerName - type: object - CreateLoadBalancerListenersResponse: - additionalProperties: false - properties: - LoadBalancer: - $ref: '#/components/schemas/LoadBalancer' - description: Information about the load balancer. - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - CreateLoadBalancerPolicyRequest: - additionalProperties: false - properties: - CookieExpirationPeriod: - description: The lifetime of the cookie, in seconds. If not specified, the default value of this parameter is `1`, which means that the sticky session lasts for the duration of the browser session. - type: integer - CookieName: - description: The name of the application cookie used for stickiness, between 1 and 255 characters. This parameter is required if you create a stickiness policy based on an application-generated cookie. - maxLength: 255 - type: string - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - LoadBalancerName: - description: The name of the load balancer for which you want to create a policy. - type: string - PolicyName: - description: The unique name of the policy, with a maximum length of 32 alphanumeric characters and dashes (`-`). - type: string - PolicyType: - description: 'The type of stickiness policy you want to create: `app` or `load_balancer`.' - type: string - required: - - PolicyType - - LoadBalancerName - - PolicyName - type: object - CreateLoadBalancerPolicyResponse: - additionalProperties: false - properties: - LoadBalancer: - $ref: '#/components/schemas/LoadBalancer' - description: Information about the load balancer. - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - CreateLoadBalancerRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Listeners: - description: One or more listeners to create. - items: - $ref: '#/components/schemas/ListenerForCreation' - type: array - LoadBalancerName: - description: The unique name of the load balancer, with a maximum length of 32 alphanumeric characters and dashes (`-`). This name must not start or end with a dash. - type: string - LoadBalancerType: - description: 'The type of load balancer: `internet-facing` or `internal`. Use this parameter only for load balancers in a Net.' - type: string - PublicIp: - description: (internet-facing only) The public IP you want to associate with the load balancer. If not specified, a public IP owned by 3DS OUTSCALE is associated. - type: string - SecurityGroups: - description: (Net only) One or more IDs of security groups you want to assign to the load balancer. If not specified, the default security group of the Net is assigned to the load balancer. - items: - type: string - type: array - Subnets: - description: (Net only) The ID of the Subnet in which you want to create the load balancer. Regardless of this Subnet, the load balancer can distribute traffic to all Subnets. This parameter is required in a Net. - items: - type: string - type: array - SubregionNames: - description: (public Cloud only) The Subregion in which you want to create the load balancer. Regardless of this Subregion, the load balancer can distribute traffic to all Subregions. This parameter is required in the public Cloud. - items: - type: string - type: array - Tags: - description: One or more tags assigned to the load balancer. - items: - $ref: '#/components/schemas/ResourceTag' - type: array - required: - - Listeners - - LoadBalancerName - type: object - CreateLoadBalancerResponse: - additionalProperties: false - properties: - LoadBalancer: - $ref: '#/components/schemas/LoadBalancer' - description: Information about the load balancer. - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - CreateLoadBalancerTagsRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - LoadBalancerNames: - description: One or more load balancer names. - items: - type: string - type: array - Tags: - description: One or more tags to add to the specified load balancers. - items: - $ref: '#/components/schemas/ResourceTag' - type: array - required: - - LoadBalancerNames - - Tags - type: object - CreateLoadBalancerTagsResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - CreateNatServiceRequest: - additionalProperties: false - properties: - ClientToken: - description: A unique identifier which enables you to manage the idempotency. - type: string - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - PublicIpId: - description: |- - The allocation ID of the public IP to associate with the NAT service.
- If the public IP is already associated with another resource, you must first disassociate it. - type: string - SubnetId: - description: The ID of the Subnet in which you want to create the NAT service. - type: string - required: - - PublicIpId - - SubnetId - type: object - CreateNatServiceResponse: - additionalProperties: false - properties: - NatService: - $ref: '#/components/schemas/NatService' - description: Information about the NAT service. - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - CreateNetAccessPointRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - NetId: - description: The ID of the Net. - type: string - RouteTableIds: - description: One or more IDs of route tables to use for the connection. - items: - type: string - type: array - ServiceName: - description: The name of the service (in the format `com.outscale.region.service`). - type: string - required: - - ServiceName - - NetId - type: object - CreateNetAccessPointResponse: - additionalProperties: false - properties: - NetAccessPoint: - $ref: '#/components/schemas/NetAccessPoint' - description: Information about the Net access point. - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - CreateNetPeeringRequest: - additionalProperties: false - properties: - AccepterNetId: - description: |- - The ID of the Net you want to connect with.

- If the Net does not belong to you, you must also specify the `AccepterOwnerId` parameter with the OUTSCALE account ID owning the Net you want to connect with. - type: string - AccepterOwnerId: - description: |- - The OUTSCALE account ID of the owner of the Net you want to connect with. By default, the account ID of the owner of the Net from which the peering request is sent.

- This parameter is required if the Net you want to connect with does not belong to you. - type: string - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - SourceNetId: - description: The ID of the Net you send the peering request from. - type: string - required: - - AccepterNetId - - SourceNetId - type: object - CreateNetPeeringResponse: - additionalProperties: false - properties: - NetPeering: - $ref: '#/components/schemas/NetPeering' - description: Information about the Net peering. - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - CreateNetRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - IpRange: - description: The IP range for the Net, in CIDR notation (for example, `10.0.0.0/16`). - type: string - Tenancy: - description: |- - The tenancy options for the VMs:
- - `default` if a VM created in a Net can be launched with any tenancy.
- - `dedicated` if it can be launched with dedicated tenancy VMs running on single-tenant hardware.
- - `dedicated group ID`: if it can be launched in a dedicated group on single-tenant hardware. - type: string - required: - - IpRange - type: object - CreateNetResponse: - additionalProperties: false - properties: - Net: - $ref: '#/components/schemas/Net' - description: Information about the Net. - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - CreateNicRequest: - additionalProperties: false - properties: - Description: - description: A description for the NIC. - type: string - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - PrivateIps: - description: Information about the private IP or IPs of the NIC. If you do not specify a primary private IP, one is still created, with an IP randomly selected within the IP range of the Subnet. - items: - $ref: '#/components/schemas/PrivateIpLight' - type: array - SecurityGroupIds: - description: One or more IDs of security groups for the NIC. - items: - type: string - type: array - SubnetId: - description: The ID of the Subnet in which you want to create the NIC. - type: string - required: - - SubnetId - type: object - CreateNicResponse: - additionalProperties: false - properties: - Nic: - $ref: '#/components/schemas/Nic' - description: Information about the NIC. - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - CreatePolicyRequest: - additionalProperties: false - properties: - Description: - description: A description for the policy. - type: string - Document: - description: The policy document, corresponding to a JSON string that contains the policy. This policy document can contain a maximum of 5120 non-whitespace characters. For more information, see [EIM Reference Information](https://docs.outscale.com/en/userguide/EIM-Reference-Information.html) and [EIM Policy Generator](https://docs.outscale.com/en/userguide/EIM-Policy-Generator.html). - type: string - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Path: - description: The path of the policy. - type: string - PolicyName: - description: The name of the policy. - type: string - required: - - Document - - PolicyName - type: object - CreatePolicyResponse: - additionalProperties: false - properties: - Policy: - $ref: '#/components/schemas/Policy' - description: Information about the policy. - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - CreatePolicyVersionRequest: - additionalProperties: false - properties: - Document: - description: The policy document, corresponding to a JSON string that contains the policy. This policy document can contain a maximum of 5120 non-whitespace characters. For more information, see [EIM Reference Information](https://docs.outscale.com/en/userguide/EIM-Reference-Information.html) and [EIM Policy Generator](https://docs.outscale.com/en/userguide/EIM-Policy-Generator.html). - type: string - PolicyOrn: - description: The OUTSCALE Resource Name (ORN) of the policy. For more information, see [Resource Identifiers](https://docs.outscale.com/en/userguide/Resource-Identifiers.html). - pattern: ^orn:ows:(iam|idauth):\S*:\d{12}:policy/\S+$ - type: string - SetAsDefault: - description: If set to true, the new policy version is set as the default version and becomes the operative one. - type: boolean - required: - - Document - - PolicyOrn - type: object - CreatePolicyVersionResponse: - additionalProperties: false - properties: - PolicyVersion: - $ref: '#/components/schemas/PolicyVersion' - description: Information about the policy version. - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - CreateProductTypeRequest: - additionalProperties: false - properties: - Description: - description: The description of the product type. - type: string - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Vendor: - description: The vendor of the product type. - type: string - required: - - Description - type: object - CreateProductTypeResponse: - additionalProperties: false - properties: - ProductType: - $ref: '#/components/schemas/ProductType' - description: Information about the product type. - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - CreatePublicIpRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - type: object - CreatePublicIpResponse: - additionalProperties: false - properties: - PublicIp: - $ref: '#/components/schemas/PublicIp' - description: Information about the public IP. - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - CreateRouteRequest: - additionalProperties: false - properties: - DestinationIpRange: - description: The IP range used for the destination match, in CIDR notation (for example, `10.0.0.0/24`). - type: string - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - GatewayId: - description: The ID of an internet service or virtual gateway attached to your Net. - type: string - NatServiceId: - description: The ID of a NAT service. - type: string - NetPeeringId: - description: The ID of a Net peering. - type: string - NicId: - description: The ID of a NIC. - type: string - RouteTableId: - description: The ID of the route table for which you want to create a route. - type: string - VmId: - description: The ID of a NAT VM in your Net (attached to exactly one NIC). - type: string - required: - - DestinationIpRange - - RouteTableId - type: object - CreateRouteResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - RouteTable: - $ref: '#/components/schemas/RouteTable' - description: Information about the route table. - type: object - CreateRouteTableRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - NetId: - description: The ID of the Net for which you want to create a route table. - type: string - required: - - NetId - type: object - CreateRouteTableResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - RouteTable: - $ref: '#/components/schemas/RouteTable' - description: Information about the route table. - type: object - CreateSecurityGroupRequest: - additionalProperties: false - properties: - Description: - description: |- - A description for the security group.
- This description can contain between 1 and 255 characters. Allowed characters are `a-z`, `A-Z`, `0-9`, accented letters, spaces, and `_.-:/()#,@[]+=&;{}!$*`. - type: string - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - NetId: - description: The ID of the Net for the security group. - type: string - SecurityGroupName: - description: |- - The name of the security group.
- This name must not start with `sg-`.
- This name must be unique and contain between 1 and 255 characters. Allowed characters are `a-z`, `A-Z`, `0-9`, spaces, and `_.-:/()#,@[]+=&;{}!$*`. - type: string - required: - - Description - - SecurityGroupName - type: object - CreateSecurityGroupResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - SecurityGroup: - $ref: '#/components/schemas/SecurityGroup' - description: Information about the security group. - type: object - CreateSecurityGroupRuleRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Flow: - description: 'The direction of the flow: `Inbound` or `Outbound`. You can specify `Outbound` for Nets only.' - type: string - FromPortRange: - description: The beginning of the port range for the TCP and UDP protocols, or an ICMP type number. If you specify this parameter, you cannot specify the `Rules` parameter and its subparameters. - type: integer - IpProtocol: - description: The IP protocol name (`tcp`, `udp`, `icmp`, or `-1` for all protocols). By default, `-1`. In a Net, this can also be an IP protocol number. For more information, see the [IANA.org website](https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml). If you specify this parameter, you cannot specify the `Rules` parameter and its subparameters. - type: string - IpRange: - description: The IP range for the security group rule, in CIDR notation (for example, `10.0.0.0/16`). If you specify this parameter, you cannot specify the `Rules` parameter and its subparameters. - type: string - Rules: - description: 'Information about the security group rule to create. If you specify this parent parameter and its subparameters, you cannot specify the following parent parameters: `FromPortRange`, `IpProtocol`, `IpRange`, and `ToPortRange`.' - items: - $ref: '#/components/schemas/SecurityGroupRule' - type: array - SecurityGroupAccountIdToLink: - description: The OUTSCALE account ID that owns the source or destination security group specified in the `SecurityGroupNameToLink` parameter. - type: string - SecurityGroupId: - description: The ID of the security group for which you want to create a rule. - type: string - SecurityGroupNameToLink: - description: The ID of a source or destination security group that you want to link to the security group of the rule. - type: string - ToPortRange: - description: The end of the port range for the TCP and UDP protocols, or an ICMP code number. If you specify this parameter, you cannot specify the `Rules` parameter and its subparameters. - type: integer - required: - - SecurityGroupId - - Flow - type: object - CreateSecurityGroupRuleResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - SecurityGroup: - $ref: '#/components/schemas/SecurityGroup' - description: Information about the security group. - type: object - CreateServerCertificateRequest: - additionalProperties: false - properties: - Body: - description: 'The PEM-encoded X509 certificate.
With OSC CLI, use the following syntax to make sure your certificate file is correctly parsed: `--Body="$(cat FILENAME)"`.' - type: string - Chain: - description: 'The PEM-encoded intermediate certification authorities.
With OSC CLI, use the following syntax to make sure your certificate chain file is correctly parsed: `--Chain="$(cat FILENAME)"`.' - type: string - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Name: - description: 'A unique name for the certificate. Constraints: 1-128 alphanumeric characters, pluses (`+`), equals (`=`), commas (`,`), periods (`.`), at signs (`@`), minuses (`-`), or underscores (`_`).' - type: string - Path: - description: The path to the server certificate, set to a slash (`/`) if not specified. - type: string - PrivateKey: - description: 'The PEM-encoded private key matching the certificate.
With OSC CLI, use the following syntax to make sure your key file is correctly parsed: `--PrivateKey="$(cat FILENAME)"`.' - type: string - required: - - Body - - PrivateKey - - Name - type: object - CreateServerCertificateResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - ServerCertificate: - $ref: '#/components/schemas/ServerCertificate' - description: Information about the server certificate. - type: object - CreateSnapshotExportTaskRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - OsuExport: - $ref: '#/components/schemas/OsuExportToCreate' - description: Information about the OOS export task to create. - SnapshotId: - description: The ID of the snapshot to export. - type: string - required: - - OsuExport - - SnapshotId - type: object - CreateSnapshotExportTaskResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - SnapshotExportTask: - $ref: '#/components/schemas/SnapshotExportTask' - description: Information about the snapshot export task. - type: object - CreateSnapshotRequest: - additionalProperties: false - properties: - ClientToken: - description: A unique identifier which enables you to manage the idempotency. - type: string - Description: - description: A description for the snapshot. - type: string - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - FileLocation: - description: '**(when importing from a bucket)** The pre-signed URL of the snapshot you want to import. For more information, see [Creating a Pre-signed URL](https://docs.outscale.com/en/userguide/Creating-a-Pre-Signed-URL.html).' - type: string - SnapshotSize: - description: '**(when importing from a bucket)** The size of the snapshot you want to create in your account, in bytes. This size must be greater than or equal to the size of the original, uncompressed snapshot.' - format: int64 - type: integer - SourceRegionName: - description: '**(when copying a snapshot)** The name of the source Region, which must be the same as the Region of your account.' - type: string - SourceSnapshotId: - description: '**(when copying a snapshot)** The ID of the snapshot you want to copy.' - type: string - VolumeId: - description: '**(when creating from a volume)** The ID of the volume you want to create a snapshot of.' - type: string - type: object - CreateSnapshotResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - Snapshot: - $ref: '#/components/schemas/Snapshot' - description: Information about the snapshot. - type: object - CreateSubnetRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - IpRange: - description: |- - The IP range in the Subnet, in CIDR notation (for example, `10.0.0.0/16`).
- The IP range of the Subnet can be either the same as the Net one if you create only a single Subnet in this Net, or a subset of the Net one. In case of several Subnets in a Net, their IP ranges must not overlap. The smallest Subnet you can create uses a /29 netmask (eight IPs). For more information, see [About Nets](https://docs.outscale.com/en/userguide/About-Nets.html). - type: string - NetId: - description: The ID of the Net for which you want to create a Subnet. - type: string - SubregionName: - description: The name of the Subregion in which you want to create the Subnet. - type: string - required: - - IpRange - - NetId - type: object - CreateSubnetResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - Subnet: - $ref: '#/components/schemas/Subnet' - description: Information about the Subnet. - type: object - CreateTagsRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - ResourceIds: - description: One or more resource IDs. - items: - type: string - type: array - Tags: - description: One or more tags to add to the specified resources. - items: - $ref: '#/components/schemas/ResourceTag' - type: array - required: - - ResourceIds - - Tags - type: object - CreateTagsResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - CreateUserGroupRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Path: - description: The path to the group. If not specified, it is set to a slash (`/`). - type: string - UserGroupName: - description: The name of the group. - type: string - required: - - UserGroupName - type: object - CreateUserGroupResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - UserGroup: - $ref: '#/components/schemas/UserGroup' - description: Information about the user group. - type: object - CreateUserRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Path: - description: The path to the EIM user you want to create (by default, `/`). This path name must begin and end with a slash (`/`), and contain between 1 and 512 alphanumeric characters and/or slashes (`/`), or underscores (`_`). - type: string - UserEmail: - description: The email address of the EIM user. - type: string - UserName: - description: The name of the EIM user. This user name must contain between 1 and 64 alphanumeric characters and/or pluses (`+`), equals (`=`), commas (`,`), periods (`.`), at signs (`@`), dashes (`-`), or underscores (`_`). - type: string - required: - - UserName - type: object - CreateUserResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - User: - $ref: '#/components/schemas/User' - description: Information about the EIM user. - type: object - CreateVirtualGatewayRequest: - additionalProperties: false - properties: - ConnectionType: - description: The type of VPN connection supported by the virtual gateway (always `ipsec.1`). - type: string - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - required: - - ConnectionType - type: object - CreateVirtualGatewayResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - VirtualGateway: - $ref: '#/components/schemas/VirtualGateway' - description: Information about the virtual gateway. - type: object - CreateVmGroupRequest: - additionalProperties: false - properties: - Description: - description: A description for the VM group. - type: string - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - PositioningStrategy: - default: no-strategy - description: The positioning strategy of VMs on hypervisors. If set to `no-strategy`, our orchestrator determines the most adequate position for your VMs. If set to `attract`, your VMs are deployed on the same hypervisor, which improves network performance. If set to `repulse`, your VMs are deployed on a different hypervisor, which improves fault tolerance. - enum: - - attract - - no-strategy - - repulse - type: string - SecurityGroupIds: - description: One or more IDs of security groups for the VM group. - items: - type: string - type: array - SubnetId: - description: The ID of the Subnet in which you want to create the VM group. - type: string - Tags: - description: One or more tags to add to the VM group. - items: - $ref: '#/components/schemas/ResourceTag' - type: array - VmCount: - description: The number of VMs deployed in the VM group. - type: integer - VmGroupName: - description: The name of the VM group. - type: string - VmTemplateId: - description: The ID of the VM template used to launch VMs in the VM group. - type: string - required: - - SecurityGroupIds - - SubnetId - - VmGroupName - - VmTemplateId - - VmCount - type: object - CreateVmGroupResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - VmGroup: - $ref: '#/components/schemas/VmGroup' - description: Information about the VM group. - type: object - CreateVmTemplateRequest: - additionalProperties: false - properties: - CpuCores: - description: The number of vCores to use for each VM. - type: integer - CpuGeneration: - description: The processor generation to use for each VM (for example, `v4`). - type: string - CpuPerformance: - default: high - description: The performance of the VMs. - enum: - - medium - - high - - highest - type: string - Description: - description: A description for the VM template. - type: string - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - ImageId: - description: The ID of the OMI to use for each VM. You can find a list of OMIs by calling the [ReadImages](#readimages) method. - type: string - KeypairName: - description: The name of the keypair to use for each VM. - type: string - Ram: - description: The amount of RAM to use for each VM. - type: integer - Tags: - description: One or more tags to add to the VM template. - items: - $ref: '#/components/schemas/ResourceTag' - type: array - VmTemplateName: - description: The name of the VM template. - type: string - required: - - CpuCores - - CpuGeneration - - ImageId - - Ram - - VmTemplateName - type: object - CreateVmTemplateResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - VmTemplate: - $ref: '#/components/schemas/VmTemplate' - description: Information about the VM template. - type: object - CreateVmsRequest: - additionalProperties: false - properties: - ActionsOnNextBoot: - $ref: '#/components/schemas/ActionsOnNextBoot' - description: The action to perform on the next boot of the VM. - BlockDeviceMappings: - description: One or more block device mappings. - items: - $ref: '#/components/schemas/BlockDeviceMappingVmCreation' - type: array - BootMode: - $ref: '#/components/schemas/BootMode' - description: The boot mode of the VM. - BootOnCreation: - default: true - description: If true, the VM is started on creation. If false, the VM is stopped on creation. - type: boolean - BsuOptimized: - description: This parameter is not available. It is present in our API for the sake of historical compatibility with AWS. - type: boolean - ClientToken: - description: A unique identifier which enables you to manage the idempotency. - type: string - DeletionProtection: - description: If true, you cannot delete the VM unless you change this parameter back to false. - type: boolean - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - ImageId: - description: The ID of the OMI used to create the VM. You can find the list of OMIs by calling the [ReadImages](#readimages) method. - type: string - KeypairName: - description: The name of the keypair. - type: string - MaxVmsCount: - description: The maximum number of VMs you want to create. If all the VMs cannot be created, the largest possible number of VMs above MinVmsCount is created. - type: integer - MinVmsCount: - description: The minimum number of VMs you want to create. If this number of VMs cannot be created, no VMs are created. - type: integer - NestedVirtualization: - default: false - description: (dedicated tenancy only) If true, nested virtualization is enabled. If false, it is disabled. - type: boolean - Nics: - description: One or more NICs. If you specify this parameter, you must define one NIC as the primary network interface of the VM with `0` as its device number. - items: - $ref: '#/components/schemas/NicForVmCreation' - type: array - Performance: - default: high - description: The performance of the VM. This parameter is ignored if you specify a performance flag directly in the `VmType` parameter. - enum: - - medium - - high - - highest - type: string - Placement: - $ref: '#/components/schemas/Placement' - description: Information about the placement of the VM. - PrivateIps: - description: One or more private IPs of the VM. These IPs must be within the IP range of the Subnet that you specify with the `SubnetId` parameter. However, they cannot be one of the first four IPs (ending in `.0`, `.1`, `.2`, `.3`) or the last IP (ending in `.255`) of the Subnet, as these are reserved by 3DS OUTSCALE. For more information, see [About Nets](https://docs.outscale.com/en/userguide/About-Nets.html). - items: - type: string - type: array - SecurityGroupIds: - description: One or more IDs of security group for the VMs. - items: - type: string - type: array - SecurityGroups: - description: One or more names of security groups for the VMs. - items: - type: string - type: array - SubnetId: - description: The ID of the Subnet in which you want to create the VM. - type: string - TpmEnabled: - description: If true, a virtual Trusted Platform Module (vTPM) is enabled on the VM. If false, it is not.
The default behavior for this parameter varies depending on the source OMI of the VM.
If the `TpmMandatory` parameter of the source OMI is true, a vTPM has to be attached to the VM and it will be created by default. Setting `TpmEnabled` to false will cause the creation request to fail.
If the `TpmMandatory` parameter of the source OMI is false, only setting `TpmEnabled` to true will create and attach a vTPM to the VM. - type: boolean - UserData: - description: Data or script used to add a specific configuration to the VM. It must be Base64-encoded and is limited to 500 kibibytes (KiB). For more information about user data, see [Configuring a VM with User Data and OUTSCALE Tags](https://docs.outscale.com/en/userguide/Configuring-a-VM-with-User-Data-and-OUTSCALE-Tags.html). - type: string - VmInitiatedShutdownBehavior: - default: stop - description: The VM behavior when you stop it. If set to `stop`, the VM stops. If set to `restart`, the VM stops then automatically restarts. If set to `terminate`, the VM stops and is terminated. - type: string - VmType: - description: |- - The type of VM. You can specify a TINA type (in the `tinavW.cXrYpZ` or `tinavW.cXrY` format), or an AWS type (for example, `t2.small`, which is the default value).
- If you specify an AWS type, it is converted in the background to its corresponding TINA type, but the AWS type is still returned. If the specified or converted TINA type includes a performance flag, this performance flag is applied regardless of the value you may have provided in the `Performance` parameter. For more information, see [VM Types](https://docs.outscale.com/en/userguide/VM-Types.html). - type: string - required: - - ImageId - type: object - CreateVmsResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - Vms: - description: Information about one or more created VMs. - items: - $ref: '#/components/schemas/Vm' - type: array - type: object - CreateVolumeRequest: - additionalProperties: false - properties: - ClientToken: - description: A unique identifier which enables you to manage the idempotency. - type: string - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Iops: - description: The number of I/O operations per second (IOPS). This parameter must be specified only if you create an `io1` volume. The maximum number of IOPS allowed for `io1` volumes is `13000` with a maximum performance ratio of 300 IOPS per gibibyte. - type: integer - Size: - description: The size of the volume, in gibibytes (GiB). The maximum allowed size for a volume is 14901 GiB. This parameter is required if the volume is not created from a snapshot (`SnapshotId` unspecified). - type: integer - SnapshotId: - description: The ID of the snapshot from which you want to create the volume. - type: string - SubregionName: - description: The Subregion in which you want to create the volume. - type: string - VolumeType: - description: |- - The type of volume you want to create (`io1` \| `gp2` \| `standard`). If not specified, a `standard` volume is created.
- For more information about volume types, see [About Volumes > Volume Types and IOPS](https://docs.outscale.com/en/userguide/About-Volumes.html#_volume_types_and_iops). - type: string - required: - - SubregionName - type: object - CreateVolumeResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - Volume: - $ref: '#/components/schemas/Volume' - description: Information about the volume. - type: object - CreateVpnConnectionRequest: - additionalProperties: false - properties: - ClientGatewayId: - description: The ID of the client gateway. - type: string - ConnectionType: - description: The type of VPN connection (always `ipsec.1`). - type: string - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - StaticRoutesOnly: - description: By default or if false, the VPN connection uses dynamic routing with Border Gateway Protocol (BGP). If true, routing is controlled using static routes. For more information about how to create and delete static routes, see [CreateVpnConnectionRoute](#createvpnconnectionroute) and [DeleteVpnConnectionRoute](#deletevpnconnectionroute). - type: boolean - VirtualGatewayId: - description: The ID of the virtual gateway. - type: string - required: - - ClientGatewayId - - ConnectionType - - VirtualGatewayId - type: object - CreateVpnConnectionResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - VpnConnection: - $ref: '#/components/schemas/VpnConnection' - description: Information about a VPN connection. - type: object - CreateVpnConnectionRouteRequest: - additionalProperties: false - properties: - DestinationIpRange: - description: The network prefix of the route, in CIDR notation (for example, `10.12.0.0/16`). - type: string - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - VpnConnectionId: - description: The ID of the target VPN connection of the static route. - type: string - required: - - DestinationIpRange - - VpnConnectionId - type: object - CreateVpnConnectionRouteResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - DedicatedGroup: - additionalProperties: false - description: Information about the dedicated group. - properties: - AccountId: - description: The OUTSCALE account ID of the owners of the dedicated group. - type: string - CpuGeneration: - description: The processor generation. - type: integer - DedicatedGroupId: - description: The ID of the dedicated group. - type: string - Name: - description: The name of the dedicated group. - type: string - NetIds: - description: The IDs of the Nets in the dedicated group. - items: - type: string - type: array - SubregionName: - description: The name of the Subregion in which the dedicated group is located. - type: string - VmIds: - description: The IDs of the VMs in the dedicated group. - items: - type: string - type: array - type: object - DeleteAccessKeyRequest: - additionalProperties: false - properties: - AccessKeyId: - description: The ID of the access key you want to delete. - type: string - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - UserName: - description: The name of the EIM user the access key you want to delete is associated with. By default, the user who sends the request (which can be the root user). - type: string - required: - - AccessKeyId - type: object - DeleteAccessKeyResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - DeleteApiAccessRuleRequest: - additionalProperties: false - properties: - ApiAccessRuleId: - description: The ID of the API access rule you want to delete. - type: string - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - required: - - ApiAccessRuleId - type: object - DeleteApiAccessRuleResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - DeleteCaRequest: - additionalProperties: false - properties: - CaId: - description: The ID of the CA you want to delete. - type: string - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - required: - - CaId - type: object - DeleteCaResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - DeleteClientGatewayRequest: - additionalProperties: false - properties: - ClientGatewayId: - description: The ID of the client gateway you want to delete. - type: string - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - required: - - ClientGatewayId - type: object - DeleteClientGatewayResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - DeleteDedicatedGroupRequest: - additionalProperties: false - properties: - DedicatedGroupId: - description: The ID of the dedicated group you want to delete. - type: string - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Force: - description: If true, forces the deletion of the dedicated group and all its dependencies. - type: boolean - required: - - DedicatedGroupId - type: object - DeleteDedicatedGroupResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - DeleteDhcpOptionsRequest: - additionalProperties: false - properties: - DhcpOptionsSetId: - description: The ID of the DHCP options set you want to delete. - type: string - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - required: - - DhcpOptionsSetId - type: object - DeleteDhcpOptionsResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - DeleteDirectLinkInterfaceRequest: - additionalProperties: false - properties: - DirectLinkInterfaceId: - description: The ID of the DirectLink interface you want to delete. - type: string - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - required: - - DirectLinkInterfaceId - type: object - DeleteDirectLinkInterfaceResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - DeleteDirectLinkRequest: - additionalProperties: false - properties: - DirectLinkId: - description: The ID of the DirectLink you want to delete. - type: string - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - required: - - DirectLinkId - type: object - DeleteDirectLinkResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - DeleteExportTaskRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - ExportTaskId: - description: The ID of the export task to delete. - type: string - required: - - ExportTaskId - type: object - DeleteExportTaskResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - DeleteFlexibleGpuRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - FlexibleGpuId: - description: The ID of the fGPU you want to delete. - type: string - required: - - FlexibleGpuId - type: object - DeleteFlexibleGpuResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - DeleteImageRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - ImageId: - description: The ID of the OMI you want to delete. - type: string - required: - - ImageId - type: object - DeleteImageResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - DeleteInternetServiceRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - InternetServiceId: - description: The ID of the internet service you want to delete. - type: string - required: - - InternetServiceId - type: object - DeleteInternetServiceResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - DeleteKeypairRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - KeypairId: - description: The ID of the keypair you want to delete. - type: string - KeypairName: - description: The name of the keypair you want to delete. - type: string - type: object - DeleteKeypairResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - DeleteListenerRuleRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - ListenerRuleName: - description: The name of the rule you want to delete. - type: string - required: - - ListenerRuleName - type: object - DeleteListenerRuleResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - DeleteLoadBalancerListenersRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - LoadBalancerName: - description: The name of the load balancer for which you want to delete listeners. - type: string - LoadBalancerPorts: - description: One or more port numbers of the listeners you want to delete. - items: - type: integer - type: array - required: - - LoadBalancerName - - LoadBalancerPorts - type: object - DeleteLoadBalancerListenersResponse: - additionalProperties: false - properties: - LoadBalancer: - $ref: '#/components/schemas/LoadBalancer' - description: Information about the load balancer. - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - DeleteLoadBalancerPolicyRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - LoadBalancerName: - description: The name of the load balancer for which you want to delete a policy. - type: string - PolicyName: - description: The name of the policy you want to delete. - type: string - required: - - LoadBalancerName - - PolicyName - type: object - DeleteLoadBalancerPolicyResponse: - additionalProperties: false - properties: - LoadBalancer: - $ref: '#/components/schemas/LoadBalancer' - description: Information about the load balancer. - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - DeleteLoadBalancerRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - LoadBalancerName: - description: The name of the load balancer you want to delete. - type: string - required: - - LoadBalancerName - type: object - DeleteLoadBalancerResponse: - additionalProperties: false - properties: - LoadBalancer: - $ref: '#/components/schemas/LoadBalancer' - description: Information about the load balancer. - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - DeleteLoadBalancerTagsRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - LoadBalancerNames: - description: One or more load balancer names. - items: - type: string - type: array - Tags: - description: One or more tags to delete from the load balancers. - items: - $ref: '#/components/schemas/ResourceLoadBalancerTag' - type: array - required: - - LoadBalancerNames - - Tags - type: object - DeleteLoadBalancerTagsResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - DeleteNatServiceRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - NatServiceId: - description: The ID of the NAT service you want to delete. - type: string - required: - - NatServiceId - type: object - DeleteNatServiceResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - DeleteNetAccessPointRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - NetAccessPointId: - description: The ID of the Net access point. - type: string - required: - - NetAccessPointId - type: object - DeleteNetAccessPointResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - DeleteNetPeeringRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - NetPeeringId: - description: The ID of the Net peering you want to delete. - type: string - required: - - NetPeeringId - type: object - DeleteNetPeeringResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - DeleteNetRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - NetId: - description: The ID of the Net you want to delete. - type: string - required: - - NetId - type: object - DeleteNetResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - DeleteNicRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - NicId: - description: The ID of the NIC you want to delete. - type: string - required: - - NicId - type: object - DeleteNicResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - DeletePolicyRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - PolicyOrn: - description: The OUTSCALE Resource Name (ORN) of the policy you want to delete. For more information, see [Resource Identifiers](https://docs.outscale.com/en/userguide/Resource-Identifiers.html). - pattern: ^orn:ows:(iam|idauth):\S*:\d{12}:policy/\S+$ - type: string - required: - - PolicyOrn - type: object - DeletePolicyResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - DeletePolicyVersionRequest: - additionalProperties: false - properties: - PolicyOrn: - description: The OUTSCALE Resource Name (ORN) of the policy. For more information, see [Resource Identifiers](https://docs.outscale.com/en/userguide/Resource-Identifiers.html). - pattern: ^orn:ows:(iam|idauth):\S*:\d{12}:policy/\S+$ - type: string - VersionId: - description: The ID of the version of the policy you want to delete. - type: string - required: - - PolicyOrn - - VersionId - type: object - DeletePolicyVersionResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - DeleteProductTypeRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Force: - description: If true, forces the deletion of the product type associated with one or more OMIs. - type: boolean - ProductTypeId: - description: The ID of the product type you want to delete. - type: string - required: - - ProductTypeId - type: object - DeleteProductTypeResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - DeletePublicIpRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - PublicIp: - description: The public IP. In the public Cloud, this parameter is required. - type: string - PublicIpId: - description: The ID representing the association of the public IP with the VM or the NIC. In a Net, this parameter is required. - type: string - type: object - DeletePublicIpResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - DeleteRouteRequest: - additionalProperties: false - properties: - DestinationIpRange: - description: The exact IP range for the route. - type: string - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - RouteTableId: - description: The ID of the route table from which you want to delete a route. - type: string - required: - - RouteTableId - - DestinationIpRange - type: object - DeleteRouteResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - RouteTable: - $ref: '#/components/schemas/RouteTable' - description: Information about the route table. - type: object - DeleteRouteTableRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - RouteTableId: - description: The ID of the route table you want to delete. - type: string - required: - - RouteTableId - type: object - DeleteRouteTableResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - DeleteSecurityGroupRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - SecurityGroupId: - description: The ID of the security group you want to delete. - type: string - SecurityGroupName: - description: The name of the security group. - type: string - type: object - DeleteSecurityGroupResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - DeleteSecurityGroupRuleRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Flow: - description: 'The direction of the flow: `Inbound` or `Outbound`. You can specify `Outbound` for Nets only.' - type: string - FromPortRange: - description: The beginning of the port range for the TCP and UDP protocols, or an ICMP type number. - type: integer - IpProtocol: - description: The IP protocol name (`tcp`, `udp`, `icmp`, or `-1` for all protocols). By default, `-1`. In a Net, this can also be an IP protocol number. For more information, see the [IANA.org website](https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml). - type: string - IpRange: - description: The IP range for the security group rule, in CIDR notation (for example, `10.0.0.0/16`). - type: string - Rules: - description: One or more rules you want to delete from the security group. - items: - $ref: '#/components/schemas/SecurityGroupRule' - type: array - SecurityGroupAccountIdToUnlink: - description: The OUTSCALE account ID of the owner of the security group you want to delete a rule from. - type: string - SecurityGroupId: - description: The ID of the security group you want to delete a rule from. - type: string - SecurityGroupNameToUnlink: - description: The ID of the source security group. If you are in the Public Cloud, you can also specify the name of the source security group. - type: string - ToPortRange: - description: The end of the port range for the TCP and UDP protocols, or an ICMP code number. - type: integer - required: - - SecurityGroupId - - Flow - type: object - DeleteSecurityGroupRuleResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - SecurityGroup: - $ref: '#/components/schemas/SecurityGroup' - description: Information about the security group. - type: object - DeleteServerCertificateRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Name: - description: The name of the server certificate you want to delete. - type: string - required: - - Name - type: object - DeleteServerCertificateResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - DeleteSnapshotRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - SnapshotId: - description: The ID of the snapshot you want to delete. - type: string - required: - - SnapshotId - type: object - DeleteSnapshotResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - DeleteSubnetRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - SubnetId: - description: The ID of the Subnet you want to delete. - type: string - required: - - SubnetId - type: object - DeleteSubnetResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - DeleteTagsRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - ResourceIds: - description: One or more resource IDs. - items: - type: string - type: array - Tags: - description: One or more tags to delete (if you set a tag value, only the tags matching exactly this value are deleted). - items: - $ref: '#/components/schemas/ResourceTag' - type: array - required: - - ResourceIds - - Tags - type: object - DeleteTagsResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - DeleteUserGroupPolicyRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - PolicyName: - description: The name of the policy document you want to delete. - type: string - UserGroupName: - description: The name of the group. - type: string - UserGroupPath: - description: The path to the group. If not specified, it is set to a slash (`/`). - type: string - required: - - UserGroupName - - PolicyName - type: object - DeleteUserGroupPolicyResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - DeleteUserGroupRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Force: - description: If true, forces the deletion of the user group even if it is not empty. - type: boolean - Path: - description: The path to the group. If not specified, it is set to a slash (`/`). - type: string - UserGroupName: - description: The name of the group you want to delete. - type: string - required: - - UserGroupName - type: object - DeleteUserGroupResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - DeleteUserPolicyRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - PolicyName: - description: The name of the policy document you want to delete (between 1 and 128 characters). - type: string - UserName: - description: The name of the user you want to delete the policy from. - type: string - required: - - UserName - - PolicyName - type: object - DeleteUserPolicyResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - DeleteUserRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - UserName: - description: The name of the EIM user you want to delete. - type: string - required: - - UserName - type: object - DeleteUserResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - DeleteVirtualGatewayRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - VirtualGatewayId: - description: The ID of the virtual gateway you want to delete. - type: string - required: - - VirtualGatewayId - type: object - DeleteVirtualGatewayResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - DeleteVmGroupRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - VmGroupId: - description: The ID of the VM group you want to delete. - type: string - required: - - VmGroupId - type: object - DeleteVmGroupResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - DeleteVmTemplateRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - VmTemplateId: - description: The ID of the VM template you want to delete. - type: string - required: - - VmTemplateId - type: object - DeleteVmTemplateResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - DeleteVmsRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - VmIds: - description: One or more IDs of VMs. - items: - type: string - type: array - required: - - VmIds - type: object - DeleteVmsResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - Vms: - description: Information about one or more terminated VMs. - items: - $ref: '#/components/schemas/VmState' - type: array - type: object - DeleteVolumeRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - VolumeId: - description: The ID of the volume you want to delete. - type: string - required: - - VolumeId - type: object - DeleteVolumeResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - DeleteVpnConnectionRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - VpnConnectionId: - description: The ID of the VPN connection you want to delete. - type: string - required: - - VpnConnectionId - type: object - DeleteVpnConnectionResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - DeleteVpnConnectionRouteRequest: - additionalProperties: false - properties: - DestinationIpRange: - description: The network prefix of the route to delete, in CIDR notation (for example, `10.12.0.0/16`). - type: string - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - VpnConnectionId: - description: The ID of the target VPN connection of the static route to delete. - type: string - required: - - DestinationIpRange - - VpnConnectionId - type: object - DeleteVpnConnectionRouteResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - DeregisterVmsInLoadBalancerRequest: - additionalProperties: false - properties: - BackendVmIds: - description: One or more IDs of backend VMs. - items: - type: string - type: array - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - LoadBalancerName: - description: The name of the load balancer. - type: string - required: - - BackendVmIds - - LoadBalancerName - type: object - DeregisterVmsInLoadBalancerResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - DhcpOptionsSet: - additionalProperties: false - description: Information about the DHCP options set. - properties: - Default: - description: If true, the DHCP options set is a default one. If false, it is not. - type: boolean - DhcpOptionsSetId: - description: The ID of the DHCP options set. - type: string - DomainName: - description: The domain name. - type: string - DomainNameServers: - description: One or more IPs for the domain name servers. - items: - type: string - type: array - LogServers: - description: One or more IPs for the log servers. - items: - type: string - type: array - NtpServers: - description: One or more IPs for the NTP servers. - items: - type: string - type: array - Tags: - description: One or more tags associated with the DHCP options set. - items: - $ref: '#/components/schemas/ResourceTag' - type: array - type: object - DirectLink: - additionalProperties: false - description: Information about the DirectLink. - properties: - AccountId: - description: The OUTSCALE account ID of the owner of the DirectLink. - type: string - Bandwidth: - description: The physical link bandwidth (either 1 Gbps or 10 Gbps). - type: string - DirectLinkId: - description: The ID of the DirectLink (for example, `dxcon-xxxxxxxx`). - type: string - DirectLinkName: - description: The name of the DirectLink. - type: string - Location: - description: The datacenter where the DirectLink is located. - type: string - RegionName: - description: The Region in which the DirectLink has been created. - type: string - State: - description: | - The state of the DirectLink. -
  • `pending`: The DirectLink request has been validated. It remains in the `pending` state until you establish the physical link.
  • -
  • `available`: The physical link is established and the connection is ready to use.
  • -
  • `disabled`: The network link is down.
  • -
  • `deleted`: The DirectLink is deleted.
  • -
- type: string - type: object - DirectLinkInterface: - additionalProperties: false - description: Information about the DirectLink interface. - properties: - BgpAsn: - description: |- - The BGP (Border Gateway Protocol) ASN (Autonomous System Number) on the customer's side of the DirectLink interface.
- This number must be between `1` and `4294967295`, except `50624`, `53306`, and `132418`.
- If you do not have an ASN, you can choose one between `64512` and `65534` (both included), or between `4200000000` and `4294967295` (both included). - type: integer - BgpKey: - description: The BGP authentication key. - type: string - ClientPrivateIp: - description: The IP on the customer's side of the DirectLink interface. - type: string - DirectLinkInterfaceName: - description: The name of the DirectLink interface. - type: string - OutscalePrivateIp: - description: The IP on the OUTSCALE side of the DirectLink interface. - type: string - VirtualGatewayId: - description: The ID of the target virtual gateway. - type: string - Vlan: - description: The VLAN number associated with the DirectLink interface. This number must be unique and be between `2` and `4094`. - type: integer - required: - - BgpAsn - - DirectLinkInterfaceName - - VirtualGatewayId - - Vlan - type: object - DirectLinkInterfaces: - additionalProperties: false - description: Information about the DirectLink interfaces. - properties: - AccountId: - description: The OUTSCALE account ID of the owner of the DirectLink interface. - type: string - BgpAsn: - description: The BGP (Border Gateway Protocol) ASN (Autonomous System Number) on the customer's side of the DirectLink interface. - type: integer - BgpKey: - description: The BGP authentication key. - type: string - ClientPrivateIp: - description: The IP on the customer's side of the DirectLink interface. - type: string - DirectLinkId: - description: The ID of the DirectLink. - type: string - DirectLinkInterfaceId: - description: The ID of the DirectLink interface. - type: string - DirectLinkInterfaceName: - description: The name of the DirectLink interface. - type: string - InterfaceType: - description: The type of the DirectLink interface (always `private`). - type: string - Location: - description: The datacenter where the DirectLink interface is located. - type: string - Mtu: - description: The maximum transmission unit (MTU) of the DirectLink interface, in bytes. - type: integer - OutscalePrivateIp: - description: The IP on the OUTSCALE side of the DirectLink interface. - type: string - State: - description: The state of the DirectLink interface (`pending` \| `available` \| `deleting` \| `deleted` \| `confirming` \| `rejected` \| `expired`). - type: string - VirtualGatewayId: - description: The ID of the target virtual gateway. - type: string - Vlan: - description: The VLAN number associated with the DirectLink interface. - type: integer - type: object - DisableOutscaleLoginForUsersRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - type: object - DisableOutscaleLoginForUsersResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - DisableOutscaleLoginPerUsersRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - UserNames: - description: The usernames of the EIM users you want to disable the Outscale login for. - items: - type: string - type: array - required: - - UserNames - type: object - DisableOutscaleLoginPerUsersResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - DisableOutscaleLoginRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - type: object - DisableOutscaleLoginResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - EnableOutscaleLoginForUsersRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - type: object - EnableOutscaleLoginForUsersResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - EnableOutscaleLoginPerUsersRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - UserNames: - description: The usernames of the EIM users you want to enable the Outscale login for. - items: - type: string - type: array - required: - - UserNames - type: object - EnableOutscaleLoginPerUsersResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - EnableOutscaleLoginRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - type: object - EnableOutscaleLoginResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - ErrorResponse: - additionalProperties: false - properties: - Errors: - description: One or more errors. - items: - $ref: '#/components/schemas/Errors' - type: array - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - Errors: - additionalProperties: false - description: Information about the errors. - properties: - Code: - description: The code of the error (for example, `4078`). You can search for this returned code in the [errors page](api-errors.html) to find more details about the error. - type: string - Details: - description: A description providing more details about the error. - type: string - Type: - description: The type of the error (for example, `InvalidParameterValue`). - type: string - type: object - FiltersAccessKeys: - additionalProperties: false - description: One or more filters. - properties: - AccessKeyIds: - description: The IDs of the access keys. - items: - type: string - type: array - States: - description: The states of the access keys (`ACTIVE` \| `INACTIVE`). - items: - type: string - type: array - type: object - FiltersApiAccessRule: - additionalProperties: false - description: One or more filters. - properties: - ApiAccessRuleIds: - description: One or more IDs of API access rules. - items: - type: string - type: array - CaIds: - description: One or more IDs of Client Certificate Authorities (CAs). - items: - type: string - type: array - Cns: - description: One or more Client Certificate Common Names (CNs). - items: - type: string - type: array - Descriptions: - description: One or more descriptions of API access rules. - items: - type: string - type: array - IpRanges: - description: One or more IPs or CIDR blocks (for example, `192.0.2.0/16`). - items: - type: string - type: array - type: object - FiltersApiLog: - additionalProperties: false - description: One or more filters. - properties: - QueryAccessKeys: - description: The access keys used for the logged calls. - items: - type: string - type: array - QueryApiNames: - description: The names of the APIs of the logged calls (always `oapi` for the OUTSCALE API). - items: - type: string - type: array - QueryCallNames: - description: The names of the logged calls. - items: - type: string - type: array - QueryDateAfter: - description: The date and time, or the date, after which you want to retrieve logged calls, in ISO 8601 format (for example, `2020-06-14T00:00:00.000Z` or `2020-06-14`). By default, this date is set to 48 hours before the `QueryDateBefore` parameter value. - oneOf: - - format: date-time - type: string - - format: date - type: string - QueryDateBefore: - description: The date and time, or the date, before which you want to retrieve logged calls, in ISO 8601 format (for example, `2020-06-30T00:00:00.000Z` or `2020-06-14`). By default, this date is set to now, or 48 hours after the `QueryDateAfter` parameter value. - oneOf: - - format: date-time - type: string - - format: date - type: string - QueryIpAddresses: - description: The IPs used for the logged calls. - items: - type: string - type: array - QueryUserAgents: - description: The user agents of the HTTP requests of the logged calls. - items: - type: string - type: array - RequestIds: - description: The request IDs provided in the responses of the logged calls. - items: - type: string - type: array - ResponseStatusCodes: - description: The HTTP status codes of the logged calls. - items: - type: integer - type: array - type: object - FiltersCa: - additionalProperties: false - description: One or more filters. - properties: - CaFingerprints: - description: The fingerprints of the CAs. - items: - type: string - type: array - CaIds: - description: The IDs of the CAs. - items: - type: string - type: array - Descriptions: - description: The descriptions of the CAs. - items: - type: string - type: array - type: object - FiltersCatalogs: - additionalProperties: false - description: One or more filters. - properties: - CurrentCatalogOnly: - description: By default or if set to true, only returns the current catalog. If false, returns the current catalog and past catalogs. - type: boolean - FromDate: - description: The beginning of the time period, in ISO 8601 date format (for example, `2020-06-14`). This date cannot be older than 3 years. You must specify the parameters `FromDate` and `ToDate` together. - format: date - type: string - ToDate: - description: The end of the time period, in ISO 8601 date format (for example, `2020-06-30`). You must specify the parameters `FromDate` and `ToDate` together. - format: date - type: string - type: object - FiltersClientGateway: - additionalProperties: false - description: One or more filters. - properties: - BgpAsns: - description: The Border Gateway Protocol (BGP) Autonomous System Numbers (ASNs) of the connections. - items: - type: integer - type: array - ClientGatewayIds: - description: The IDs of the client gateways. - items: - type: string - type: array - ConnectionTypes: - description: The types of communication tunnels used by the client gateways (always `ipsec.1`). - items: - type: string - type: array - PublicIps: - description: The public IPv4 addresses of the client gateways. - items: - type: string - type: array - States: - description: The states of the client gateways (`pending` \| `available` \| `deleting` \| `deleted`). - items: - type: string - type: array - TagKeys: - description: The keys of the tags associated with the client gateways. - items: - type: string - type: array - TagValues: - description: The values of the tags associated with the client gateways. - items: - type: string - type: array - Tags: - description: 'The key/value combination of the tags associated with the client gateways, in the following format: "Filters":{"Tags":["TAGKEY=TAGVALUE"]}.' - items: - type: string - type: array - type: object - FiltersDedicatedGroup: - additionalProperties: false - description: One or more filters. - properties: - CpuGenerations: - description: The processor generation for the VMs in the dedicated group (for example, `4`). - items: - type: integer - type: array - DedicatedGroupIds: - description: The IDs of the dedicated groups. - items: - type: string - type: array - Names: - description: The names of the dedicated groups. - items: - type: string - type: array - SubregionNames: - description: The names of the Subregions in which the dedicated groups are located. - items: - type: string - type: array - type: object - FiltersDhcpOptions: - additionalProperties: false - description: One or more filters. - properties: - Default: - description: If true, lists all default DHCP options set. If false, lists all non-default DHCP options set. - type: boolean - DhcpOptionsSetIds: - description: The IDs of the DHCP options sets. - items: - type: string - type: array - DomainNameServers: - description: The IPs of the domain name servers used for the DHCP options sets. - items: - type: string - type: array - DomainNames: - description: The domain names used for the DHCP options sets. - items: - type: string - type: array - LogServers: - description: The IPs of the log servers used for the DHCP options sets. - items: - type: string - type: array - NtpServers: - description: The IPs of the Network Time Protocol (NTP) servers used for the DHCP options sets. - items: - type: string - type: array - TagKeys: - description: The keys of the tags associated with the DHCP options sets. - items: - type: string - type: array - TagValues: - description: The values of the tags associated with the DHCP options sets. - items: - type: string - type: array - Tags: - description: 'The key/value combination of the tags associated with the DHCP options sets, in the following format: "Filters":{"Tags":["TAGKEY=TAGVALUE"]}.' - items: - type: string - type: array - type: object - FiltersDirectLink: - additionalProperties: false - description: One or more filters. - properties: - DirectLinkIds: - description: The IDs of the DirectLinks. - items: - type: string - type: array - type: object - FiltersDirectLinkInterface: - additionalProperties: false - description: One or more filters. - properties: - DirectLinkIds: - description: The IDs of the DirectLinks. - items: - type: string - type: array - DirectLinkInterfaceIds: - description: The IDs of the DirectLink interfaces. - items: - type: string - type: array - type: object - FiltersFlexibleGpu: - additionalProperties: false - description: One or more filters. - properties: - DeleteOnVmDeletion: - description: Indicates whether the fGPU is deleted when terminating the VM. - type: boolean - FlexibleGpuIds: - description: One or more IDs of fGPUs. - items: - type: string - type: array - Generations: - description: The processor generations that the fGPUs are compatible with. - items: - type: string - type: array - ModelNames: - description: One or more models of fGPUs. For more information, see [About Flexible GPUs](https://docs.outscale.com/en/userguide/About-Flexible-GPUs.html). - items: - type: string - type: array - States: - description: The states of the fGPUs (`allocated` \| `attaching` \| `attached` \| `detaching`). - items: - type: string - type: array - SubregionNames: - description: The Subregions where the fGPUs are located. - items: - type: string - type: array - Tags: - description: One or more tags associated with the fGPUs. - items: - $ref: '#/components/schemas/Tag' - type: array - VmIds: - description: One or more IDs of VMs. - items: - type: string - type: array - type: object - FiltersImage: - additionalProperties: false - description: One or more filters. - properties: - AccountAliases: - description: The account aliases of the owners of the OMIs. - items: - type: string - type: array - AccountIds: - description: The OUTSCALE account IDs of the owners of the OMIs. By default, all the OMIs for which you have launch permissions are described. - items: - type: string - type: array - Architectures: - description: The architectures of the OMIs (`i386` \| `x86_64`). - items: - type: string - type: array - BlockDeviceMappingDeleteOnVmDeletion: - description: Whether the volumes are deleted or not when terminating the VM. - type: boolean - BlockDeviceMappingDeviceNames: - description: The device names for the volumes. - items: - type: string - type: array - BlockDeviceMappingSnapshotIds: - description: The IDs of the snapshots used to create the volumes. - items: - type: string - type: array - BlockDeviceMappingVolumeSizes: - description: The sizes of the volumes, in gibibytes (GiB). - items: - type: integer - type: array - BlockDeviceMappingVolumeTypes: - description: The types of volumes (`standard` \| `gp2` \| `io1`). - items: - type: string - type: array - BootModes: - description: The boot modes compatible with the OMIs. - items: - $ref: '#/components/schemas/BootMode' - type: array - Descriptions: - description: The descriptions of the OMIs, provided when they were created. - items: - type: string - type: array - FileLocations: - description: The locations of the buckets where the OMI files are stored. - items: - type: string - type: array - Hypervisors: - description: The hypervisor type of the OMI (always `xen`). - items: - type: string - type: array - ImageIds: - description: The IDs of the OMIs. - items: - type: string - type: array - ImageNames: - description: The names of the OMIs, provided when they were created. - items: - type: string - type: array - PermissionsToLaunchAccountIds: - description: The OUTSCALE account IDs which have launch permissions for the OMIs. - items: - type: string - type: array - PermissionsToLaunchGlobalPermission: - description: If true, lists all public OMIs. If false, lists all private OMIs. - type: boolean - ProductCodeNames: - description: The names of the product codes associated with the OMI. - items: - type: string - type: array - ProductCodes: - description: The product codes associated with the OMI. - items: - type: string - type: array - RootDeviceNames: - description: The name of the root device. This value must be /dev/sda1. - items: - type: string - type: array - RootDeviceTypes: - description: The types of root device used by the OMIs (`bsu` or `ebs`). - items: - type: string - type: array - SecureBoot: - description: Whether secure boot is activated or not. - type: boolean - States: - description: The states of the OMIs (`pending` \| `available` \| `failed`). - items: - type: string - type: array - TagKeys: - description: The keys of the tags associated with the OMIs. - items: - type: string - type: array - TagValues: - description: The values of the tags associated with the OMIs. - items: - type: string - type: array - Tags: - description: 'The key/value combination of the tags associated with the OMIs, in the following format: "Filters":{"Tags":["TAGKEY=TAGVALUE"]}.' - items: - type: string - type: array - TpmMandatory: - description: Whether a virtual Trusted Platform Module (vTPM) is mandatory for VMs created from this OMI (true) or not (false). - type: boolean - VirtualizationTypes: - description: The virtualization types (always `hvm`). - items: - type: string - type: array - type: object - FiltersInternetService: - additionalProperties: false - description: One or more filters. - properties: - InternetServiceIds: - description: The IDs of the internet services. - items: - type: string - type: array - LinkNetIds: - description: The IDs of the Nets the internet services are attached to. - items: - type: string - type: array - LinkStates: - description: The current states of the attachments between the internet services and the Nets (only `available`, if the internet gateway is attached to a Net). - items: - type: string - type: array - TagKeys: - description: The keys of the tags associated with the internet services. - items: - type: string - type: array - TagValues: - description: The values of the tags associated with the internet services. - items: - type: string - type: array - Tags: - description: 'The key/value combination of the tags associated with the internet services, in the following format: "Filters":{"Tags":["TAGKEY=TAGVALUE"]}.' - items: - type: string - type: array - type: object - FiltersKeypair: - additionalProperties: false - description: One or more filters. - properties: - KeypairFingerprints: - description: The fingerprints of the keypairs. - items: - type: string - type: array - KeypairIds: - description: The IDs of the keypairs. - items: - type: string - type: array - KeypairNames: - description: The names of the keypairs. - items: - type: string - type: array - KeypairTypes: - description: The types of the keypairs (`ssh-rsa`, `ssh-ed25519`, `ecdsa-sha2-nistp256`, `ecdsa-sha2-nistp384`, or `ecdsa-sha2-nistp521`). - items: - type: string - type: array - TagKeys: - description: The keys of the tags associated with the keypairs. - items: - type: string - type: array - TagValues: - description: The values of the tags associated with the keypairs. - items: - type: string - type: array - Tags: - description: 'The key/value combination of the tags associated with the keypairs, in the following format: "Filters":{"Tags":["TAGKEY=TAGVALUE"]}.' - items: - type: string - type: array - type: object - FiltersListenerRule: - additionalProperties: false - description: One or more filters. - properties: - ListenerRuleNames: - description: The names of the listener rules. - items: - type: string - type: array - type: object - FiltersLoadBalancer: - additionalProperties: false - description: One or more filters. - properties: - LoadBalancerNames: - description: The names of the load balancers. - items: - type: string - type: array - States: - description: The states of the load balancer (`provisioning` \| `starting` \| `reloading` \| `active` \| `reconfiguring` \| `deleting` \| `deleted`). - items: - type: string - type: array - type: object - FiltersNatService: - additionalProperties: false - description: One or more filters. - properties: - ClientTokens: - description: The idempotency tokens provided when creating the NAT services. - items: - type: string - type: array - NatServiceIds: - description: The IDs of the NAT services. - items: - type: string - type: array - NetIds: - description: The IDs of the Nets in which the NAT services are. - items: - type: string - type: array - States: - description: The states of the NAT services (`pending` \| `available` \| `deleting` \| `deleted`). - items: - type: string - type: array - SubnetIds: - description: The IDs of the Subnets in which the NAT services are. - items: - type: string - type: array - TagKeys: - description: The keys of the tags associated with the NAT services. - items: - type: string - type: array - TagValues: - description: The values of the tags associated with the NAT services. - items: - type: string - type: array - Tags: - description: 'The key/value combination of the tags associated with the NAT services, in the following format: "Filters":{"Tags":["TAGKEY=TAGVALUE"]}.' - items: - type: string - type: array - type: object - FiltersNet: - additionalProperties: false - description: One or more filters. - properties: - DhcpOptionsSetIds: - description: The IDs of the DHCP options sets. - items: - type: string - type: array - IpRanges: - description: The IP ranges for the Nets, in CIDR notation (for example, `10.0.0.0/16`). - items: - type: string - type: array - IsDefault: - description: If true, the Net used is the default one. - type: boolean - NetIds: - description: The IDs of the Nets. - items: - type: string - type: array - States: - description: The states of the Nets (`pending` \| `available` \| `deleting`). - items: - type: string - type: array - TagKeys: - description: The keys of the tags associated with the Nets. - items: - type: string - type: array - TagValues: - description: The values of the tags associated with the Nets. - items: - type: string - type: array - Tags: - description: 'The key/value combination of the tags associated with the Nets, in the following format: "Filters":{"Tags":["TAGKEY=TAGVALUE"]}.' - items: - type: string - type: array - type: object - FiltersNetAccessPoint: - additionalProperties: false - description: One or more filters. - properties: - NetAccessPointIds: - description: The IDs of the Net access points. - items: - type: string - type: array - NetIds: - description: The IDs of the Nets. - items: - type: string - type: array - ServiceNames: - description: The names of the services. For more information, see [ReadNetAccessPointServices](#readnetaccesspointservices). - items: - type: string - type: array - States: - description: The states of the Net access points (`pending` \| `available` \| `deleting` \| `deleted`). - items: - type: string - type: array - TagKeys: - description: The keys of the tags associated with the Net access points. - items: - type: string - type: array - TagValues: - description: The values of the tags associated with the Net access points. - items: - type: string - type: array - Tags: - description: 'The key/value combination of the tags associated with the Net access points, in the following format: "Filters":{"Tags":["TAGKEY=TAGVALUE"]}.' - items: - type: string - type: array - type: object - FiltersNetPeering: - additionalProperties: false - description: One or more filters. - properties: - AccepterNetAccountIds: - description: The OUTSCALE account IDs of the owners of the peer Nets. - items: - type: string - type: array - AccepterNetIpRanges: - description: The IP ranges of the peer Nets, in CIDR notation (for example, `10.0.0.0/24`). - items: - type: string - type: array - AccepterNetNetIds: - description: The IDs of the peer Nets. - items: - type: string - type: array - ExpirationDates: - description: The dates and times at which the Net peerings expire, in ISO 8601 date-time format (for example, `2020-06-14T00:00:00.000Z`). - items: - format: date-time - type: string - type: array - NetPeeringIds: - description: The IDs of the Net peerings. - items: - type: string - type: array - SourceNetAccountIds: - description: The OUTSCALE account IDs of the owners of the peer Nets. - items: - type: string - type: array - SourceNetIpRanges: - description: The IP ranges of the peer Nets. - items: - type: string - type: array - SourceNetNetIds: - description: The IDs of the peer Nets. - items: - type: string - type: array - StateMessages: - description: Additional information about the states of the Net peerings. - items: - type: string - type: array - StateNames: - description: The states of the Net peerings (`pending-acceptance` \| `active` \| `rejected` \| `failed` \| `expired` \| `deleted`). - items: - type: string - type: array - TagKeys: - description: The keys of the tags associated with the Net peerings. - items: - type: string - type: array - TagValues: - description: The values of the tags associated with the Net peerings. - items: - type: string - type: array - Tags: - description: 'The key/value combination of the tags associated with the Net peerings, in the following format: "Filters":{"Tags":["TAGKEY=TAGVALUE"]}.' - items: - type: string - type: array - type: object - FiltersNic: - additionalProperties: false - description: One or more filters. - properties: - Descriptions: - description: The descriptions of the NICs. - items: - type: string - type: array - IsSourceDestCheck: - description: Whether the source/destination checking is enabled (true) or disabled (false). - type: boolean - LinkNicDeleteOnVmDeletion: - description: Whether the NICs are deleted when the VMs they are attached to are terminated. - type: boolean - LinkNicDeviceNumbers: - description: The device numbers the NICs are attached to. - items: - type: integer - type: array - LinkNicLinkNicIds: - description: The attachment IDs of the NICs. - items: - type: string - type: array - LinkNicStates: - description: The states of the attachments. - items: - type: string - type: array - LinkNicVmAccountIds: - description: The OUTSCALE account IDs of the owners of the VMs the NICs are attached to. - items: - type: string - type: array - LinkNicVmIds: - description: The IDs of the VMs the NICs are attached to. - items: - type: string - type: array - LinkPublicIpAccountIds: - description: The OUTSCALE account IDs of the owners of the public IPs associated with the NICs. - items: - type: string - type: array - LinkPublicIpLinkPublicIpIds: - description: The association IDs returned when the public IPs were associated with the NICs. - items: - type: string - type: array - LinkPublicIpPublicDnsNames: - description: The public DNS names associated with the public IPs. - items: - type: string - type: array - LinkPublicIpPublicIpIds: - description: The allocation IDs returned when the public IPs were allocated to their accounts. - items: - type: string - type: array - LinkPublicIpPublicIps: - description: The public IPs associated with the NICs. - items: - type: string - type: array - MacAddresses: - description: The Media Access Control (MAC) addresses of the NICs. - items: - type: string - type: array - NetIds: - description: The IDs of the Nets where the NICs are located. - items: - type: string - type: array - NicIds: - description: The IDs of the NICs. - items: - type: string - type: array - PrivateDnsNames: - description: The private DNS names associated with the primary private IPs. - items: - type: string - type: array - PrivateIpsLinkPublicIpAccountIds: - description: The OUTSCALE account IDs of the owner of the public IPs associated with the private IPs. - items: - type: string - type: array - PrivateIpsLinkPublicIpPublicIps: - description: The public IPs associated with the private IPs. - items: - type: string - type: array - PrivateIpsPrimaryIp: - description: Whether the private IP is the primary IP associated with the NIC. - type: boolean - PrivateIpsPrivateIps: - description: The private IPs of the NICs. - items: - type: string - type: array - SecurityGroupIds: - description: The IDs of the security groups associated with the NICs. - items: - type: string - type: array - SecurityGroupNames: - description: The names of the security groups associated with the NICs. - items: - type: string - type: array - States: - description: The states of the NICs. - items: - type: string - type: array - SubnetIds: - description: The IDs of the Subnets for the NICs. - items: - type: string - type: array - SubregionNames: - description: The Subregions where the NICs are located. - items: - type: string - type: array - TagKeys: - description: The keys of the tags associated with the NICs. - items: - type: string - type: array - TagValues: - description: The values of the tags associated with the NICs. - items: - type: string - type: array - Tags: - description: 'The key/value combination of the tags associated with the NICs, in the following format: "Filters":{"Tags":["TAGKEY=TAGVALUE"]}.' - items: - type: string - type: array - type: object - FiltersProductType: - additionalProperties: false - description: One or more filters. - properties: - ProductTypeIds: - description: The IDs of the product types. - items: - type: string - type: array - type: object - FiltersPublicIp: - additionalProperties: false - description: One or more filters. - properties: - LinkPublicIpIds: - description: The IDs representing the associations of public IPs with VMs or NICs. - items: - type: string - type: array - NicAccountIds: - description: The OUTSCALE account IDs of the owners of the NICs. - items: - type: string - type: array - NicIds: - description: The IDs of the NICs. - items: - type: string - type: array - Placements: - description: Whether the public IPs are for use in the public Cloud or in a Net. - items: - type: string - type: array - PrivateIps: - description: The private IPs associated with the public IPs. - items: - type: string - type: array - PublicIpIds: - description: The IDs of the public IPs. - items: - type: string - type: array - PublicIps: - description: The public IPs. - items: - type: string - type: array - TagKeys: - description: The keys of the tags associated with the public IPs. - items: - type: string - type: array - TagValues: - description: The values of the tags associated with the public IPs. - items: - type: string - type: array - Tags: - description: 'The key/value combination of the tags associated with the public IPs, in the following format: "Filters":{"Tags":["TAGKEY=TAGVALUE"]}.' - items: - type: string - type: array - VmIds: - description: The IDs of the VMs. - items: - type: string - type: array - type: object - FiltersQuota: - additionalProperties: false - description: One or more filters. - properties: - Collections: - description: The group names of the quotas. - items: - type: string - type: array - QuotaNames: - description: The names of the quotas. - items: - type: string - type: array - QuotaTypes: - description: The resource IDs if these are resource-specific quotas, `global` if they are not. - items: - type: string - type: array - ShortDescriptions: - description: The description of the quotas. - items: - type: string - type: array - type: object - FiltersReadImageExportTask: - additionalProperties: false - description: One or more filters. - properties: - ImageIds: - description: The IDs of the OMIs used for the snapshot export tasks. - items: - type: string - type: array - TaskIds: - description: The IDs of the snapshot export tasks. - items: - type: string - type: array - type: object - FiltersReadVolumeUpdateTask: - additionalProperties: false - description: One or more filters. - properties: - TaskIds: - description: The IDs of the snapshot export tasks. - items: - type: string - type: array - VolumeIds: - description: The IDs of the volumes used for the snapshot export tasks. - items: - type: string - type: array - type: object - FiltersRouteTable: - additionalProperties: false - description: One or more filters. - properties: - LinkRouteTableIds: - description: The IDs of the route tables involved in the associations. - items: - type: string - type: array - LinkRouteTableLinkRouteTableIds: - description: The IDs of the associations between the route tables and the Subnets. - items: - type: string - type: array - LinkRouteTableMain: - description: If true, the route tables are the main ones for their Nets. - type: boolean - LinkSubnetIds: - description: The IDs of the Subnets involved in the associations. - items: - type: string - type: array - NetIds: - description: The IDs of the Nets for the route tables. - items: - type: string - type: array - RouteCreationMethods: - description: The methods used to create a route. - items: - type: string - type: array - RouteDestinationIpRanges: - description: The IP ranges specified in routes in the tables. - items: - type: string - type: array - RouteDestinationServiceIds: - description: The service IDs specified in routes in the tables. - items: - type: string - type: array - RouteGatewayIds: - description: The IDs of the gateways specified in routes in the tables. - items: - type: string - type: array - RouteNatServiceIds: - description: The IDs of the NAT services specified in routes in the tables. - items: - type: string - type: array - RouteNetPeeringIds: - description: The IDs of the Net peerings specified in routes in the tables. - items: - type: string - type: array - RouteStates: - description: The states of routes in the route tables (always `active`). - items: - type: string - type: array - RouteTableIds: - description: The IDs of the route tables. - items: - type: string - type: array - RouteVmIds: - description: The IDs of the VMs specified in routes in the tables. - items: - type: string - type: array - TagKeys: - description: The keys of the tags associated with the route tables. - items: - type: string - type: array - TagValues: - description: The values of the tags associated with the route tables. - items: - type: string - type: array - Tags: - description: 'The key/value combination of the tags associated with the route tables, in the following format: "Filters":{"Tags":["TAGKEY=TAGVALUE"]}.' - items: - type: string - type: array - type: object - FiltersSecurityGroup: - additionalProperties: false - description: One or more filters. - properties: - Descriptions: - description: The descriptions of the security groups. - items: - type: string - type: array - InboundRuleAccountIds: - description: The OUTSCALE account IDs that have been granted permissions. - items: - type: string - type: array - InboundRuleFromPortRanges: - description: The beginnings of the port ranges for the TCP and UDP protocols, or the ICMP type numbers. - items: - type: integer - type: array - InboundRuleIpRanges: - description: The IP ranges that have been granted permissions, in CIDR notation (for example, `10.0.0.0/24`). - items: - type: string - type: array - InboundRuleProtocols: - description: The IP protocols for the permissions (`tcp` \| `udp` \| `icmp`, or a protocol number, or `-1` for all protocols). - items: - type: string - type: array - InboundRuleSecurityGroupIds: - description: The IDs of the security groups that have been granted permissions. - items: - type: string - type: array - InboundRuleSecurityGroupNames: - description: The names of the security groups that have been granted permissions. - items: - type: string - type: array - InboundRuleToPortRanges: - description: The ends of the port ranges for the TCP and UDP protocols, or the ICMP code numbers. - items: - type: integer - type: array - NetIds: - description: The IDs of the Nets specified when the security groups were created. - items: - type: string - type: array - OutboundRuleAccountIds: - description: The OUTSCALE account IDs that have been granted permissions. - items: - type: string - type: array - OutboundRuleFromPortRanges: - description: The beginnings of the port ranges for the TCP and UDP protocols, or the ICMP type numbers. - items: - type: integer - type: array - OutboundRuleIpRanges: - description: The IP ranges that have been granted permissions, in CIDR notation (for example, `10.0.0.0/24`). - items: - type: string - type: array - OutboundRuleProtocols: - description: The IP protocols for the permissions (`tcp` \| `udp` \| `icmp`, or a protocol number, or `-1` for all protocols). - items: - type: string - type: array - OutboundRuleSecurityGroupIds: - description: The IDs of the security groups that have been granted permissions. - items: - type: string - type: array - OutboundRuleSecurityGroupNames: - description: The names of the security groups that have been granted permissions. - items: - type: string - type: array - OutboundRuleToPortRanges: - description: The ends of the port ranges for the TCP and UDP protocols, or the ICMP code numbers. - items: - type: integer - type: array - SecurityGroupIds: - description: The IDs of the security groups. - items: - type: string - type: array - SecurityGroupNames: - description: The names of the security groups. - items: - type: string - type: array - TagKeys: - description: The keys of the tags associated with the security groups. - items: - type: string - type: array - TagValues: - description: The values of the tags associated with the security groups. - items: - type: string - type: array - Tags: - description: 'The key/value combination of the tags associated with the security groups, in the following format: "Filters":{"Tags":["TAGKEY=TAGVALUE"]}.' - items: - type: string - type: array - type: object - FiltersServerCertificate: - additionalProperties: false - description: One or more filters. - properties: - Paths: - description: The paths to the server certificates. - items: - type: string - type: array - type: object - FiltersService: - additionalProperties: false - description: One or more filters. - properties: - ServiceIds: - description: The IDs of the services. - items: - type: string - type: array - ServiceNames: - description: The names of the services. - items: - type: string - type: array - type: object - FiltersSnapshot: - additionalProperties: false - description: One or more filters. - properties: - AccountAliases: - description: The account aliases of the owners of the snapshots. - items: - type: string - type: array - AccountIds: - description: The OUTSCALE account IDs of the owners of the snapshots. - items: - type: string - type: array - ClientTokens: - description: The idempotency tokens provided when creating the snapshots. - items: - type: string - type: array - Descriptions: - description: The descriptions of the snapshots. - items: - type: string - type: array - FromCreationDate: - description: The beginning of the time period, in ISO 8601 date-time format (for example, `2020-06-14T00:00:00.000Z`). - format: date-time - type: string - PermissionsToCreateVolumeAccountIds: - description: The OUTSCALE account IDs which have permissions to create volumes. - items: - type: string - type: array - PermissionsToCreateVolumeGlobalPermission: - description: If true, lists all public volumes. If false, lists all private volumes. - type: boolean - Progresses: - description: The progresses of the snapshots, as a percentage. - items: - type: integer - type: array - SnapshotIds: - description: The IDs of the snapshots. - items: - type: string - type: array - States: - description: The states of the snapshots (`in-queue` \| `pending` \| `completed` \| `error` \| `deleting`). - items: - type: string - type: array - TagKeys: - description: The keys of the tags associated with the snapshots. - items: - type: string - type: array - TagValues: - description: The values of the tags associated with the snapshots. - items: - type: string - type: array - Tags: - description: 'The key/value combination of the tags associated with the snapshots, in the following format: "Filters":{"Tags":["TAGKEY=TAGVALUE"]}.' - items: - type: string - type: array - ToCreationDate: - description: The end of the time period, in ISO 8601 date-time format (for example, `2020-06-30T00:00:00.000Z`). - format: date-time - type: string - VolumeIds: - description: The IDs of the volumes used to create the snapshots. - items: - type: string - type: array - VolumeSizes: - description: The sizes of the volumes used to create the snapshots, in gibibytes (GiB). - items: - type: integer - type: array - type: object - FiltersSnapshotExportTask: - additionalProperties: false - description: One or more filters. - properties: - SnapshotIds: - description: The IDs of the snapshots used with the snapshot export tasks - items: - type: string - type: array - TaskIds: - description: The IDs of the snapshot export tasks. - items: - type: string - type: array - type: object - FiltersSubnet: - additionalProperties: false - description: One or more filters. - properties: - AvailableIpsCounts: - description: The number of available IPs. - items: - type: integer - type: array - IpRanges: - description: The IP ranges in the Subnets, in CIDR notation (for example, `10.0.0.0/16`). - items: - type: string - type: array - NetIds: - description: The IDs of the Nets in which the Subnets are. - items: - type: string - type: array - States: - description: The states of the Subnets (`pending` \| `available` \| `deleted`). - items: - type: string - type: array - SubnetIds: - description: The IDs of the Subnets. - items: - type: string - type: array - SubregionNames: - description: The names of the Subregions in which the Subnets are located. - items: - type: string - type: array - TagKeys: - description: The keys of the tags associated with the Subnets. - items: - type: string - type: array - TagValues: - description: The values of the tags associated with the Subnets. - items: - type: string - type: array - Tags: - description: 'The key/value combination of the tags associated with the Subnets, in the following format: "Filters":{"Tags":["TAGKEY=TAGVALUE"]}.' - items: - type: string - type: array - type: object - FiltersSubregion: - additionalProperties: false - description: One or more filters. - properties: - RegionNames: - description: The names of the Regions containing the Subregions. - items: - type: string - type: array - States: - description: The states of the Subregions. - items: - type: string - type: array - SubregionNames: - description: The names of the Subregions. - items: - type: string - type: array - type: object - FiltersTag: - additionalProperties: false - description: One or more filters. - properties: - Keys: - description: The keys of the tags that are assigned to the resources. You can use this filter alongside the `Values` filter. In that case, you filter the resources corresponding to each tag, regardless of the other filter. - items: - type: string - type: array - ResourceIds: - description: The IDs of the resources with which the tags are associated. - items: - type: string - type: array - ResourceTypes: - description: The resource type (`customer-gateway` \| `dhcpoptions` \| `flexible-gpu` \| `image` \| `instance` \| `keypair` \| `natgateway` \| `network-interface` \| `public-ip` \| `route-table` \| `security-group` \| `snapshot` \| `subnet` \| `task` \| `virtual-private-gateway` \| `volume` \| `vpc` \| `vpc-endpoint` \| `vpc-peering-connection`\| `vpn-connection`). - items: - type: string - type: array - Values: - description: The values of the tags that are assigned to the resources. You can use this filter alongside the `TagKeys` filter. In that case, you filter the resources corresponding to each tag, regardless of the other filter. - items: - type: string - type: array - type: object - FiltersUserGroup: - additionalProperties: false - description: One or more filters. - properties: - PathPrefix: - description: The path prefix of the groups. If not specified, it is set to a slash (`/`). - type: string - UserGroupIds: - description: The IDs of the user groups. - items: - type: string - type: array - type: object - FiltersUsers: - additionalProperties: false - description: One or more filters. - properties: - UserIds: - description: The IDs of the users. - items: - type: string - type: array - type: object - FiltersVirtualGateway: - additionalProperties: false - description: One or more filters. - properties: - ConnectionTypes: - description: The types of the virtual gateways (always `ipsec.1`). - items: - type: string - type: array - LinkNetIds: - description: The IDs of the Nets the virtual gateways are attached to. - items: - type: string - type: array - LinkStates: - description: The current states of the attachments between the virtual gateways and the Nets (`attaching` \| `attached` \| `detaching` \| `detached`). - items: - type: string - type: array - States: - description: The states of the virtual gateways (`pending` \| `available` \| `deleting` \| `deleted`). - items: - type: string - type: array - TagKeys: - description: The keys of the tags associated with the virtual gateways. - items: - type: string - type: array - TagValues: - description: The values of the tags associated with the virtual gateways. - items: - type: string - type: array - Tags: - description: 'The key/value combination of the tags associated with the virtual gateways, in the following format: "Filters":{"Tags":["TAGKEY=TAGVALUE"]}.' - items: - type: string - type: array - VirtualGatewayIds: - description: The IDs of the virtual gateways. - items: - type: string - type: array - type: object - FiltersVm: - additionalProperties: false - description: One or more filters. - properties: - Architectures: - description: The architectures of the VMs (`i386` \| `x86_64`). - items: - type: string - type: array - BlockDeviceMappingDeleteOnVmDeletion: - description: Whether the BSU volumes are deleted when terminating the VMs. - type: boolean - BlockDeviceMappingDeviceNames: - description: The device names for the BSU volumes (in the format `/dev/sdX`, `/dev/sdXX`, `/dev/xvdX`, or `/dev/xvdXX`). - items: - type: string - type: array - BlockDeviceMappingLinkDates: - description: The link dates for the BSU volumes mapped to the VMs (for example, `2016-01-23T18:45:30.000Z`). - items: - oneOf: - - format: date - type: string - - format: date-time - type: string - type: array - BlockDeviceMappingStates: - description: The states for the BSU volumes (`attaching` \| `attached` \| `detaching` \| `detached`). - items: - type: string - type: array - BlockDeviceMappingVolumeIds: - description: The volume IDs of the BSU volumes. - items: - type: string - type: array - BootModes: - description: The boot modes of the VMs. - items: - $ref: '#/components/schemas/BootMode' - type: array - ClientTokens: - description: The idempotency tokens provided when launching the VMs. - items: - type: string - type: array - CreationDates: - description: The dates when the VMs were launched. - items: - oneOf: - - format: date - type: string - - format: date-time - type: string - type: array - ImageIds: - description: The IDs of the OMIs used to launch the VMs. - items: - type: string - type: array - IsSourceDestChecked: - description: Whether the source/destination checking is enabled (true) or disabled (false). - type: boolean - KeypairNames: - description: The names of the keypairs used when launching the VMs. - items: - type: string - type: array - LaunchNumbers: - description: The numbers for the VMs when launching a group of several VMs (for example, `0`, `1`, `2`, and so on). - items: - type: integer - type: array - Lifecycles: - description: Whether the VMs are Spot Instances (spot). - items: - type: string - type: array - NetIds: - description: The IDs of the Nets in which the VMs are running. - items: - type: string - type: array - NicAccountIds: - description: The IDs of the NICs. - items: - type: string - type: array - NicDescriptions: - description: The descriptions of the NICs. - items: - type: string - type: array - NicIsSourceDestChecked: - description: Whether the source/destination checking is enabled (true) or disabled (false). - type: boolean - NicLinkNicDeleteOnVmDeletion: - description: Whether the NICs are deleted when the VMs they are attached to are deleted. - type: boolean - NicLinkNicDeviceNumbers: - description: The device numbers the NICs are attached to. - items: - type: integer - type: array - NicLinkNicLinkNicDates: - description: The dates and times (UTC) when the NICs were attached to the VMs. - items: - oneOf: - - format: date - type: string - - format: date-time - type: string - type: array - NicLinkNicLinkNicIds: - description: The IDs of the NIC attachments. - items: - type: string - type: array - NicLinkNicStates: - description: The states of the attachments. - items: - type: string - type: array - NicLinkNicVmAccountIds: - description: The OUTSCALE account IDs of the owners of the VMs the NICs are attached to. - items: - type: string - type: array - NicLinkNicVmIds: - description: The IDs of the VMs the NICs are attached to. - items: - type: string - type: array - NicLinkPublicIpAccountIds: - description: The OUTSCALE account IDs of the owners of the public IPs associated with the NICs. - items: - type: string - type: array - NicLinkPublicIpLinkPublicIpIds: - description: The association IDs returned when the public IPs were associated with the NICs. - items: - type: string - type: array - NicLinkPublicIpPublicIpIds: - description: The allocation IDs returned when the public IPs were allocated to their accounts. - items: - type: string - type: array - NicLinkPublicIpPublicIps: - description: The public IPs associated with the NICs. - items: - type: string - type: array - NicMacAddresses: - description: The Media Access Control (MAC) addresses of the NICs. - items: - type: string - type: array - NicNetIds: - description: The IDs of the Nets where the NICs are located. - items: - type: string - type: array - NicNicIds: - description: The IDs of the NICs. - items: - type: string - type: array - NicPrivateIpsLinkPublicIpAccountIds: - description: The OUTSCALE account IDs of the owner of the public IPs associated with the private IPs. - items: - type: string - type: array - NicPrivateIpsLinkPublicIpIds: - description: The public IPs associated with the private IPs. - items: - type: string - type: array - NicPrivateIpsPrimaryIp: - description: Whether the private IPs are the primary IPs associated with the NICs. - type: boolean - NicPrivateIpsPrivateIps: - description: The private IPs of the NICs. - items: - type: string - type: array - NicSecurityGroupIds: - description: The IDs of the security groups associated with the NICs. - items: - type: string - type: array - NicSecurityGroupNames: - description: The names of the security groups associated with the NICs. - items: - type: string - type: array - NicStates: - description: The states of the NICs (`available` \| `in-use`). - items: - type: string - type: array - NicSubnetIds: - description: The IDs of the Subnets for the NICs. - items: - type: string - type: array - NicSubregionNames: - description: The Subregions where the NICs are located. - items: - type: string - type: array - Platforms: - description: The platforms. Use windows if you have Windows VMs. Otherwise, leave this filter blank. - items: - type: string - type: array - PrivateIps: - description: The private IPs of the VMs. - items: - type: string - type: array - ProductCodes: - description: The product codes associated with the OMI used to create the VMs. - items: - type: string - type: array - PublicIps: - description: The public IPs of the VMs. - items: - type: string - type: array - ReservationIds: - description: The IDs of the reservation of the VMs, created every time you launch VMs. These reservation IDs can be associated with several VMs when you launch a group of VMs using the same launch request. - items: - type: string - type: array - RootDeviceNames: - description: The names of the root devices for the VMs (for example, `/dev/sda1`) - items: - type: string - type: array - RootDeviceTypes: - description: The root devices types used by the VMs (always `ebs`) - items: - type: string - type: array - SecurityGroupIds: - description: The IDs of the security groups for the VMs (only in the public Cloud). - items: - type: string - type: array - SecurityGroupNames: - description: The names of the security groups for the VMs (only in the public Cloud). - items: - type: string - type: array - StateReasonCodes: - description: The reason codes for the state changes. - items: - type: integer - type: array - StateReasonMessages: - description: The messages describing the state changes. - items: - type: string - type: array - StateReasons: - description: The reasons explaining the current states of the VMs. This filter is like the `StateReasonCodes` one. - items: - type: string - type: array - SubnetIds: - description: The IDs of the Subnets for the VMs. - items: - type: string - type: array - SubregionNames: - description: The names of the Subregions of the VMs. - items: - type: string - type: array - TagKeys: - description: The keys of the tags associated with the VMs. - items: - type: string - type: array - TagValues: - description: The values of the tags associated with the VMs. - items: - type: string - type: array - Tags: - description: 'The key/value combination of the tags associated with the VMs, in the following format: "Filters":{"Tags":["TAGKEY=TAGVALUE"]}.' - items: - type: string - type: array - Tenancies: - description: The tenancies of the VMs (`dedicated` \| `default` \| `host`). - items: - type: string - type: array - TpmEnabled: - description: Whether a virtual Trusted Platform Module (vTPM) is enabled (true) or disabled (false) on the VM. - type: boolean - VmIds: - description: One or more IDs of VMs. - items: - type: string - type: array - VmSecurityGroupIds: - description: The IDs of the security groups for the VMs. - items: - type: string - type: array - VmSecurityGroupNames: - description: The names of the security group for the VMs. - items: - type: string - type: array - VmStateCodes: - description: 'The state codes of the VMs: `-1` (quarantine), `0` (pending), `16` (running), `32` (shutting-down), `48` (terminated), `64` (stopping), and `80` (stopped).' - items: - type: integer - type: array - VmStateNames: - description: The state names of the VMs (`pending` \| `running` \| `stopping` \| `stopped` \| `shutting-down` \| `terminated` \| `quarantine`). - items: - type: string - type: array - VmTypes: - description: The VM types (for example, t2.micro). For more information, see [VM Types](https://docs.outscale.com/en/userguide/VM-Types.html). - items: - type: string - type: array - type: object - FiltersVmGroup: - additionalProperties: false - description: One or more filters. - properties: - Descriptions: - description: The descriptions of the VM groups. - items: - type: string - type: array - SecurityGroupIds: - description: The IDs of the security groups. - items: - type: string - type: array - SubnetIds: - description: The IDs of the Subnets. - items: - type: string - type: array - TagKeys: - description: The keys of the tags associated with the VM groups. - items: - type: string - type: array - TagValues: - description: The values of the tags associated with the VM groups. - items: - type: string - type: array - Tags: - description: 'The key/value combination of the tags associated with the VMs, in the following format: "Filters":{"Tags":["TAGKEY=TAGVALUE"]}.' - items: - type: string - type: array - VmCounts: - description: The number of VMs in the VM group. - items: - type: integer - type: array - VmGroupIds: - description: The IDs of the VM groups. - items: - type: string - type: array - VmGroupNames: - description: The names of the VM groups. - items: - type: string - type: array - VmTemplateIds: - description: The IDs of the VM templates. - items: - type: string - type: array - type: object - FiltersVmTemplate: - additionalProperties: false - description: One or more filters. - properties: - CpuCores: - description: The number of vCores. - items: - type: integer - type: array - CpuGenerations: - description: The processor generations (for example, `v4`). - items: - type: string - type: array - CpuPerformances: - description: The performances of the VMs. - items: - type: string - type: array - Descriptions: - description: The descriptions of the VM templates. - items: - type: string - type: array - ImageIds: - description: The IDs of the OMIs. - items: - type: string - type: array - KeypairNames: - description: The names of the keypairs. - items: - type: string - type: array - Rams: - description: The amount of RAM. - items: - type: integer - type: array - TagKeys: - description: The keys of the tags associated with the VM templates. - items: - type: string - type: array - TagValues: - description: The values of the tags associated with the VM templates. - items: - type: string - type: array - Tags: - description: 'The key/value combination of the tags associated with the VM templates, in the following format: "Filters":{"Tags":["TAGKEY=TAGVALUE"]}.' - items: - type: string - type: array - VmTemplateIds: - description: The IDs of the VM templates. - items: - type: string - type: array - VmTemplateNames: - description: The names of the VM templates. - items: - type: string - type: array - type: object - FiltersVmType: - additionalProperties: false - description: One or more filters. - properties: - BsuOptimized: - description: This parameter is not available. It is present in our API for the sake of historical compatibility with AWS. - type: boolean - EphemeralsTypes: - description: The types of ephemeral storage disk. - items: - type: string - type: array - Eths: - description: The number of Ethernet interfaces available. - items: - type: integer - type: array - Gpus: - description: The number of GPUs available. - items: - type: integer - type: array - MemorySizes: - description: The amounts of memory, in gibibytes (GiB). - items: - format: float - type: number - type: array - VcoreCounts: - description: The numbers of vCores. - items: - type: integer - type: array - VmTypeNames: - description: The names of the VM types. For more information, see [VM Types](https://docs.outscale.com/en/userguide/VM-Types.html). - items: - type: string - type: array - VolumeCounts: - description: The maximum number of ephemeral storage disks. - items: - type: integer - type: array - VolumeSizes: - description: The size of one ephemeral storage disk, in gibibytes (GiB). - items: - type: integer - type: array - type: object - FiltersVmsState: - additionalProperties: false - description: One or more filters. - properties: - MaintenanceEventCodes: - description: The code for the scheduled event (`system-reboot` \| `system-maintenance`). - items: - type: string - type: array - MaintenanceEventDescriptions: - description: The description of the scheduled event. - items: - type: string - type: array - MaintenanceEventsNotAfter: - description: The latest date and time (UTC) the event can end. - items: - oneOf: - - format: date - type: string - - format: date-time - type: string - type: array - MaintenanceEventsNotBefore: - description: The earliest date and time (UTC) the event can start. - items: - oneOf: - - format: date - type: string - - format: date-time - type: string - type: array - SubregionNames: - description: The names of the Subregions of the VMs. - items: - type: string - type: array - VmIds: - description: One or more IDs of VMs. - items: - type: string - type: array - VmStates: - description: The states of the VMs (`pending` \| `running` \| `stopping` \| `stopped` \| `shutting-down` \| `terminated` \| `quarantine`). - items: - type: string - type: array - type: object - FiltersVolume: - additionalProperties: false - description: One or more filters. - properties: - ClientTokens: - description: The idempotency tokens provided when creating the volumes. - items: - type: string - type: array - CreationDates: - description: The dates and times at which the volumes were created, in ISO 8601 date-time format (for example, `2020-06-30T00:00:00.000Z`). - items: - format: date-time - type: string - type: array - LinkVolumeDeleteOnVmDeletion: - description: Whether the volumes are deleted or not when terminating the VMs. - type: boolean - LinkVolumeDeviceNames: - description: The VM device names. - items: - type: string - type: array - LinkVolumeLinkDates: - description: The dates and times at which the volumes were attached, in ISO 8601 date-time format (for example, `2020-06-30T00:00:00.000Z`). - items: - format: date-time - type: string - type: array - LinkVolumeLinkStates: - description: The attachment states of the volumes (`attaching` \| `detaching` \| `attached` \| `detached`). - items: - type: string - type: array - LinkVolumeVmIds: - description: One or more IDs of VMs. - items: - type: string - type: array - SnapshotIds: - description: The snapshots from which the volumes were created. - items: - type: string - type: array - SubregionNames: - description: The names of the Subregions in which the volumes were created. - items: - type: string - type: array - TagKeys: - description: The keys of the tags associated with the volumes. - items: - type: string - type: array - TagValues: - description: The values of the tags associated with the volumes. - items: - type: string - type: array - Tags: - description: 'The key/value combination of the tags associated with the volumes, in the following format: "Filters":{"Tags":["TAGKEY=TAGVALUE"]}.' - items: - type: string - type: array - VolumeIds: - description: The IDs of the volumes. - items: - type: string - type: array - VolumeSizes: - description: The sizes of the volumes, in gibibytes (GiB). - items: - type: integer - type: array - VolumeStates: - description: The states of the volumes (`creating` \| `available` \| `in-use` \| `deleting` \| `error`). - items: - type: string - type: array - VolumeTypes: - description: The types of the volumes (`standard` \| `gp2` \| `io1`). - items: - type: string - type: array - type: object - FiltersVpnConnection: - additionalProperties: false - description: One or more filters. - properties: - BgpAsns: - description: The Border Gateway Protocol (BGP) Autonomous System Numbers (ASNs) of the connections. - items: - type: integer - type: array - ClientGatewayIds: - description: The IDs of the client gateways. - items: - type: string - type: array - ConnectionTypes: - description: The types of the VPN connections (always `ipsec.1`). - items: - type: string - type: array - RouteDestinationIpRanges: - description: The destination IP ranges. - items: - type: string - type: array - States: - description: The states of the VPN connections (`pending` \| `available` \| `deleting` \| `deleted`). - items: - type: string - type: array - StaticRoutesOnly: - description: If false, the VPN connection uses dynamic routing with Border Gateway Protocol (BGP). If true, routing is controlled using static routes. For more information about how to create and delete static routes, see [CreateVpnConnectionRoute](#createvpnconnectionroute) and [DeleteVpnConnectionRoute](#deletevpnconnectionroute). - type: boolean - TagKeys: - description: The keys of the tags associated with the VPN connections. - items: - type: string - type: array - TagValues: - description: The values of the tags associated with the VPN connections. - items: - type: string - type: array - Tags: - description: 'The key/value combination of the tags associated with the VPN connections, in the following format: "Filters":{"Tags":["TAGKEY=TAGVALUE"]}.' - items: - type: string - type: array - VirtualGatewayIds: - description: The IDs of the virtual gateways. - items: - type: string - type: array - VpnConnectionIds: - description: The IDs of the VPN connections. - items: - type: string - type: array - type: object - FlexibleGpu: - additionalProperties: false - description: Information about the flexible GPU (fGPU). - properties: - DeleteOnVmDeletion: - description: If true, the fGPU is deleted when the VM is terminated. - type: boolean - FlexibleGpuId: - description: The ID of the fGPU. - type: string - Generation: - description: The compatible processor generation. - type: string - ModelName: - description: The model of fGPU. For more information, see [About Flexible GPUs](https://docs.outscale.com/en/userguide/About-Flexible-GPUs.html). - type: string - State: - description: The state of the fGPU (`allocated` \| `attaching` \| `attached` \| `detaching`). - type: string - SubregionName: - description: The Subregion where the fGPU is located. - type: string - Tags: - description: One or more tags associated with the fGPU. - items: - $ref: '#/components/schemas/Tag' - type: array - VmId: - description: The ID of the VM the fGPU is attached to, if any. - type: string - type: object - FlexibleGpuCatalog: - additionalProperties: false - description: Information about the flexible GPU (fGPU) that is available in the public catalog. - properties: - Generations: - description: The processor generations that the fGPUs are compatible with. - items: - type: string - type: array - MaxCpu: - description: The maximum number of VM vCores that the fGPU is compatible with. - type: integer - MaxRam: - description: The maximum amount of VM memory that the fGPU is compatible with. - type: integer - ModelName: - description: The model of fGPU. - type: string - VRam: - description: The amount of video RAM (VRAM) of the fGPU. - type: integer - type: object - HealthCheck: - additionalProperties: false - description: Information about the health check configuration. - properties: - CheckInterval: - description: The number of seconds between two requests (between `5` and `600` both included). - type: integer - HealthyThreshold: - description: The number of consecutive successful requests before considering the VM as healthy (between `2` and `10` both included). - type: integer - Path: - description: If you use the HTTP or HTTPS protocols, the request URL path. Always starts with a slash (`/`). - type: string - Port: - description: The port number (between `1` and `65535`, both included). - type: integer - Protocol: - description: The protocol for the URL of the VM (`HTTP` \| `HTTPS` \| `TCP` \| `SSL`). - type: string - Timeout: - description: The maximum waiting time for a response before considering the VM as unhealthy, in seconds (between `2` and `60` both included). - type: integer - UnhealthyThreshold: - description: The number of consecutive failed requests before considering the VM as unhealthy (between `2` and `10` both included). - type: integer - required: - - CheckInterval - - HealthyThreshold - - Port - - Protocol - - Timeout - - UnhealthyThreshold - type: object - Image: - additionalProperties: false - description: Information about the OMI. - properties: - AccountAlias: - description: The account alias of the owner of the OMI. - type: string - AccountId: - description: The account ID of the owner of the OMI. - type: string - Architecture: - description: The architecture of the OMI. - type: string - BlockDeviceMappings: - description: One or more block device mappings. - items: - $ref: '#/components/schemas/BlockDeviceMappingImage' - type: array - BootModes: - description: The boot modes compatible with the OMI. - items: - $ref: '#/components/schemas/BootMode' - type: array - CreationDate: - description: The date and time (UTC) at which the OMI was created. - format: date-time - type: string - Description: - description: The description of the OMI. - type: string - FileLocation: - description: The location from which the OMI files were created. - type: string - ImageId: - description: The ID of the OMI. - type: string - ImageName: - description: The name of the OMI. - type: string - ImageType: - description: The type of the OMI. - type: string - PermissionsToLaunch: - $ref: '#/components/schemas/PermissionsOnResource' - description: Permissions for the resource. - ProductCodes: - description: The product codes associated with the OMI. - items: - type: string - type: array - RootDeviceName: - description: The name of the root device. - type: string - RootDeviceType: - description: The type of root device used by the OMI (always `bsu`). - type: string - SecureBoot: - description: Whether secure boot is activated or not. - type: boolean - State: - description: The state of the OMI (`pending` \| `available` \| `failed`). - type: string - StateComment: - $ref: '#/components/schemas/StateComment' - description: Information about the change of state. - Tags: - description: One or more tags associated with the OMI. - items: - $ref: '#/components/schemas/ResourceTag' - type: array - TpmMandatory: - description: If true, a virtual Trusted Platform Module (vTPM) is mandatory for VMs created from this OMI. If false, a vTPM is not mandatory. - type: boolean - type: object - ImageExportTask: - additionalProperties: false - description: Information about the OMI export task. - properties: - Comment: - description: If the OMI export task fails, an error message appears. - type: string - ImageId: - description: The ID of the OMI to be exported. - type: string - OsuExport: - $ref: '#/components/schemas/OsuExportImageExportTask' - description: Information about the OMI export task. - Progress: - description: The progress of the OMI export task, as a percentage. - type: integer - State: - description: The state of the OMI export task (`pending/queued` \| `pending` \| `completed` \| `failed` \| `cancelled`). - type: string - Tags: - description: One or more tags associated with the image export task. - items: - $ref: '#/components/schemas/ResourceTag' - type: array - TaskId: - description: The ID of the OMI export task. - type: string - type: object - InlinePolicy: - additionalProperties: false - description: Information about an inline policy. - properties: - Body: - description: The policy document, corresponding to a JSON string that contains the policy. For more information, see [EIM Reference Information](https://docs.outscale.com/en/userguide/EIM-Reference-Information.html) and [EIM Policy Generator](https://docs.outscale.com/en/userguide/EIM-Policy-Generator.html). - type: string - Name: - description: The name of the policy. - type: string - type: object - InternetService: - additionalProperties: false - description: Information about the internet service. - properties: - InternetServiceId: - description: The ID of the internet service. - type: string - NetId: - description: The ID of the Net attached to the internet service. - type: string - State: - description: The state of the attachment of the internet service to the Net (always `available`). - type: string - Tags: - description: One or more tags associated with the internet service. - items: - $ref: '#/components/schemas/ResourceTag' - type: array - type: object - Keypair: - additionalProperties: false - description: Information about the keypair. - properties: - KeypairFingerprint: - description: The MD5 public key fingerprint as specified in section 4 of RFC 4716. - type: string - KeypairId: - description: The ID of the keypair. - type: string - KeypairName: - description: The name of the keypair. - type: string - KeypairType: - description: The type of the keypair (`ssh-rsa`, `ssh-ed25519`, `ecdsa-sha2-nistp256`, `ecdsa-sha2-nistp384`, or `ecdsa-sha2-nistp521`). - type: string - Tags: - description: One or more tags associated with the keypair. - items: - $ref: '#/components/schemas/ResourceTag' - type: array - type: object - KeypairCreated: - additionalProperties: false - description: Information about the created keypair. - properties: - KeypairFingerprint: - description: The MD5 public key fingerprint, as specified in section 4 of RFC 4716. - type: string - KeypairId: - description: The ID of the keypair. - type: string - KeypairName: - description: The name of the keypair. - type: string - KeypairType: - description: The type of the keypair (`ssh-rsa`, `ssh-ed25519`, `ecdsa-sha2-nistp256`, `ecdsa-sha2-nistp384`, or `ecdsa-sha2-nistp521`). - type: string - PrivateKey: - description: The private key, returned only if you are creating a keypair (not if you are importing). When you save this private key in a .rsa file, make sure you replace the `\n` escape sequences with real line breaks. - type: string - Tags: - description: One or more tags associated with the keypair. - items: - $ref: '#/components/schemas/ResourceTag' - type: array - type: object - LinkFlexibleGpuRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - FlexibleGpuId: - description: The ID of the fGPU you want to attach. - type: string - VmId: - description: The ID of the VM you want to attach the fGPU to. - type: string - required: - - FlexibleGpuId - - VmId - type: object - LinkFlexibleGpuResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - LinkInternetServiceRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - InternetServiceId: - description: The ID of the internet service you want to attach. - type: string - NetId: - description: The ID of the Net to which you want to attach the internet service. - type: string - required: - - InternetServiceId - - NetId - type: object - LinkInternetServiceResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - LinkLoadBalancerBackendMachinesRequest: - additionalProperties: false - properties: - BackendIps: - description: One or more public IPs of backend VMs. - items: - type: string - type: array - BackendVmIds: - description: One or more IDs of backend VMs. - items: - type: string - type: array - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - LoadBalancerName: - description: The name of the load balancer. - type: string - required: - - LoadBalancerName - type: object - LinkLoadBalancerBackendMachinesResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - LinkManagedPolicyToUserGroupRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - PolicyOrn: - description: The OUTSCALE Resource Name (ORN) of the policy. For more information, see [Resource Identifiers](https://docs.outscale.com/en/userguide/Resource-Identifiers.html). - type: string - UserGroupName: - description: The name of the group you want to link the policy to. - type: string - required: - - PolicyOrn - - UserGroupName - type: object - LinkManagedPolicyToUserGroupResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - LinkNic: - additionalProperties: false - description: Information about the NIC attachment. - properties: - DeleteOnVmDeletion: - description: If true, the NIC is deleted when the VM is terminated. - type: boolean - DeviceNumber: - description: The device index for the NIC attachment (between `1` and `7`, both included). - type: integer - LinkNicId: - description: The ID of the NIC to attach. - type: string - State: - description: The state of the attachment (`attaching` \| `attached` \| `detaching` \| `detached`). - type: string - VmAccountId: - description: The OUTSCALE account ID of the owner of the VM. - type: string - VmId: - description: The ID of the VM. - type: string - type: object - LinkNicLight: - additionalProperties: false - description: Information about the network interface card (NIC). - properties: - DeleteOnVmDeletion: - description: If true, the NIC is deleted when the VM is terminated. - type: boolean - DeviceNumber: - description: The device index for the NIC attachment (between `1` and `7`, both included). - type: integer - LinkNicId: - description: The ID of the NIC to attach. - type: string - State: - description: The state of the attachment (`attaching` \| `attached` \| `detaching` \| `detached`). - type: string - type: object - LinkNicRequest: - additionalProperties: false - properties: - DeviceNumber: - description: The index of the VM device for the NIC attachment (between `1` and `7`, both included). - type: integer - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - NicId: - description: The ID of the NIC you want to attach. - type: string - VmId: - description: The ID of the VM to which you want to attach the NIC. - type: string - required: - - DeviceNumber - - VmId - - NicId - type: object - LinkNicResponse: - additionalProperties: false - properties: - LinkNicId: - description: The ID of the NIC attachment. - type: string - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - LinkNicToUpdate: - additionalProperties: false - description: Information about the NIC attachment. If you are modifying the `DeleteOnVmDeletion` attribute, you must specify the ID of the NIC attachment. - properties: - DeleteOnVmDeletion: - description: If true, the NIC is deleted when the VM is terminated. If false, the NIC is detached from the VM. - type: boolean - LinkNicId: - description: The ID of the NIC attachment. - type: string - type: object - LinkPolicyRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - PolicyOrn: - description: The OUTSCALE Resource Name (ORN) of the policy. For more information, see [Resource Identifiers](https://docs.outscale.com/en/userguide/Resource-Identifiers.html). - pattern: ^orn:ows:(iam|idauth):\S*:\d{12}:policy/\S+$ - type: string - UserName: - description: The name of the user you want to link the policy to (between 1 and 64 characters). - type: string - required: - - PolicyOrn - - UserName - type: object - LinkPolicyResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - LinkPrivateIpsRequest: - additionalProperties: false - properties: - AllowRelink: - description: If true, allows an IP that is already assigned to another NIC in the same Subnet to be assigned to the NIC you specified. - type: boolean - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - NicId: - description: The ID of the NIC. - type: string - PrivateIps: - description: The secondary private IP or IPs you want to assign to the NIC within the IP range of the Subnet. They cannot be one of the first four IPs (ending in `.0`, `.1`, `.2`, `.3`) or the last IP (ending in `.255`) of the Subnet, as these are reserved by 3DS OUTSCALE. For more information, see [About Nets](https://docs.outscale.com/en/userguide/About-Nets.html). - items: - type: string - type: array - SecondaryPrivateIpCount: - description: The number of secondary private IPs to assign to the NIC. - type: integer - required: - - NicId - type: object - LinkPrivateIpsResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - LinkPublicIp: - additionalProperties: false - description: Information about the public IP association. - properties: - LinkPublicIpId: - description: (Required in a Net) The ID representing the association of the public IP with the VM or the NIC. - type: string - PublicDnsName: - description: The name of the public DNS. - type: string - PublicIp: - description: The public IP associated with the NIC. - type: string - PublicIpAccountId: - description: The OUTSCALE account ID of the owner of the public IP. - type: string - PublicIpId: - description: The allocation ID of the public IP. - type: string - type: object - LinkPublicIpLightForVm: - additionalProperties: false - description: Information about the public IP associated with the NIC. - properties: - PublicDnsName: - description: The name of the public DNS. - type: string - PublicIp: - description: The public IP associated with the NIC. - type: string - PublicIpAccountId: - description: The OUTSCALE account ID of the owner of the public IP. - type: string - type: object - LinkPublicIpRequest: - additionalProperties: false - properties: - AllowRelink: - description: If true, allows the public IP to be associated with the VM or NIC that you specify even if it is already associated with another VM or NIC. If false, prevents the public IP from being associated with the VM or NIC that you specify if it is already associated with another VM or NIC. (By default, true in the public Cloud, false in a Net.) - type: boolean - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - NicId: - description: (Net only) The ID of the NIC. This parameter is required if the VM has more than one NIC attached. Otherwise, you need to specify the `VmId` parameter instead. You cannot specify both parameters at the same time. - type: string - PrivateIp: - description: (Net only) The primary or secondary private IP of the specified NIC. By default, the primary private IP. - type: string - PublicIp: - description: The public IP. This parameter is required unless you use the `PublicIpId` parameter. - type: string - PublicIpId: - description: The allocation ID of the public IP. This parameter is required unless you use the `PublicIp` parameter. - type: string - VmId: - description: |- - The ID of the VM.
- - In the public Cloud, this parameter is required.
- - In a Net, this parameter is required if the VM has only one NIC. Otherwise, you need to specify the `NicId` parameter instead. You cannot specify both parameters at the same time. - type: string - type: object - LinkPublicIpResponse: - additionalProperties: false - properties: - LinkPublicIpId: - description: (Net only) The ID representing the association of the public IP with the VM or the NIC. - type: string - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - LinkRouteTable: - additionalProperties: false - description: One or more associations between the route table and the Subnets. - properties: - LinkRouteTableId: - description: The ID of the association between the route table and the Net or Subnet. - type: string - Main: - description: If true, the route table is the main one. - type: boolean - NetId: - description: The ID of the Net, if the route table is not explicitly linked to a Subnet. - type: string - RouteTableId: - description: The ID of the route table. - type: string - SubnetId: - description: The ID of the Subnet, if the route table is explicitly linked to a Subnet. - type: string - type: object - LinkRouteTableRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - RouteTableId: - description: The ID of the route table. - type: string - SubnetId: - description: The ID of the Subnet. - type: string - required: - - RouteTableId - - SubnetId - type: object - LinkRouteTableResponse: - additionalProperties: false - properties: - LinkRouteTableId: - description: The ID of the association between the route table and the Subnet. - type: string - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - LinkVirtualGatewayRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - NetId: - description: The ID of the Net to which you want to attach the virtual gateway. - type: string - VirtualGatewayId: - description: The ID of the virtual gateway. - type: string - required: - - NetId - - VirtualGatewayId - type: object - LinkVirtualGatewayResponse: - additionalProperties: false - properties: - NetToVirtualGatewayLink: - $ref: '#/components/schemas/NetToVirtualGatewayLink' - description: Information about the attachment. - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - LinkVolumeRequest: - additionalProperties: false - properties: - DeviceName: - description: The name of the device. For a root device, you must use `/dev/sda1`. For other volumes, you must use `/dev/sdX`, `/dev/sdXX`, `/dev/xvdX`, or `/dev/xvdXX` (where the first `X` is a letter between `b` and `z`, and the second `X` is a letter between `a` and `z`). - type: string - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - VmId: - description: The ID of the VM you want to attach the volume to. - type: string - VolumeId: - description: The ID of the volume you want to attach. - type: string - required: - - DeviceName - - VmId - - VolumeId - type: object - LinkVolumeResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - LinkedPolicy: - additionalProperties: false - description: Information about the linked policy. - properties: - CreationDate: - description: The date and time (UTC) at which the linked policy was created. - format: date-time - type: string - LastModificationDate: - description: The date and time (UTC) at which the linked policy was last modified. - format: date-time - type: string - Orn: - description: The OUTSCALE Resource Name (ORN) of the policy. For more information, see [Resource Identifiers](https://docs.outscale.com/en/userguide/Resource-Identifiers.html). - type: string - PolicyId: - description: The ID of the policy. - type: string - PolicyName: - description: The name of the policy. - type: string - type: object - LinkedVolume: - additionalProperties: false - description: Information about volume attachment. - properties: - DeleteOnVmDeletion: - description: If true, the volume is deleted when terminating the VM. If false, the volume is not deleted when terminating the VM. - type: boolean - DeviceName: - description: The name of the device. - type: string - State: - description: The state of the attachment of the volume (`attaching` \| `detaching` \| `attached` \| `detached`). - type: string - VmId: - description: The ID of the VM. - type: string - VolumeId: - description: The ID of the volume. - type: string - type: object - Listener: - additionalProperties: false - description: Information about the listener. - properties: - BackendPort: - description: The port on which the backend VM is listening (between `1` and `65535`, both included). - type: integer - BackendProtocol: - description: The protocol for routing traffic to backend VMs (`HTTP` \| `HTTPS` \| `TCP` \| `SSL`). - type: string - LoadBalancerPort: - description: The port on which the load balancer is listening (between `1` and `65535`, both included). - type: integer - LoadBalancerProtocol: - description: The routing protocol (`HTTP` \| `HTTPS` \| `TCP` \| `SSL`). - type: string - PolicyNames: - description: The names of the policies. If there are no policies enabled, the list is empty. - items: - type: string - type: array - ServerCertificateId: - description: The OUTSCALE Resource Name (ORN) of the server certificate. For more information, see [Resource Identifiers > OUTSCALE Resource Names (ORNs)](https://docs.outscale.com/en/userguide/Resource-Identifiers.html#_outscale_resource_names_orns). - type: string - type: object - ListenerForCreation: - additionalProperties: false - description: Information about the listener to create. - properties: - BackendPort: - description: The port on which the backend VM is listening (between `1` and `65535`, both included). - type: integer - BackendProtocol: - description: The protocol for routing traffic to backend VMs (`HTTP` \| `HTTPS` \| `TCP` \| `SSL`). - type: string - LoadBalancerPort: - description: The port on which the load balancer is listening (between `1` and `65535`, both included). - type: integer - LoadBalancerProtocol: - description: The routing protocol (`HTTP` \| `HTTPS` \| `TCP` \| `SSL`). - type: string - ServerCertificateId: - description: |- - The OUTSCALE Resource Name (ORN) of the server certificate. For more information, see [Resource Identifiers > OUTSCALE Resource Names (ORNs)](https://docs.outscale.com/en/userguide/Resource-Identifiers.html#_outscale_resource_names_orns).
- This parameter is required for `HTTPS` and `SSL` protocols. - type: string - required: - - BackendPort - - LoadBalancerPort - - LoadBalancerProtocol - type: object - ListenerRule: - additionalProperties: false - description: Information about the listener rule. - properties: - Action: - description: The type of action for the rule (always `forward`). - type: string - HostNamePattern: - description: A host-name pattern for the rule, with a maximum length of 128 characters. This host-name pattern supports maximum three wildcards, and must not contain any special characters except `-.?`. - type: string - ListenerId: - description: The ID of the listener. - type: integer - ListenerRuleId: - description: The ID of the listener rule. - type: integer - ListenerRuleName: - description: A human-readable name for the listener rule. - type: string - PathPattern: - description: A path pattern for the rule, with a maximum length of 128 characters. This path pattern supports maximum three wildcards, and must not contain any special characters except `_-.$/~"'@:+?`. - type: string - Priority: - description: The priority level of the listener rule, between `1` and `19999` both included. Each rule must have a unique priority level. Otherwise, an error is returned. - type: integer - VmIds: - description: The IDs of the backend VMs. - items: - type: string - type: array - type: object - ListenerRuleForCreation: - additionalProperties: false - description: Information about the listener rule. - properties: - Action: - description: The type of action for the rule (always `forward`). - type: string - HostNamePattern: - description: A host-name pattern for the rule, with a maximum length of 128 characters. This host-name pattern supports maximum three wildcards, and must not contain any special characters except `-.?`. - type: string - ListenerRuleName: - description: A human-readable name for the listener rule. - type: string - PathPattern: - description: A path pattern for the rule, with a maximum length of 128 characters. This path pattern supports maximum three wildcards, and must not contain any special characters except `_-.$/~"'@:+?`. - type: string - Priority: - description: The priority level of the listener rule, between `1` and `19999` both included. Each rule must have a unique priority level. Otherwise, an error is returned. - type: integer - required: - - ListenerRuleName - - Priority - type: object - LoadBalancer: - additionalProperties: false - description: Information about the load balancer. - properties: - AccessLog: - $ref: '#/components/schemas/AccessLog' - description: Information about access logs. - ApplicationStickyCookiePolicies: - description: The stickiness policies defined for the load balancer. - items: - $ref: '#/components/schemas/ApplicationStickyCookiePolicy' - type: array - BackendIps: - description: One or more public IPs of backend VMs. - items: - type: string - type: array - BackendVmIds: - description: One or more IDs of backend VMs for the load balancer. - items: - type: string - type: array - DnsName: - description: The DNS name of the load balancer. - type: string - HealthCheck: - $ref: '#/components/schemas/HealthCheck' - description: Information about the health check configuration. - Listeners: - description: The listeners for the load balancer. - items: - $ref: '#/components/schemas/Listener' - type: array - LoadBalancerName: - description: The name of the load balancer. - type: string - LoadBalancerStickyCookiePolicies: - description: The policies defined for the load balancer. - items: - $ref: '#/components/schemas/LoadBalancerStickyCookiePolicy' - type: array - LoadBalancerType: - description: |- - The type of load balancer. Valid only for load balancers in a Net.
- If `LoadBalancerType` is `internet-facing`, the load balancer has a public DNS name that resolves to a public IP.
- If `LoadBalancerType` is `internal`, the load balancer has a public DNS name that resolves to a private IP. - type: string - NetId: - description: The ID of the Net for the load balancer. - type: string - PrivateIp: - description: The primary private IP of the load balancer. - nullable: true - type: string - PublicIp: - description: (internet-facing only) The public IP associated with the load balancer. - nullable: true - type: string - SecuredCookies: - description: Whether secure cookies are enabled for the load balancer. - type: boolean - SecurityGroups: - description: One or more IDs of security groups for the load balancers. Valid only for load balancers in a Net. - items: - type: string - type: array - SourceSecurityGroup: - $ref: '#/components/schemas/SourceSecurityGroup' - description: |- - Information about the source security group of the load balancer, which you can use as part of your inbound rules for your registered VMs.
- To only allow traffic from load balancers, add a security group rule that specifies this source security group as the inbound source. - State: - description: The state of the load balancer (`provisioning` \| `starting` \| `reloading` \| `active` \| `reconfiguring` \| `deleting` \| `deleted`). - type: string - Subnets: - description: The ID of the Subnet in which the load balancer was created. - items: - type: string - type: array - SubregionNames: - description: The ID of the Subregion in which the load balancer was created. - items: - type: string - type: array - Tags: - description: One or more tags associated with the load balancer. - items: - $ref: '#/components/schemas/ResourceTag' - type: array - type: object - LoadBalancerLight: - additionalProperties: false - description: Information about the load balancer. - properties: - LoadBalancerName: - description: The name of the load balancer to which the listener is attached. - type: string - LoadBalancerPort: - description: The port of load balancer on which the load balancer is listening (between `1` and `65535` both included). - type: integer - required: - - LoadBalancerName - - LoadBalancerPort - type: object - LoadBalancerStickyCookiePolicy: - additionalProperties: false - description: Information about the stickiness policy. - properties: - CookieExpirationPeriod: - description: |- - The time period, in seconds, after which the cookie should be considered stale.
- If `1`, the stickiness session lasts for the duration of the browser session. - type: integer - PolicyName: - description: The name of the stickiness policy. - type: string - type: object - LoadBalancerTag: - additionalProperties: false - description: Information about the load balancer tag. - properties: - Key: - description: The key of the tag. - type: string - LoadBalancerName: - description: The name of the load balancer. - type: string - Value: - description: The value of the tag. - type: string - type: object - Location: - additionalProperties: false - description: Information about the DirectLink location. - properties: - Code: - description: The location code, to be set as the `Location` parameter of the *CreateDirectLink* method when creating a DirectLink. - type: string - Name: - description: The name and description of the location, corresponding to a datacenter. - type: string - type: object - Log: - additionalProperties: false - description: Information about the log. - properties: - AccountId: - description: The OUTSCALE account ID of the logged call. - type: string - CallDuration: - description: The duration of the logged call, in microseconds. - type: integer - QueryAccessKey: - description: The access key used for the logged call. - type: string - QueryApiName: - description: The name of the API used by the logged call (always `oapi` for the OUTSCALE API). - type: string - QueryApiVersion: - description: The version of the API used by the logged call. - type: string - QueryCallName: - description: The name of the logged call. - type: string - QueryDate: - description: The date and time (UTC) of the logged call. - format: date-time - type: string - QueryHeaderRaw: - description: The raw header of the HTTP request of the logged call. - type: string - QueryHeaderSize: - description: The size of the raw header of the HTTP request of the logged call, in bytes. - type: integer - QueryIpAddress: - description: The IP used for the logged call. - type: string - QueryPayloadRaw: - description: The raw payload of the HTTP request of the logged call. - type: string - QueryPayloadSize: - description: The size of the raw payload of the HTTP request of the logged call, in bytes. - type: integer - QueryUserAgent: - description: The user agent of the HTTP request of the logged call. - type: string - RequestId: - description: The request ID provided in the response of the logged call. - type: string - ResponseSize: - description: The size of the response of the logged call, in bytes. - type: integer - ResponseStatusCode: - description: The HTTP status code of the response of the logged call. - type: integer - type: object - MaintenanceEvent: - additionalProperties: false - description: Information about the maintenance event. - properties: - Code: - description: The code of the event (`system-reboot` \| `system-maintenance`). - type: string - Description: - description: The description of the event. - type: string - NotAfter: - description: The latest scheduled end date and time (UTC) for the event. - format: date-time - type: string - NotBefore: - description: The earliest scheduled start date and time (UTC) for the event. - format: date-time - type: string - type: object - MinimalPolicy: - additionalProperties: false - description: Information about the entity. - properties: - Id: - description: The ID of the entity. - type: string - Name: - description: The name of the entity. - type: string - Orn: - description: The OUTSCALE Resource Name (ORN) of the entity. For more information, see [Resource Identifiers](https://docs.outscale.com/en/userguide/Resource-Identifiers.html). - type: string - type: object - NatService: - additionalProperties: false - description: Information about the NAT service. - properties: - ClientToken: - description: The idempotency token provided when creating the NAT service. - type: string - NatServiceId: - description: The ID of the NAT service. - type: string - NetId: - description: The ID of the Net in which the NAT service is. - type: string - PublicIps: - description: Information about the public IP or IPs associated with the NAT service. - items: - $ref: '#/components/schemas/PublicIpLight' - type: array - State: - description: The state of the NAT service (`pending` \| `available` \| `deleting` \| `deleted`). - type: string - SubnetId: - description: The ID of the Subnet in which the NAT service is. - type: string - Tags: - description: One or more tags associated with the NAT service. - items: - $ref: '#/components/schemas/ResourceTag' - type: array - type: object - Net: - additionalProperties: false - description: Information about the Net. - properties: - DhcpOptionsSetId: - description: The ID of the DHCP options set (or `default` if you want to associate the default one). - type: string - IpRange: - description: The IP range for the Net, in CIDR notation (for example, `10.0.0.0/16`). - type: string - NetId: - description: The ID of the Net. - type: string - State: - description: The state of the Net (`pending` \| `available` \| `deleting`). - type: string - Tags: - description: One or more tags associated with the Net. - items: - $ref: '#/components/schemas/ResourceTag' - type: array - Tenancy: - description: The VM tenancy in a Net. - type: string - type: object - NetAccessPoint: - additionalProperties: false - description: Information about the Net access point. - properties: - NetAccessPointId: - description: The ID of the Net access point. - type: string - NetId: - description: The ID of the Net with which the Net access point is associated. - type: string - RouteTableIds: - description: The ID of the route tables associated with the Net access point. - items: - type: string - type: array - ServiceName: - description: The name of the service with which the Net access point is associated. - type: string - State: - description: The state of the Net access point (`pending` \| `available` \| `deleting` \| `deleted`). - type: string - Tags: - description: One or more tags associated with the Net access point. - items: - $ref: '#/components/schemas/ResourceTag' - type: array - type: object - NetPeering: - additionalProperties: false - description: Information about the Net peering. - properties: - AccepterNet: - $ref: '#/components/schemas/AccepterNet' - description: Information about the accepter Net. - ExpirationDate: - description: The date and time (UTC) at which the Net peerings expire. - format: date-time - nullable: true - type: string - NetPeeringId: - description: The ID of the Net peering. - type: string - SourceNet: - $ref: '#/components/schemas/SourceNet' - description: Information about the source Net. - State: - $ref: '#/components/schemas/NetPeeringState' - description: Information about the state of the Net peering. - Tags: - description: One or more tags associated with the Net peering. - items: - $ref: '#/components/schemas/ResourceTag' - type: array - type: object - NetPeeringState: - additionalProperties: false - description: Information about the state of the Net peering. - properties: - Message: - description: Additional information about the state of the Net peering. - type: string - Name: - description: The state of the Net peering (`pending-acceptance` \| `active` \| `rejected` \| `failed` \| `expired` \| `deleted`). - type: string - type: object - NetToVirtualGatewayLink: - additionalProperties: false - description: Information about the attachment. - properties: - NetId: - description: The ID of the Net to which the virtual gateway is attached. - type: string - State: - description: The state of the attachment (`attaching` \| `attached` \| `detaching` \| `detached`). - type: string - type: object - Nic: - additionalProperties: false - description: Information about the NIC. - properties: - AccountId: - description: The OUTSCALE account ID of the owner of the NIC. - type: string - Description: - description: The description of the NIC. - type: string - IsSourceDestChecked: - description: (Net only) If true, the source/destination check is enabled. If false, it is disabled. - type: boolean - LinkNic: - $ref: '#/components/schemas/LinkNic' - description: Information about the NIC attachment. - LinkPublicIp: - $ref: '#/components/schemas/LinkPublicIp' - description: Information about the public IP association. - MacAddress: - description: The Media Access Control (MAC) address of the NIC. - type: string - NetId: - description: The ID of the Net for the NIC. - type: string - NicId: - description: The ID of the NIC. - type: string - PrivateDnsName: - description: The name of the private DNS. - type: string - PrivateIps: - description: The private IPs of the NIC. - items: - $ref: '#/components/schemas/PrivateIp' - type: array - SecurityGroups: - description: One or more IDs of security groups for the NIC. - items: - $ref: '#/components/schemas/SecurityGroupLight' - type: array - State: - description: The state of the NIC (`available` \| `attaching` \| `in-use` \| `detaching`). - type: string - SubnetId: - description: The ID of the Subnet. - type: string - SubregionName: - description: The Subregion in which the NIC is located. - type: string - Tags: - description: One or more tags associated with the NIC. - items: - $ref: '#/components/schemas/ResourceTag' - type: array - type: object - NicForVmCreation: - additionalProperties: false - description: Information about the network interface card (NIC) when creating a virtual machine (VM). - properties: - DeleteOnVmDeletion: - description: If true, the NIC is deleted when the VM is terminated. You can specify this parameter only for a new NIC. To modify this value for an existing NIC, see [UpdateNic](#updatenic). - type: boolean - Description: - description: The description of the NIC, if you are creating a NIC when creating the VM. - type: string - DeviceNumber: - description: The index of the VM device for the NIC attachment (between `0` and `7`, both included). This parameter is required if you create a NIC when creating the VM. - type: integer - NicId: - description: The ID of the NIC, if you are attaching an existing NIC when creating a VM. - type: string - PrivateIps: - description: One or more private IPs to assign to the NIC, if you create a NIC when creating a VM. Only one private IP can be the primary private IP. - items: - $ref: '#/components/schemas/PrivateIpLight' - type: array - SecondaryPrivateIpCount: - description: The number of secondary private IPs, if you create a NIC when creating a VM. This parameter cannot be specified if you specified more than one private IP in the `PrivateIps` parameter. - type: integer - SecurityGroupIds: - description: One or more IDs of security groups for the NIC, if you create a NIC when creating a VM. - items: - type: string - type: array - SubnetId: - description: The ID of the Subnet for the NIC, if you create a NIC when creating a VM. This parameter is required if you create a NIC when creating the VM. - type: string - type: object - NicLight: - additionalProperties: false - description: Information about the network interface card (NIC). - properties: - AccountId: - description: The OUTSCALE account ID of the owner of the NIC. - type: string - Description: - description: The description of the NIC. - type: string - IsSourceDestChecked: - description: (Net only) If true, the source/destination check is enabled. If false, it is disabled. - type: boolean - LinkNic: - $ref: '#/components/schemas/LinkNicLight' - description: Information about the network interface card (NIC). - LinkPublicIp: - $ref: '#/components/schemas/LinkPublicIpLightForVm' - description: Information about the public IP associated with the NIC. - MacAddress: - description: The Media Access Control (MAC) address of the NIC. - type: string - NetId: - description: The ID of the Net for the NIC. - type: string - NicId: - description: The ID of the NIC. - type: string - PrivateDnsName: - description: The name of the private DNS. - type: string - PrivateIps: - description: The private IP or IPs of the NIC. - items: - $ref: '#/components/schemas/PrivateIpLightForVm' - type: array - SecurityGroups: - description: One or more IDs of security groups for the NIC. - items: - $ref: '#/components/schemas/SecurityGroupLight' - type: array - State: - description: The state of the NIC (`available` \| `attaching` \| `in-use` \| `detaching`). - type: string - SubnetId: - description: The ID of the Subnet for the NIC. - type: string - type: object - OsuApiKey: - additionalProperties: false - description: Information about the OOS API key. - properties: - ApiKeyId: - description: The API key of the OOS account that enables you to access the bucket. - type: string - SecretKey: - description: The secret key of the OOS account that enables you to access the bucket. - type: string - type: object - OsuExportImageExportTask: - additionalProperties: false - description: Information about the OMI export task. - properties: - DiskImageFormat: - description: The format of the export disk (`qcow2` \| `raw`). - type: string - OsuBucket: - description: The name of the OOS bucket the OMI is exported to. - type: string - OsuManifestUrl: - description: The URL of the manifest file. - type: string - OsuPrefix: - description: The prefix for the key of the OOS object corresponding to the image. - type: string - required: - - DiskImageFormat - - OsuBucket - type: object - OsuExportSnapshotExportTask: - additionalProperties: false - description: Information about the snapshot export task. - properties: - DiskImageFormat: - description: The format of the export disk (`qcow2` \| `raw`). - type: string - OsuBucket: - description: The name of the OOS bucket the snapshot is exported to. - type: string - OsuPrefix: - description: The prefix for the key of the OOS object corresponding to the snapshot. - type: string - required: - - DiskImageFormat - - OsuBucket - type: object - OsuExportToCreate: - additionalProperties: false - description: Information about the OOS export task to create. - properties: - DiskImageFormat: - description: The format of the export disk (`qcow2` \| `raw`). - type: string - OsuApiKey: - $ref: '#/components/schemas/OsuApiKey' - description: Information about the OOS API key. - OsuBucket: - description: The name of the OOS bucket where you want to export the object. - type: string - OsuManifestUrl: - description: The URL of the manifest file. - type: string - OsuPrefix: - description: The prefix for the key of the OOS object. - type: string - required: - - DiskImageFormat - - OsuBucket - type: object - PermissionsOnResource: - additionalProperties: false - description: Permissions for the resource. - properties: - AccountIds: - description: One or more OUTSCALE account IDs that the permission is associated with. - items: - type: string - type: array - GlobalPermission: - description: |- - A global permission for all accounts.
- (Request) Set this parameter to true to make the resource public (if the parent parameter is `Additions`) or to make the resource private (if the parent parameter is `Removals`).
- (Response) If true, the resource is public. If false, the resource is private. - type: boolean - type: object - PermissionsOnResourceCreation: - additionalProperties: false - description: |- - Information about the permissions for the resource.
- Specify either the `Additions` or the `Removals` parameter. - properties: - Additions: - $ref: '#/components/schemas/PermissionsOnResource' - description: Permissions for the resource. - Removals: - $ref: '#/components/schemas/PermissionsOnResource' - description: Permissions for the resource. - type: object - Phase1Options: - additionalProperties: false - description: This parameter is not available. It is present in our API for the sake of historical compatibility with AWS. - properties: - DpdTimeoutAction: - description: This parameter is not available. It is present in our API for the sake of historical compatibility with AWS. - type: string - DpdTimeoutSeconds: - description: This parameter is not available. It is present in our API for the sake of historical compatibility with AWS. - type: integer - IkeVersions: - description: This parameter is not available. It is present in our API for the sake of historical compatibility with AWS. - items: - type: string - type: array - Phase1DhGroupNumbers: - description: This parameter is not available. It is present in our API for the sake of historical compatibility with AWS. - items: - type: integer - type: array - Phase1EncryptionAlgorithms: - description: This parameter is not available. It is present in our API for the sake of historical compatibility with AWS. - items: - type: string - type: array - Phase1IntegrityAlgorithms: - description: This parameter is not available. It is present in our API for the sake of historical compatibility with AWS. - items: - type: string - type: array - Phase1LifetimeSeconds: - description: This parameter is not available. It is present in our API for the sake of historical compatibility with AWS. - type: integer - ReplayWindowSize: - description: This parameter is not available. It is present in our API for the sake of historical compatibility with AWS. - type: integer - StartupAction: - description: This parameter is not available. It is present in our API for the sake of historical compatibility with AWS. - type: string - type: object - Phase2Options: - additionalProperties: false - description: Information about Phase 2 of the Internet Key Exchange (IKE) negotiation. - properties: - Phase2DhGroupNumbers: - description: This parameter is not available. It is present in our API for the sake of historical compatibility with AWS. - items: - type: integer - type: array - Phase2EncryptionAlgorithms: - description: This parameter is not available. It is present in our API for the sake of historical compatibility with AWS. - items: - type: string - type: array - Phase2IntegrityAlgorithms: - description: This parameter is not available. It is present in our API for the sake of historical compatibility with AWS. - items: - type: string - type: array - Phase2LifetimeSeconds: - description: This parameter is not available. It is present in our API for the sake of historical compatibility with AWS. - type: integer - PreSharedKey: - description: The pre-shared key to establish the initial authentication between the client gateway and the virtual gateway. This key can contain any character except line breaks and double quotes ("). - type: string - type: object - Placement: - additionalProperties: false - description: Information about the placement of the VM. - properties: - SubregionName: - description: The name of the Subregion. - type: string - Tenancy: - description: The tenancy of the VM (`default`, `dedicated`, or a dedicated group ID). - type: string - type: object - Policy: - additionalProperties: false - description: Information about the policy. - properties: - CreationDate: - description: The date and time (UTC) at which the policy was created. - format: date-time - type: string - Description: - description: A friendly name for the policy (between 0 and 1000 characters). - type: string - IsLinkable: - description: Indicates whether the policy can be linked to a group or an EIM user. - type: boolean - LastModificationDate: - description: The date and time (UTC) at which the policy was last modified. - format: date-time - type: string - Orn: - description: The OUTSCALE Resource Name (ORN) of the policy. For more information, see [Resource Identifiers](https://docs.outscale.com/en/userguide/Resource-Identifiers.html). - type: string - Path: - description: The path to the policy. - type: string - PolicyDefaultVersionId: - description: The ID of the policy default version. - type: string - PolicyId: - description: The ID of the policy. - type: string - PolicyName: - description: The name of the policy. - type: string - ResourcesCount: - description: The number of resources attached to the policy. - type: integer - type: object - PolicyEntities: - additionalProperties: false - description: Information about the policy entities. - properties: - Accounts: - description: The accounts linked to the specified policy. - items: - $ref: '#/components/schemas/MinimalPolicy' - type: array - Groups: - description: The groups linked to the specified policy. - items: - $ref: '#/components/schemas/MinimalPolicy' - type: array - HasMoreItems: - description: If true, there are more items to return using the `FirstItem` parameter in a new request. - type: boolean - ItemsCount: - description: The number of entities the specified policy is linked to. - type: integer - MaxResultsLimit: - description: Indicates maximum results defined for the operation. - type: integer - MaxResultsTruncated: - description: If true, indicates whether requested page size is more than allowed. - type: boolean - Users: - description: The users linked to the specified policy. - items: - $ref: '#/components/schemas/MinimalPolicy' - type: array - type: object - PolicyVersion: - additionalProperties: false - description: Information about the policy version. - properties: - Body: - description: The policy document, corresponding to a JSON string that contains the policy. For more information, see [EIM Reference Information](https://docs.outscale.com/en/userguide/EIM-Reference-Information.html) and [EIM Policy Generator](https://docs.outscale.com/en/userguide/EIM-Policy-Generator.html). - type: string - CreationDate: - description: The date and time (UTC) at which the version was created. - format: date-time - type: string - DefaultVersion: - description: If true, the version is the default one. - type: boolean - VersionId: - description: The ID of the version. - type: string - type: object - PrivateIp: - additionalProperties: false - description: Information about the private IP. - properties: - IsPrimary: - description: If true, the IP is the primary private IP of the NIC. - type: boolean - LinkPublicIp: - $ref: '#/components/schemas/LinkPublicIp' - description: Information about the public IP association. - PrivateDnsName: - description: The name of the private DNS. - type: string - PrivateIp: - description: A private IP for the NIC. - type: string - type: object - PrivateIpLight: - additionalProperties: false - description: Information about the private IP. - properties: - IsPrimary: - description: If true, the IP is the primary private IP of the NIC. - type: boolean - PrivateIp: - description: A private IP for the NIC. This IP must be within the IP range of the Subnet that you specify with the `SubnetId` parameter. However, it cannot be one of the first four IPs (ending in `.0`, `.1`, `.2`, `.3`) or the last IP (ending in `.255`) of the Subnet, as these are reserved by 3DS OUTSCALE. For more information, see [About Nets](https://docs.outscale.com/en/userguide/About-Nets.html). - type: string - type: object - PrivateIpLightForVm: - additionalProperties: false - description: Information about the private IP of the NIC. - properties: - IsPrimary: - description: If true, the IP is the primary private IP of the NIC. - type: boolean - LinkPublicIp: - $ref: '#/components/schemas/LinkPublicIpLightForVm' - description: Information about the public IP associated with the NIC. - PrivateDnsName: - description: The name of the private DNS. - type: string - PrivateIp: - description: A private IP for the NIC. - type: string - type: object - ProductType: - additionalProperties: false - description: Information about the product type. - properties: - Description: - description: The description of the product type. - type: string - ProductTypeId: - description: The ID of the product type. - type: string - Vendor: - description: The vendor of the product type. - type: string - type: object - PublicIp: - additionalProperties: false - description: Information about the public IP. - properties: - LinkPublicIpId: - description: (Required in a Net) The ID representing the association of the public IP with the VM or the NIC. - type: string - NatServiceId: - description: The ID of the NAT service associated with the public IP (if any). - nullable: true - type: string - NetAccessPointIds: - description: The IDs of the Net access points associated with the public IP (if any). - items: - type: string - nullable: true - type: array - NicAccountId: - description: The OUTSCALE account ID of the owner of the NIC. - nullable: true - type: string - NicId: - description: The ID of the NIC the public IP is associated with (if any). - nullable: true - type: string - PrivateIp: - description: The private IP associated with the NIC or load balancer. - nullable: true - type: string - PublicIp: - description: The public IP. - type: string - PublicIpId: - description: The allocation ID of the public IP. - type: string - Tags: - description: One or more tags associated with the public IP. - items: - $ref: '#/components/schemas/ResourceTag' - type: array - VmId: - description: The ID of the VM the public IP is associated with (if any). - nullable: true - type: string - type: object - PublicIpLight: - additionalProperties: false - description: Information about the public IP. - properties: - PublicIp: - description: The public IP associated with the NAT service. - type: string - PublicIpId: - description: The allocation ID of the public IP associated with the NAT service. - type: string - type: object - PutUserGroupPolicyRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - PolicyDocument: - description: The policy document, corresponding to a JSON string that contains the policy. For more information, see [EIM Reference Information](https://docs.outscale.com/en/userguide/EIM-Reference-Information.html) and [EIM Policy Generator](https://docs.outscale.com/en/userguide/EIM-Policy-Generator.html). - type: string - PolicyName: - description: The name of the policy. - type: string - UserGroupName: - description: The name of the group. - type: string - UserGroupPath: - description: The path to the group. If not specified, it is set to a slash (`/`). - type: string - required: - - PolicyName - - PolicyDocument - - UserGroupName - type: object - PutUserGroupPolicyResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - PutUserPolicyRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - PolicyDocument: - description: The policy document, corresponding to a JSON string that contains the policy. For more information, see [EIM Reference Information](https://docs.outscale.com/en/userguide/EIM-Reference-Information.html) and [EIM Policy Generator](https://docs.outscale.com/en/userguide/EIM-Policy-Generator.html). - type: string - PolicyName: - description: The name of the policy (between 1 and 128 characters). - type: string - UserName: - description: The name of the user. - type: string - required: - - PolicyName - - PolicyDocument - - UserName - type: object - PutUserPolicyResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - Quota: - additionalProperties: false - description: Information about the quota. - properties: - AccountId: - description: The OUTSCALE account ID of the owner of the quotas. - type: string - Description: - description: The description of the quota. - type: string - MaxValue: - description: The maximum value of the quota for the account (if there is no limit, `0`). - type: integer - Name: - description: The unique name of the quota. - type: string - QuotaCollection: - description: The group name of the quota. - type: string - ShortDescription: - description: The description of the quota. - type: string - UsedValue: - description: The limit value currently used by the account. - type: integer - type: object - QuotaTypes: - additionalProperties: false - description: One or more quotas. - properties: - QuotaType: - description: The resource ID if it is a resource-specific quota, `global` if it is not. - type: string - Quotas: - description: One or more quotas associated with the account. - items: - $ref: '#/components/schemas/Quota' - type: array - type: object - ReadAccessKeysRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Filters: - $ref: '#/components/schemas/FiltersAccessKeys' - description: One or more filters. - Tag: - description: The tag added to the access key. - type: string - UserName: - description: The name of the EIM user. By default, the user who sends the request (which can be the root user). - type: string - type: object - ReadAccessKeysResponse: - additionalProperties: false - properties: - AccessKeys: - description: A list of access keys. - items: - $ref: '#/components/schemas/AccessKey' - type: array - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - ReadAccountsRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - type: object - ReadAccountsResponse: - additionalProperties: false - properties: - Accounts: - description: The list of the accounts. - items: - $ref: '#/components/schemas/Account' - type: array - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - ReadAdminPasswordRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - VmId: - description: The ID of the VM. - type: string - required: - - VmId - type: object - ReadAdminPasswordResponse: - additionalProperties: false - properties: - AdminPassword: - description: The password of the VM. After the first boot, returns an empty string. - type: string - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - VmId: - description: The ID of the VM. - type: string - type: object - ReadApiAccessPolicyRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - type: object - ReadApiAccessPolicyResponse: - additionalProperties: false - properties: - ApiAccessPolicy: - $ref: '#/components/schemas/ApiAccessPolicy' - description: Information about the API access policy. - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - ReadApiAccessRulesRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Filters: - $ref: '#/components/schemas/FiltersApiAccessRule' - description: One or more filters. - type: object - ReadApiAccessRulesResponse: - additionalProperties: false - properties: - ApiAccessRules: - description: A list of API access rules. - items: - $ref: '#/components/schemas/ApiAccessRule' - type: array - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - ReadApiLogsRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Filters: - $ref: '#/components/schemas/FiltersApiLog' - description: One or more filters. - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - type: string - ResultsPerPage: - default: 100 - description: The maximum number of logs returned in a single response (between `1` and `1000`, both included). - type: integer - With: - $ref: '#/components/schemas/With' - description: The information to display in each returned log. - type: object - ReadApiLogsResponse: - additionalProperties: false - properties: - Logs: - description: Information about one or more logs. - items: - $ref: '#/components/schemas/Log' - type: array - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - type: string - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - ReadCO2EmissionAccountRequest: - additionalProperties: false - properties: - FromMonth: - description: The beginning of the time period, in ISO 8601 date format (for example, `2020-06-01`). This value must correspond to the first day of the month and is included in the time period. - oneOf: - - format: date - type: string - - format: date-time - type: string - Overall: - default: false - description: If false, returns only the CO2 emission of the specific account that sends the request. If true, returns either the overall CO2 emission of your paying account and all linked accounts (if the account that sends this request is a paying account) or returns nothing (if the account that sends this request is a linked account). - type: boolean - ToMonth: - description: The end of the time period, in ISO 8601 date format (for example, `2020-06-14`). This value must correspond to the first day of the month and is excluded from the time period. It must be set to a later date than `FromMonth`. - oneOf: - - format: date - type: string - - format: date-time - type: string - required: - - FromMonth - - ToMonth - type: object - ReadCO2EmissionAccountResponse: - additionalProperties: false - properties: - CO2EmissionEntries: - description: The CO2 emission by month and account, for the specified request. - items: - $ref: '#/components/schemas/CO2EmissionEntry' - type: array - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - Unit: - description: The unit of all the `Value` fields of the response, expressed in kgCOâ‚‚e. - type: string - Value: - description: The total CO2 emission for the specified request. - format: double - type: number - type: object - ReadCasRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Filters: - $ref: '#/components/schemas/FiltersCa' - description: One or more filters. - type: object - ReadCasResponse: - additionalProperties: false - properties: - Cas: - description: Information about one or more CAs. - items: - $ref: '#/components/schemas/Ca' - type: array - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - ReadCatalogRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - type: object - ReadCatalogResponse: - additionalProperties: false - properties: - Catalog: - $ref: '#/components/schemas/Catalog' - description: Information about our catalog of prices. - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - ReadCatalogsRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Filters: - $ref: '#/components/schemas/FiltersCatalogs' - description: One or more filters. - type: object - ReadCatalogsResponse: - additionalProperties: false - properties: - Catalogs: - description: Information about one or more catalogs. - items: - $ref: '#/components/schemas/Catalogs' - type: array - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - ReadClientGatewaysRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Filters: - $ref: '#/components/schemas/FiltersClientGateway' - description: One or more filters. - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResultsPerPage: - description: The maximum number of logs returned in a single response (between `1` and `1000`, both included). - type: integer - type: object - ReadClientGatewaysResponse: - additionalProperties: false - properties: - ClientGateways: - description: Information about one or more client gateways. - items: - $ref: '#/components/schemas/ClientGateway' - type: array - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - ReadConsoleOutputRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - VmId: - description: The ID of the VM. - type: string - required: - - VmId - type: object - ReadConsoleOutputResponse: - additionalProperties: false - properties: - ConsoleOutput: - description: The Base64-encoded output of the console. If a command line tool is used, the output is decoded by the tool. - type: string - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - VmId: - description: The ID of the VM. - type: string - type: object - ReadConsumptionAccountRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - FromDate: - description: The beginning of the time period, in ISO 8601 date format (for example, `2020-06-14`). The date-time format is also accepted, but only with a time set to midnight (for example, `2020-06-14T00:00:00.000Z`). This value is included in the time period. - oneOf: - - format: date - type: string - - format: date-time - type: string - Overall: - default: false - description: If false, returns only the consumption of the specific account that sends this request. If true, returns either the overall consumption of your paying account and all linked accounts (if the account that sends this request is a paying account) or returns nothing (if the account that sends this request is a linked account). - type: boolean - ShowPrice: - description: If true, the response also includes the unit price of the consumed resource (`UnitPrice`) and the total price of the consumed resource during the specified time period (`Price`), in the currency of the Region's catalog. - type: boolean - ShowResourceDetails: - default: false - description: By default or if false, returns the consumption aggregated by resource type. If true, the response returns the consumption per `ResourceId`. - type: boolean - ToDate: - description: The end of the time period, in ISO 8601 date format (for example, `2020-06-30`). The date-time format is also accepted, but only with a time set to midnight (for example, `2020-06-30T00:00:00.000Z`). This value is excluded from the time period, and must be set to a later date than `FromDate`. - oneOf: - - format: date - type: string - - format: date-time - type: string - required: - - FromDate - - ToDate - type: object - ReadConsumptionAccountResponse: - additionalProperties: false - properties: - ConsumptionEntries: - description: Information about the resources consumed during the specified time period. - items: - $ref: '#/components/schemas/ConsumptionEntry' - type: array - Currency: - description: The currency of your account for the `UnitPrice` and `Price` parameters, in the ISO-4217 format (for example, `EUR`). - nullable: true - type: string - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - ReadDedicatedGroupsRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Filters: - $ref: '#/components/schemas/FiltersDedicatedGroup' - description: One or more filters. - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResultsPerPage: - description: The maximum number of logs returned in a single response (between `1` and `1000`, both included). - type: integer - type: object - ReadDedicatedGroupsResponse: - additionalProperties: false - properties: - DedicatedGroups: - description: Information about one or more dedicated groups. - items: - $ref: '#/components/schemas/DedicatedGroup' - type: array - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - ReadDhcpOptionsRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Filters: - $ref: '#/components/schemas/FiltersDhcpOptions' - description: One or more filters. - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResultsPerPage: - description: The maximum number of logs returned in a single response (between `1` and `1000`, both included). - type: integer - type: object - ReadDhcpOptionsResponse: - additionalProperties: false - properties: - DhcpOptionsSets: - description: Information about one or more DHCP options sets. - items: - $ref: '#/components/schemas/DhcpOptionsSet' - type: array - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - ReadDirectLinkInterfacesRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Filters: - $ref: '#/components/schemas/FiltersDirectLinkInterface' - description: One or more filters. - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResultsPerPage: - description: The maximum number of logs returned in a single response (between `1` and `1000`, both included). - type: integer - type: object - ReadDirectLinkInterfacesResponse: - additionalProperties: false - properties: - DirectLinkInterfaces: - description: Information about one or more DirectLink interfaces. - items: - $ref: '#/components/schemas/DirectLinkInterfaces' - type: array - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - ReadDirectLinksRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Filters: - $ref: '#/components/schemas/FiltersDirectLink' - description: One or more filters. - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResultsPerPage: - description: The maximum number of logs returned in a single response (between `1` and `1000`, both included). - type: integer - type: object - ReadDirectLinksResponse: - additionalProperties: false - properties: - DirectLinks: - description: Information about one or more DirectLinks. - items: - $ref: '#/components/schemas/DirectLink' - type: array - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - ReadEntitiesLinkedToPolicyRequest: - additionalProperties: false - properties: - EntitiesType: - description: The type of entity linked to the policy you want to get information about. - items: - enum: - - ACCOUNT - - USER - - GROUP - type: string - type: array - FirstItem: - description: The item starting the list of entities requested. - type: integer - PolicyOrn: - description: The OUTSCALE Resource Name (ORN) of the policy. For more information, see [Resource Identifiers](https://docs.outscale.com/en/userguide/Resource-Identifiers.html). - pattern: ^orn:ows:(iam|idauth):\S*:\d{12}:policy/\S+$ - type: string - ResultsPerPage: - description: The maximum number of items that can be returned in a single response (by default, 100). - type: integer - required: - - PolicyOrn - type: object - ReadEntitiesLinkedToPolicyResponse: - additionalProperties: false - properties: - PolicyEntities: - $ref: '#/components/schemas/PolicyEntities' - description: Information about the policy entities. - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - ReadFlexibleGpuCatalogRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - type: object - ReadFlexibleGpuCatalogResponse: - additionalProperties: false - properties: - FlexibleGpuCatalog: - description: Information about one or more fGPUs available in the public catalog. - items: - $ref: '#/components/schemas/FlexibleGpuCatalog' - type: array - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - ReadFlexibleGpusRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Filters: - $ref: '#/components/schemas/FiltersFlexibleGpu' - description: One or more filters. - type: object - ReadFlexibleGpusResponse: - additionalProperties: false - properties: - FlexibleGpus: - description: Information about one or more fGPUs. - items: - $ref: '#/components/schemas/FlexibleGpu' - type: array - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - ReadImageExportTasksRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Filters: - $ref: '#/components/schemas/FiltersReadImageExportTask' - description: One or more filters. - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResultsPerPage: - description: The maximum number of logs returned in a single response (between `1` and `1000`, both included). - type: integer - type: object - ReadImageExportTasksResponse: - additionalProperties: false - properties: - ImageExportTasks: - description: Information about one or more image export tasks. - items: - $ref: '#/components/schemas/ImageExportTask' - type: array - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - ReadImagesRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Filters: - $ref: '#/components/schemas/FiltersImage' - description: One or more filters. - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResultsPerPage: - description: The maximum number of logs returned in a single response (between `1` and `1000`, both included). - type: integer - type: object - ReadImagesResponse: - additionalProperties: false - properties: - Images: - description: Information about one or more OMIs. - items: - $ref: '#/components/schemas/Image' - type: array - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - ReadInternetServicesRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Filters: - $ref: '#/components/schemas/FiltersInternetService' - description: One or more filters. - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResultsPerPage: - description: The maximum number of logs returned in a single response (between `1` and `1000`, both included). - type: integer - type: object - ReadInternetServicesResponse: - additionalProperties: false - properties: - InternetServices: - description: Information about one or more internet services. - items: - $ref: '#/components/schemas/InternetService' - type: array - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - ReadKeypairsRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Filters: - $ref: '#/components/schemas/FiltersKeypair' - description: One or more filters. - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResultsPerPage: - description: The maximum number of logs returned in a single response (between `1` and `1000`, both included). By default, `100`. - type: integer - type: object - ReadKeypairsResponse: - additionalProperties: false - properties: - Keypairs: - description: Information about one or more keypairs. - items: - $ref: '#/components/schemas/Keypair' - type: array - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - ReadLinkedPoliciesFilters: - additionalProperties: false - description: One or more filters. - properties: - PathPrefix: - description: The path prefix of the policies. If not specified, it is set to a slash (`/`). - type: string - type: object - ReadLinkedPoliciesRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Filters: - $ref: '#/components/schemas/ReadLinkedPoliciesFilters' - description: One or more filters. - FirstItem: - description: The item starting the list of policies requested. - type: integer - ResultsPerPage: - description: The maximum number of items that can be returned in a single response (by default, `100`). - type: integer - UserName: - description: The name of the user the policies are linked to. - type: string - required: - - UserName - type: object - ReadLinkedPoliciesResponse: - additionalProperties: false - properties: - HasMoreItems: - description: If true, there are more items to return using the `FirstItem` parameter in a new request. - type: boolean - MaxResultsLimit: - description: Indicates maximum results defined for the operation. - type: integer - MaxResultsTruncated: - description: If true, indicates whether requested page size is more than allowed. - type: boolean - Policies: - description: One or more policies linked to the specified user. - items: - $ref: '#/components/schemas/LinkedPolicy' - type: array - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - ReadListenerRulesRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Filters: - $ref: '#/components/schemas/FiltersListenerRule' - description: One or more filters. - type: object - ReadListenerRulesResponse: - additionalProperties: false - properties: - ListenerRules: - description: The list of the rules to describe. - items: - $ref: '#/components/schemas/ListenerRule' - type: array - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - ReadLoadBalancerTagsRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - LoadBalancerNames: - description: One or more load balancer names. - items: - type: string - type: array - required: - - LoadBalancerNames - type: object - ReadLoadBalancerTagsResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - Tags: - description: Information about one or more load balancer tags. - items: - $ref: '#/components/schemas/LoadBalancerTag' - type: array - type: object - ReadLoadBalancersRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Filters: - $ref: '#/components/schemas/FiltersLoadBalancer' - description: One or more filters. - type: object - ReadLoadBalancersResponse: - additionalProperties: false - properties: - LoadBalancers: - description: Information about one or more load balancers. - items: - $ref: '#/components/schemas/LoadBalancer' - type: array - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - ReadLocationsRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResultsPerPage: - description: The maximum number of logs returned in a single response (between `1` and `1000`, both included). - type: integer - type: object - ReadLocationsResponse: - additionalProperties: false - properties: - Locations: - description: Information about one or more locations. - items: - $ref: '#/components/schemas/Location' - type: array - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - ReadManagedPoliciesLinkedToUserGroupRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Filters: - $ref: '#/components/schemas/FiltersUserGroup' - description: One or more filters. - FirstItem: - description: The item starting the list of policies requested. - type: integer - ResultsPerPage: - description: The maximum number of items that can be returned in a single response (by default, `100`). - type: integer - UserGroupName: - description: The name of the group. - type: string - required: - - UserGroupName - type: object - ReadManagedPoliciesLinkedToUserGroupResponse: - additionalProperties: false - properties: - HasMoreItems: - description: If true, there are more items to return using the `FirstItem` parameter in a new request. - type: boolean - MaxResultsLimit: - description: Indicates maximum results defined for the operation. - type: integer - MaxResultsTruncated: - description: If true, indicates whether requested page size is more than allowed. - type: boolean - Policies: - description: A list of policies. - items: - $ref: '#/components/schemas/LinkedPolicy' - type: array - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - ReadNatServicesRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Filters: - $ref: '#/components/schemas/FiltersNatService' - description: One or more filters. - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResultsPerPage: - description: The maximum number of logs returned in a single response (between `1` and `1000`, both included). - type: integer - type: object - ReadNatServicesResponse: - additionalProperties: false - properties: - NatServices: - description: Information about one or more NAT services. - items: - $ref: '#/components/schemas/NatService' - type: array - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - ReadNetAccessPointServicesRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Filters: - $ref: '#/components/schemas/FiltersService' - description: One or more filters. - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResultsPerPage: - description: The maximum number of logs returned in a single response (between `1` and `1000`, both included). - type: integer - type: object - ReadNetAccessPointServicesResponse: - additionalProperties: false - properties: - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - Services: - description: The names of the services you can use for Net access points. - items: - $ref: '#/components/schemas/Service' - type: array - type: object - ReadNetAccessPointsRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Filters: - $ref: '#/components/schemas/FiltersNetAccessPoint' - description: One or more filters. - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResultsPerPage: - description: The maximum number of logs returned in a single response (between `1` and `1000`, both included). - type: integer - type: object - ReadNetAccessPointsResponse: - additionalProperties: false - properties: - NetAccessPoints: - description: One or more Net access points. - items: - $ref: '#/components/schemas/NetAccessPoint' - type: array - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - ReadNetPeeringsRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Filters: - $ref: '#/components/schemas/FiltersNetPeering' - description: One or more filters. - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResultsPerPage: - description: The maximum number of logs returned in a single response (between `1` and `1000`, both included). - type: integer - type: object - ReadNetPeeringsResponse: - additionalProperties: false - properties: - NetPeerings: - description: Information about one or more Net peerings. - items: - $ref: '#/components/schemas/NetPeering' - type: array - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - ReadNetsRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Filters: - $ref: '#/components/schemas/FiltersNet' - description: One or more filters. - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResultsPerPage: - description: The maximum number of logs returned in a single response (between `1` and `1000`, both included). - type: integer - type: object - ReadNetsResponse: - additionalProperties: false - properties: - Nets: - description: Information about the described Nets. - items: - $ref: '#/components/schemas/Net' - type: array - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - ReadNicsRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Filters: - $ref: '#/components/schemas/FiltersNic' - description: One or more filters. - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResultsPerPage: - description: The maximum number of logs returned in a single response (between `1` and `1000`, both included). - type: integer - type: object - ReadNicsResponse: - additionalProperties: false - properties: - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - Nics: - description: Information about one or more NICs. - items: - $ref: '#/components/schemas/Nic' - type: array - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - ReadPoliciesFilters: - additionalProperties: false - description: One or more filters. - properties: - OnlyLinked: - description: If set to true, lists only the policies attached to a user. - type: boolean - PathPrefix: - description: The path prefix you can use to filter the results. If not specified, it is set to a slash (`/`). - type: string - Scope: - description: The scope of the policies. A policy can either be created by Outscale (`OWS`), and therefore applies to all accounts, or be created by its users (`LOCAL`). - enum: - - LOCAL - - OWS - type: string - type: object - ReadPoliciesRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Filters: - $ref: '#/components/schemas/ReadPoliciesFilters' - description: One or more filters. - FirstItem: - description: The item starting the list of policies requested. - type: integer - ResultsPerPage: - description: The maximum number of items that can be returned in a single response (by default, `100`). - type: integer - type: object - ReadPoliciesResponse: - additionalProperties: false - properties: - HasMoreItems: - description: If true, there are more items to return using the `FirstItem` parameter in a new request. - type: boolean - MaxResultsLimit: - description: Indicates maximum results defined for the operation. - type: integer - MaxResultsTruncated: - description: If true, indicates whether requested page size is more than allowed. - type: boolean - Policies: - description: Information about one or more policies. - items: - $ref: '#/components/schemas/Policy' - type: array - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - ReadPolicyRequest: - additionalProperties: false - properties: - PolicyOrn: - description: The OUTSCALE Resource Name (ORN) of the policy. For more information, see [Resource Identifiers](https://docs.outscale.com/en/userguide/Resource-Identifiers.html). - pattern: ^orn:ows:(iam|idauth):\S*:\d{12}:policy/\S+$ - type: string - required: - - PolicyOrn - type: object - ReadPolicyResponse: - additionalProperties: false - properties: - Policy: - $ref: '#/components/schemas/Policy' - description: Information about the policy. - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - ReadPolicyVersionRequest: - additionalProperties: false - properties: - PolicyOrn: - description: The OUTSCALE Resource Name (ORN) of the policy. For more information, see [Resource Identifiers](https://docs.outscale.com/en/userguide/Resource-Identifiers.html). - pattern: ^orn:ows:(iam|idauth):\S*:\d{12}:policy/\S+$ - type: string - VersionId: - description: The ID of the policy version. - type: string - required: - - PolicyOrn - - VersionId - type: object - ReadPolicyVersionResponse: - additionalProperties: false - properties: - PolicyVersion: - $ref: '#/components/schemas/PolicyVersion' - description: Information about the policy version. - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - ReadPolicyVersionsRequest: - additionalProperties: false - properties: - FirstItem: - description: The item starting the list of policies requested. - type: integer - PolicyOrn: - description: The OUTSCALE Resource Name (ORN) of the policy. For more information, see [Resource Identifiers](https://docs.outscale.com/en/userguide/Resource-Identifiers.html). - pattern: ^orn:ows:(iam|idauth):\S*:\d{12}:policy/\S+$ - type: string - ResultsPerPage: - description: The maximum number of items that can be returned in a single response (by default, `100`). - type: integer - required: - - PolicyOrn - type: object - ReadPolicyVersionsResponse: - additionalProperties: false - properties: - HasMoreItems: - description: If true, there are more items to return using the `FirstItem` parameter in a new request. - type: boolean - MaxResultsLimit: - description: Indicates maximum results defined for the operation. - type: integer - PolicyVersions: - description: A list of all the versions of the policy. - items: - $ref: '#/components/schemas/PolicyVersion' - type: array - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - ReadProductTypesRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Filters: - $ref: '#/components/schemas/FiltersProductType' - description: One or more filters. - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResultsPerPage: - description: The maximum number of logs returned in a single response (between `1` and `1000`, both included). - type: integer - type: object - ReadProductTypesResponse: - additionalProperties: false - properties: - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ProductTypes: - description: Information about one or more product types. - items: - $ref: '#/components/schemas/ProductType' - type: array - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - ReadPublicCatalogRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - type: object - ReadPublicCatalogResponse: - additionalProperties: false - properties: - Catalog: - $ref: '#/components/schemas/Catalog' - description: Information about our catalog of prices. - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - ReadPublicIpRangesRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResultsPerPage: - description: The maximum number of logs returned in a single response (between `1` and `1000`, both included). - type: integer - type: object - ReadPublicIpRangesResponse: - additionalProperties: false - properties: - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - PublicIps: - description: The list of public IPv4 addresses used in the Region, in CIDR notation. - items: - type: string - type: array - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - ReadPublicIpsRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Filters: - $ref: '#/components/schemas/FiltersPublicIp' - description: One or more filters. - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResultsPerPage: - description: The maximum number of logs returned in a single response (between `1` and `1000`, both included). - type: integer - type: object - ReadPublicIpsResponse: - additionalProperties: false - properties: - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - PublicIps: - description: Information about one or more public IPs. - items: - $ref: '#/components/schemas/PublicIp' - type: array - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - ReadQuotasRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Filters: - $ref: '#/components/schemas/FiltersQuota' - description: One or more filters. - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResultsPerPage: - description: The maximum number of logs returned in a single response (between `1` and `1000`, both included). - type: integer - type: object - ReadQuotasResponse: - additionalProperties: false - properties: - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - QuotaTypes: - description: Information about one or more quotas. - items: - $ref: '#/components/schemas/QuotaTypes' - type: array - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - ReadRegionsRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - type: object - ReadRegionsResponse: - additionalProperties: false - properties: - Regions: - description: Information about one or more Regions. - items: - $ref: '#/components/schemas/Region' - type: array - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - ReadRouteTablesRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Filters: - $ref: '#/components/schemas/FiltersRouteTable' - description: One or more filters. - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResultsPerPage: - description: The maximum number of logs returned in a single response (between `1` and `1000`, both included). - type: integer - type: object - ReadRouteTablesResponse: - additionalProperties: false - properties: - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - RouteTables: - description: Information about one or more route tables. - items: - $ref: '#/components/schemas/RouteTable' - type: array - type: object - ReadSecurityGroupsRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Filters: - $ref: '#/components/schemas/FiltersSecurityGroup' - description: One or more filters. - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResultsPerPage: - description: The maximum number of logs returned in a single response (between `1` and `1000`, both included). - type: integer - type: object - ReadSecurityGroupsResponse: - additionalProperties: false - properties: - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - SecurityGroups: - description: Information about one or more security groups. - items: - $ref: '#/components/schemas/SecurityGroup' - type: array - type: object - ReadServerCertificatesRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Filters: - $ref: '#/components/schemas/FiltersServerCertificate' - description: One or more filters. - type: object - ReadServerCertificatesResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - ServerCertificates: - description: Information about one or more server certificates. - items: - $ref: '#/components/schemas/ServerCertificate' - type: array - type: object - ReadSnapshotExportTasksRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Filters: - $ref: '#/components/schemas/FiltersSnapshotExportTask' - description: One or more filters. - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResultsPerPage: - description: The maximum number of logs returned in a single response (between `1` and `1000`, both included). - type: integer - type: object - ReadSnapshotExportTasksResponse: - additionalProperties: false - properties: - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - SnapshotExportTasks: - description: Information about one or more snapshot export tasks. - items: - $ref: '#/components/schemas/SnapshotExportTask' - type: array - type: object - ReadSnapshotsRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Filters: - $ref: '#/components/schemas/FiltersSnapshot' - description: One or more filters. - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResultsPerPage: - description: The maximum number of logs returned in a single response (between `1` and `1000`, both included). - type: integer - type: object - ReadSnapshotsResponse: - additionalProperties: false - properties: - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - Snapshots: - description: Information about one or more snapshots and their permissions. - items: - $ref: '#/components/schemas/Snapshot' - type: array - type: object - ReadSubnetsRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Filters: - $ref: '#/components/schemas/FiltersSubnet' - description: One or more filters. - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResultsPerPage: - description: The maximum number of logs returned in a single response (between `1` and `1000`, both included). - type: integer - type: object - ReadSubnetsResponse: - additionalProperties: false - properties: - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - Subnets: - description: Information about one or more Subnets. - items: - $ref: '#/components/schemas/Subnet' - type: array - type: object - ReadSubregionsRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Filters: - $ref: '#/components/schemas/FiltersSubregion' - description: One or more filters. - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResultsPerPage: - description: The maximum number of logs returned in a single response (between `1` and `1000`, both included). - type: integer - type: object - ReadSubregionsResponse: - additionalProperties: false - properties: - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - Subregions: - description: Information about one or more Subregions. - items: - $ref: '#/components/schemas/Subregion' - type: array - type: object - ReadTagsRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Filters: - $ref: '#/components/schemas/FiltersTag' - description: One or more filters. - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResultsPerPage: - description: The maximum number of logs returned in a single response (between `1` and `1000`, both included). - type: integer - type: object - ReadTagsResponse: - additionalProperties: false - properties: - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - Tags: - description: Information about one or more tags. - items: - $ref: '#/components/schemas/Tag' - type: array - type: object - ReadUnitPriceRequest: - additionalProperties: false - properties: - Operation: - description: The operation associated with the catalog entry (for example, `RunInstances-OD` or `CreateVolume`). - type: string - Service: - description: The service associated with the catalog entry (for example, `TinaOS-FCU` or `TinaOS-OOS`). - type: string - Type: - description: The type associated with the catalog entry (for example, `BSU:VolumeIOPS:io1` or `BoxUsage:tinav6.c6r16p3`). - type: string - required: - - Operation - - Service - - Type - type: object - ReadUnitPriceResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - UnitPriceEntry: - $ref: '#/components/schemas/UnitPriceEntry' - description: Information about the unit price entry. - type: object - ReadUserGroupPoliciesRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - FirstItem: - description: The item starting the list of policies requested. - type: integer - ResultsPerPage: - description: The maximum number of items that can be returned in a single response (by default, `100`). - type: integer - UserGroupName: - description: The name of the group. - type: string - UserGroupPath: - description: The path to the group. If not specified, it is set to a slash (`/`). - type: string - required: - - UserGroupName - type: object - ReadUserGroupPoliciesResponse: - additionalProperties: false - properties: - HasMoreItems: - description: If true, there are more items to return using the `FirstItem` parameter in a new request. - type: boolean - MaxResultsLimit: - description: Indicates maximum results defined for the operation. - type: integer - MaxResultsTruncated: - description: If true, indicates whether requested page size is more than allowed. - type: boolean - Policies: - description: A list of policies. - items: - $ref: '#/components/schemas/InlinePolicy' - type: array - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - ReadUserGroupPolicyRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - PolicyName: - description: The name of the policy. - type: string - UserGroupName: - description: The name of the group. - type: string - UserGroupPath: - description: The path to the group. If not specified, it is set to a slash (`/`). - type: string - required: - - PolicyName - - UserGroupName - type: object - ReadUserGroupPolicyResponse: - additionalProperties: false - properties: - Policy: - $ref: '#/components/schemas/InlinePolicy' - description: Information about an inline policy. - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - ReadUserGroupRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Path: - description: The path to the group. If not specified, it is set to a slash (`/`). - type: string - UserGroupName: - description: The name of the group. - type: string - required: - - UserGroupName - type: object - ReadUserGroupResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - UserGroup: - $ref: '#/components/schemas/UserGroup' - description: Information about the user group. - Users: - description: A list of EIM users. - items: - $ref: '#/components/schemas/User' - type: array - type: object - ReadUserGroupsPerUserRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - UserName: - description: The name of the user. - type: string - UserPath: - description: The path to the user (by default, `/`). - type: string - required: - - UserName - type: object - ReadUserGroupsPerUserResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - UserGroups: - description: A list of user groups. - items: - $ref: '#/components/schemas/UserGroup' - type: array - type: object - ReadUserGroupsRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Filters: - $ref: '#/components/schemas/FiltersUserGroup' - description: One or more filters. - FirstItem: - description: The item starting the list of groups requested. - type: integer - ResultsPerPage: - description: The maximum number of items that can be returned in a single response (by default, `100`). - type: integer - type: object - ReadUserGroupsResponse: - additionalProperties: false - properties: - HasMoreItems: - description: If true, there are more items to return using the `FirstItem` parameter in a new request. - type: boolean - MaxResultsLimit: - description: Indicates maximum results defined for the operation. - type: integer - MaxResultsTruncated: - description: If true, indicates whether requested page size is more than allowed. - type: boolean - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - UserGroups: - description: A list of user groups. - items: - $ref: '#/components/schemas/UserGroup' - type: array - type: object - ReadUserPoliciesRequest: - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - UserName: - description: The name of the user. - type: string - required: - - UserName - type: object - ReadUserPoliciesResponse: - properties: - PolicyNames: - description: A list of policy names. - items: - type: string - type: array - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - ReadUserPolicyRequest: - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - PolicyName: - description: The name of the policy. - type: string - UserName: - description: The name of the user. - type: string - required: - - UserName - - PolicyName - type: object - ReadUserPolicyResponse: - properties: - PolicyDocument: - description: The policy document, providing a description of the policy. - type: string - PolicyName: - description: The name of the inline policy. - type: string - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - UserName: - description: The name of the user in which the inline policy is included. - type: string - type: object - ReadUsersRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Filters: - $ref: '#/components/schemas/FiltersUsers' - description: One or more filters. - FirstItem: - description: The item starting the list of users requested. - type: integer - ResultsPerPage: - description: The maximum number of items that can be returned in a single response (by default, `100`). - type: integer - type: object - ReadUsersResponse: - additionalProperties: false - properties: - HasMoreItems: - description: If true, there are more items to return using the `FirstItem` parameter in a new request. - type: boolean - MaxResultsLimit: - description: Indicates maximum results defined for the operation. - type: integer - MaxResultsTruncated: - description: If true, indicates whether requested page size is more than allowed. - type: boolean - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - Users: - description: A list of EIM users. - items: - $ref: '#/components/schemas/User' - type: array - type: object - ReadVirtualGatewaysRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Filters: - $ref: '#/components/schemas/FiltersVirtualGateway' - description: One or more filters. - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResultsPerPage: - description: The maximum number of logs returned in a single response (between `1` and `1000`, both included). - type: integer - type: object - ReadVirtualGatewaysResponse: - additionalProperties: false - properties: - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - VirtualGateways: - description: Information about one or more virtual gateways. - items: - $ref: '#/components/schemas/VirtualGateway' - type: array - type: object - ReadVmGroupsRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Filters: - $ref: '#/components/schemas/FiltersVmGroup' - description: One or more filters. - type: object - ReadVmGroupsResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - VmGroups: - description: Information about one or more VM groups. - items: - $ref: '#/components/schemas/VmGroup' - type: array - type: object - ReadVmTemplatesRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Filters: - $ref: '#/components/schemas/FiltersVmTemplate' - description: One or more filters. - type: object - ReadVmTemplatesResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - VmTemplates: - description: Information about one or more VM templates. - items: - $ref: '#/components/schemas/VmTemplate' - type: array - type: object - ReadVmTypesRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Filters: - $ref: '#/components/schemas/FiltersVmType' - description: One or more filters. - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResultsPerPage: - description: The maximum number of logs returned in a single response (between `1` and `1000`, both included). - type: integer - type: object - ReadVmTypesResponse: - additionalProperties: false - properties: - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - VmTypes: - description: Information about one or more VM types. - items: - $ref: '#/components/schemas/VmType' - type: array - type: object - ReadVmsHealthRequest: - additionalProperties: false - properties: - BackendVmIds: - description: One or more IDs of backend VMs. - items: - type: string - type: array - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - LoadBalancerName: - description: The name of the load balancer. - type: string - required: - - LoadBalancerName - type: object - ReadVmsHealthResponse: - additionalProperties: false - properties: - BackendVmHealth: - description: Information about the health of one or more backend VMs. - items: - $ref: '#/components/schemas/BackendVmHealth' - type: array - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - ReadVmsRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Filters: - $ref: '#/components/schemas/FiltersVm' - description: One or more filters. - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResultsPerPage: - description: The maximum number of logs returned in a single response (between `1` and `1000`, both included). - type: integer - type: object - ReadVmsResponse: - additionalProperties: false - properties: - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - Vms: - description: Information about one or more VMs. - items: - $ref: '#/components/schemas/Vm' - type: array - type: object - ReadVmsStateRequest: - additionalProperties: false - properties: - AllVms: - default: false - description: If true, includes the status of all VMs. If false, only includes the status of running VMs. - type: boolean - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Filters: - $ref: '#/components/schemas/FiltersVmsState' - description: One or more filters. - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResultsPerPage: - description: The maximum number of logs returned in a single response (between `1` and `1000`, both included). - type: integer - type: object - ReadVmsStateResponse: - additionalProperties: false - properties: - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - VmStates: - description: Information about one or more VM states. - items: - $ref: '#/components/schemas/VmStates' - type: array - type: object - ReadVolumeUpdateTasksRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Filters: - $ref: '#/components/schemas/FiltersReadVolumeUpdateTask' - description: One or more filters. - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResultsPerPage: - description: The maximum number of logs returned in a single response (between `1` and `1000`, both included). By default, `100`. - type: integer - type: object - ReadVolumeUpdateTasksResponse: - additionalProperties: false - properties: - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - VolumeUpdateTasks: - description: Information about one or more volume update tasks. - items: - $ref: '#/components/schemas/VolumeUpdateTask' - type: array - type: object - ReadVolumesRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Filters: - $ref: '#/components/schemas/FiltersVolume' - description: One or more filters. - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResultsPerPage: - description: The maximum number of logs returned in a single response (between `1` and `1000`, both included). - type: integer - type: object - ReadVolumesResponse: - additionalProperties: false - properties: - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - Volumes: - description: Information about one or more volumes. - items: - $ref: '#/components/schemas/Volume' - type: array - type: object - ReadVpnConnectionsRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Filters: - $ref: '#/components/schemas/FiltersVpnConnection' - description: One or more filters. - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResultsPerPage: - description: The maximum number of logs returned in a single response (between `1` and `1000`, both included). - type: integer - type: object - ReadVpnConnectionsResponse: - additionalProperties: false - properties: - NextPageToken: - description: The token to request the next page of results. Each token refers to a specific page. - format: byte - type: string - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - VpnConnections: - description: Information about one or more VPN connections. - items: - $ref: '#/components/schemas/VpnConnection' - type: array - type: object - RebootVmsRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - VmIds: - description: One or more IDs of the VMs you want to reboot. - items: - type: string - type: array - required: - - VmIds - type: object - RebootVmsResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - Region: - additionalProperties: false - description: Information about the Region. - properties: - Endpoint: - description: The hostname of the gateway to access the Region. - type: string - RegionName: - description: The administrative name of the Region. - type: string - type: object - RegisterVmsInLoadBalancerRequest: - additionalProperties: false - properties: - BackendVmIds: - description: |- - One or more IDs of backend VMs.
- Specifying the same ID several times has no effect as each backend VM has equal weight. - items: - type: string - type: array - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - LoadBalancerName: - description: The name of the load balancer. - type: string - required: - - BackendVmIds - - LoadBalancerName - type: object - RegisterVmsInLoadBalancerResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - RejectNetPeeringRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - NetPeeringId: - description: The ID of the Net peering you want to reject. - type: string - required: - - NetPeeringId - type: object - RejectNetPeeringResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - RemoveUserFromUserGroupRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - UserGroupName: - description: The name of the group you want to remove the user from. - type: string - UserGroupPath: - description: The path to the group. If not specified, it is set to a slash (`/`). - type: string - UserName: - description: The name of the user you want to remove from the group. - type: string - UserPath: - description: The path to the user (by default, `/`). - type: string - required: - - UserGroupName - - UserName - type: object - RemoveUserFromUserGroupResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - ResourceLoadBalancerTag: - additionalProperties: false - description: Information about the tag. - properties: - Key: - description: The key of the tag, between 1 and 128 characters. - type: string - required: - - Key - type: object - ResourceTag: - additionalProperties: false - description: Information about the tag. - properties: - Key: - description: The key of the tag, between 1 and 255 characters. - type: string - Value: - description: The value of the tag, between 0 and 255 characters. - type: string - required: - - Key - - Value - type: object - ResponseContext: - additionalProperties: false - description: Information about the context of the response. - properties: - RequestId: - description: The ID of the request. - type: string - type: object - Route: - additionalProperties: false - description: Information about the route. - properties: - CreationMethod: - description: The method used to create the route. - type: string - DestinationIpRange: - description: The IP range used for the destination match, in CIDR notation (for example, `10.0.0.0/24`). - type: string - DestinationServiceId: - description: The ID of the OUTSCALE service. - type: string - GatewayId: - description: The ID of the internet service or virtual gateway attached to the Net. - type: string - NatServiceId: - description: The ID of a NAT service attached to the Net. - type: string - NetAccessPointId: - description: The ID of the Net access point. - type: string - NetPeeringId: - description: The ID of the Net peering. - type: string - NicId: - description: The ID of the NIC. - type: string - State: - description: The state of a route in the route table (always `active`). - type: string - VmAccountId: - description: The OUTSCALE account ID of the owner of the VM. - type: string - VmId: - description: The ID of a VM specified in a route in the table. - type: string - type: object - RouteLight: - additionalProperties: false - description: Information about the route. - properties: - DestinationIpRange: - description: The IP range used for the destination match, in CIDR notation (for example, `10.0.0.0/24`). - type: string - RouteType: - description: The type of route (always `static`). - type: string - State: - description: The current state of the static route (`pending` \| `available` \| `deleting` \| `deleted`). - type: string - type: object - RoutePropagatingVirtualGateway: - additionalProperties: false - description: Information about the route propagating virtual gateway. - properties: - VirtualGatewayId: - description: The ID of the virtual gateway. - type: string - type: object - RouteTable: - additionalProperties: false - description: Information about the route table. - properties: - LinkRouteTables: - description: One or more associations between the route table and Subnets. - items: - $ref: '#/components/schemas/LinkRouteTable' - type: array - NetId: - description: The ID of the Net for the route table. - type: string - RoutePropagatingVirtualGateways: - description: Information about virtual gateways propagating routes. - items: - $ref: '#/components/schemas/RoutePropagatingVirtualGateway' - type: array - RouteTableId: - description: The ID of the route table. - type: string - Routes: - description: One or more routes in the route table. - items: - $ref: '#/components/schemas/Route' - type: array - Tags: - description: One or more tags associated with the route table. - items: - $ref: '#/components/schemas/ResourceTag' - type: array - type: object - ScaleDownVmGroupRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - VmGroupId: - description: The ID of the VM group you want to scale down. - type: string - VmSubtraction: - description: The number of VMs you want to delete from the VM group. - type: integer - required: - - VmGroupId - - VmSubtraction - type: object - ScaleDownVmGroupResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - ScaleUpVmGroupRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - VmAddition: - description: The number of VMs you want to add to the VM group. - type: integer - VmGroupId: - description: The ID of the VM group you want to scale up. - type: string - required: - - VmGroupId - - VmAddition - type: object - ScaleUpVmGroupResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - SecureBootAction: - description: One action to perform on the next boot of the VM (`enable` | `disable` | `setup-mode` | `none`). For more information, see [About Secure Boot](https://docs.outscale.com/en/userguide/About-Secure-Boot.html#_secure_boot_actions). - enum: - - enable - - disable - - setup-mode - - none - - restore-factory-keys - type: string - SecurityGroup: - additionalProperties: false - description: Information about the security group. - properties: - AccountId: - description: The OUTSCALE account ID that has been granted permission. - type: string - Description: - description: The description of the security group. - type: string - InboundRules: - description: The inbound rules associated with the security group. - items: - $ref: '#/components/schemas/SecurityGroupRule' - type: array - NetId: - description: The ID of the Net for the security group. - type: string - OutboundRules: - description: The outbound rules associated with the security group. - items: - $ref: '#/components/schemas/SecurityGroupRule' - type: array - SecurityGroupId: - description: The ID of the security group. - type: string - SecurityGroupName: - description: The name of the security group. - type: string - Tags: - description: One or more tags associated with the security group. - items: - $ref: '#/components/schemas/ResourceTag' - type: array - type: object - SecurityGroupLight: - additionalProperties: false - description: Information about the security group. - properties: - SecurityGroupId: - description: The ID of the security group. - type: string - SecurityGroupName: - description: The name of the security group. - type: string - type: object - SecurityGroupRule: - additionalProperties: false - description: Information about the security group rule. - properties: - FromPortRange: - description: The beginning of the port range for the TCP and UDP protocols, or an ICMP type number. - type: integer - IpProtocol: - description: The IP protocol name (`tcp`, `udp`, `icmp`, or `-1` for all protocols). By default, `-1`. In a Net, this can also be an IP protocol number. For more information, see the [IANA.org website](https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml). - type: string - IpRanges: - description: One or more IP ranges for the security group rules, in CIDR notation (for example, `["10.0.0.0/24" , "10.0.1.0/24"]`). - items: - type: string - type: array - SecurityGroupRuleId: - description: The ID of the security group rule. - type: string - SecurityGroupsMembers: - description: Information about one or more source or destination security groups. - items: - $ref: '#/components/schemas/SecurityGroupsMember' - type: array - ServiceIds: - description: One or more service IDs to allow traffic from a Net to access the corresponding OUTSCALE services. For more information, see [ReadNetAccessPointServices](#readnetaccesspointservices). - items: - type: string - type: array - ToPortRange: - description: The end of the port range for the TCP and UDP protocols, or an ICMP code number. - type: integer - type: object - SecurityGroupsMember: - additionalProperties: false - description: Information about a source or destination security group. - properties: - AccountId: - description: The OUTSCALE account ID that owns the source or destination security group. - type: string - SecurityGroupId: - description: The ID of a source or destination security group that you want to link to the security group of the rule. - type: string - SecurityGroupName: - description: The name of a source or destination security group that you want to link to the security group of the rule. - type: string - type: object - ServerCertificate: - additionalProperties: false - description: Information about the server certificate. - properties: - ExpirationDate: - description: The date and time (UTC) on which the server certificate expires. - format: date-time - type: string - Id: - description: The ID of the server certificate. - type: string - Name: - description: The name of the server certificate. - type: string - Orn: - description: The OUTSCALE Resource Name (ORN) of the server certificate. For more information, see [Resource Identifiers > OUTSCALE Resource Names (ORNs)](https://docs.outscale.com/en/userguide/Resource-Identifiers.html#_outscale_resource_names_orns). - type: string - Path: - description: The path to the server certificate. - type: string - UploadDate: - description: The date and time (UTC) on which the server certificate has been uploaded. - format: date-time - type: string - type: object - Service: - additionalProperties: false - description: Information about the service. - properties: - IpRanges: - description: The list of network prefixes used by the service, in CIDR notation. - items: - type: string - type: array - ServiceId: - description: The ID of the service. - type: string - ServiceName: - description: The name of the service. - type: string - type: object - SetDefaultPolicyVersionRequest: - additionalProperties: false - properties: - PolicyOrn: - description: The OUTSCALE Resource Name (ORN) of the policy. For more information, see [Resource Identifiers](https://docs.outscale.com/en/userguide/Resource-Identifiers.html). - pattern: ^orn:ows:(iam|idauth):\S*:\d{12}:policy/\S+$ - type: string - VersionId: - description: The ID of the version. - type: string - required: - - PolicyOrn - - VersionId - type: object - SetDefaultPolicyVersionResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - Snapshot: - additionalProperties: false - description: Information about the snapshot. - properties: - AccountAlias: - description: The account alias of the owner of the snapshot. - type: string - AccountId: - description: The OUTSCALE account ID of the owner of the snapshot. - type: string - ClientToken: - description: The idempotency token provided when creating the snapshot. - type: string - CreationDate: - description: The date and time (UTC) at which the snapshot was created. - format: date-time - type: string - Description: - description: The description of the snapshot. - type: string - PermissionsToCreateVolume: - $ref: '#/components/schemas/PermissionsOnResource' - description: Permissions for the resource. - Progress: - description: The progress of the snapshot, as a percentage. - type: integer - SnapshotId: - description: The ID of the snapshot. - type: string - State: - description: The state of the snapshot (`in-queue` \| `pending` \| `completed` \| `error` \| `deleting`). - type: string - Tags: - description: One or more tags associated with the snapshot. - items: - $ref: '#/components/schemas/ResourceTag' - type: array - VolumeId: - description: The ID of the volume used to create the snapshot. - type: string - VolumeSize: - description: The size of the volume used to create the snapshot, in gibibytes (GiB). - type: integer - type: object - SnapshotExportTask: - additionalProperties: false - description: Information about the snapshot export task. - properties: - Comment: - description: If the snapshot export task fails, an error message appears. - type: string - OsuExport: - $ref: '#/components/schemas/OsuExportSnapshotExportTask' - description: Information about the snapshot export task. - Progress: - description: The progress of the snapshot export task, as a percentage. - type: integer - SnapshotId: - description: The ID of the snapshot to be exported. - type: string - State: - description: The state of the snapshot export task (`pending` \| `active` \| `completed` \| `cancelled` \| `failed`). - type: string - Tags: - description: One or more tags associated with the snapshot export task. - items: - $ref: '#/components/schemas/ResourceTag' - type: array - TaskId: - description: The ID of the snapshot export task. - type: string - type: object - SourceNet: - additionalProperties: false - description: Information about the source Net. - properties: - AccountId: - description: The OUTSCALE account ID of the owner of the source Net. - type: string - IpRange: - description: The IP range for the source Net, in CIDR notation (for example, `10.0.0.0/16`). - type: string - NetId: - description: The ID of the source Net. - type: string - type: object - SourceSecurityGroup: - additionalProperties: false - description: |- - Information about the source security group of the load balancer, which you can use as part of your inbound rules for your registered VMs.
- To only allow traffic from load balancers, add a security group rule that specifies this source security group as the inbound source. - properties: - SecurityGroupAccountId: - description: The OUTSCALE account ID of the owner of the security group. - type: string - SecurityGroupName: - description: The name of the security group. - type: string - type: object - StartVmsRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - VmIds: - description: One or more IDs of VMs. - items: - type: string - type: array - required: - - VmIds - type: object - StartVmsResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - Vms: - description: Information about one or more started VMs. - items: - $ref: '#/components/schemas/VmState' - type: array - type: object - StateComment: - additionalProperties: false - description: Information about the change of state. - properties: - StateCode: - description: The code of the change of state. - type: string - StateMessage: - description: A message explaining the change of state. - type: string - type: object - StopVmsRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - ForceStop: - description: Forces the VM to stop. - type: boolean - VmIds: - description: One or more IDs of VMs. - items: - type: string - type: array - required: - - VmIds - type: object - StopVmsResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - Vms: - description: Information about one or more stopped VMs. - items: - $ref: '#/components/schemas/VmState' - type: array - type: object - Subnet: - additionalProperties: false - description: Information about the Subnet. - properties: - AvailableIpsCount: - description: The number of available IPs in the Subnets. - type: integer - IpRange: - description: The IP range in the Subnet, in CIDR notation (for example, `10.0.0.0/16`). - type: string - MapPublicIpOnLaunch: - description: If true, a public IP is assigned to the network interface cards (NICs) created in the specified Subnet. - type: boolean - NetId: - description: The ID of the Net in which the Subnet is. - type: string - State: - description: The state of the Subnet (`pending` \| `available` \| `deleted`). - type: string - SubnetId: - description: The ID of the Subnet. - type: string - SubregionName: - description: The name of the Subregion in which the Subnet is located. - type: string - Tags: - description: One or more tags associated with the Subnet. - items: - $ref: '#/components/schemas/ResourceTag' - type: array - type: object - Subregion: - additionalProperties: false - description: Information about the Subregion. - properties: - LocationCode: - description: The location code (physical zone) of the Subregion. For more information, see [About Regions > Mapping Between Subregions and Physical Zones](https://docs.outscale.com/en/userguide/About-Regions-and-Subregions.html#_mapping_between_subregions_and_physical_zones). - type: string - RegionName: - description: The name of the Region containing the Subregion. - type: string - State: - description: The state of the Subregion. - type: string - SubregionName: - description: The name of the Subregion. - type: string - type: object - Tag: - additionalProperties: false - description: Information about the tag. - properties: - Key: - description: The key of the tag, between 1 and 255 characters. - type: string - ResourceId: - description: The ID of the resource. - type: string - ResourceType: - description: The type of the resource. - type: string - Value: - description: The value of the tag, between 0 and 255 characters. - type: string - type: object - UnitPriceEntry: - additionalProperties: false - description: Information about the unit price entry. - properties: - Currency: - description: The currency of your account for the `UnitPrice` parameter, in the ISO-4217 format (for example, `EUR`). - type: string - Operation: - description: The operation associated with the catalog entry (for example, `RunInstances-OD` or `CreateVolume`). - type: string - Service: - description: The service associated with the catalog entry (for example, `TinaOS-FCU` or `TinaOS-OOS`). - type: string - Type: - description: The type associated with the catalog entry (for example, `BSU:VolumeIOPS:io1` or `BoxUsage:tinav6.c6r16p3`). - type: string - Unit: - description: The unit associated with the catalog entry (for example, `PER_MONTH` or `PER_COUNT`). - type: string - UnitPrice: - description: The unit price of the catalog entry in the currency of your account, in the ISO-4217 format (for example, `EUR`). - format: double - type: number - type: object - UnlinkFlexibleGpuRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - FlexibleGpuId: - description: The ID of the fGPU you want to detach from your VM. - type: string - required: - - FlexibleGpuId - type: object - UnlinkFlexibleGpuResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - UnlinkInternetServiceRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - InternetServiceId: - description: The ID of the internet service you want to detach. - type: string - NetId: - description: The ID of the Net from which you want to detach the internet service. - type: string - required: - - InternetServiceId - - NetId - type: object - UnlinkInternetServiceResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - UnlinkLoadBalancerBackendMachinesRequest: - additionalProperties: false - properties: - BackendIps: - description: One or more public IPs of backend VMs. - items: - type: string - type: array - BackendVmIds: - description: One or more IDs of backend VMs. - items: - type: string - type: array - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - LoadBalancerName: - description: The name of the load balancer. - type: string - required: - - LoadBalancerName - type: object - UnlinkLoadBalancerBackendMachinesResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - UnlinkManagedPolicyFromUserGroupRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - PolicyOrn: - description: The OUTSCALE Resource Name (ORN) of the policy. For more information, see [Resource Identifiers](https://docs.outscale.com/en/userguide/Resource-Identifiers.html). - type: string - UserGroupName: - description: The name of the group you want to unlink the policy from. - type: string - required: - - PolicyOrn - - UserGroupName - type: object - UnlinkManagedPolicyFromUserGroupResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - UnlinkNicRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - LinkNicId: - description: The ID of the attachment operation. - type: string - required: - - LinkNicId - type: object - UnlinkNicResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - UnlinkPolicyRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - PolicyOrn: - description: The OUTSCALE Resource Name (ORN) of the policy. For more information, see [Resource Identifiers](https://docs.outscale.com/en/userguide/Resource-Identifiers.html). - pattern: ^orn:ows:(iam|idauth):\S*:\d{12}:policy/\S+$ - type: string - UserName: - description: The name of the user you want to detach the policy from. - type: string - required: - - PolicyOrn - - UserName - type: object - UnlinkPolicyResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - UnlinkPrivateIpsRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - NicId: - description: The ID of the NIC. - type: string - PrivateIps: - description: One or more secondary private IPs you want to unassign from the NIC. - items: - type: string - type: array - required: - - NicId - - PrivateIps - type: object - UnlinkPrivateIpsResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - UnlinkPublicIpRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - LinkPublicIpId: - description: The ID representing the association of the public IP with the VM or the NIC. This parameter is required unless you use the `PublicIp` parameter. - type: string - PublicIp: - description: The public IP. This parameter is required unless you use the `LinkPublicIpId` parameter. - type: string - type: object - UnlinkPublicIpResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - UnlinkRouteTableRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - LinkRouteTableId: - description: The ID of the association between the route table and the Subnet. - type: string - required: - - LinkRouteTableId - type: object - UnlinkRouteTableResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - UnlinkVirtualGatewayRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - NetId: - description: The ID of the Net from which you want to detach the virtual gateway. - type: string - VirtualGatewayId: - description: The ID of the virtual gateway. - type: string - required: - - NetId - - VirtualGatewayId - type: object - UnlinkVirtualGatewayResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - UnlinkVolumeRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - ForceUnlink: - description: 'Forces the detachment of the volume in case of previous failure. Important: This action may damage your data or file systems.' - type: boolean - VolumeId: - description: The ID of the volume you want to detach. - type: string - required: - - VolumeId - type: object - UnlinkVolumeResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - UpdateAccessKeyRequest: - additionalProperties: false - properties: - AccessKeyId: - description: The ID of the access key. - type: string - ClearExpirationDate: - description: If true, the current expiration date is deleted and the access key is set to not expire. - type: boolean - ClearTag: - description: If true, the current tag of the access key is deleted. - type: boolean - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - ExpirationDate: - description: The date and time, or the date, at which you want the access key to expire, in ISO 8601 format (for example, `2020-06-14T00:00:00.000Z` or `2020-06-14`). If not specified, the access key is set to not expire. If the `ClearExpirationDate` parameter is set to true, the expiration date is ignored. - oneOf: - - format: date-time - type: string - - format: date - type: string - State: - description: The new state for the access key (`ACTIVE` \| `INACTIVE`). When set to `ACTIVE`, the access key is enabled and can be used to send requests. When set to `INACTIVE`, the access key is disabled. - type: string - Tag: - description: A new tag to add to the access key. If the access key already had a tag, this replaces it. If the `ClearTag` parameter is set to true, the tag is ignored. - type: string - UserName: - description: The name of the EIM user that the access key you want to modify is associated with. If you do not specify a user name, this action modifies the access key of the user who sends the request (which can be the root user). - type: string - required: - - AccessKeyId - type: object - UpdateAccessKeyResponse: - additionalProperties: false - properties: - AccessKey: - $ref: '#/components/schemas/AccessKey' - description: Information about the access key. - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - UpdateAccountRequest: - additionalProperties: false - properties: - AdditionalEmails: - description: One or more additional email addresses for the account. These addresses are used for notifications only. If you already have a list of additional emails registered, you cannot add to it, only replace it. To remove all registered additional emails, specify an empty list. - items: - pattern: ^.+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)+$ - type: string - type: array - City: - description: The new city of the account owner. - type: string - CompanyName: - description: The new name of the company for the account. - type: string - Country: - description: The new country of the account owner. - type: string - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Email: - description: The main email address for the account. This address is used for your credentials and notifications. - type: string - FirstName: - description: The new first name of the account owner. - type: string - JobTitle: - description: The new job title of the account owner. - type: string - LastName: - description: The new last name of the account owner. - type: string - MobileNumber: - description: The new mobile phone number of the account owner. - type: string - PhoneNumber: - description: The new landline phone number of the account owner. - type: string - StateProvince: - description: The new state/province of the account owner. - type: string - VatNumber: - description: The new value added tax (VAT) number for the account. - type: string - ZipCode: - description: The new ZIP code of the city. - type: string - type: object - UpdateAccountResponse: - additionalProperties: false - properties: - Account: - $ref: '#/components/schemas/Account' - description: Information about the account. - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - UpdateApiAccessPolicyRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - MaxAccessKeyExpirationSeconds: - description: The maximum possible lifetime for your access keys, in seconds (between `0` and `3153600000`, both included). If set to `O`, your access keys can have unlimited lifetimes, but a trusted session cannot be activated. Otherwise, all your access keys must have an expiration date. This value must be greater than the remaining lifetime of each access key of your account. - format: int64 - type: integer - RequireTrustedEnv: - description: |- - If true, a trusted session is activated, provided that you specify the `MaxAccessKeyExpirationSeconds` parameter with a value greater than `0`.
- Enabling this will require you and all your users to log in to Cockpit v2 using the WebAuthn method for multi-factor authentication. For more information, see [About Authentication > Multi-Factor Authentication](https://docs.outscale.com/en/userguide/About-Authentication.html#_multi_factor_authentication). - type: boolean - required: - - MaxAccessKeyExpirationSeconds - - RequireTrustedEnv - type: object - UpdateApiAccessPolicyResponse: - additionalProperties: false - properties: - ApiAccessPolicy: - $ref: '#/components/schemas/ApiAccessPolicy' - description: Information about the API access policy. - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - UpdateApiAccessRuleRequest: - additionalProperties: false - properties: - ApiAccessRuleId: - description: The ID of the API access rule you want to update. - type: string - CaIds: - description: One or more IDs of Client Certificate Authorities (CAs). - items: - type: string - type: array - Cns: - description: One or more Client Certificate Common Names (CNs). - items: - type: string - type: array - Description: - description: A new description for the API access rule. - type: string - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - IpRanges: - description: One or more IPs or CIDR blocks (for example, `192.0.2.0/16`). - items: - type: string - type: array - required: - - ApiAccessRuleId - type: object - UpdateApiAccessRuleResponse: - additionalProperties: false - properties: - ApiAccessRule: - $ref: '#/components/schemas/ApiAccessRule' - description: Information about the API access rule. - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - UpdateCaRequest: - additionalProperties: false - properties: - CaId: - description: The ID of the CA. - type: string - Description: - description: The description of the CA. - type: string - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - required: - - CaId - type: object - UpdateCaResponse: - additionalProperties: false - properties: - Ca: - $ref: '#/components/schemas/Ca' - description: Information about the Client Certificate Authority (CA). - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - UpdateDedicatedGroupRequest: - additionalProperties: false - properties: - DedicatedGroupId: - description: The ID of the dedicated group you want to update. - type: string - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Name: - description: The new name of the dedicated group. - type: string - required: - - DedicatedGroupId - - Name - type: object - UpdateDedicatedGroupResponse: - additionalProperties: false - properties: - DedicatedGroup: - $ref: '#/components/schemas/DedicatedGroup' - description: Information about the dedicated group. - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - UpdateDirectLinkInterfaceRequest: - additionalProperties: false - properties: - DirectLinkInterfaceId: - description: The ID of the DirectLink interface you want to update. - type: string - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Mtu: - description: The maximum transmission unit (MTU) of the DirectLink interface, in bytes. - enum: - - 1500 - type: integer - required: - - DirectLinkInterfaceId - - Mtu - type: object - UpdateDirectLinkInterfaceResponse: - additionalProperties: false - properties: - DirectLinkInterface: - $ref: '#/components/schemas/DirectLinkInterfaces' - description: Information about the DirectLink interfaces. - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - UpdateFlexibleGpuRequest: - additionalProperties: false - properties: - DeleteOnVmDeletion: - description: If true, the fGPU is deleted when the VM is terminated. - type: boolean - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - FlexibleGpuId: - description: The ID of the fGPU you want to modify. - type: string - required: - - FlexibleGpuId - type: object - UpdateFlexibleGpuResponse: - additionalProperties: false - properties: - FlexibleGpu: - $ref: '#/components/schemas/FlexibleGpu' - description: Information about the flexible GPU (fGPU). - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - UpdateImageRequest: - additionalProperties: false - properties: - Description: - description: A new description for the image. - type: string - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - ImageId: - description: The ID of the OMI you want to modify. - type: string - PermissionsToLaunch: - $ref: '#/components/schemas/PermissionsOnResourceCreation' - description: |- - Information about the permissions for the resource.
- Specify either the `Additions` or the `Removals` parameter. - ProductCodes: - description: The product codes associated with the OMI. Any previously set value is deleted. Make sure to specify all product codes you want to associate with the OMI. - items: - type: string - type: array - required: - - ImageId - type: object - UpdateImageResponse: - additionalProperties: false - properties: - Image: - $ref: '#/components/schemas/Image' - description: Information about the OMI. - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - UpdateListenerRuleRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - HostPattern: - description: A host-name pattern for the rule, with a maximum length of 128 characters. This host-name pattern supports maximum three wildcards, and must not contain any special characters except `-.?`. - nullable: true - type: string - ListenerRuleName: - description: The name of the listener rule. - type: string - PathPattern: - description: A path pattern for the rule, with a maximum length of 128 characters. This path pattern supports maximum three wildcards, and must not contain any special characters except `_-.$/~"'@:+?`. - nullable: true - type: string - required: - - ListenerRuleName - type: object - UpdateListenerRuleResponse: - additionalProperties: false - properties: - ListenerRule: - $ref: '#/components/schemas/ListenerRule' - description: Information about the listener rule. - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - UpdateLoadBalancerRequest: - additionalProperties: false - properties: - AccessLog: - $ref: '#/components/schemas/AccessLog' - description: Information about access logs. - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - HealthCheck: - $ref: '#/components/schemas/HealthCheck' - description: Information about the health check configuration. - LoadBalancerName: - description: The name of the load balancer. - type: string - LoadBalancerPort: - description: The port on which the load balancer is listening (between `1` and `65535`, both included). This parameter is required if you want to update the server certificate. - type: integer - PolicyNames: - description: The name of the policy you want to enable for the listener. - items: - type: string - type: array - PublicIp: - description: (internet-facing only) The public IP you want to associate with the load balancer. The former public IP of the load balancer is then disassociated. If you specify an empty string and the former public IP belonged to you, it is disassociated and replaced by a public IP owned by 3DS OUTSCALE. - type: string - SecuredCookies: - description: If true, secure cookies are enabled for the load balancer. - type: boolean - SecurityGroups: - description: (Net only) One or more IDs of security groups you want to assign to the load balancer. You need to specify the already assigned security groups that you want to keep along with the new ones you are assigning. If the list is empty, the default security group of the Net is assigned to the load balancer. - items: - type: string - type: array - ServerCertificateId: - description: The OUTSCALE Resource Name (ORN) of the server certificate. For more information, see [Resource Identifiers > OUTSCALE Resource Names (ORNs)](https://docs.outscale.com/en/userguide/Resource-Identifiers.html#_outscale_resource_names_orns). If this parameter is specified, you must also specify the `LoadBalancerPort` parameter. - type: string - required: - - LoadBalancerName - type: object - UpdateLoadBalancerResponse: - additionalProperties: false - properties: - LoadBalancer: - $ref: '#/components/schemas/LoadBalancer' - description: Information about the load balancer. - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - UpdateNetAccessPointRequest: - additionalProperties: false - properties: - AddRouteTableIds: - description: One or more IDs of route tables to associate with the specified Net access point. - items: - type: string - type: array - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - NetAccessPointId: - description: The ID of the Net access point. - type: string - RemoveRouteTableIds: - description: One or more IDs of route tables to disassociate from the specified Net access point. - items: - type: string - type: array - required: - - NetAccessPointId - type: object - UpdateNetAccessPointResponse: - additionalProperties: false - properties: - NetAccessPoint: - $ref: '#/components/schemas/NetAccessPoint' - description: Information about the Net access point. - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - UpdateNetRequest: - additionalProperties: false - properties: - DhcpOptionsSetId: - description: The ID of the DHCP options set (or `default` if you want to associate the default one). - type: string - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - NetId: - description: The ID of the Net. - type: string - required: - - DhcpOptionsSetId - - NetId - type: object - UpdateNetResponse: - additionalProperties: false - properties: - Net: - $ref: '#/components/schemas/Net' - description: Information about the Net. - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - UpdateNicRequest: - additionalProperties: false - properties: - Description: - description: A new description for the NIC. - type: string - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - LinkNic: - $ref: '#/components/schemas/LinkNicToUpdate' - description: Information about the NIC attachment. If you are modifying the `DeleteOnVmDeletion` attribute, you must specify the ID of the NIC attachment. - NicId: - description: The ID of the NIC you want to modify. - type: string - SecurityGroupIds: - description: |- - One or more IDs of security groups for the NIC.
- You must specify at least one group, even if you use the default security group in the Net. - items: - type: string - type: array - required: - - NicId - type: object - UpdateNicResponse: - additionalProperties: false - properties: - Nic: - $ref: '#/components/schemas/Nic' - description: Information about the NIC. - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - UpdateRoutePropagationRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Enable: - description: If true, a virtual gateway can propagate routes to a specified route table of a Net. If false, the propagation is disabled. - type: boolean - RouteTableId: - description: The ID of the route table. - type: string - VirtualGatewayId: - description: The ID of the virtual gateway. - type: string - required: - - Enable - - RouteTableId - - VirtualGatewayId - type: object - UpdateRoutePropagationResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - RouteTable: - $ref: '#/components/schemas/RouteTable' - description: Information about the route table. - type: object - UpdateRouteRequest: - additionalProperties: false - properties: - DestinationIpRange: - description: The IP range used for the destination match, in CIDR notation (for example, `10.0.0.0/24`). - type: string - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - GatewayId: - description: The ID of an internet service or virtual gateway attached to your Net. - type: string - NatServiceId: - description: The ID of a NAT service. - type: string - NetPeeringId: - description: The ID of a Net peering. - type: string - NicId: - description: The ID of a network interface card (NIC). - type: string - RouteTableId: - description: The ID of the route table. - type: string - VmId: - description: The ID of a NAT VM in your Net. - type: string - required: - - RouteTableId - - DestinationIpRange - type: object - UpdateRouteResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - RouteTable: - $ref: '#/components/schemas/RouteTable' - description: Information about the route table. - type: object - UpdateRouteTableLinkRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - LinkRouteTableId: - description: The ID of the current route table link. - type: string - RouteTableId: - description: The ID of the new route table to associate with the Subnet. - type: string - required: - - RouteTableId - - LinkRouteTableId - type: object - UpdateRouteTableLinkResponse: - additionalProperties: false - properties: - LinkRouteTableId: - description: The ID of the association between the route table and the Subnet. - type: string - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - type: object - UpdateServerCertificateRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Name: - description: The name of the server certificate you want to modify. - type: string - NewName: - description: A new name for the server certificate. - type: string - NewPath: - description: A new path for the server certificate. - type: string - required: - - Name - type: object - UpdateServerCertificateResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - ServerCertificate: - $ref: '#/components/schemas/ServerCertificate' - description: Information about the server certificate. - type: object - UpdateSnapshotRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - PermissionsToCreateVolume: - $ref: '#/components/schemas/PermissionsOnResourceCreation' - description: |- - Information about the permissions for the resource.
- Specify either the `Additions` or the `Removals` parameter. - SnapshotId: - description: The ID of the snapshot. - type: string - required: - - SnapshotId - - PermissionsToCreateVolume - type: object - UpdateSnapshotResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - Snapshot: - $ref: '#/components/schemas/Snapshot' - description: Information about the snapshot. - type: object - UpdateSubnetRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - MapPublicIpOnLaunch: - description: If true, a public IP is assigned to the network interface cards (NICs) created in the specified Subnet. - type: boolean - SubnetId: - description: The ID of the Subnet. - type: string - required: - - SubnetId - - MapPublicIpOnLaunch - type: object - UpdateSubnetResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - Subnet: - $ref: '#/components/schemas/Subnet' - description: Information about the Subnet. - type: object - UpdateUserGroupRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - NewPath: - description: A new path for the group. If not specified, it is set to a slash (`/`). - type: string - NewUserGroupName: - description: A new name for the user group. - type: string - Path: - description: The path to the group. If not specified, it is set to a slash (`/`). - type: string - UserGroupName: - description: The name of the group you want to update. - type: string - required: - - UserGroupName - type: object - UpdateUserGroupResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - UserGroup: - $ref: '#/components/schemas/UserGroup' - description: Information about the user group. - Users: - description: A list of EIM users. - items: - $ref: '#/components/schemas/User' - type: array - type: object - UpdateUserRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - NewPath: - description: A new path for the EIM user. - type: string - NewUserEmail: - description: A new email address for the EIM user. - type: string - NewUserName: - description: A new name for the EIM user. - type: string - UserName: - description: The name of the EIM user you want to modify. - type: string - required: - - UserName - type: object - UpdateUserResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - User: - $ref: '#/components/schemas/User' - description: Information about the EIM user. - type: object - UpdateVmGroupRequest: - additionalProperties: false - properties: - Description: - description: A new description for the VM group. - type: string - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Tags: - description: New tags for your VM group. - items: - $ref: '#/components/schemas/ResourceTag' - type: array - VmGroupId: - description: The ID of the VM group you want to update. - type: string - VmGroupName: - description: A new name for your VM group. - type: string - VmTemplateId: - description: A new VM template ID for your VM group. - type: string - required: - - VmGroupId - type: object - UpdateVmGroupResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - VmGroup: - $ref: '#/components/schemas/VmGroup' - description: Information about the VM group. - type: object - UpdateVmRequest: - additionalProperties: false - properties: - ActionsOnNextBoot: - $ref: '#/components/schemas/ActionsOnNextBoot' - description: The action to perform on the next boot of the VM. - BlockDeviceMappings: - description: One or more block device mappings of the VM. - items: - $ref: '#/components/schemas/BlockDeviceMappingVmUpdate' - type: array - BsuOptimized: - description: This parameter is not available. It is present in our API for the sake of historical compatibility with AWS. - type: boolean - DeletionProtection: - description: If true, you cannot delete the VM unless you change this parameter back to false. - type: boolean - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - IsSourceDestChecked: - description: (Net only) If true, the source/destination check is enabled. If false, it is disabled. - type: boolean - KeypairName: - description: |- - The name of a keypair you want to associate with the VM.
- When you replace the keypair of a VM with another one, the metadata of the VM is modified to reflect the new public key, but the replacement is still not effective in the operating system of the VM. To complete the replacement and effectively apply the new keypair, you need to perform other actions inside the VM. For more information, see [Modifying the Keypair of a VM](https://docs.outscale.com/en/userguide/Modifying-the-Keypair-of-a-VM.html). - type: string - NestedVirtualization: - description: (dedicated tenancy only) If true, nested virtualization is enabled. If false, it is disabled. - type: boolean - Performance: - description: The performance of the VM. - enum: - - medium - - high - - highest - type: string - SecurityGroupIds: - description: One or more IDs of security groups for the VM. - items: - type: string - type: array - UserData: - description: The Base64-encoded MIME user data, limited to 500 kibibytes (KiB). - type: string - VmId: - description: The ID of the VM. - type: string - VmInitiatedShutdownBehavior: - description: The VM behavior when you stop it. If set to `stop`, the VM stops. If set to `restart`, the VM stops then automatically restarts. If set to `terminate`, the VM stops and is terminated. - type: string - VmType: - description: The type of VM. For more information, see [VM Types](https://docs.outscale.com/en/userguide/VM-Types.html). - type: string - required: - - VmId - type: object - UpdateVmResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - Vm: - $ref: '#/components/schemas/Vm' - description: Information about the VM. - type: object - UpdateVmTemplateRequest: - additionalProperties: false - properties: - Description: - description: A new description for the VM template. - type: string - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Tags: - description: New tags for your VM template. - items: - $ref: '#/components/schemas/ResourceTag' - type: array - VmTemplateId: - description: The ID of the VM template you want to update. - type: string - VmTemplateName: - description: A new name for your VM template. - type: string - required: - - VmTemplateId - type: object - UpdateVmTemplateResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - VmTemplate: - $ref: '#/components/schemas/VmTemplate' - description: Information about the VM template. - type: object - UpdateVolumeRequest: - additionalProperties: false - properties: - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - Iops: - description: The new number of I/O operations per second (IOPS). This parameter can be specified only if you update an `io1` volume or if you change the type of the volume for an `io1`. - type: integer - Size: - description: The new size of the volume, in gibibytes (GiB). This value must be equal to or greater than the current size of the volume. This modification is not instantaneous. - type: integer - VolumeId: - description: The ID of the volume you want to update. - type: string - VolumeType: - description: The new type of the volume (`standard` \| `io1` \| `gp2`). If you update to an `io1` volume, you must also specify the `Iops` parameter. - type: string - required: - - VolumeId - type: object - UpdateVolumeResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - Volume: - $ref: '#/components/schemas/Volume' - description: Information about the volume. - type: object - UpdateVpnConnectionRequest: - additionalProperties: false - properties: - ClientGatewayId: - description: The ID of the client gateway. - type: string - DryRun: - description: If true, checks whether you have the required permissions to perform the action. - type: boolean - VirtualGatewayId: - description: The ID of the virtual gateway. - type: string - VpnConnectionId: - description: The ID of the VPN connection you want to modify. - type: string - VpnOptions: - $ref: '#/components/schemas/VpnOptions' - description: Information about the VPN options. - required: - - VpnConnectionId - type: object - UpdateVpnConnectionResponse: - additionalProperties: false - properties: - ResponseContext: - $ref: '#/components/schemas/ResponseContext' - description: Information about the context of the response. - VpnConnection: - $ref: '#/components/schemas/VpnConnection' - description: Information about a VPN connection. - type: object - User: - additionalProperties: false - description: Information about the EIM user. - properties: - CreationDate: - description: The date and time (UTC) of creation of the EIM user. - format: date-time - type: string - LastModificationDate: - description: The date and time (UTC) of the last modification of the EIM user. - format: date-time - type: string - OutscaleLoginAllowed: - description: Whether the user is allowed to log in to Cockpit v2 using its Outscale credentials when identity federation is activated. - type: boolean - Path: - description: The path to the EIM user. - type: string - UserEmail: - description: The email address of the EIM user. - type: string - UserId: - description: The ID of the EIM user. - type: string - UserName: - description: The name of the EIM user. - type: string - type: object - UserGroup: - additionalProperties: false - description: Information about the user group. - properties: - CreationDate: - description: The date and time (UTC) of creation of the user group. - format: date-time - type: string - LastModificationDate: - description: The date and time (UTC) of the last modification of the user group. - format: date-time - type: string - Name: - description: The name of the user group. - type: string - Orn: - description: The Outscale Resource Name (ORN) of the user group. For more information, see [Resource Identifiers](https://docs.outscale.com/en/userguide/Resource-Identifiers.html). - type: string - Path: - description: The path to the user group. - type: string - UserGroupId: - description: The ID of the user group. - type: string - type: object - VgwTelemetry: - additionalProperties: false - description: Information about the current state of a VPN tunnel. - properties: - AcceptedRouteCount: - description: The number of routes accepted through BGP (Border Gateway Protocol) route exchanges. - type: integer - LastStateChangeDate: - description: The date and time (UTC) of the latest state update. - format: date-time - type: string - OutsideIpAddress: - description: The IP on the OUTSCALE side of the tunnel. - type: string - State: - description: The state of the IPSEC tunnel (`UP` \| `DOWN`). - type: string - StateDescription: - description: A description of the current state of the tunnel. - type: string - type: object - VirtualGateway: - additionalProperties: false - description: Information about the virtual gateway. - properties: - ConnectionType: - description: The type of VPN connection supported by the virtual gateway (always `ipsec.1`). - type: string - NetToVirtualGatewayLinks: - description: The Net to which the virtual gateway is attached. - items: - $ref: '#/components/schemas/NetToVirtualGatewayLink' - type: array - State: - description: The state of the virtual gateway (`pending` \| `available` \| `deleting` \| `deleted`). - type: string - Tags: - description: One or more tags associated with the virtual gateway. - items: - $ref: '#/components/schemas/ResourceTag' - type: array - VirtualGatewayId: - description: The ID of the virtual gateway. - type: string - type: object - Vm: - additionalProperties: false - description: Information about the VM. - properties: - ActionsOnNextBoot: - $ref: '#/components/schemas/ActionsOnNextBoot' - description: The action to perform on the next boot of the VM. - Architecture: - description: The architecture of the VM (`i386` \| `x86_64`). - type: string - BlockDeviceMappings: - description: The block device mapping of the VM. - items: - $ref: '#/components/schemas/BlockDeviceMappingCreated' - type: array - BootMode: - $ref: '#/components/schemas/BootMode' - description: The boot mode of the VM. - BsuOptimized: - description: This parameter is not available. It is present in our API for the sake of historical compatibility with AWS. - type: boolean - ClientToken: - description: The idempotency token provided when launching the VM. - type: string - CreationDate: - description: The date and time (UTC) at which the VM was created. - format: date-time - type: string - DeletionProtection: - description: If true, you cannot delete the VM unless you change this parameter back to false. - type: boolean - Hypervisor: - description: The hypervisor type of the VMs (`ovm` \| `xen`). - type: string - ImageId: - description: The ID of the OMI used to create the VM. - type: string - IsSourceDestChecked: - description: (Net only) If true, the source/destination check is enabled. If false, it is disabled. - type: boolean - KeypairName: - description: The name of the keypair used when launching the VM. - type: string - LaunchNumber: - description: The number for the VM when launching a group of several VMs (for example, `0`, `1`, `2`, and so on). - type: integer - NestedVirtualization: - description: If true, nested virtualization is enabled. If false, it is disabled. - type: boolean - NetId: - description: The ID of the Net in which the VM is running. - type: string - Nics: - description: (Net only) The network interface cards (NICs) the VMs are attached to. - items: - $ref: '#/components/schemas/NicLight' - type: array - OsFamily: - description: Indicates the operating system (OS) of the VM. - type: string - Performance: - description: The performance of the VM. - type: string - Placement: - $ref: '#/components/schemas/Placement' - description: Information about the placement of the VM. - PrivateDnsName: - description: The name of the private DNS. - type: string - PrivateIp: - description: The primary private IP of the VM. - type: string - ProductCodes: - description: The product codes associated with the OMI used to create the VM. - items: - type: string - type: array - PublicDnsName: - description: The name of the public DNS. - type: string - PublicIp: - description: The public IP of the VM. - type: string - ReservationId: - description: The reservation ID of the VM. - type: string - RootDeviceName: - description: The name of the root device for the VM (for example, `/dev/sda1`). - type: string - RootDeviceType: - description: The type of root device used by the VM (always `bsu`). - type: string - SecurityGroups: - description: One or more security groups associated with the VM. - items: - $ref: '#/components/schemas/SecurityGroupLight' - type: array - State: - description: The state of the VM (`pending` \| `running` \| `stopping` \| `stopped` \| `shutting-down` \| `terminated` \| `quarantine`). - type: string - StateReason: - description: The reason explaining the current state of the VM. - type: string - SubnetId: - description: The ID of the Subnet for the VM. - type: string - Tags: - description: One or more tags associated with the VM. - items: - $ref: '#/components/schemas/ResourceTag' - type: array - TpmEnabled: - description: If true, a virtual Trusted Platform Module (vTPM) is enabled on the VM. If false, it is not.
The default behavior for this parameter varies depending on the source OMI of the VM.
If the `TpmMandatory` parameter of the source OMI is true, a vTPM has to be attached to the VM and it will be created by default. Setting `TpmEnabled` to false will cause the creation request to fail.
If the `TpmMandatory` parameter of the source OMI is false, only setting `TpmEnabled` to true will create and attach a vTPM to the VM. - type: boolean - UserData: - description: The Base64-encoded MIME user data. - type: string - VmId: - description: The ID of the VM. - type: string - VmInitiatedShutdownBehavior: - description: The VM behavior when you stop it. If set to `stop`, the VM stops. If set to `restart`, the VM stops then automatically restarts. If set to `terminate`, the VM stops and is deleted. - type: string - VmType: - description: The type of VM. For more information, see [VM Types](https://docs.outscale.com/en/userguide/VM-Types.html). - type: string - type: object - VmGroup: - additionalProperties: false - description: Information about the VM group. - properties: - CreationDate: - description: The date and time (UTC) at which the VM group was created. - format: date-time - type: string - Description: - description: The description of the VM group. - type: string - PositioningStrategy: - description: The positioning strategy of the VMs on hypervisors. If set to `no-strategy`, TINA determines the most adequate position for the VMs. If set to `attract`, the VMs are deployed on the same hypervisor, which improves network performance. If set to `repulse`, the VMs are deployed on a different hypervisor, which improves fault tolerance. - enum: - - attract - - no-strategy - - repulse - type: string - SecurityGroupIds: - description: One or more IDs of security groups for the VM group. - items: - type: string - type: array - State: - description: The state of the VM group. - enum: - - available - - deleted - - deleting - - pending - - scaling down - - scaling up - type: string - SubnetId: - description: The ID of the Subnet for the VM group. - type: string - Tags: - description: One or more tags associated with the VM group. - items: - $ref: '#/components/schemas/ResourceTag' - type: array - VmCount: - description: The number of VMs in the VM group. - type: integer - VmGroupId: - description: The ID of the VM group. - type: string - VmGroupName: - description: The name of the VM group. - type: string - VmIds: - description: The IDs of the VMs in the VM group. - items: - type: string - type: array - VmTemplateId: - description: The ID of the VM template used by the VM group. - type: string - type: object - VmState: - additionalProperties: false - description: Information about the state of the VM. - properties: - CurrentState: - description: The current state of the VM (`InService` \| `OutOfService` \| `Unknown`). - type: string - PreviousState: - description: The previous state of the VM (`InService` \| `OutOfService` \| `Unknown`). - type: string - VmId: - description: The ID of the VM. - type: string - type: object - VmStates: - additionalProperties: false - description: Information about the states of the VMs. - properties: - MaintenanceEvents: - description: One or more scheduled events associated with the VM. - items: - $ref: '#/components/schemas/MaintenanceEvent' - type: array - SubregionName: - description: The name of the Subregion of the VM. - type: string - VmId: - description: The ID of the VM. - type: string - VmState: - description: The state of the VM (`pending` \| `running` \| `stopping` \| `stopped` \| `shutting-down` \| `terminated` \| `quarantine`). - type: string - type: object - VmTemplate: - additionalProperties: false - description: Information about the VM template. - properties: - CpuCores: - description: The number of vCores. - type: integer - CpuGeneration: - description: The processor generation. - type: string - CpuPerformance: - description: The performance of the VMs. - enum: - - medium - - high - - highest - type: string - CreationDate: - description: The date and time (UTC) at which the VM was created. - format: date-time - type: string - Description: - description: The description of the VM template. - type: string - ImageId: - description: The ID of the OMI. - type: string - KeypairName: - description: The name of the keypair. - type: string - Ram: - description: The amount of RAM. - type: integer - Tags: - description: One or more tags associated with the VM template. - items: - $ref: '#/components/schemas/ResourceTag' - type: array - VmTemplateId: - description: The ID of the VM template. - type: string - VmTemplateName: - description: The name of the VM template. - type: string - required: - - CpuCores - - CpuGeneration - - ImageId - - Ram - - VmTemplateId - - VmTemplateName - type: object - VmType: - additionalProperties: false - description: Information about the VM type. - properties: - BsuOptimized: - description: This parameter is not available. It is present in our API for the sake of historical compatibility with AWS. - type: boolean - EphemeralsType: - description: The type of ephemeral storage disk. - type: string - Eth: - description: The number of Ethernet interface available. - type: integer - Gpu: - description: The number of GPU available. - type: integer - MaxPrivateIps: - description: The maximum number of private IPs per network interface card (NIC). - type: integer - MemorySize: - description: The amount of memory, in gibibytes. - format: float - type: number - VcoreCount: - description: The number of vCores. - type: integer - VmTypeName: - description: The name of the VM type. - type: string - VolumeCount: - description: The maximum number of ephemeral storage disks. - type: integer - VolumeSize: - description: The size of one ephemeral storage disk, in gibibytes (GiB). - type: integer - type: object - Volume: - additionalProperties: false - description: Information about the volume. - properties: - ClientToken: - description: The idempotency token provided when creating the volume. - type: string - CreationDate: - description: The date and time (UTC) at which the volume was created. - format: date-time - type: string - Iops: - description: |- - The number of I/O operations per second (IOPS):
- - For `io1` volumes, the number of provisioned IOPS
- - For `gp2` volumes, the baseline performance of the volume - type: integer - LinkedVolumes: - description: Information about your volume attachment. - items: - $ref: '#/components/schemas/LinkedVolume' - type: array - Size: - description: The size of the volume, in gibibytes (GiB). - type: integer - SnapshotId: - description: The snapshot from which the volume was created. - type: string - State: - description: The state of the volume (`creating` \| `available` \| `in-use` \| `deleting` \| `error`). - type: string - SubregionName: - description: The Subregion in which the volume was created. - type: string - Tags: - description: One or more tags associated with the volume. - items: - $ref: '#/components/schemas/ResourceTag' - type: array - TaskId: - description: The ID of the volume update task in progress. Otherwise, it is not returned. - nullable: true - type: string - VolumeId: - description: The ID of the volume. - type: string - VolumeType: - description: The type of the volume (`standard` \| `gp2` \| `io1`). - type: string - type: object - VolumeUpdate: - additionalProperties: false - description: Information about the update of a volume. - properties: - Origin: - $ref: '#/components/schemas/VolumeUpdateParameters' - description: Information about the parameters of the update of a volume. - Target: - $ref: '#/components/schemas/VolumeUpdateParameters' - description: Information about the parameters of the update of a volume. - type: object - VolumeUpdateParameters: - additionalProperties: false - description: Information about the parameters of the update of a volume. - properties: - Iops: - description: |- - The new number of I/O operations per second (IOPS):
- - For `io1` volumes, the number of provisioned IOPS.
- - For `gp2` volumes, the baseline performance of the volume. - example: 200 - nullable: true - type: integer - Size: - description: The new size of the volume, in gibibytes (GiB). - example: 50 - type: integer - VolumeType: - description: The type of the volume (`standard` \| `io1` \| `gp2`). - example: io1 - type: string - required: - - Iops - - Size - - VolumeType - type: object - VolumeUpdateTask: - additionalProperties: false - description: Information about the volume update task. - properties: - Comment: - description: If the update volume task fails, an error message appears. - example: Update of volume vol-12345678 - type: string - CompletionDate: - description: The date at which the volume update task was marked as completed. - format: date-time - type: string - Progress: - description: The progress of the volume update task, as a percentage. - example: 100 - type: integer - StartDate: - description: The creation date of the volume update task. - format: date-time - type: string - State: - description: The state of the volume (`pending` \| `active` \| `completed` \| `failed` \| `canceled`). - example: completed - type: string - Tags: - description: One or more tags associated with the volume update task. - items: - $ref: '#/components/schemas/ResourceTag' - type: array - TaskId: - description: The ID of the volume update task in progress. Otherwise, it is not returned. - example: vol-update-12345678 - type: string - VolumeId: - description: The ID of the updated volume. - example: vol-12345678 - type: string - VolumeUpdate: - $ref: '#/components/schemas/VolumeUpdate' - description: Information about the update of a volume. - type: object - VpnConnection: - additionalProperties: false - description: Information about a VPN connection. - properties: - ClientGatewayConfiguration: - description: Example configuration for the client gateway. - type: string - ClientGatewayId: - description: The ID of the client gateway used on the client end of the connection. - type: string - ConnectionType: - description: The type of VPN connection (always `ipsec.1`). - type: string - Routes: - description: Information about one or more static routes associated with the VPN connection, if any. - items: - $ref: '#/components/schemas/RouteLight' - type: array - State: - description: The state of the VPN connection (`pending` \| `available` \| `deleting` \| `deleted`). - type: string - StaticRoutesOnly: - description: If false, the VPN connection uses dynamic routing with Border Gateway Protocol (BGP). If true, routing is controlled using static routes. For more information about how to create and delete static routes, see [CreateVpnConnectionRoute](#createvpnconnectionroute) and [DeleteVpnConnectionRoute](#deletevpnconnectionroute). - type: boolean - Tags: - description: One or more tags associated with the VPN connection. - items: - $ref: '#/components/schemas/ResourceTag' - type: array - VgwTelemetries: - description: Information about the current state of one or more of the VPN tunnels. - items: - $ref: '#/components/schemas/VgwTelemetry' - type: array - VirtualGatewayId: - description: The ID of the virtual gateway used on the OUTSCALE end of the connection. - type: string - VpnConnectionId: - description: The ID of the VPN connection. - type: string - VpnOptions: - $ref: '#/components/schemas/VpnOptions' - description: Information about the VPN options. - type: object - VpnOptions: - additionalProperties: false - description: Information about the VPN options. - properties: - Phase1Options: - $ref: '#/components/schemas/Phase1Options' - description: This parameter is not available. It is present in our API for the sake of historical compatibility with AWS. - Phase2Options: - $ref: '#/components/schemas/Phase2Options' - description: Information about Phase 2 of the Internet Key Exchange (IKE) negotiation. - TunnelInsideIpRange: - description: The range of inside IPs for the tunnel. This must be a /30 CIDR block from the 169.254.254.0/24 range. - type: string - type: object - With: - additionalProperties: false - description: The information to display in each returned log. - properties: - AccountId: - default: true - description: If true, the OUTSCALE account ID is displayed. - type: boolean - CallDuration: - default: true - description: If true, the duration of the call is displayed. - type: boolean - QueryAccessKey: - default: true - description: If true, the access key is displayed. - type: boolean - QueryApiName: - default: true - description: If true, the name of the API is displayed. - type: boolean - QueryApiVersion: - default: true - description: If true, the version of the API is displayed. - type: boolean - QueryCallName: - default: true - description: If true, the name of the call is displayed. - type: boolean - QueryDate: - default: true - description: If true, the date of the call is displayed. - type: boolean - QueryHeaderRaw: - default: true - description: If true, the raw header of the HTTP request is displayed. - type: boolean - QueryHeaderSize: - default: true - description: If true, the size of the raw header of the HTTP request is displayed. - type: boolean - QueryIpAddress: - default: true - description: If true, the IP is displayed. - type: boolean - QueryPayloadRaw: - default: true - description: If true, the raw payload of the HTTP request is displayed. - type: boolean - QueryPayloadSize: - default: true - description: If true, the size of the raw payload of the HTTP request is displayed. - type: boolean - QueryUserAgent: - default: true - description: If true, the user agent of the HTTP request is displayed. - type: boolean - RequestId: - default: true - description: If true, the request ID is displayed. - type: boolean - ResponseSize: - default: true - description: If true, the size of the response is displayed. - type: boolean - ResponseStatusCode: - default: true - description: If true, the HTTP status code of the response is displayed. - type: boolean - type: object - securitySchemes: - ApiKeyAuth: - description: |- - With this authentication scheme, you must use an access key to sign your API requests. For more information, see [About Signatures of API Requests](https://docs.outscale.com/en/userguide/About-Signatures-of-API-Requests.html).
- * In addition to your access key, you can configure API access rules with Certificate Authorities (CAs), requiring you to provide a certificate to perform actions. In that case, you can bypass systematically providing a certificate by activating a trusted session. For more information, see the [UpdateApiAccessPolicy](#updateapiaccesspolicy) method and [About Your API Access Policy](https://docs.outscale.com/en/userguide/About-Your-API-Access-Policy.html). - in: header - name: Authorization - type: apiKey - ApiKeyAuthSec: - description: |- - With this authentication scheme, you must use an access key to sign your API requests. For more information, see [About Signatures of API Requests](https://docs.outscale.com/en/userguide/About-Signatures-of-API-Requests.html).
- * In addition to your access key, if you have configured API access rules with a Certificate Authority (CA), you cannot bypass systematically providing a certificate even if you activate a trusted session. For more information, see [About Your API Access Policy](https://docs.outscale.com/en/userguide/About-Your-API-Access-Policy.html). - in: header - name: Authorization - type: apiKey - BasicAuth: - description: |- - With this authentication scheme, you must specify the following headers in your API request:
- * `Authorization: Basic XXXX`, where `XXXX` is your `email:password` encoded in Base64 - * `X-Osc-Date` in the `YYYYMMDDTHHMMSSZ` format - * Example with Curl: ``$ curl -X POST https://api.eu-west-2.outscale.com/api/v1/ReadAccessKeys -H "Authorization: Basic `echo -n "MYEMAIL:MYPASSWORD" | base64`" -H "X-Osc-Date: `TZ=GMT date "+%Y%m%dT%H%M%SZ"`"`` - * In addition to your email and password combination, if you have configured API access rules with a Certificate Authority (CA), you cannot bypass systematically providing a certificate even if you activate a trusted session. For more information, see [About Your API Access Policy](https://docs.outscale.com/en/userguide/About-Your-API-Access-Policy.html). - scheme: basic - type: http -info: - contact: - email: support@outscale.com - description: |- - Welcome to the OUTSCALE API documentation.
- The OUTSCALE API enables you to manage your resources in the OUTSCALE Cloud. This documentation describes the different actions available along with code examples.

- Throttling: To protect against overloads, the number of identical requests allowed in a given time period is limited.
- Brute force: To protect against brute force attacks, the number of failed authentication attempts in a given time period is limited.

- Note that the OUTSCALE Cloud is compatible with Amazon Web Services (AWS) APIs, but there are [differences in resource names](https://docs.outscale.com/en/userguide/About-the-APIs.html) between AWS and the OUTSCALE API.
- You can also manage your resources using the [Cockpit](https://docs.outscale.com/en/userguide/About-Cockpit.html) web interface.

- An OpenAPI description of this API is also available for download:
- # Authentication Schemes - ### Access Key/Secret Key - The main way to authenticate your requests to the OUTSCALE API is to use an access key and a secret key.
- The mechanism behind this is based on AWS Signature Version 4, whose technical implementation details are described in [Signature of API Requests](https://docs.outscale.com/en/userguide/Signature-of-API-Requests.html).

- In practice, the way to specify your access key and secret key depends on the tool or SDK you want to use to interact with the API.
- - > For example, if you use OSC CLI: - > 1. You need to create an **~/.osc/config.json** file to specify your access key, secret key, and the Region of your account. - > 2. You then specify the `--profile` option when executing OSC CLI commands. - > - > For more information, see [Installing and Configuring OSC CLI](https://docs.outscale.com/en/userguide/Installing-and-Configuring-OSC-CLI.html). - - See the code samples in each section of this documentation for specific examples in different programming languages.
- For more information about access keys, see [About Access Keys](https://docs.outscale.com/en/userguide/About-Access-Keys.html). - - > If you try to sign requests with an invalid access key four times in a row, further authentication attempts will be prevented for 1 minute. This lockout time increases 1 minute every four failed attempts, for up to 10 minutes. - - ### Login/Password - For certain API actions, you can also use basic authentication with the login (email address) and password of your OUTSCALE account.
- This is useful only in special circumstances, for example if you do not know your access key/secret key and want to retrieve them programmatically.
- In most cases, however, you can use the Cockpit web interface to retrieve them.
- - > For example, if you use OSC CLI: - > 1. You need to create an **~/.osc/config.json** file to specify the Region of your account, but you leave the access key value and secret key value empty (`""`). - > 2. You then specify the `--profile`, `--authentication-method`, `--login`, and `--password` options when executing OSC CLI commands. - - See the code samples in each section of this documentation for specific examples in different programming languages. - - > If you try to sign requests with an invalid password four times in a row, further authentication attempts will be prevented for 1 minute. This lockout time increases 1 minute every four failed attempts, for up to 10 minutes. - - ### No Authentication - A few API actions do not require any authentication. They are indicated as such in this documentation.
- ### Other Security Mechanisms - In parallel with the authentication schemes, you can add other security mechanisms to your OUTSCALE account, for example to restrict API requests by IP or other criteria.
- For more information, see [Managing Your API Accesses](https://docs.outscale.com/en/userguide/Managing-Your-API-Accesses.html). - # Pagination Tutorial - You can learn more about the pagination methods for read calls in the dedicated [pagination tutorial](https://docs.outscale.com/en/userguide/Tutorial-Paginating-an-API-Request.html). - # Error Codes Reference - You can learn more about errors returned by the API in the dedicated [errors page](api-errors.html). - license: - name: BSD 3 Clause - url: https://opensource.org/licenses/BSD-3-Clause - termsOfService: https://en.outscale.com/terms-of-service/ - title: 3DS OUTSCALE API - version: 1.41.0 - x-osc-api-osc-billing: 1.39.0 - x-osc-api-osc-cloud-region: 1.37.0 - x-osc-api-osc-cloud-vision: 1.37.0 - x-osc-api-osc-core-iaas: 1.39.0 - x-osc-api-osc-iam: 1.37.6 - x-osc-api-type: external -openapi: 3.0.0 -paths: - /AcceptNetPeering: - post: - description: |- - Accepts a Net peering request.
- To accept this request, you must be the owner of the peer Net. If you do not accept the request within 7 days, the state of the Net peering becomes `expired`.

- - **[NOTE]**
- A peering connection between two Nets works both ways. Therefore, when an A-to-B peering connection is accepted, any pending B-to-A peering connection is automatically rejected as redundant. - operationId: AcceptNetPeering - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/AcceptNetPeeringRequest' - examples: - ex1: - value: - NetPeeringId: pcx-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/AcceptNetPeeringResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - NetPeering: - Tags: [] - State: - Name: active - Message: Active - AccepterNet: - NetId: vpc-12345678 - IpRange: 172.16.0.0/16 - AccountId: '123456789012' - ExpirationDate: '2063-04-05T00:00:00.000Z' - SourceNet: - NetId: vpc-12345678 - IpRange: 10.0.0.0/16 - AccountId: '123456789012' - NetPeeringId: pcx-12345678 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '409': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - NetPeering - /AddUserToUserGroup: - post: - description: Adds a user to a specified group. - operationId: AddUserToUserGroup - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/AddUserToUserGroupRequest' - examples: - ex1: - value: - UserGroupName: example-usergroup - UserGroupPath: /example/ - UserName: example-user - UserPath: /example/ - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/AddUserToUserGroupResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - UserGroup - /CheckAuthentication: - post: - description: Validates the authenticity of the OUTSCALE account. - operationId: CheckAuthentication - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CheckAuthenticationRequest' - examples: - ex1: - value: - Login: example@example.com - Password: $OSC_PASSWORD - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/CheckAuthenticationResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - Account - /CreateAccessKey: - post: - description: |- - Creates an access key for either the root user or an EIM user. The new key is automatically set to `ACTIVE`.

- For more information, see [About Access Keys](https://docs.outscale.com/en/userguide/About-Access-Keys.html). - operationId: CreateAccessKey - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateAccessKeyRequest' - examples: - ex1: - value: - ExpirationDate: '2063-04-05' - Tag: Group1 - UserName: example-user - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/CreateAccessKeyResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - AccessKey: - State: ACTIVE - AccessKeyId: ABCDEFGHIJ0123456789 - CreationDate: 2010-10-01T12:34:56.789+0000 - ExpirationDate: 2063-04-05T00:00:00.000+0000 - SecretKey: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - LastModificationDate: 2010-10-01T12:34:56.789+0000 - Tag: Group1 - description: '' - security: - - ApiKeyAuthSec: [] - - BasicAuth: [] - tags: - - AccessKey - /CreateAccount: - post: - description: |- - Creates an OUTSCALE account.

- - **[IMPORTANT]**
- * You need OUTSCALE credentials and the appropriate quotas to create an account via API. To get quotas, you can send an email to sales@outscale.com.
- * If you want to pass a numeral value as a string instead of an integer, you must wrap your string in additional quotes (for example, `'"92000"'`). - - For more information, see [About Your Account](https://docs.outscale.com/en/userguide/About-Your-OUTSCALE-Account.html). - operationId: CreateAccount - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateAccountRequest' - examples: - ex1: - value: - City: SAINT-CLOUD - CompanyName: EXAMPLE SAS - Country: FRANCE - CustomerId: '87654321' - Email: example@example.com - FirstName: JEAN - LastName: DUPONT - ZipCode: '92210' - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/CreateAccountResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - Account: - ZipCode: '92210' - CompanyName: EXAMPLE SAS - FirstName: JEAN - City: SAINT-CLOUD - Country: FRANCE - LastName: DUPONT - AccountId: '123456789012' - Email: example@example.com - description: '' - tags: - - Account - /CreateApiAccessRule: - post: - description: |- - Creates a rule to allow access to the API from your OUTSCALE account.
- You need to specify at least the `CaIds` or the `IpRanges` parameter.

- - **[NOTE]**
- By default, your account has a set of rules allowing global access, that you can delete.

- For more information, see [About API Access Rules](https://docs.outscale.com/en/userguide/About-API-Access-Rules.html). - operationId: CreateApiAccessRule - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateApiAccessRuleRequest' - examples: - ex1: - summary: Creating an API access rule based on IPs - value: - IpRanges: - - 192.0.2.0 - - 198.51.100.0/24 - Description: Basic API Access Rule with IPs - ex2: - summary: Creating an API access rule based on IPs and Certificate Authority (CA) - value: - IpRanges: - - 192.0.2.0 - - 198.51.100.0/24 - CaIds: - - ca-fedcba0987654321fedcba0987654321 - Description: API Access Rule with IPs and CA - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/CreateApiAccessRuleResponse' - examples: - ex1: - summary: Creating an API access rule based on IPs - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - ApiAccessRule: - IpRanges: - - 192.0.2.0 - - 198.51.100.0/24 - ApiAccessRuleId: aar-fedcba0987654321fedcba0987654321 - CaIds: [] - Cns: [] - Description: Basic API Access Rule with IPs - ex2: - summary: Creating an API access rule based on IPs and Certificate Authority (CA) - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - ApiAccessRule: - IpRanges: - - 192.0.2.0 - - 198.51.100.0/24 - ApiAccessRuleId: aar-fedcba0987654321fedcba0987654321 - CaIds: - - ca-fedcba0987654321fedcba0987654321 - Cns: [] - Description: API Access Rule with IPs and CA - description: '' - security: - - ApiKeyAuthSec: [] - - BasicAuth: [] - tags: - - ApiAccessRule - /CreateCa: - post: - description: |- - Creates a Client Certificate Authority (CA).

- For more information, see [About API Access Rules](https://docs.outscale.com/en/userguide/About-API-Access-Rules.html). - operationId: CreateCa - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateCaRequest' - examples: - ex1: - value: - CaPem: XXXX - Description: CA example - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/CreateCaResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - Ca: - Description: CA example - CaId: ca-fedcba0987654321fedcba0987654321 - CaFingerprint: 1234567890abcdef1234567890abcdef12345678 - description: '' - security: - - ApiKeyAuthSec: [] - - BasicAuth: [] - tags: - - Ca - /CreateClientGateway: - post: - description: |- - Provides information about your client gateway.
- This action registers information to identify the client gateway that you deployed in your network.
- To open a tunnel to the client gateway, you must provide the communication protocol type, the fixed public IP of the gateway, and an Autonomous System Number (ASN).

- For more information, see [About Client Gateways](https://docs.outscale.com/en/userguide/About-Client-Gateways.html). - operationId: CreateClientGateway - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateClientGatewayRequest' - examples: - ex1: - value: - ConnectionType: ipsec.1 - PublicIp: 192.0.2.0 - BgpAsn: 65000 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/CreateClientGatewayResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - ClientGateway: - State: available - BgpAsn: 65000 - Tags: [] - ClientGatewayId: cgw-12345678 - ConnectionType: ipsec.1 - PublicIp: 192.0.2.0 - description: '' - tags: - - ClientGateway - /CreateDedicatedGroup: - post: - description: |- - Creates a dedicated group for virtual machines (VMs).

- For more information, see [About Dedicated Groups](https://docs.outscale.com/en/userguide/About-Dedicated-Groups.html). - operationId: CreateDedicatedGroup - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateDedicatedGroupRequest' - examples: - ex1: - value: - CpuGeneration: 4 - Name: dedicated-group-example - SubregionName: eu-west-2a - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/CreateDedicatedGroupResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - DedicatedGroup: - VmIds: [] - NetIds: [] - AccountId: '123456789012' - CpuGeneration: 4 - Name: dedicated-group-example - SubregionName: eu-west-2a - DedicatedGroupId: ded-12345678 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - DedicatedGroup - /CreateDhcpOptions: - post: - description: |- - Creates a set of DHCP options, that you can then associate with a Net using the [UpdateNet](#updatenet) method.

- For more information, see [About DHCP Options](https://docs.outscale.com/en/userguide/About-DHCP-Options.html). - operationId: CreateDhcpOptions - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateDhcpOptionsRequest' - examples: - ex1: - value: - DomainName: example.com - DomainNameServers: - - 192.0.2.0 - - 198.51.100.0 - NtpServers: - - 203.0.113.0 - - 203.0.113.1 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/CreateDhcpOptionsResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - DhcpOptionsSet: - Tags: [] - NtpServers: - - 203.0.113.0 - - 203.0.113.1 - Default: false - DhcpOptionsSetId: dopt-12345678 - DomainName: example.com - DomainNameServers: - - 192.0.2.0 - - 198.51.100.0 - description: '' - tags: - - DhcpOption - /CreateDirectLink: - post: - description: |- - Creates a DirectLink between a customer network and a specified DirectLink location.

- For more information, see [About DirectLink](https://docs.outscale.com/en/userguide/About-DirectLink.html). - operationId: CreateDirectLink - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateDirectLinkRequest' - examples: - ex1: - value: - Location: PAR1 - Bandwidth: 1Gbps - DirectLinkName: Connection to Outscale - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/CreateDirectLinkResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - DirectLink: - AccountId: '123456789012' - Bandwidth: 1Gbps - DirectLinkId: dxcon-12345678 - DirectLinkName: Connection to Outscale - Location: PAR1 - RegionName: eu-west-2 - State: requested - description: '' - tags: - - DirectLink - /CreateDirectLinkInterface: - post: - description: |- - Creates a DirectLink interface.
- DirectLink interfaces enable you to reach one of your Nets through a virtual gateway.

- For more information, see [About DirectLink](https://docs.outscale.com/en/userguide/About-DirectLink.html). - operationId: CreateDirectLinkInterface - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateDirectLinkInterfaceRequest' - examples: - ex1: - value: - DirectLinkId: dxcon-12345678 - DirectLinkInterface: - DirectLinkInterfaceName: MyDirectLinkInterface - Vlan: 101 - BgpAsn: 65000 - BgpKey: tgyn26example - OutscalePrivateIp: 172.16.0.4/30 - ClientPrivateIp: 172.16.0.5/30 - VirtualGatewayId: vgw-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/CreateDirectLinkInterfaceResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - DirectLinkInterface: - Vlan: 101 - OutscalePrivateIp: 172.16.0.4/30 - DirectLinkInterfaceId: dxvif-12345678 - BgpAsn: 65000 - AccountId: '123456789012' - ClientPrivateIp: 172.16.0.5/30 - VirtualGatewayId: vgw-12345678 - DirectLinkInterfaceName: MyDirectLinkInterface - DirectLinkId: dxcon-12345678 - Mtu: 1500 - State: pending - InterfaceType: private - Location: PAR1 - description: '' - tags: - - DirectLinkInterface - /CreateFlexibleGpu: - post: - description: |- - Allocates a flexible GPU (fGPU) to your OUTSCALE account.
- You can then attach this fGPU to a virtual machine (VM).

- For more information, see [About Flexible GPUs](https://docs.outscale.com/en/userguide/About-Flexible-GPUs.html). - operationId: CreateFlexibleGpu - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateFlexibleGpuRequest' - examples: - ex1: - value: - ModelName: nvidia-p100 - Generation: v5 - SubregionName: eu-west-2a - DeleteOnVmDeletion: true - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/CreateFlexibleGpuResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - FlexibleGpu: - SubregionName: eu-west-2a - DeleteOnVmDeletion: true - Generation: v5 - ModelName: nvidia-p100 - State: allocated - FlexibleGpuId: fgpu-12345678 - Tags: [] - description: '' - tags: - - FlexibleGpu - /CreateImage: - post: - description: |- - Creates an OUTSCALE machine image (OMI).
- You can use this method for different use cases: - * **Creating from a VM**: You create an OMI from one of your virtual machines (VMs).
- * **Copying an OMI**: You copy an existing OMI. The source OMI can be one of your own OMIs, or an OMI owned by another OUTSCALE account that has granted you permission via the [UpdateImage](#updateimage) method.
- * **Registering from a snapshot**: You register an OMI from an existing snapshot. The source snapshot can be one of your own snapshots, or a snapshot owned by another OUTSCALE account that has granted you permission via the [UpdateSnapshot](#updatesnapshot) method.
- * **Registering from a bucket by using a manifest file**: You register an OMI from the manifest file of an OMI that was exported to an OUTSCALE Object Storage (OOS) bucket. First, the owner of the source OMI must export it to the bucket by using the [CreateImageExportTask](#createimageexporttask) method. Then, they must grant you permission to read the manifest file via a pre-signed URL. For more information, see [Creating a Pre-Signed URL](https://docs.outscale.com/en/userguide/Creating-a-Pre-Signed-URL.html). - - **[TIP]**
- Registering from a bucket enables you to copy an OMI across Regions. - - For more information, see [About OMIs](https://docs.outscale.com/en/userguide/About-OMIs.html). - operationId: CreateImage - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateImageRequest' - examples: - ex1: - summary: Creating from a VM - value: - ImageName: create-image-example - VmId: i-12345678 - NoReboot: true - ex2: - summary: Copying an OMI - value: - ImageName: copy-image-example - SourceImageId: ami-12345678 - SourceRegionName: eu-west-2 - ex3: - summary: Registering from a snapshot - value: - ImageName: register-image-from-snapshot-example - BlockDeviceMappings: - - DeviceName: /dev/sda1 - Bsu: - SnapshotId: snap-12345678 - VolumeSize: 120 - VolumeType: io1 - Iops: 150 - DeleteOnVmDeletion: true - RootDeviceName: /dev/sda1 - ex4: - summary: Registering from a bucket by using a manifest file - value: - ImageName: register-image-from-bucket-example - FileLocation: https://oos.eu-west-2.outscale.com/BUCKET/KEY?AWSAccessKeyId=ABCDEFGHIJ0123456789&Expires=1493372309&Signature=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/CreateImageResponse' - examples: - ex1: - summary: Creating from a VM - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - Image: - TpmMandatory: false - StateComment: {} - State: pending - RootDeviceType: bsu - RootDeviceName: /dev/sda1 - ProductCodes: - - '0001' - PermissionsToLaunch: - GlobalPermission: false - AccountIds: [] - AccountId: '123456789012' - Tags: [] - Description: '' - ImageId: ami-12345678 - BlockDeviceMappings: - - DeviceName: /dev/sda1 - Bsu: - VolumeType: standard - DeleteOnVmDeletion: true - VolumeSize: 50 - SnapshotId: snap-12345678 - BootModes: - - legacy - SecureBoot: false - ImageType: machine - CreationDate: '2010-10-01T12:34:56.789Z' - FileLocation: 123456789012/create-image-example - Architecture: x86_64 - ImageName: create-image-example - ex2: - summary: Copying an OMI - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - Image: - TpmMandatory: false - StateComment: {} - State: available - RootDeviceType: bsu - RootDeviceName: /dev/sda1 - ProductCodes: - - '0001' - PermissionsToLaunch: - GlobalPermission: false - AccountIds: [] - AccountId: '123456789012' - Tags: [] - Description: '' - ImageId: ami-12345678 - BlockDeviceMappings: - - DeviceName: /dev/sda1 - Bsu: - VolumeType: standard - DeleteOnVmDeletion: true - VolumeSize: 50 - SnapshotId: snap-12345678 - BootModes: - - legacy - SecureBoot: false - ImageType: machine - CreationDate: '2010-10-01T12:34:56.789Z' - FileLocation: 123456789012/copy-image-example - Architecture: x86_64 - ImageName: copy-image-example - ex3: - summary: Registering from a snapshot - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - Image: - TpmMandatory: false - StateComment: {} - State: available - RootDeviceType: bsu - RootDeviceName: /dev/sda1 - ProductCodes: - - '0001' - PermissionsToLaunch: - GlobalPermission: false - AccountIds: [] - AccountId: '123456789012' - Tags: [] - Description: '' - ImageId: ami-12345678 - BlockDeviceMappings: - - DeviceName: /dev/sda1 - Bsu: - VolumeType: io1 - DeleteOnVmDeletion: true - VolumeSize: 120 - Iops: 150 - SnapshotId: snap-12345678 - BootModes: - - legacy - SecureBoot: false - ImageType: machine - CreationDate: '2010-10-01T12:34:56.789Z' - FileLocation: 123456789012/register-image-from-snapshot-example - Architecture: x86_64 - ImageName: register-image-from-snapshot-example - ex4: - summary: Registering from a bucket by using a manifest file - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - Image: - TpmMandatory: false - StateComment: {} - State: pending - RootDeviceType: bsu - RootDeviceName: /dev/sda1 - ProductCodes: - - '0001' - PermissionsToLaunch: - GlobalPermission: false - AccountIds: [] - AccountId: '123456789012' - Tags: [] - Description: '' - ImageId: ami-12345678 - BlockDeviceMappings: - - DeviceName: /dev/sda1 - Bsu: - VolumeType: standard - DeleteOnVmDeletion: true - VolumeSize: 50 - SnapshotId: snap-12345678 - BootModes: - - legacy - SecureBoot: false - ImageType: machine - CreationDate: '2010-10-01T12:34:56.789Z' - FileLocation: https://oos.eu-west-2.outscale.com/BUCKET/KEY?AWSAccessKeyId=ABCDEFGHIJ0123456789&Expires=1493372309&Signature=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - Architecture: x86_64 - ImageName: register-image-from-bucket-example - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - Image - /CreateImageExportTask: - post: - description: |- - Exports an OUTSCALE machine image (OMI) to an OUTSCALE Object Storage (OOS) bucket.
- This enables you to copy an OMI between OUTSCALE accounts in different Regions.

- This action creates the necessary snapshots and manifest file in the bucket. The OMI can then be imported to another account using a pre-signed URL of its manifest file. For more information, see [Creating a Pre-Signed URL](https://docs.outscale.com/en/userguide/Creating-a-Pre-Signed-URL.html).

- To copy an OMI in the same Region, you can also use the [CreateImage](#createimage) method.
- - **[IMPORTANT]**
- * You cannot export a shared or public OMI, as they do not belong to you. To do so, you must first copy it to your account. The copy then belongs to you and you can export it.
- * Export tasks can only be canceled while in the `pending/queued` state. - - For more information, see [About OMIs](https://docs.outscale.com/en/userguide/About-OMIs.html). - operationId: CreateImageExportTask - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateImageExportTaskRequest' - examples: - ex1: - value: - ImageId: ami-12345678 - OsuExport: - DiskImageFormat: qcow2 - OsuBucket: BUCKET - OsuPrefix: PREFIX - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/CreateImageExportTaskResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - ImageExportTask: - Tags: [] - ImageId: ami-12345678 - TaskId: image-export-12345678 - Comment: Export of image ami-12345678 - OsuExport: - OsuPrefix: PREFIX/ami-12345678/ - OsuBucket: BUCKET - DiskImageFormat: qcow2 - State: pending/queued - Progress: 0 - description: '' - tags: - - Image - /CreateInternetService: - post: - description: |- - Creates an internet service you can use with a Net.
- An internet service enables virtual machines (VMs) launched in a Net to connect to the Internet. It allows routing of incoming and outgoing Internet traffic and management of public IPs.

- For more information, see [About Internet Services](https://docs.outscale.com/en/userguide/About-Internet-Services.html). - operationId: CreateInternetService - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateInternetServiceRequest' - examples: - ex1: - value: {} - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/CreateInternetServiceResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - InternetService: - Tags: [] - InternetServiceId: igw-12345678 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - InternetService - /CreateKeypair: - post: - description: |- - Creates a keypair to use with your virtual machines (VMs).
- You can use this method in two different ways: - * **Creating a keypair**: In that case, 3DS OUTSCALE creates a 2048-bit RSA keypair, stores its public key in your OUTSCALE account, and returns its private key in the response of the call so that you can save it in a file.
- When you save the returned private key, make sure you replace the `\n` escape sequences with real line breaks. - * **Importing a keypair created locally**: If you already have a keypair that you have created locally with a third-party tool, you can import its public key in your account. The following types of key can be imported: RSA (2048 bits or preferably 4096 bits), Ed25519, and ECDSA (256 bits, 384 bits, or 521 bits). The following formats can be used: PEM, PKCS8, RFC4716, and OpenSSH. - - For more information, see [About Keypairs](https://docs.outscale.com/en/userguide/About-Keypairs.html). - operationId: CreateKeypair - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateKeypairRequest' - examples: - ex1: - summary: Creating a keypair - value: - KeypairName: create-keypair-example - ex2: - summary: Importing a keypair created locally - value: - KeypairName: import-keypair-example - PublicKey: ... - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/CreateKeypairResponse' - examples: - ex1: - summary: Creating a keypair - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - Keypair: - PrivateKey: |- - -----BEGIN RSA PRIVATE KEY----- - ... - -----END RSA PRIVATE KEY----- - KeypairType: ssh-rsa - KeypairName: create-keypair-example - KeypairId: key-abcdef1234567890abcdef1234567890 - KeypairFingerprint: 11:22:33:44:55:66:77:88:99:00:aa:bb:cc:dd:ee:ff - ex2: - summary: Importing a keypair created locally - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - Keypair: - KeypairType: ssh-rsa - KeypairName: create-keypair-example - KeypairId: key-abcdef1234567890abcdef1234567890 - KeypairFingerprint: 11:22:33:44:55:66:77:88:99:00:aa:bb:cc:dd:ee:ff - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '409': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - Keypair - /CreateListenerRule: - post: - description: |- - Creates a rule for traffic redirection for the specified listener. Each rule must have either the `HostNamePattern` or `PathPattern` parameter specified. Rules are treated in priority order, from the highest value to the lowest value.
- Once the rule is created, you need to register backend VMs with it. For more information, see the [RegisterVmsInLoadBalancer](#registervmsinloadbalancer) method.

- For more information, see [About Load Balancers](https://docs.outscale.com/en/userguide/About-Load-Balancers.html). - operationId: CreateListenerRule - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateListenerRuleRequest' - examples: - ex1: - summary: Creating a listener rule based on a host pattern - value: - Listener: - LoadBalancerName: example-lbu - LoadBalancerPort: 80 - ListenerRule: - Action: forward - HostNamePattern: '*.example.com' - ListenerRuleName: example-listener-rule - Priority: 10 - VmIds: - - i-12345678 - ex2: - summary: Creating a listener rule based on a path pattern - value: - Listener: - LoadBalancerName: example-lbu - LoadBalancerPort: 80 - ListenerRule: - Action: forward - PathPattern: /docs/* - ListenerRuleName: example-listener-rule - Priority: 100 - VmIds: - - i-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/CreateListenerRuleResponse' - examples: - ex1: - summary: Creating a listener rule based on a host pattern - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - ListenerRule: - Priority: 10 - VmIds: - - i-12345678 - ListenerRuleName: example-listener-rule - Action: forward - ListenerId: 123456 - HostNamePattern: '*.example.com' - ListenerRuleId: 1234 - ex2: - summary: Creating a listener rule based on a path pattern - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - ListenerRule: - Priority: 100 - VmIds: - - i-12345678 - ListenerRuleName: example-listener-rule - Action: forward - ListenerId: 123456 - PathPattern: /docs/* - ListenerRuleId: 1234 - description: '' - tags: - - Listener - /CreateLoadBalancer: - post: - description: |- - Creates a load balancer.
- The load balancer is created with a unique Domain Name Service (DNS) name. It receives the incoming traffic and routes it to its registered virtual machines (VMs).
- By default, this action creates an Internet-facing load balancer, resolving to public IPs. To create an internal load balancer in a Net, resolving to private IPs, use the `LoadBalancerType` parameter.
- You must specify either the `Subnets` or the `SubregionNames` parameters.

- For more information, see [About Load Balancers](https://docs.outscale.com/en/userguide/About-Load-Balancers.html). - operationId: CreateLoadBalancer - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateLoadBalancerRequest' - examples: - ex1: - summary: Creating an internal load balancer in a Net - value: - LoadBalancerName: private-lb-example - Listeners: - - BackendPort: 80 - BackendProtocol: TCP - LoadBalancerPort: 80 - LoadBalancerProtocol: TCP - Subnets: - - subnet-12345678 - SecurityGroups: - - sg-12345678 - LoadBalancerType: internal - ex2: - summary: Creating an internet-facing load balancer in a Net - value: - LoadBalancerName: private-lb-example - Listeners: - - BackendPort: 80 - BackendProtocol: HTTP - LoadBalancerPort: 443 - LoadBalancerProtocol: HTTPS - ServerCertificateId: orn:ows:idauth::012345678910:server-certificate/Certificate - Subnets: - - subnet-12345678 - SecurityGroups: - - sg-12345678 - LoadBalancerType: internet-facing - PublicIp: 192.0.2.0 - ex3: - summary: Creating an internet-facing load balancer in the public Cloud - value: - LoadBalancerName: public-lb-example - SubregionNames: - - eu-west-2a - Listeners: - - BackendPort: 8080 - BackendProtocol: HTTP - LoadBalancerPort: 8080 - LoadBalancerProtocol: HTTP - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/CreateLoadBalancerResponse' - examples: - ex1: - summary: Creating an internal load balancer in a Net - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - LoadBalancer: - Tags: [] - SourceSecurityGroup: - SecurityGroupName: security-group-example - SecurityGroupAccountId: '123456789012' - SecuredCookies: false - Subnets: - - subnet-12345678 - NetId: vpc-12345678 - BackendVmIds: [] - ApplicationStickyCookiePolicies: [] - SecurityGroups: - - sg-12345678 - LoadBalancerType: internal - AccessLog: - PublicationInterval: 60 - IsEnabled: false - DnsName: internal-private-lb-example.123456789.eu-west-2.lbu.outscale.com - HealthCheck: - UnhealthyThreshold: 2 - Timeout: 5 - CheckInterval: 30 - Protocol: TCP - HealthyThreshold: 10 - Port: 80 - LoadBalancerStickyCookiePolicies: [] - SubregionNames: - - eu-west-2a - Listeners: - - BackendPort: 80 - BackendProtocol: TCP - LoadBalancerPort: 80 - LoadBalancerProtocol: TCP - LoadBalancerName: private-lb-example - ex2: - summary: Creating an internet-facing load balancer in a Net - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - LoadBalancer: - Tags: [] - SourceSecurityGroup: - SecurityGroupName: security-group-example - SecurityGroupAccountId: '123456789012' - SecuredCookies: false - PublicIp: 192.0.2.0 - Subnets: - - subnet-12345678 - NetId: vpc-12345678 - BackendVmIds: [] - ApplicationStickyCookiePolicies: [] - SecurityGroups: - - sg-12345678 - LoadBalancerType: internet-facing - AccessLog: - PublicationInterval: 60 - IsEnabled: false - DnsName: private-lb-example.123456789.eu-west-2.lbu.outscale.com - HealthCheck: - UnhealthyThreshold: 2 - Timeout: 5 - CheckInterval: 30 - Protocol: TCP - HealthyThreshold: 10 - Port: 80 - LoadBalancerStickyCookiePolicies: [] - SubregionNames: - - eu-west-2a - Listeners: - - ServerCertificateId: orn:ows:idauth::012345678910:server-certificate/Certificate - BackendPort: 80 - BackendProtocol: HTTP - LoadBalancerPort: 443 - LoadBalancerProtocol: HTTPS - LoadBalancerName: private-lb-example - ex3: - summary: Creating an internet-facing load balancer in the public Cloud - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - LoadBalancer: - Tags: [] - SourceSecurityGroup: - SecurityGroupName: outscale-elb-sg - SecurityGroupAccountId: outscale-elb - SecuredCookies: false - Subnets: [] - BackendVmIds: [] - ApplicationStickyCookiePolicies: [] - LoadBalancerType: internet-facing - AccessLog: - PublicationInterval: 60 - IsEnabled: false - DnsName: public-lb-example.123456789.eu-west-2.lbu.outscale.com - HealthCheck: - UnhealthyThreshold: 2 - Timeout: 5 - CheckInterval: 30 - Protocol: TCP - HealthyThreshold: 10 - Port: 8080 - LoadBalancerStickyCookiePolicies: [] - SubregionNames: - - eu-west-2a - Listeners: - - BackendPort: 8080 - BackendProtocol: HTTP - LoadBalancerPort: 8080 - LoadBalancerProtocol: HTTP - LoadBalancerName: public-lb-example - description: '' - tags: - - LoadBalancer - /CreateLoadBalancerListeners: - post: - description: |- - Creates one or more listeners for a specified load balancer.

- For more information, see [About Load Balancers](https://docs.outscale.com/en/userguide/About-Load-Balancers.html). - operationId: CreateLoadBalancerListeners - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateLoadBalancerListenersRequest' - examples: - ex1: - value: - LoadBalancerName: example-lbu - Listeners: - - BackendPort: 58 - BackendProtocol: TCP - LoadBalancerPort: 62 - LoadBalancerProtocol: TCP - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/CreateLoadBalancerListenersResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - LoadBalancer: - Tags: [] - SourceSecurityGroup: - SecurityGroupName: security-group-example - SecurityGroupAccountId: '123456789012' - SecuredCookies: false - Subnets: - - subnet-12345678 - NetId: vpc-12345678 - BackendVmIds: [] - ApplicationStickyCookiePolicies: [] - SecurityGroups: - - sg-12345678 - LoadBalancerType: internal - AccessLog: - PublicationInterval: 60 - IsEnabled: false - DnsName: internal-example-lbu.123456789.eu-west-2.lbu.outscale.com - HealthCheck: - UnhealthyThreshold: 2 - Timeout: 5 - CheckInterval: 30 - Protocol: TCP - HealthyThreshold: 10 - Port: 80 - LoadBalancerStickyCookiePolicies: [] - SubregionNames: - - eu-west-2a - Listeners: - - BackendPort: 58 - BackendProtocol: TCP - LoadBalancerPort: 62 - LoadBalancerProtocol: TCP - - BackendPort: 80 - BackendProtocol: TCP - LoadBalancerPort: 80 - LoadBalancerProtocol: TCP - LoadBalancerName: example-lbu - description: '' - tags: - - Listener - /CreateLoadBalancerPolicy: - post: - description: |- - Creates a stickiness policy with sticky session lifetimes defined by the browser lifetime.
- The created policy can be used with HTTP or HTTPS listeners only.
- If this policy is implemented by a load balancer, this load balancer uses this cookie in all incoming requests to direct them to the specified backend server virtual machine (VM). If this cookie is not present, the load balancer sends the request to any other server according to its load-balancing algorithm.

- - You can also create a stickiness policy with sticky session lifetimes following the lifetime of an application-generated cookie.
- Unlike the other type of stickiness policy, the lifetime of the special Load Balancer Unit (LBU) cookie follows the lifetime of the application-generated cookie specified in the policy configuration. The load balancer inserts a new stickiness cookie only when the application response includes a new application cookie.
- The session stops being sticky if the application cookie is removed or expires, until a new application cookie is issued.

- For more information, see [About Load Balancers](https://docs.outscale.com/en/userguide/About-Load-Balancers.html). - operationId: CreateLoadBalancerPolicy - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateLoadBalancerPolicyRequest' - examples: - ex1: - summary: Creating a load balancer policy based on browser - value: - LoadBalancerName: example-lbu - PolicyName: example-browser-policy - PolicyType: load_balancer - ex2: - summary: Creating a load balancer policy based on application cookie - value: - LoadBalancerName: example-lbu - PolicyName: example-app-policy - PolicyType: app - CookieName: example-cookie - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/CreateLoadBalancerPolicyResponse' - examples: - ex1: - summary: Creating a load balancer policy based on browser - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - LoadBalancer: - Tags: [] - SourceSecurityGroup: - SecurityGroupName: default - SecurityGroupAccountId: '123456789012' - Subnets: - - subnet-12345678 - NetId: vpc-12345678 - BackendVmIds: [] - ApplicationStickyCookiePolicies: [] - SecurityGroups: - - sg-12345678 - LoadBalancerType: internet-facing - AccessLog: - PublicationInterval: 60 - IsEnabled: false - DnsName: example-lbu-123456789.eu-west-2.lbu.outscale.com - HealthCheck: - UnhealthyThreshold: 2 - Timeout: 5 - CheckInterval: 30 - Protocol: TCP - HealthyThreshold: 10 - Port: 80 - LoadBalancerStickyCookiePolicies: - - PolicyName: example-browser-policy - CookieExpirationPeriod: 1 - SubregionNames: - - eu-west-2a - Listeners: - - BackendPort: 80 - BackendProtocol: HTTP - LoadBalancerPort: 80 - LoadBalancerProtocol: HTTP - LoadBalancerName: example-lbu - ex2: - summary: Creating a load balancer policy based on application cookie - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - LoadBalancer: - Tags: [] - SourceSecurityGroup: - SecurityGroupName: default - SecurityGroupAccountId: '123456789012' - Subnets: - - subnet-12345678 - NetId: vpc-12345678 - BackendVmIds: [] - ApplicationStickyCookiePolicies: - - PolicyName: example-app-policy - CookieName: example-cookie - SecurityGroups: - - sg-12345678 - LoadBalancerType: internet-facing - AccessLog: - PublicationInterval: 60 - IsEnabled: false - DnsName: example-lbu-123456789.eu-west-2.lbu.outscale.com - HealthCheck: - UnhealthyThreshold: 2 - Timeout: 5 - CheckInterval: 30 - Protocol: TCP - HealthyThreshold: 10 - Port: 80 - LoadBalancerStickyCookiePolicies: [] - SubregionNames: - - eu-west-2a - Listeners: - - BackendPort: 80 - BackendProtocol: HTTP - LoadBalancerPort: 80 - LoadBalancerProtocol: HTTP - LoadBalancerName: example-lbu - description: '' - tags: - - LoadBalancerPolicy - /CreateLoadBalancerTags: - post: - description: |- - Adds one or more tags to the specified load balancers.
- If a tag with the same key already exists for the load balancer, the tag value is replaced.

- For more information, see [About Tags](https://docs.outscale.com/en/userguide/About-Tags.html). - operationId: CreateLoadBalancerTags - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateLoadBalancerTagsRequest' - examples: - ex1: - value: - LoadBalancerNames: - - private-lb-example - Tags: - - Key: key1 - Value: value1 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/CreateLoadBalancerTagsResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - LoadBalancer - /CreateNatService: - post: - description: |- - Creates a network address translation (NAT) service in the specified public Subnet of a Net.
- A NAT service enables virtual machines (VMs) placed in the private Subnet of this Net to connect to the Internet, without being accessible from the Internet.
- When creating a NAT service, you specify the allocation ID of the public IP you want to use as public IP for the NAT service. Once the NAT service is created, you need to create a route in the route table of the private Subnet, with 0.0.0.0/0 as destination and the ID of the NAT service as target. For more information, see [LinkPublicIP](#linkpublicip) and [CreateRoute](#createroute).
- This action also enables you to create multiple NAT services in the same Net (one per public Subnet).

- - **[IMPORTANT]**
- You cannot modify the public IP associated with a NAT service after its creation. To do so, you need to delete the NAT service and create a new one with another public IP.

- For more information, see [About NAT Services](https://docs.outscale.com/en/userguide/About-NAT-Services.html). - operationId: CreateNatService - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateNatServiceRequest' - examples: - ex1: - value: - SubnetId: subnet-12345678 - PublicIpId: eipalloc-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/CreateNatServiceResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - NatService: - Tags: [] - SubnetId: subnet-12345678 - NatServiceId: nat-12345678 - PublicIps: - - PublicIpId: eipalloc-12345678 - PublicIp: 192.0.2.0 - NetId: vpc-12345678 - State: available - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - NatService - /CreateNet: - post: - description: |- - Creates a Net with a specified IP range.
- The IP range (network range) of your Net must be between a /28 netmask (16 IPs) and a /16 netmask (65536 IPs).

- For more information, see [About Nets](https://docs.outscale.com/en/userguide/About-Nets.html). - operationId: CreateNet - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateNetRequest' - examples: - ex1: - value: - IpRange: 10.0.0.0/16 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/CreateNetResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - Net: - Tags: [] - DhcpOptionsSetId: dopt-12345678 - IpRange: 10.0.0.0/16 - Tenancy: default - NetId: vpc-12345678 - State: available - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '409': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - Net - /CreateNetAccessPoint: - post: - description: |- - Creates a Net access point to access an OUTSCALE service from this Net without using the Internet or public IPs.
- You specify the service using its name. For more information about the available services, see [ReadNetAccessPointServices](#readnetaccesspointservices).

- To control the routing of traffic between the Net and the specified service, you can specify one or more route tables. Virtual machines placed in Subnets associated with the specified route table thus use the Net access point to access the service. When you specify a route table, a route is automatically added to it with the destination set to the prefix list ID of the service, and the target set to the ID of the access point.

- When a Net access point is created, a public IP is automatically allocated to your OUTSCALE account and used for the Net access point. This public IP is not connected to the Internet. It is counted in your quota, but it is not billed.

- For more information, see [About Net Access Points](https://docs.outscale.com/en/userguide/About-Net-Access-Points.html). - operationId: CreateNetAccessPoint - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateNetAccessPointRequest' - examples: - ex1: - value: - NetId: vpc-12345678 - RouteTableIds: - - rtb-12345678 - ServiceName: com.outscale.eu-west-2.oos - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/CreateNetAccessPointResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - NetAccessPoint: - Tags: [] - NetAccessPointId: vpce-12345678 - RouteTableIds: - - rtb-12345678 - State: pending - NetId: vpc-12345678 - ServiceName: com.outscale.eu-west-2.oos - description: '' - tags: - - NetAccessPoint - /CreateNetPeering: - post: - description: |- - Requests a Net peering between a Net you own and a peer Net that belongs to you or another OUTSCALE account.
- This action creates a Net peering that remains in the `pending-acceptance` state until it is accepted by the owner of the peer Net. If the owner of the peer Net does not accept the request within 7 days, the state of the Net peering becomes `expired`. For more information, see [AcceptNetPeering](#acceptnetpeering).

- - **[IMPORTANT]**
- * The two Nets must not have overlapping IP ranges. Otherwise, the Net peering is in the `failed` state.
- * A peering connection between two Nets works both ways. If an A-to-B connection is already created and accepted, creating a B-to-A connection is not necessary and would be automatically rejected. - - For more information, see [About Net Peerings](https://docs.outscale.com/en/userguide/About-Net-Peerings.html). - operationId: CreateNetPeering - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateNetPeeringRequest' - examples: - ex1: - summary: Creating a Net peering between two Nets belonging to you - value: - SourceNetId: vpc-12345678 - AccepterNetId: vpc-87654321 - ex2: - summary: Creating a Net peering with a Net that belongs to another account - value: - SourceNetId: vpc-12345678 - AccepterNetId: vpc-87654321 - AccepterOwnerId: '987654321098' - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/CreateNetPeeringResponse' - examples: - ex1: - summary: Creating a Net peering between two Nets belonging to you - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - NetPeering: - Tags: [] - State: - Name: pending-acceptance - Message: Pending acceptance by 123456789012 - AccepterNet: - NetId: vpc-12345678 - IpRange: 172.16.0.0/16 - AccountId: '123456789012' - SourceNet: - NetId: vpc-87654321 - IpRange: 10.0.0.0/16 - AccountId: '123456789012' - NetPeeringId: pcx-12345678 - ex2: - summary: Creating a Net peering with a Net that belongs to another account - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - NetPeering: - Tags: [] - State: - Name: pending-acceptance - Message: Pending acceptance by 123456789012 - AccepterNet: - NetId: vpc-87654321 - IpRange: 172.16.0.0/16 - AccountId: '987654321098' - SourceNet: - NetId: vpc-12345678 - IpRange: 10.0.0.0/16 - AccountId: '123456789012' - NetPeeringId: pcx-12345678 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - NetPeering - /CreateNic: - post: - description: |- - Creates a network interface card (NIC) in the specified Subnet.

- For more information, see [About NICs](https://docs.outscale.com/en/userguide/About-NICs.html). - operationId: CreateNic - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateNicRequest' - examples: - ex1: - summary: Creating a NIC - value: - SubnetId: subnet-12345678 - SecurityGroupIds: - - sg-12345678 - ex2: - summary: Creating a NIC with specific private IPs - value: - Description: Terraform nic with private IPs - SubnetId: subnet-12345678 - SecurityGroupIds: - - sg-12345678 - PrivateIps: - - IsPrimary: true - PrivateIp: 10.0.0.4 - - IsPrimary: false - PrivateIp: 10.0.0.5 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/CreateNicResponse' - examples: - ex1: - summary: Creating a NIC - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - Nic: - SubregionName: eu-west-2a - SubnetId: subnet-12345678 - State: available - IsSourceDestChecked: true - PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal - Tags: [] - Description: '' - AccountId: '123456789012' - SecurityGroups: - - SecurityGroupName: security-group-example - SecurityGroupId: sg-12345678 - MacAddress: A1:B2:C3:D4:E5:F6 - NetId: vpc-12345678 - NicId: eni-12345678 - PrivateIps: - - PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal - PrivateIp: 10.0.0.4 - IsPrimary: true - ex2: - summary: Creating a NIC with specific private IPs - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - Nic: - SubregionName: eu-west-2a - SubnetId: subnet-12345678 - State: available - IsSourceDestChecked: true - PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal - Tags: [] - Description: '' - AccountId: '123456789012' - SecurityGroups: - - SecurityGroupName: security-group-example - SecurityGroupId: sg-12345678 - MacAddress: A1:B2:C3:D4:E5:F6 - NetId: vpc-12345678 - NicId: eni-12345678 - PrivateIps: - - PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal - PrivateIp: 10.0.0.4 - IsPrimary: true - - PrivateDnsName: ip-10-0-0-5.eu-west-2.compute.internal - PrivateIp: 10.0.0.5 - IsPrimary: false - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - Nic - /CreatePolicy: - post: - description: |- - Creates a managed policy to apply to a user.
- This action creates a policy version and sets v1 as the default one. - operationId: CreatePolicy - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreatePolicyRequest' - examples: - ex1: - value: - Description: Example of description - Document: '{"Statement": [ {"Effect": "Allow", "Action": ["*"], "Resource": ["*"]} ]}' - Path: /example/ - PolicyName: example-user-policy - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/CreatePolicyResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - Policy: - ResourcesCount: 0 - PolicyName: example-user-policy - PolicyDefaultVersionId: v1 - Path: /example/ - CreationDate: 2010-10-01T12:34:56.789+0000 - Description: Example of description - PolicyId: ABCDEFGHIJKLMNOPQRSTUVWXYZ01234 - Orn: orn:ows:idauth::012345678910:policy/example/example-user-policy - IsLinkable: true - LastModificationDate: 2010-10-01T12:34:56.789+0000 - description: '' - tags: - - Policy - /CreatePolicyVersion: - post: - description: |- - Creates a version of a specified managed policy.
- A managed policy can have up to five versions. -

- - **[IMPORTANT]**
- A delay of up to 15 seconds can occur when attaching, detaching, or updating a managed policy. - operationId: CreatePolicyVersion - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreatePolicyVersionRequest' - examples: - ex1: - value: - Document: '{"Statement": [ {"Effect": "Allow", "Action": ["*"], "Resource": ["*"]} ]}' - PolicyOrn: orn:ows:idauth::012345678910:policy/example/example-user-policy - SetAsDefault: true - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/CreatePolicyVersionResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - PolicyVersion: - VersionId: v2 - DefaultVersion: true - CreationDate: 2017-05-10T12:34:56.789+0000 - Body: '{"Statement": [ {"Effect": "Allow", "Action": ["*"], "Resource": ["*"]} ]}' - description: '' - tags: - - Policy - /CreateProductType: - post: - description: Creates a product type you can associate with an OMI for consumption monitoring and billing purposes. - operationId: CreateProductType - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateProductTypeRequest' - examples: - ex1: - value: - Vendor: vendor-name - Description: Example of description - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/CreateProductTypeResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - ProductType: - Vendor: vendor-name - ProductTypeId: pty-12345678 - Description: Example of description - description: '' - tags: - - ProductType - /CreatePublicIp: - post: - description: |- - Acquires a public IP for your account.
- A public IP is a static IP designed for dynamic Cloud computing. It can be associated with a virtual machine (VM) in the public Cloud or in a Net, a network interface card (NIC), a NAT service.

- For more information, see [About Public IPs](https://docs.outscale.com/en/userguide/About-Public-IPs.html). - operationId: CreatePublicIp - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreatePublicIpRequest' - examples: - ex1: - value: {} - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/CreatePublicIpResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - PublicIp: - Tags: [] - PublicIpId: eipalloc-12345678 - PublicIp: 192.0.2.0 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - PublicIp - /CreateRoute: - post: - description: |- - Creates a route in a specified route table within a specified Net.
- You must specify one of the following elements as the target:

- - * Net peering
- * NAT VM
- * Internet service
- * Virtual gateway
- * NAT service
- * Network interface card (NIC)

- - The routing algorithm is based on the most specific match.

- For more information, see [About Route Tables](https://docs.outscale.com/en/userguide/About-Route-Tables.html). - operationId: CreateRoute - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateRouteRequest' - examples: - ex1: - summary: Creating a route to an Internet service - value: - RouteTableId: rtb-12345678 - DestinationIpRange: 0.0.0.0/0 - GatewayId: igw-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/CreateRouteResponse' - examples: - ex1: - summary: Creating a route to an Internet service - value: - RouteTable: - Routes: - - DestinationIpRange: 10.0.0.0/16 - CreationMethod: CreateRouteTable - State: active - - GatewayId: igw-12345678 - DestinationIpRange: 0.0.0.0/0 - CreationMethod: CreateRoute - State: active - LinkRouteTables: [] - NetId: vpc-12345678 - Tags: [] - RoutePropagatingVirtualGateways: [] - RouteTableId: rtb-12345678 - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - Route - /CreateRouteTable: - post: - description: |- - Creates a route table for a specified Net.
- You can then add routes and associate this route table with a Subnet.

- For more information, see [About Route Tables](https://docs.outscale.com/en/userguide/About-Route-Tables.html). - operationId: CreateRouteTable - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateRouteTableRequest' - examples: - ex1: - value: - NetId: vpc-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/CreateRouteTableResponse' - examples: - ex1: - value: - RouteTable: - Routes: - - DestinationIpRange: 10.0.0.0/16 - CreationMethod: CreateRouteTable - State: active - LinkRouteTables: [] - NetId: vpc-12345678 - Tags: [] - RoutePropagatingVirtualGateways: [] - RouteTableId: rtb-12345678 - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - RouteTable - /CreateSecurityGroup: - post: - description: |- - Creates a security group.
- This action creates a security group either in the public Cloud or in a specified Net. By default, a default security group for use in the public Cloud and a default security group for use in a Net are created.
- When launching a virtual machine (VM), if no security group is explicitly specified, the appropriate default security group is assigned to the VM. Default security groups include a default rule granting VMs network access to each other.
- When creating a security group, you specify a name. Two security groups for use in the public Cloud or for use in a Net cannot have the same name.
- You can have up to 500 security groups in the public Cloud. You can create up to 500 security groups per Net.
- To add or remove rules, use the [CreateSecurityGroupRule](#createsecuritygrouprule) method.

- For more information, see [About Security Groups](https://docs.outscale.com/en/userguide/About-Security-Groups.html). - operationId: CreateSecurityGroup - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateSecurityGroupRequest' - examples: - ex1: - value: - NetId: vpc-12345678 - SecurityGroupName: security-group-example - Description: Security group example - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/CreateSecurityGroupResponse' - examples: - ex1: - value: - SecurityGroup: - Tags: [] - SecurityGroupName: security-group-example - OutboundRules: - - FromPortRange: -1 - IpProtocol: '-1' - ToPortRange: -1 - IpRanges: - - 0.0.0.0/0 - SecurityGroupId: sg-12345678 - AccountId: '123456789012' - Description: Example of security group - InboundRules: [] - NetId: vpc-12345678 - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - SecurityGroup - /CreateSecurityGroupRule: - post: - description: |- - Adds one or more rules to a security group.
- Use the `SecurityGroupId` parameter to specify the security group for which you want to create a rule.
- Use the `Flow` parameter to specify if you want an inbound rule or an outbound rule.

- An inbound rule allows the security group to receive traffic: - * Either from a specific IP range (`IpRange` parameter) on a specific port range (`FromPortRange` and `ToPortRange` parameters) and specific protocol (`IpProtocol` parameter). - * Or from another specific security group (`SecurityGroupAccountIdToLink` and `SecurityGroupNameToLink` parameters).
- - (Net only) An outbound rule works similarly but allows the security group to send traffic rather than receive traffic.
- - Alternatively, you can use the `Rules` parameter to add several rules at the same time. Note that the `SecurityGroupName` subparameter can only be used for security groups in the public Cloud. - - **[NOTE]**
- * The modifications are effective as quickly as possible, but a small delay may occur.
- * By default, traffic between two security groups is allowed through both public and private IPs. To restrict traffic to private IPs only, contact our Support team at support@outscale.com. - - For more information, see [About Security Group Rules](https://docs.outscale.com/en/userguide/About-Security-Group-Rules.html). - operationId: CreateSecurityGroupRule - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateSecurityGroupRuleRequest' - examples: - ex1: - summary: Creating an inbound rule from an IP range - value: - Flow: Inbound - SecurityGroupId: sg-12345678 - FromPortRange: 80 - ToPortRange: 80 - IpProtocol: tcp - IpRange: 10.0.0.0/16 - ex2: - summary: Creating an inbound rule from another security group - value: - Flow: Inbound - SecurityGroupId: sg-12345678 - Rules: - - FromPortRange: 22 - ToPortRange: 22 - IpProtocol: tcp - SecurityGroupsMembers: - - AccountId: '123456789012' - SecurityGroupName: another-security-group - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/CreateSecurityGroupRuleResponse' - examples: - ex1: - summary: Creating an inbound rule from an IP range - value: - SecurityGroup: - Tags: [] - SecurityGroupName: security-group-example - OutboundRules: - - FromPortRange: -1 - IpProtocol: '-1' - ToPortRange: -1 - IpRanges: - - 0.0.0.0/0 - SecurityGroupId: sg-12345678 - AccountId: '123456789012' - Description: Example of security group - InboundRules: - - FromPortRange: 80 - IpProtocol: tcp - ToPortRange: 80 - IpRanges: - - 10.0.0.0/16 - NetId: vpc-12345678 - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - ex2: - summary: Creating an inbound rule from another security group - value: - SecurityGroup: - Tags: [] - SecurityGroupName: security-group-example - OutboundRules: - - FromPortRange: -1 - IpProtocol: '-1' - ToPortRange: -1 - IpRanges: - - 0.0.0.0/0 - SecurityGroupId: sg-12345678 - AccountId: '123456789012' - Description: Example of security group - InboundRules: - - FromPortRange: 22 - IpProtocol: tcp - ToPortRange: 22 - SecurityGroupsMembers: - - SecurityGroupName: another-security-group - SecurityGroupId: sg-87654321 - AccountId: '987654321098' - NetId: vpc-12345678 - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - SecurityGroupRule - /CreateServerCertificate: - post: - description: |- - Creates a server certificate and its matching private key.

- These elements can be used with other services (for example, to configure SSL termination on load balancers).

- You can also specify the chain of intermediate certification authorities if your certificate is not directly signed by a root one. You can specify multiple intermediate certification authorities in the `CertificateChain` parameter. To do so, concatenate all certificates in the correct order (the first certificate must be the authority of your certificate, the second must be the authority of the first one, and so on).

- The private key must be a RSA key in PKCS1 form. To check this, open the PEM file and ensure its header reads as follows: BEGIN RSA PRIVATE KEY.

- [IMPORTANT]

- This private key must not be protected by a password or a passphrase.

- For more information, see [About Server Certificates in EIM](https://docs.outscale.com/en/userguide/About-Server-Certificates-in-EIM.html). - operationId: CreateServerCertificate - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateServerCertificateRequest' - examples: - ex1: - value: - Name: server-cert-example - Body: ... - Chain: ... - PrivateKey: ... - Path: /example/ - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/CreateServerCertificateResponse' - examples: - ex1: - value: - ServerCertificate: - Path: /example/ - Id: ABCDEFGHIJKLMNOPQRSTUVWXYZ1234 - Orn: orn:ows:idauth::012345678910:server-certificate/example/server-cert-example - Name: server-cert-example - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - ServerCertificate - /CreateSnapshot: - post: - description: |- - Creates a snapshot. Snapshots are point-in-time images of a volume that you can use to back up your data or to create replicas of this volume.
- You can use this method in three different ways: - * **Creating from a volume**: You create a snapshot from one of your volumes.
- * **Copying a snapshot**: You copy an existing snapshot. The source snapshot can be one of your own snapshots, or a snapshot owned by another OUTSCALE account that has granted you permission via the [UpdateSnapshot](#updatesnapshot) method.
- * **Importing from a bucket**: You import a snapshot located in an OUTSCALE Object Storage (OOS) bucket. First, the owner of the source snapshot must export it to a bucket by using the [CreateSnapshotExportTask](#createsnapshotexporttask) method. Then, they must grant you permission to read the snapshot via a pre-signed URL. For more information, see [Creating a Pre-Signed URL](https://docs.outscale.com/en/userguide/Creating-a-Pre-Signed-URL.html). - - **[NOTE]**
- In case of excessive use of the snapshot creation feature on the same volume over a short period of time, 3DS OUTSCALE reserves the right to temporarily block the feature. - - For more information, see [About Snapshots](https://docs.outscale.com/en/userguide/About-Snapshots.html). - operationId: CreateSnapshot - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateSnapshotRequest' - examples: - ex1: - summary: Creating from a volume - value: - VolumeId: vol-12345678 - Description: Snapshot created from a volume - ex2: - summary: Copying a snapshot - value: - SourceSnapshotId: snap-12345678 - SourceRegionName: eu-west-2 - Description: Snapshot created from another snapshot - ex3: - summary: Importing from a bucket - value: - FileLocation: https://oos.eu-west-2.outscale.com/BUCKET/KEY?AWSAccessKeyId=ABCDEFGHIJ0123456789&Expires=1493372309&Signature=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - SnapshotSize: 10737418240 - Description: Snapshot imported from a bucket - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/CreateSnapshotResponse' - examples: - ex1: - summary: Creating from a volume - value: - Snapshot: - VolumeSize: 10 - AccountId: '123456789012' - VolumeId: vol-12345678 - CreationDate: '2010-10-01T12:34:56.789Z' - PermissionsToCreateVolume: - GlobalPermission: false - AccountIds: [] - Progress: 0 - SnapshotId: snap-12345678 - State: pending/queued - Description: Snapshot created from a volume - Tags: [] - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - ex2: - summary: Copying a snapshot - value: - Snapshot: - VolumeSize: 10 - AccountId: '123456789012' - VolumeId: vol-12345678 - CreationDate: '2010-10-01T12:34:56.789Z' - PermissionsToCreateVolume: - GlobalPermission: false - AccountIds: [] - Progress: 100 - SnapshotId: snap-12345678 - State: completed - Description: Snapshot copied from another snapshot - Tags: [] - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - ex3: - summary: Importing from a bucket - value: - Snapshot: - VolumeSize: 10 - AccountId: '123456789012' - VolumeId: vol-12345678 - CreationDate: '2010-10-01T12:34:56.789Z' - PermissionsToCreateVolume: - GlobalPermission: false - AccountIds: [] - Progress: 0 - SnapshotId: snap-12345678 - State: importing - Description: Snapshot imported from a bucket - Tags: [] - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - Snapshot - /CreateSnapshotExportTask: - post: - description: |- - Exports a snapshot to an OUTSCALE Object Storage (OOS) bucket that belongs to you. This action enables you to create a backup of your snapshot.

- You can share this snapshot with others OUTSCALE accounts by granting permission to read it via pre-signed URLs. For more information, see [Creating a Pre-Signed URL](https://docs.outscale.com/en/userguide/Creating-a-Pre-Signed-URL.html).

- **[IMPORTANT]**
- Export tasks can only be canceled while in the `pending/queued` state.

- For more information, see [About Snapshots](https://docs.outscale.com/en/userguide/About-Snapshots.html). - operationId: CreateSnapshotExportTask - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateSnapshotExportTaskRequest' - examples: - ex1: - value: - SnapshotId: snap-12345678 - OsuExport: - DiskImageFormat: qcow2 - OsuBucket: BUCKET - OsuPrefix: PREFIX - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/CreateSnapshotExportTaskResponse' - examples: - ex1: - value: - SnapshotExportTask: - Tags: [] - TaskId: snap-export-12345678 - Comment: Export of snapshot snap-12345678 - OsuExport: - OsuPrefix: PREFIX - OsuBucket: BUCKET - DiskImageFormat: qcow2 - State: pending - SnapshotId: snap-12345678 - Progress: 0 - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - Snapshot - /CreateSubnet: - post: - description: |- - Creates a Subnet in an existing Net.
- To create a Subnet in a Net, you have to provide the ID of the Net and the IP range for the Subnet (its network range). Once the Subnet is created, you cannot modify its IP range.

- For more information, see [About Nets](https://docs.outscale.com/en/userguide/About-Nets.html). - operationId: CreateSubnet - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateSubnetRequest' - examples: - ex1: - value: - NetId: vpc-12345678 - IpRange: 10.0.0.0/18 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/CreateSubnetResponse' - examples: - ex1: - value: - Subnet: - Tags: [] - SubregionName: eu-west-2a - SubnetId: subnet-12345678 - AvailableIpsCount: 16379 - IpRange: 10.0.0.0/18 - MapPublicIpOnLaunch: false - State: available - NetId: vpc-12345678 - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '409': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - Subnet - /CreateTags: - post: - description: |- - Adds one or more tags to the specified resources.
- If a tag with the same key already exists for the resource, the tag value is replaced.
- You can tag the following resources using their IDs:

- - * Client gateways (cgw-xxxxxxxx)
- * DHCP options (dopt-xxxxxxxx)
- * Flexible GPU (fgpu-xxxxxxxx)
- * Images (ami-xxxxxxxx)
- * Internet services (igw-xxxxxxxx)
- * Keypairs (key-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)
- * NAT services (nat-xxxxxxxx)
- * Net endpoints (vpce-xxxxxxxx)
- * Net peerings (vpcx-xxxxxxxx)
- * Nets (vpc-xxxxxxxx)
- * Network interface cards (NIC) (eni-xxxxxxxx)
- * OMI export tasks (image-export-xxxxxxxx)
- * Public IPs (eipalloc-xxxxxxxx)
- * Route tables (rtb-xxxxxxxx)
- * Security groups (sg-xxxxxxxx)
- * Snapshot export tasks (snap-export-xxxxxxxx) - * Snapshots (snap-xxxxxxxx)
- * Subnets (subnet-xxxxxxxx)
- * Virtual gateways (vgw-xxxxxxxx)
- * Virtual machines (VMs) (i-xxxxxxxx)
- * Volumes (vol-xxxxxxxx)
- * VPN connections (vpn-xxxxxxxx)
- - For more information, see [About Tags](https://docs.outscale.com/en/userguide/About-Tags.html). - operationId: CreateTags - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateTagsRequest' - examples: - ex1: - value: - ResourceIds: - - i-12345678 - Tags: - - Key: key1 - Value: value1 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/CreateTagsResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - Tag - /CreateUser: - post: - description: |- - Creates an EIM user for your OUTSCALE account.

- For more information, see [About EIM Users](https://docs.outscale.com/en/userguide/About-EIM-Users.html). - operationId: CreateUser - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateUserRequest' - examples: - ex1: - value: - UserEmail: user@example.com - UserName: example-user - Path: /documentation/ - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/CreateUserResponse' - examples: - ex1: - value: - User: - CreationDate: 2010-10-01T12:34:56.789+0000 - LastModificationDate: 2017-05-10T12:34:56.789+0000 - UserEmail: user@example.com - UserName: example-user - UserId: ABCDEFGHIJKLMNOPQRSTUVWXYZ12345 - Path: /documentation/ - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - User - /CreateUserGroup: - post: - description: |- - Creates a group to which you can add users.
- You can also add an inline policy or link a managed policy to the group, which is applied to all its users. - operationId: CreateUserGroup - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateUserGroupRequest' - examples: - ex1: - value: - Path: /example/ - UserGroupName: example-usergroup - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/CreateUserGroupResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - UserGroup: - CreationDate: '2010-10-01T12:34:56.789Z' - LastModificationDate: 2010-10-01T12:34:56.789+0000 - Name: example-usergroup - Orn: orn:ows:idauth::012345678910:usergroup/example/usergroup-example - Path: /example/ - UserGroupId: ug-12345678 - description: '' - tags: - - UserGroup - /CreateVirtualGateway: - post: - description: |- - Creates a virtual gateway.
- A virtual gateway is the access point on the Net side of a VPN connection.

- For more information, see [About Virtual Gateways](https://docs.outscale.com/en/userguide/About-Virtual-Gateways.html). - operationId: CreateVirtualGateway - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateVirtualGatewayRequest' - examples: - ex1: - value: - ConnectionType: ipsec.1 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/CreateVirtualGatewayResponse' - examples: - ex1: - value: - VirtualGateway: - VirtualGatewayId: vgw-12345678 - ConnectionType: ipsec.1 - NetToVirtualGatewayLinks: [] - State: available - Tags: [] - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - VirtualGateway - /CreateVmGroup: - post: - description: |- - > [WARNING]
- > This feature is currently under development and may not function properly.
- - Creates a group of virtual machines (VMs) containing the same characteristics as a specified VM template, and then launches them.
- You can create up to 100 VM groups in your OUTSCALE account. - operationId: CreateVmGroup - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateVmGroupRequest' - examples: - ex1: - value: - Description: Production log collector - PositioningStrategy: attract - SecurityGroupIds: - - sg-12345678 - SubnetId: subnet-12345678 - Tags: - - Key: key1 - Value: value1 - VmCount: 2 - VmGroupName: ClusterLog-PPD01 - VmTemplateId: vmtemplate-98765432109876543210987654321012 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/CreateVmGroupResponse' - examples: - ex1: - value: - VmGroup: - CreationDate: '2010-10-01T12:34:56.789Z' - Description: Production log collector - PositioningStrategy: attract - SecurityGroupIds: - - sg-12345678 - State: available - SubnetId: subnet-12345678 - Tags: - - Key: key1 - Value: value1 - VmCount: 2 - VmGroupId: vmgroup-12345678901234567890123456789012 - VmGroupName: ClusterLog-PPD01 - VmIds: [] - VmTemplateId: vmtemplate-98765432109876543210987654321012 - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - VmGroup - /CreateVmTemplate: - post: - description: |- - > [WARNING]
- > This feature is currently under development and may not function properly.
- - Creates a virtual machine (VM) template. You can then use the VM template to create VM groups.
- You can create up to 50 VM templates in your OUTSCALE account. - operationId: CreateVmTemplate - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateVmTemplateRequest' - examples: - ex1: - value: - CpuCores: 2 - CpuGeneration: v4 - CpuPerformance: high - Description: Log collector template - ImageId: ami-12345678 - KeypairName: keypair-example - Ram: 2 - Tags: - - Key: key1 - Value: value1 - VmTemplateName: vmtemplate-example - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/CreateVmTemplateResponse' - examples: - ex1: - value: - VmTemplate: - VmTemplateName: vmtemplate-example - CpuPerformance: high - CreationDate: 2010-10-01T12:34:56.789+0000 - CpuCores: 2 - Tags: - - Key: key1 - Value: value1 - Description: Log collector template - ImageId: ami-12345678 - CpuGeneration: v4 - VmTemplateId: vmtemplate-98765432109876543210987654321012 - Ram: 2 - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - VmTemplate - /CreateVms: - post: - description: |- - Creates virtual machines (VMs), and then launches them.
- This action enables you to create a specified number of VMs using an OUTSCALE machine image (OMI) that you are allowed to use, and then to automatically launch them.
- The VMs remain in the `pending` state until they are created and ready to be used. Once automatically launched, they are in the `running` state.
- To check the state of your VMs, call the [ReadVms](#readvms) method.
- The metadata server enables you to get the public key provided when the VM is launched. Official OMIs contain a script to get this public key and put it inside the VM to provide secure access without password.
- If not specified, the security group used by the service is the default one.
- - **[NOTE]**
- When you attach a security group to a VM, it is actually attached to the primary network interface of the VM.
- - For more information, see [About VMs](https://docs.outscale.com/en/userguide/About-VMs.html). - operationId: CreateVms - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateVmsRequest' - examples: - ex1: - summary: Creating a VM (minimal syntax) - value: - ImageId: ami-12345678 - ex2: - summary: Creating a VM in a Net - value: - ImageId: ami-12345678 - VmType: tinav5.c1r1p2 - KeypairName: keypair-example - SecurityGroupIds: - - sg-12345678 - SubnetId: subnet-12345678 - UserData: ... - ex3: - summary: Creating a VM with block device mappings - value: - ImageId: ami-12345678 - VmType: tinav5.c1r1p2 - KeypairName: keypair-example - SecurityGroupIds: - - sg-12345678 - SubnetId: subnet-12345678 - UserData: ... - BlockDeviceMappings: - - DeviceName: /dev/sda1 - Bsu: - VolumeSize: 15 - VolumeType: gp2 - - DeviceName: /dev/sdb - Bsu: - SnapshotId: snap-12345678 - VolumeSize: 22 - VolumeType: io1 - Iops: 150 - ex4: - summary: Creating a VM with a NIC - value: - ImageId: ami-12345678 - VmType: tinav5.c1r1p2 - KeypairName: keypair-example - UserData: ... - Nics: - - DeviceNumber: 0 - NicId: eni-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/CreateVmsResponse' - examples: - ex1: - summary: Creating a VM (minimal syntax) - value: - Vms: - - VmType: t2.small - VmInitiatedShutdownBehavior: stop - State: pending - StateReason: '' - RootDeviceType: ebs - RootDeviceName: /dev/sda1 - IsSourceDestChecked: true - ImageId: ami-12345678 - DeletionProtection: false - BootMode: legacy - TpmEnabled: false - Architecture: x86_64 - NestedVirtualization: false - BlockDeviceMappings: - - DeviceName: /dev/sda1 - Bsu: - VolumeId: vol-12345678 - State: attaching - LinkDate: '2010-10-01T12:34:56.789Z' - DeleteOnVmDeletion: true - VmId: i-12345678 - ReservationId: r-12345678 - Hypervisor: xen - Placement: - Tenancy: default - SubregionName: eu-west-2a - ProductCodes: - - '0001' - CreationDate: '2010-10-01T12:34:56.789Z' - UserData: ... - PrivateIp: 10.0.0.4 - SecurityGroups: - - SecurityGroupName: default - SecurityGroupId: sg-12345678 - BsuOptimized: false - LaunchNumber: 0 - Performance: medium - Tags: [] - ActionsOnNextBoot: - SecureBoot: none - PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - ex2: - summary: Creating a VM in a Net - value: - Vms: - - VmType: tinav5.c1r1p2 - VmInitiatedShutdownBehavior: stop - State: pending - StateReason: '' - RootDeviceType: ebs - RootDeviceName: /dev/sda1 - IsSourceDestChecked: true - KeypairName: keypair-example - ImageId: ami-12345678 - DeletionProtection: false - BootMode: legacy - TpmEnabled: false - Architecture: x86_64 - NestedVirtualization: false - BlockDeviceMappings: - - DeviceName: /dev/sda1 - Bsu: - VolumeId: vol-12345678 - State: attaching - LinkDate: '2010-10-01T12:34:56.789Z' - DeleteOnVmDeletion: true - VmId: i-12345678 - ReservationId: r-12345678 - Hypervisor: xen - Placement: - Tenancy: default - SubregionName: eu-west-2a - ProductCodes: - - '0001' - CreationDate: '2010-10-01T12:34:56.789Z' - UserData: ... - SubnetId: subnet-12345678 - PrivateIp: 10.0.0.4 - SecurityGroups: - - SecurityGroupName: security-group-example - SecurityGroupId: sg-12345678 - BsuOptimized: false - LaunchNumber: 0 - NetId: vpc-12345678 - Nics: - - SubnetId: subnet-12345678 - State: in-use - LinkNic: - State: attached - DeviceNumber: 0 - LinkNicId: eni-attach-12345678 - DeleteOnVmDeletion: true - IsSourceDestChecked: true - PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal - Description: Primary network interface - AccountId: '123456789012' - SecurityGroups: - - SecurityGroupName: security-group-example - SecurityGroupId: sg-12345678 - MacAddress: A1:B2:C3:D4:E5:F6 - NetId: vpc-12345678 - NicId: eni-12345678 - PrivateIps: - - PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal - PrivateIp: 10.0.0.4 - IsPrimary: true - Performance: high - Tags: [] - ActionsOnNextBoot: - SecureBoot: none - PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - ex3: - summary: Creating a VM with block device mappings - value: - Vms: - - VmType: tinav5.c1r1p2 - VmInitiatedShutdownBehavior: stop - State: pending - StateReason: '' - RootDeviceType: ebs - RootDeviceName: /dev/sda1 - IsSourceDestChecked: true - KeypairName: keypair-example - ImageId: ami-12345678 - DeletionProtection: false - BootMode: legacy - TpmEnabled: false - Architecture: x86_64 - NestedVirtualization: false - BlockDeviceMappings: - - DeviceName: /dev/sda1 - Bsu: - VolumeId: vol-12345678 - State: attaching - LinkDate: '2010-10-01T12:34:56.789Z' - DeleteOnVmDeletion: true - - DeviceName: /dev/sda1 - Bsu: - VolumeId: vol-87654321 - State: attaching - LinkDate: '2010-10-01T12:34:56.789Z' - DeleteOnVmDeletion: true - VmId: i-12345678 - ReservationId: r-12345678 - Hypervisor: xen - Placement: - Tenancy: default - SubregionName: eu-west-2a - ProductCodes: - - '0001' - CreationDate: '2010-10-01T12:34:56.789Z' - UserData: ... - SubnetId: subnet-12345678 - PrivateIp: 10.0.0.4 - SecurityGroups: - - SecurityGroupName: security-group-example - SecurityGroupId: sg-12345678 - BsuOptimized: false - LaunchNumber: 0 - NetId: vpc-12345678 - Nics: - - SubnetId: subnet-12345678 - State: in-use - LinkNic: - State: attached - DeviceNumber: 0 - LinkNicId: eni-attach-12345678 - DeleteOnVmDeletion: true - IsSourceDestChecked: true - PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal - Description: Primary network interface - AccountId: '123456789012' - SecurityGroups: - - SecurityGroupName: security-group-example - SecurityGroupId: sg-12345678 - MacAddress: A1:B2:C3:D4:E5:F6 - NetId: vpc-12345678 - NicId: eni-12345678 - PrivateIps: - - PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal - PrivateIp: 10.0.0.4 - IsPrimary: true - Performance: high - Tags: [] - ActionsOnNextBoot: - SecureBoot: none - PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - ex4: - summary: Creating a VM with a NIC - value: - Vms: - - VmType: tinav5.c1r1p2 - VmInitiatedShutdownBehavior: stop - State: pending - StateReason: '' - RootDeviceType: ebs - RootDeviceName: /dev/sda1 - IsSourceDestChecked: true - KeypairName: keypair-example - ImageId: ami-12345678 - DeletionProtection: false - BootMode: legacy - TpmEnabled: false - Architecture: x86_64 - NestedVirtualization: false - BlockDeviceMappings: - - DeviceName: /dev/sda1 - Bsu: - VolumeId: vol-12345678 - State: attaching - LinkDate: '2010-10-01T12:34:56.789Z' - DeleteOnVmDeletion: true - VmId: i-12345678 - ReservationId: r-12345678 - Hypervisor: xen - Placement: - Tenancy: default - SubregionName: eu-west-2a - ProductCodes: - - '0001' - CreationDate: '2010-10-01T12:34:56.789Z' - UserData: ... - SubnetId: subnet-12345678 - PrivateIp: 10.0.0.4 - SecurityGroups: - - SecurityGroupName: security-group-example - SecurityGroupId: sg-12345678 - BsuOptimized: false - LaunchNumber: 0 - NetId: vpc-12345678 - Nics: - - SubnetId: subnet-12345678 - State: in-use - LinkNic: - State: attached - DeviceNumber: 0 - LinkNicId: eni-attach-12345678 - DeleteOnVmDeletion: true - IsSourceDestChecked: true - PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal - Description: Example NIC - AccountId: '123456789012' - SecurityGroups: - - SecurityGroupName: security-group-example - SecurityGroupId: sg-12345678 - MacAddress: A1:B2:C3:D4:E5:F6 - NetId: vpc-12345678 - NicId: eni-12345678 - PrivateIps: - - PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal - PrivateIp: 10.0.0.4 - IsPrimary: true - Performance: high - Tags: [] - ActionsOnNextBoot: - SecureBoot: none - PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - Vm - /CreateVolume: - post: - description: |- - Creates a Block Storage Unit (BSU) volume in a specified Region.
- BSU volumes can be attached to a virtual machine (VM) in the same Subregion. You can create an empty volume or restore a volume from an existing snapshot.
- You can create the following volume types: Enterprise (`io1`) for provisioned IOPS SSD volumes, Performance (`gp2`) for general purpose SSD volumes, or Magnetic (`standard`) volumes.

- For more information, see [About Volumes](https://docs.outscale.com/en/userguide/About-Volumes.html). - operationId: CreateVolume - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateVolumeRequest' - examples: - ex1: - summary: Creating an io1 volume - value: - VolumeType: io1 - SubregionName: eu-west-2a - Size: 10 - Iops: 100 - ex2: - summary: Creating a volume from a snapshot - value: - SnapshotId: snap-12345678 - VolumeType: gp2 - SubregionName: eu-west-2a - Size: 10 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/CreateVolumeResponse' - examples: - ex1: - summary: Creating an io1 volume - value: - Volume: - VolumeId: vol-12345678 - Tags: [] - VolumeType: io1 - SubregionName: eu-west-2a - State: creating - CreationDate: '2010-10-01T12:34:56.789Z' - Iops: 100 - LinkedVolumes: [] - Size: 10 - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - ex2: - summary: Creating a volume from a snapshot - value: - Volume: - VolumeId: vol-12345678 - Tags: [] - VolumeType: gp2 - SubregionName: eu-west-2a - State: creating - SnapshotId: snap-12345678 - CreationDate: '2010-10-01T12:34:56.789Z' - Iops: 100 - LinkedVolumes: [] - Size: 10 - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - Volume - /CreateVpnConnection: - post: - description: |- - Creates a VPN connection between a specified virtual gateway and a specified client gateway.
- You can create only one VPN connection between a virtual gateway and a client gateway.

- - **[IMPORTANT]**
- This action can be done only if the virtual gateway is in the `available` state.

- For more information, see [About VPN Connections](https://docs.outscale.com/en/userguide/About-VPN-Connections.html). - operationId: CreateVpnConnection - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateVpnConnectionRequest' - examples: - ex1: - value: - ClientGatewayId: cgw-12345678 - VirtualGatewayId: vgw-12345678 - ConnectionType: ipsec.1 - StaticRoutesOnly: true - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/CreateVpnConnectionResponse' - examples: - ex1: - value: - VpnConnection: - Routes: [] - Tags: [] - ClientGatewayConfiguration: ... - StaticRoutesOnly: true - VirtualGatewayId: vgw-12345678 - ConnectionType: ipsec.1 - ClientGatewayId: cgw-12345678 - State: pending - VgwTelemetries: - - StateDescription: IPSEC IS DOWN - AcceptedRouteCount: 0 - LastStateChangeDate: '2017-05-10T12:34:56.789Z' - OutsideIpAddress: 192.0.2.0 - VpnConnectionId: vpn-12345678 - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - VpnConnection - /CreateVpnConnectionRoute: - post: - description: |- - Creates a static route to a VPN connection.
- This enables you to select the network flows sent by the virtual gateway to the target VPN connection.

- For more information, see [About Routing Configuration for VPN Connections](https://docs.outscale.com/en/userguide/About-Routing-Configuration-for-VPN-Connections.html). - operationId: CreateVpnConnectionRoute - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateVpnConnectionRouteRequest' - examples: - ex1: - value: - VpnConnectionId: vpn-12345678 - DestinationIpRange: 10.0.0.0/16 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/CreateVpnConnectionRouteResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - VpnConnection - /DeleteAccessKey: - post: - description: |- - Deletes the specified access key of either the root user or an EIM user.

- The access key of an EIM user must be in the `INACTIVE` state to be deleted. - operationId: DeleteAccessKey - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteAccessKeyRequest' - examples: - ex1: - summary: Deleting one of your own access keys (if you are the root user or an EIM user) - value: - AccessKeyId: ABCDEFGHIJ0123456789 - ex2: - summary: Deleting the access key of a specific EIM user - value: - AccessKeyId: ABCDEFGHIJ0123456789 - UserName: example-user - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteAccessKeyResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - security: - - ApiKeyAuthSec: [] - - BasicAuth: [] - tags: - - AccessKey - /DeleteApiAccessRule: - post: - description: |- - Deletes a specified API access rule.

- - **[IMPORTANT]**
- You cannot delete the last remaining API access rule. However, if you delete all the API access rules that allow you to access the APIs, you need to contact the Support team to regain access. For more information, see [Technical Support](https://docs.outscale.com/en/userguide/Technical-Support.html). - operationId: DeleteApiAccessRule - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteApiAccessRuleRequest' - examples: - ex1: - value: - ApiAccessRuleId: aar-1234567890abcdef1234567890abcdef - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteApiAccessRuleResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - security: - - ApiKeyAuthSec: [] - - BasicAuth: [] - tags: - - ApiAccessRule - /DeleteCa: - post: - description: Deletes a specified Client Certificate Authority (CA). - operationId: DeleteCa - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteCaRequest' - examples: - ex1: - value: - CaId: ca-fedcba0987654321fedcba0987654321 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteCaResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - security: - - ApiKeyAuthSec: [] - - BasicAuth: [] - tags: - - Ca - /DeleteClientGateway: - post: - description: |- - Deletes a client gateway.
- You must delete the VPN connection before deleting the client gateway. - operationId: DeleteClientGateway - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteClientGatewayRequest' - examples: - ex1: - value: - ClientGatewayId: cgw-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteClientGatewayResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - ClientGateway - /DeleteDedicatedGroup: - post: - description: |- - Deletes a specified dedicated group of virtual machines (VMs).
- - **[WARNING]**
- A dedicated group can be deleted only if no VM or Net is in the dedicated group. Otherwise, you need to force the deletion.
- If you force the deletion:
- - all VMs are terminated.
- - all Nets are deleted, and all resources associated with Nets are detached. - operationId: DeleteDedicatedGroup - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteDedicatedGroupRequest' - examples: - ex1: - summary: Deleting a dedicated group without any resource in it. - value: - DedicatedGroupId: ded-12345678 - ex2: - summary: Forcing the deletion of a dedicated group and all resources in it. - value: - DedicatedGroupId: ded-12345678 - Force: true - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteDedicatedGroupResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - DedicatedGroup - /DeleteDhcpOptions: - post: - description: |- - Deletes a specified DHCP options set.
- Before deleting a DHCP options set, you must disassociate it from the Nets you associated it with. To do so, you need to associate with each Net a new set of DHCP options, or the `default` one if you do not want to associate any DHCP options with the Net.

- - **[IMPORTANT]**
- You cannot delete the `default` set. - operationId: DeleteDhcpOptions - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteDhcpOptionsRequest' - examples: - ex1: - value: - DhcpOptionsSetId: dopt-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteDhcpOptionsResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - DhcpOption - /DeleteDirectLink: - post: - description: |- - Deletes a specified DirectLink.
- Before deleting a DirectLink, ensure that all your DirectLink interfaces related to this DirectLink are deleted. - operationId: DeleteDirectLink - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteDirectLinkRequest' - examples: - ex1: - value: - DirectLinkId: dxcon-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteDirectLinkResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - DirectLink - /DeleteDirectLinkInterface: - post: - description: Deletes a specified DirectLink interface. - operationId: DeleteDirectLinkInterface - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteDirectLinkInterfaceRequest' - examples: - ex1: - value: - DirectLinkInterfaceId: dxvif-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteDirectLinkInterfaceResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - DirectLinkInterface - /DeleteExportTask: - post: - description: |- - Deletes an export task.
- If the export task is not in the `active` or `pending` state, the command fails and an error is returned. - operationId: DeleteExportTask - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteExportTaskRequest' - examples: - ex1: - summary: Deleting an image export task - value: - ExportTaskId: image-export-12345678 - ex2: - summary: Deleting a snapshot export task - value: - ExportTaskId: snap-export-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteExportTaskResponse' - examples: - ex1: - summary: Deleting an image export task - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - ex2: - summary: Deleting a snapshot export task - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - Task - /DeleteFlexibleGpu: - post: - description: |- - Releases a flexible GPU (fGPU) from your OUTSCALE account.
- The fGPU becomes free to be used by someone else. - operationId: DeleteFlexibleGpu - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteFlexibleGpuRequest' - examples: - ex1: - value: - FlexibleGpuId: fgpu-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteFlexibleGpuResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - FlexibleGpu - /DeleteImage: - post: - description: Deletes an OUTSCALE machine image (OMI) so that you cannot use it anymore to launch virtual machines (VMs). However, you can still use VMs already launched from this OMI. - operationId: DeleteImage - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteImageRequest' - examples: - ex1: - value: - ImageId: ami-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteImageResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - Image - /DeleteInternetService: - post: - description: |- - Deletes an internet service.
- Before deleting an internet service, you must detach it from any Net it is attached to. - operationId: DeleteInternetService - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteInternetServiceRequest' - examples: - ex1: - value: - InternetServiceId: igw-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteInternetServiceResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - InternetService - /DeleteKeypair: - post: - description: |- - Deletes the specified keypair.
- This action deletes the public key stored by 3DS OUTSCALE, thus deleting the keypair. - operationId: DeleteKeypair - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteKeypairRequest' - examples: - ex1: - summary: Deleting a keypair with its name - value: - KeypairName: keypair-example - ex2: - summary: Deleting a keypair with its ID - value: - KeypairId: key-abcdef1234567890abcdef1234567890 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteKeypairResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - Keypair - /DeleteListenerRule: - post: - description: |- - Deletes a listener rule.
- The previously active rule is disabled after deletion. - operationId: DeleteListenerRule - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteListenerRuleRequest' - examples: - ex1: - value: - ListenerRuleName: example-listener-rule - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteListenerRuleResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - Listener - /DeleteLoadBalancer: - post: - description: Deletes a specified load balancer. - operationId: DeleteLoadBalancer - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteLoadBalancerRequest' - examples: - ex1: - value: - LoadBalancerName: example-lbu - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteLoadBalancerResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - LoadBalancer: - Tags: [] - SourceSecurityGroup: - SecurityGroupName: security-group-example - SecurityGroupAccountId: '123456789012' - SecuredCookies: false - PublicIp: 192.0.2.0 - Subnets: - - subnet-12345678 - NetId: vpc-12345678 - BackendVmIds: [] - ApplicationStickyCookiePolicies: [] - SecurityGroups: - - sg-12345678 - LoadBalancerType: internet-facing - AccessLog: - PublicationInterval: 60 - IsEnabled: false - DnsName: private-lb-example.123456789.eu-west-2.lbu.outscale.com - HealthCheck: - UnhealthyThreshold: 2 - Timeout: 5 - CheckInterval: 30 - Protocol: TCP - HealthyThreshold: 10 - Port: 80 - LoadBalancerStickyCookiePolicies: [] - SubregionNames: - - eu-west-2a - Listeners: - - ServerCertificateId: orn:ows:idauth::012345678910:server-certificate/Certificate - BackendPort: 80 - BackendProtocol: HTTP - LoadBalancerPort: 443 - LoadBalancerProtocol: HTTPS - LoadBalancerName: private-lb-example - description: '' - tags: - - LoadBalancer - /DeleteLoadBalancerListeners: - post: - description: Deletes listeners of a specified load balancer. - operationId: DeleteLoadBalancerListeners - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteLoadBalancerListenersRequest' - examples: - ex1: - value: - LoadBalancerName: example-lbu - LoadBalancerPorts: - - 80 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteLoadBalancerListenersResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - LoadBalancer: - Tags: [] - SourceSecurityGroup: - SecurityGroupName: security-group-example - SecurityGroupAccountId: '123456789012' - SecuredCookies: false - Subnets: - - subnet-12345678 - NetId: vpc-12345678 - BackendVmIds: [] - ApplicationStickyCookiePolicies: [] - SecurityGroups: - - sg-12345678 - LoadBalancerType: internal - AccessLog: - PublicationInterval: 60 - IsEnabled: false - DnsName: internal-example-lbu.123456789.eu-west-2.lbu.outscale.com - HealthCheck: - UnhealthyThreshold: 2 - Timeout: 5 - CheckInterval: 30 - Protocol: TCP - HealthyThreshold: 10 - Port: 80 - LoadBalancerStickyCookiePolicies: [] - SubregionNames: - - eu-west-2a - Listeners: [] - LoadBalancerName: example-lbu - description: '' - tags: - - Listener - /DeleteLoadBalancerPolicy: - post: - description: |- - Deletes a specified policy from a load balancer.
- In order to be deleted, the policy must not be enabled for any listener. - operationId: DeleteLoadBalancerPolicy - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteLoadBalancerPolicyRequest' - examples: - ex1: - value: - LoadBalancerName: example-lbu - PolicyName: example-browser-policy - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteLoadBalancerPolicyResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - LoadBalancer: - Tags: [] - SourceSecurityGroup: - SecurityGroupName: default - SecurityGroupAccountId: '123456789012' - SecuredCookies: false - PublicIp: 192.0.2.0 - Subnets: - - subnet-12345678 - NetId: vpc-12345678 - BackendVmIds: [] - ApplicationStickyCookiePolicies: [] - SecurityGroups: - - sg-12345678 - LoadBalancerType: internet-facing - AccessLog: - PublicationInterval: 60 - IsEnabled: false - DnsName: example-lbu-123456789.eu-west-2.lbu.outscale.com - HealthCheck: - UnhealthyThreshold: 2 - Timeout: 5 - CheckInterval: 30 - Protocol: TCP - HealthyThreshold: 10 - Port: 80 - LoadBalancerStickyCookiePolicies: [] - SubregionNames: - - eu-west-2a - Listeners: - - BackendPort: 80 - BackendProtocol: HTTP - LoadBalancerPort: 80 - LoadBalancerProtocol: HTTP - LoadBalancerName: example-lbu - description: '' - tags: - - LoadBalancerPolicy - /DeleteLoadBalancerTags: - post: - description: Deletes one or more tags from the specified load balancers. - operationId: DeleteLoadBalancerTags - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteLoadBalancerTagsRequest' - examples: - ex1: - value: - LoadBalancerNames: - - example-lbu - Tags: - - Key: key1 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteLoadBalancerTagsResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - LoadBalancer - /DeleteNatService: - post: - description: |- - Deletes a specified network address translation (NAT) service.
- This action disassociates the public IP from the NAT service, but does not release this public IP from your OUTSCALE account. However, it does not delete any NAT service routes in your route tables. - operationId: DeleteNatService - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteNatServiceRequest' - examples: - ex1: - value: - NatServiceId: nat-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteNatServiceResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - NatService - /DeleteNet: - post: - description: |- - Deletes a specified Net.
- Before deleting the Net, you need to delete or detach all the resources associated with the Net:

- - * Virtual machines (VMs)
- * Net peerings
- * Custom route tables
- * Public IPs allocated to resources in the Net
- * Network Interface Cards (NICs) created in the Subnets
- * Virtual gateways, internet services and NAT services
- * Load balancers
- * Security groups
- * Subnets - operationId: DeleteNet - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteNetRequest' - examples: - ex1: - value: - NetId: vpc-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteNetResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - Net - /DeleteNetAccessPoint: - post: - description: |- - Deletes a specified Net access point.
- This action also deletes the corresponding routes added to the route tables you specified for the Net access point. - operationId: DeleteNetAccessPoint - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteNetAccessPointRequest' - examples: - ex1: - value: - NetAccessPointId: vpce-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteNetAccessPointResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - NetAccessPoint - /DeleteNetPeering: - post: - description: |- - Deletes a Net peering.
- If the Net peering is in the `active` state, it can be deleted either by the owner of the requester Net or the owner of the peer Net.
- If it is in the `pending-acceptance` state, it can be deleted only by the owner of the requester Net.
- If it is in the `rejected`, `failed`, or `expired` states, it cannot be deleted. - operationId: DeleteNetPeering - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteNetPeeringRequest' - examples: - ex1: - value: - NetPeeringId: pcx-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteNetPeeringResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '409': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - NetPeering - /DeleteNic: - post: - description: |- - Deletes the specified network interface card (NIC).
- The network interface must not be attached to any virtual machine (VM). - operationId: DeleteNic - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteNicRequest' - examples: - ex1: - value: - NicId: eni-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteNicResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - Nic - /DeletePolicy: - post: - description: |- - Deletes a managed policy.
- Before deleting a managed policy, you must unlink all users linked to it and delete all the versions of the policy, except the default one, using the `DeletePolicyVersion` method. - operationId: DeletePolicy - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DeletePolicyRequest' - examples: - ex1: - value: - PolicyOrn: orn:ows:idauth::012345678910:policy/example/example-user-policy - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/DeletePolicyResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - Policy - /DeletePolicyVersion: - post: - description: |- - Deletes a specified version of a managed policy, if it is not set as the default one. -

- - **[IMPORTANT]**
- A delay of up to 15 seconds can occur when attaching, detaching, or updating a managed policy. - operationId: DeletePolicyVersion - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DeletePolicyVersionRequest' - examples: - ex1: - value: - PolicyOrn: orn:ows:idauth::012345678910:policy/example/example-user-policy - VersionId: v1 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/DeletePolicyVersionResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - Policy - /DeleteProductType: - post: - description: |- - Deletes a specified product type that belongs to you.
- - **[WARNING]**
- The product type must not be associated with one or more OMIs to be deleted. Otherwise, you need to force the deletion.
- If you force the deletion, the product type is deleted and remains associated with the OMIs.
- operationId: DeleteProductType - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteProductTypeRequest' - examples: - ex1: - value: - ProductTypeId: pty-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteProductTypeResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - ProductType - /DeletePublicIp: - post: - description: |- - Releases a public IP.
- You can release a public IP associated with your OUTSCALE account. This address is released in the public IP pool and can be used by someone else. Before releasing a public IP, ensure you updated all your resources communicating with this address. - operationId: DeletePublicIp - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DeletePublicIpRequest' - examples: - ex1: - value: - PublicIp: 192.0.2.0 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/DeletePublicIpResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - PublicIp - /DeleteRoute: - post: - description: Deletes a route from a specified route table. - operationId: DeleteRoute - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteRouteRequest' - examples: - ex1: - value: - RouteTableId: rtb-12345678 - DestinationIpRange: 198.51.100.0/24 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteRouteResponse' - examples: - ex1: - value: - RouteTable: - Routes: - - DestinationIpRange: 10.0.0.0/16 - CreationMethod: CreateRouteTable - State: active - LinkRouteTables: [] - NetId: vpc-12345678 - Tags: [] - RoutePropagatingVirtualGateways: [] - RouteTableId: rtb-12345678 - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - Route - /DeleteRouteTable: - post: - description: |- - Deletes a specified route table.
- Before deleting a route table, you must disassociate it from any Subnet. You cannot delete the main route table. - operationId: DeleteRouteTable - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteRouteTableRequest' - examples: - ex1: - value: - RouteTableId: rtb-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteRouteTableResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - RouteTable - /DeleteSecurityGroup: - post: - description: |- - Deletes a specified security group.
- You can specify either the name of the security group or its ID.
- This action fails if the specified group is associated with a virtual machine (VM) or referenced by another security group. - operationId: DeleteSecurityGroup - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteSecurityGroupRequest' - examples: - ex1: - value: - SecurityGroupId: sg-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteSecurityGroupResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - SecurityGroup - /DeleteSecurityGroupRule: - post: - description: |- - Deletes one or more inbound or outbound rules from a security group.
- For the rule to be deleted, the values specified in the deletion request must exactly match the value of the existing rule.
- In case of TCP and UDP protocols, you have to indicate the destination port or range of ports. In case of ICMP protocol, you have to specify the ICMP type and code numbers.
- Rules (IP permissions) consist of the protocol, IP range or source security group.
- To remove outbound access to a destination security group, we recommend to use a set of IP permissions. We also recommend to specify the protocol in a set of IP permissions.
- - Alternatively, you can use the `Rules` parameter to delete several rules at the same time. - operationId: DeleteSecurityGroupRule - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteSecurityGroupRuleRequest' - examples: - ex1: - summary: Deleting an inbound rule from an IP range - value: - Flow: Inbound - SecurityGroupId: sg-12345678 - FromPortRange: 80 - ToPortRange: 80 - IpProtocol: tcp - IpRange: 10.0.0.0/16 - ex2: - summary: Deleting an inbound rule from another security group - value: - Flow: Inbound - SecurityGroupId: sg-12345678 - Rules: - - FromPortRange: 22 - ToPortRange: 22 - IpProtocol: tcp - SecurityGroupsMembers: - - AccountId: '123456789012' - SecurityGroupName: another-security-group - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteSecurityGroupRuleResponse' - examples: - ex1: - summary: Deleting an inbound rule from an IP range - value: - SecurityGroup: - Tags: [] - SecurityGroupName: security-group-example - OutboundRules: - - FromPortRange: -1 - IpProtocol: '-1' - ToPortRange: -1 - IpRanges: - - 0.0.0.0/0 - SecurityGroupId: sg-12345678 - AccountId: '123456789012' - Description: Example of security group - InboundRules: [] - NetId: vpc-12345678 - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - ex2: - summary: Creating an inbound rule from another security group - value: - SecurityGroup: - Tags: [] - SecurityGroupName: security-group-example - OutboundRules: - - FromPortRange: -1 - IpProtocol: '-1' - ToPortRange: -1 - IpRanges: - - 0.0.0.0/0 - SecurityGroupId: sg-12345678 - AccountId: '123456789012' - Description: Example of security group - InboundRules: [] - NetId: vpc-12345678 - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - SecurityGroupRule - /DeleteServerCertificate: - post: - description: Deletes a specified server certificate. - operationId: DeleteServerCertificate - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteServerCertificateRequest' - examples: - ex1: - value: - Name: server-cert-example - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteServerCertificateResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - ServerCertificate - /DeleteSnapshot: - post: - description: |- - Deletes a specified snapshot.
- You cannot delete a snapshot that is currently used by an OUTSCALE machine image (OMI). To do so, you first need to delete the corresponding OMI. For more information, see the [DeleteImage](#deleteimage) method. - operationId: DeleteSnapshot - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteSnapshotRequest' - examples: - ex1: - value: - SnapshotId: snap-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteSnapshotResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - Snapshot - /DeleteSubnet: - post: - description: |- - Deletes a specified Subnet.
- Before deleting the Subnet, you need to delete all resources associated with the Subnet:

- - * Virtual machines (VMs)
- * Network Interface Cards (NICs)
- * NAT services
- * Load balancers - operationId: DeleteSubnet - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteSubnetRequest' - examples: - ex1: - value: - SubnetId: subnet-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteSubnetResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - Subnet - /DeleteTags: - post: - description: Deletes one or more tags from the specified resources. - operationId: DeleteTags - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteTagsRequest' - examples: - ex1: - value: - ResourceIds: - - i-12345678 - Tags: - - Key: key1 - Value: value1 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteTagsResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - Tag - /DeleteUser: - post: - description: Deletes a specified EIM user. The EIM user must not belong to any group, nor have any key or linked policy. - operationId: DeleteUser - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteUserRequest' - examples: - ex1: - value: - UserName: example-user - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteUserResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - User - /DeleteUserGroup: - post: - description: |- - Deletes a specified user group.
- - **[WARNING]**
- The user group must be empty of any user and must not have any linked policy. Otherwise, you need to force the deletion.
- If you force the deletion, all inline policies will be deleted with the user group.
- operationId: DeleteUserGroup - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteUserGroupRequest' - examples: - ex1: - value: - Force: false - Path: /example/ - UserGroupName: example-usergroup - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteUserGroupResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - UserGroup - /DeleteUserGroupPolicy: - post: - description: |- - Deletes a specified inline policy from a specific group. -

- - **[IMPORTANT]**
- A delay of up to 15 seconds can occur when creating or deleting an inline policy. - operationId: DeleteUserGroupPolicy - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteUserGroupPolicyRequest' - examples: - ex1: - value: - PolicyName: example-usergroup-policy - UserGroupName: example-usergroup - UserGroupPath: /example/ - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteUserGroupPolicyResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - Policy - /DeleteUserPolicy: - post: - description: |- - Deletes a specified inline policy from a specific user. -

- - **[IMPORTANT]**
- A delay of up to 15 seconds can occur when creating or deleting an inline policy. - operationId: DeleteUserPolicy - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteUserPolicyRequest' - examples: - ex1: - value: - PolicyName: example-user-policy - UserName: example-user - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteUserPolicyResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - Policy - /DeleteVirtualGateway: - post: - description: |- - Deletes a specified virtual gateway.
- **[IMPORTANT]**
- Before deleting a virtual gateway, we recommend detaching it from any associated Net, DirectLink, and DirectLink interface, and deleting the VPN connection. - operationId: DeleteVirtualGateway - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteVirtualGatewayRequest' - examples: - ex1: - value: - VirtualGatewayId: vgw-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteVirtualGatewayResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - VirtualGateway - /DeleteVmGroup: - post: - description: |- - > [WARNING]
- > This feature is currently under development and may not function properly.
- - Deletes a specified VM group. - operationId: DeleteVmGroup - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteVmGroupRequest' - examples: - ex1: - value: - VmGroupId: vmgroup-12345678901234567890123456789012 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteVmGroupResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - VmGroup - /DeleteVmTemplate: - post: - description: |- - > [WARNING]
- > This feature is currently under development and may not function properly.
- - Deletes a virtual machine (VM) template.
- You cannot delete a template currently used by a VM group. - operationId: DeleteVmTemplate - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteVmTemplateRequest' - examples: - ex1: - value: - VmTemplateId: vmtemplate-98765432109876543210987654321012 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteVmTemplateResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - VmTemplate - /DeleteVms: - post: - description: |- - Terminates one or more virtual machines (VMs).
- This operation is idempotent, that means that all calls succeed if you terminate a VM more than once. - operationId: DeleteVms - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteVmsRequest' - examples: - ex1: - value: - VmIds: - - i-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteVmsResponse' - examples: - ex1: - value: - Vms: - - VmId: i-12345678 - PreviousState: running - CurrentState: shutting-down - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - Vm - /DeleteVolume: - post: - description: |- - Deletes a specified Block Storage Unit (BSU) volume.
- You can delete available volumes only, that is, volumes that are not attached to a virtual machine (VM). - operationId: DeleteVolume - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteVolumeRequest' - examples: - ex1: - value: - VolumeId: vol-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteVolumeResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - Volume - /DeleteVpnConnection: - post: - description: |- - Deletes a specified VPN connection.
- If you want to delete a Net and all its dependencies, we recommend to detach the virtual gateway from the Net and delete the Net before deleting the VPN connection. This enables you to delete the Net without waiting for the VPN connection to be deleted. - operationId: DeleteVpnConnection - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteVpnConnectionRequest' - examples: - ex1: - value: - VpnConnectionId: vpn-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteVpnConnectionResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - VpnConnection - /DeleteVpnConnectionRoute: - post: - description: Deletes a static route to a VPN connection previously created using the CreateVpnConnectionRoute method. - operationId: DeleteVpnConnectionRoute - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteVpnConnectionRouteRequest' - examples: - ex1: - value: - VpnConnectionId: vpn-12345678 - DestinationIpRange: 10.0.0.0/16 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteVpnConnectionRouteResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - VpnConnection - /DeregisterVmsInLoadBalancer: - post: - description: |- - > [WARNING]
- > Deprecated: This call is deprecated and will be removed.
- - Deregisters a specified virtual machine (VM) from a load balancer. - operationId: DeregisterVmsInLoadBalancer - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DeregisterVmsInLoadBalancerRequest' - examples: - ex1: - value: - LoadBalancerName: example-lbu - BackendVmIds: - - i-12345678 - - i-87654321 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/DeregisterVmsInLoadBalancerResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - LoadBalancer - /DisableOutscaleLogin: - post: - description: Disables the possibility of logging in using the Outscale credentials of your root user when identity federation is activated. - operationId: DisableOutscaleLogin - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DisableOutscaleLoginRequest' - examples: - ex1: - value: {} - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/DisableOutscaleLoginResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - IdentityProvider - /DisableOutscaleLoginForUsers: - post: - description: Disables the possibility of logging in using the Outscale credentials of your EIM users when identity federation is activated. - operationId: DisableOutscaleLoginForUsers - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DisableOutscaleLoginRequest' - examples: - ex1: - value: {} - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/DisableOutscaleLoginResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - IdentityProvider - /DisableOutscaleLoginPerUsers: - post: - description: Disables the possibility for one or more specific users to log in using their Outscale credentials when identity federation is activated. - operationId: DisableOutscaleLoginPerUsers - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DisableOutscaleLoginPerUsersRequest' - examples: - ex1: - value: - UserNames: - - example-user - - test-user - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/DisableOutscaleLoginPerUsersResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - IdentityProvider - /EnableOutscaleLogin: - post: - description: Enables the possibility of logging in using the Outscale credentials of your root user when identity federation is activated. - operationId: EnableOutscaleLogin - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/EnableOutscaleLoginRequest' - examples: - ex1: - value: {} - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/EnableOutscaleLoginResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - IdentityProvider - /EnableOutscaleLoginForUsers: - post: - description: Enables the possibility for all your EIM users to log in using their Outscale credentials when identity federation is activated. - operationId: EnableOutscaleLoginForUsers - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/EnableOutscaleLoginForUsersRequest' - examples: - ex1: - value: {} - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/EnableOutscaleLoginForUsersResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - IdentityProvider - /EnableOutscaleLoginPerUsers: - post: - description: Enables the possibility for one or more specific users to log in using their Outscale credentials when identity federation is activated. - operationId: EnableOutscaleLoginPerUsers - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/EnableOutscaleLoginPerUsersRequest' - examples: - ex1: - value: - UserNames: - - example-user - - test-user - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/EnableOutscaleLoginPerUsersResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - IdentityProvider - /LinkFlexibleGpu: - post: - description: |- - Attaches one of your allocated flexible GPUs (fGPUs) to one of your virtual machines (VMs).
- To complete the linking of the fGPU, you need to do a stop/start of the VM. A simple restart is not sufficient, as the linking of the fGPU is done when the VM goes through the `stopped` state. For the difference between stop/start and restart, see [About VM Lifecycle](https://docs.outscale.com/en/userguide/About-VM-Lifecycle.html).

- - **[NOTE]**
- You can attach fGPUs only to VMs with the `highest` (1) performance flag. For more information see [About Flexible GPUs](https://docs.outscale.com/en/userguide/About-Flexible-GPUs.html) and [VM Types](https://docs.outscale.com/en/userguide/VM-Types.html). - operationId: LinkFlexibleGpu - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/LinkFlexibleGpuRequest' - examples: - ex1: - value: - FlexibleGpuId: fgpu-12345678 - VmId: i-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/LinkFlexibleGpuResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - FlexibleGpu - /LinkInternetService: - post: - description: |- - Attaches an internet service to a Net.
- To enable the connection between the Internet and a Net, you must attach an internet service to this Net. - operationId: LinkInternetService - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/LinkInternetServiceRequest' - examples: - ex1: - value: - InternetServiceId: igw-12345678 - NetId: vpc-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/LinkInternetServiceResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - InternetService - /LinkLoadBalancerBackendMachines: - post: - description: |- - Attaches one or more virtual machines (VMs) to a specified load balancer. You need to specify at least the `BackendIps` or the `BackendVmIds` parameter.
- The VMs can be in different Subnets and different Subregions than the load balancer, as long as the VMs and load balancers are all in the public Cloud or all in the same Net. It may take a little time for a VM to be registered with the load balancer. Once the VM is registered with a load balancer, it receives traffic and requests from this load balancer and is called a backend VM. - operationId: LinkLoadBalancerBackendMachines - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/LinkLoadBalancerBackendMachinesRequest' - examples: - ex1: - summary: Linking VMs to a load balancer - value: - LoadBalancerName: example-lbu - BackendVmIds: - - i-12345678 - - i-87654321 - ex2: - summary: Linking public IPs to a load balancer - value: - LoadBalancerName: example-lbu - BackendIps: - - 192.0.2.0 - - 198.51.100.0 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/LinkLoadBalancerBackendMachinesResponse' - examples: - ex1: - summary: Linking VMs to a load balancer - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - ex2: - summary: Linking public IPs to a load balancer - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - LoadBalancer - /LinkManagedPolicyToUserGroup: - post: - description: |- - Links a managed policy to a specific group. This policy applies to all the users contained in this group. -

- - **[IMPORTANT]**
- A delay of up to 15 seconds can occur when attaching, detaching, or updating a managed policy. - operationId: LinkManagedPolicyToUserGroup - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/LinkManagedPolicyToUserGroupRequest' - examples: - ex1: - value: - PolicyOrn: orn:ows:idauth::012345678910:policy/example/example-user-policy - UserGroupName: example-usergroup - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/LinkManagedPolicyToUserGroupResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - Policy - /LinkNic: - post: - description: |- - Attaches a network interface card (NIC) to a virtual machine (VM).
- The interface and the VM must be in the same Subregion. The VM can be either `running` or `stopped`. The NIC must be in the `available` state. For more information, see [Attaching a NIC to a VM](https://docs.outscale.com/en/userguide/Attaching-a-NIC-to-a-VM.html). - operationId: LinkNic - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/LinkNicRequest' - examples: - ex1: - value: - NicId: eni-12345678 - VmId: i-12345678 - DeviceNumber: 1 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/LinkNicResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - LinkNicId: eni-attach-12345678 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - Nic - /LinkPolicy: - post: - description: |- - Links a managed policy to a specific user. -

- - **[IMPORTANT]**
- A delay of up to 15 seconds can occur when attaching, detaching, or updating a managed policy. - operationId: LinkPolicy - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/LinkPolicyRequest' - examples: - ex1: - value: - PolicyOrn: orn:ows:idauth::012345678910:policy/example/example-user-policy - UserName: example-user - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/LinkPolicyResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - Policy - /LinkPrivateIps: - post: - description: Assigns one or more secondary private IPs to a specified network interface card (NIC). This action is only available in a Net. The private IPs to be assigned can be added individually using the `PrivateIps` parameter, or you can specify the number of private IPs to be automatically chosen within the Subnet range using the `SecondaryPrivateIpCount` parameter. You can specify only one of these two parameters. If none of these parameters are specified, a private IP is chosen within the Subnet range. - operationId: LinkPrivateIps - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/LinkPrivateIpsRequest' - examples: - ex1: - summary: Linking specific secondary private IPs to a NIC - value: - NicId: eni-12345678 - PrivateIps: - - 10.0.0.6 - - 10.0.0.7 - ex2: - summary: Linking a number of random secondary private IPs to a NIC - value: - NicId: eni-12345678 - SecondaryPrivateIpCount: 3 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/LinkPrivateIpsResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - Nic - /LinkPublicIp: - post: - description: |- - Associates a public IP with a virtual machine (VM) or a network interface card (NIC), in the public Cloud or in a Net. You can associate a public IP with only one VM or network interface at a time.
- To associate a public IP in a Net, ensure that the Net has an internet service attached. For more information, see the [LinkInternetService](#linkinternetservice) method.
- By default, the public IP is disassociated every time you stop and start the VM. For a persistent association, you can add the `osc.fcu.eip.auto-attach` tag to the VM with the public IP as value. For more information, see the [CreateTags](#createtags) method.

- - **[IMPORTANT]**
- You can associate a public IP with a network address translation (NAT) service only when creating the NAT service. To modify its public IP, you need to delete the NAT service and re-create it with the new public IP. For more information, see the [CreateNatService](#createnatservice) method. - operationId: LinkPublicIp - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/LinkPublicIpRequest' - examples: - ex1: - summary: Linking a public IP to a VM - value: - PublicIp: 192.0.2.0 - VmId: i-12345678 - ex2: - summary: Linking a public IP to a NIC - value: - PublicIp: 192.0.2.0 - NicId: eni-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/LinkPublicIpResponse' - examples: - ex1: - summary: Linking a public IP to a VM - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - LinkPublicIpId: eipassoc-12345678 - ex2: - summary: Linking a public IP to a NIC - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - LinkPublicIpId: eipassoc-12345678 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - PublicIp - /LinkRouteTable: - post: - description: |- - Associates a Subnet with a route table.
- The Subnet and the route table must be in the same Net. The traffic is routed according to the route table defined within this Net. You can associate a route table with several Subnets. - operationId: LinkRouteTable - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/LinkRouteTableRequest' - examples: - ex1: - value: - RouteTableId: rtb-12345678 - SubnetId: subnet-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/LinkRouteTableResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - LinkRouteTableId: rtbassoc-12345678 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - RouteTable - /LinkVirtualGateway: - post: - description: |- - Attaches a virtual gateway to a Net. - - **[IMPORTANT]**
- This action can be done only if the virtual gateway is in the `available` state. - operationId: LinkVirtualGateway - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/LinkVirtualGatewayRequest' - examples: - ex1: - value: - VirtualGatewayId: vgw-12345678 - NetId: vpc-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/LinkVirtualGatewayResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - NetToVirtualGatewayLink: - State: attached - NetId: vpc-12345678 - description: '' - tags: - - VirtualGateway - /LinkVolume: - post: - description: |- - Attaches a Block Storage Unit (BSU) volume to a virtual machine (VM).
- The volume and the VM must be in the same Subregion. The VM can be running or stopped. The volume is attached to the specified VM device. - operationId: LinkVolume - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/LinkVolumeRequest' - examples: - ex1: - value: - VolumeId: vol-12345678 - VmId: i-12345678 - DeviceName: /dev/sdb - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/LinkVolumeResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - Volume - /PutUserGroupPolicy: - post: - description: |- - Creates or updates an inline policy included in a specified group.
- The policy is automatically applied to all the users of the group after its creation. -

- - **[IMPORTANT]**
- A delay of up to 15 seconds can occur when creating or deleting an inline policy. - operationId: PutUserGroupPolicy - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/PutUserGroupPolicyRequest' - examples: - ex1: - value: - PolicyDocument: '{"Statement": [ {"Effect": "Allow", "Action": ["*"], "Resource": ["*"]} ]}' - PolicyName: example-usergroup-policy - UserGroupName: example-usergroup - UserGroupPath: /example/ - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/PutUserGroupPolicyResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - Policy - /PutUserPolicy: - post: - description: |- - Creates or updates an inline policy included in a specified user.
- The policy is automatically applied to the user after its creation. -

- - **[IMPORTANT]**
- A delay of up to 15 seconds can occur when creating or deleting an inline policy. - operationId: PutUserPolicy - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/PutUserPolicyRequest' - examples: - ex1: - value: - PolicyDocument: '{"Statement": [ {"Effect": "Allow", "Action": ["*"], "Resource": ["*"]} ]}' - PolicyName: example-user-policy - UserName: example-user - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/PutUserPolicyResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - Policy - /ReadAccessKeys: - post: - description: Lists the access key IDs of either your root user or an EIM user. - operationId: ReadAccessKeys - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadAccessKeysRequest' - examples: - ex1: - value: - Filters: - States: - - ACTIVE - Tag: Group1 - UserName: example-user - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadAccessKeysResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - AccessKeys: - - State: ACTIVE - AccessKeyId: ABCDEFGHIJ0123456789 - CreationDate: 2010-10-01T12:34:56.789+0000 - ExpirationDate: 2063-04-05T00:00:00.000+0000 - LastModificationDate: 2010-10-01T12:34:56.789+0000 - Tag: Group1 - description: '' - security: - - ApiKeyAuthSec: [] - - BasicAuth: [] - tags: - - AccessKey - /ReadAccounts: - post: - description: Gets information about the account that sent the request. - operationId: ReadAccounts - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadAccountsRequest' - examples: - ex1: - value: {} - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadAccountsResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - Accounts: - - ZipCode: '92210' - CompanyName: EXAMPLE SAS - FirstName: JEAN - City: SAINT-CLOUD - Country: FRANCE - LastName: DUPONT - AccountId: '123456789012' - CustomerId: '87654321' - Email: example@example.com - description: '' - tags: - - Account - /ReadAdminPassword: - post: - description: |- - Gets the administrator password for a Windows running virtual machine (VM).
- The administrator password is encrypted using the keypair you specified when launching the VM.

- - **[IMPORTANT]**
- * Only RSA keypairs can decrypt the password of a Windows VM.
- * The administrator password is generated only on the first boot of the Windows VM. It is not returned after the first boot. - operationId: ReadAdminPassword - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadAdminPasswordRequest' - examples: - ex1: - value: - VmId: i-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadAdminPasswordResponse' - examples: - ex1: - value: - VmId: i-12345678 - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - AdminPassword: ... - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - Vm - /ReadApiAccessPolicy: - post: - description: |- - Gets information about the API access policy of your OUTSCALE account.

- For more information, see [About Your API Access Policy](https://docs.outscale.com/en/userguide/About-Your-API-Access-Policy.html). - operationId: ReadApiAccessPolicy - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadApiAccessPolicyRequest' - examples: - ex1: - value: {} - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadApiAccessPolicyResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - ApiAccessPolicy: - RequireTrustedEnv: false - MaxAccessKeyExpirationSeconds: 0 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - security: - - ApiKeyAuthSec: [] - - BasicAuth: [] - tags: - - ApiAccessPolicy - /ReadApiAccessRules: - post: - description: Lists one or more API access rules. - operationId: ReadApiAccessRules - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadApiAccessRulesRequest' - examples: - ex1: - value: - Filters: - ApiAccessRuleIds: - - aar-1234567890abcdef1234567890abcdef - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadApiAccessRulesResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - ApiAccessRules: - - IpRanges: - - 0.0.0.0/0 - ApiAccessRuleId: aar-1234567890abcdef1234567890abcdef - CaIds: [] - Cns: [] - Description: Allows all IPv4 domain - description: '' - security: - - ApiKeyAuthSec: [] - - BasicAuth: [] - tags: - - ApiAccessRule - /ReadApiLogs: - post: - description: |- - Lists the logs of the API calls you have performed with this OUTSCALE account. - - **[IMPORTANT]**
- Past logs are accessible for up to 32 days.
- By default, the retrieved interval is 48 hours. If neither of the `QueryDateBefore` nor `QueryDateAfter` parameters are specified, logs from the past 48 hours are retrieved. If you only specify one of two, logs are retrieved from a 2-day interval based on the date you provided. To retrieve logs beyond a 2-day interval, specify both parameters.

- For more information, see [About OMS](https://docs.outscale.com/en/userguide/About-OMS.html). - operationId: ReadApiLogs - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadApiLogsRequest' - examples: - ex1: - value: - Filters: - QueryIpAddresses: - - 192.0.2.0 - - 198.51.100.0 - QueryDateAfter: '2017-05-10' - QueryDateBefore: '2017-05-10' - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadApiLogsResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - Logs: - - ResponseStatusCode: 200 - ResponseSize: 1887 - QueryPayloadRaw: '{}' - QueryApiName: oapi - QueryIpAddress: 192.0.2.0 - QueryUserAgent: oAPI CLI v0.1 - 2018-09-28 - CallDuration: 47 - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - QueryApiVersion: '1.27' - AccountId: '123456789012' - QueryPayloadSize: 2 - QueryCallName: ReadAccessKeys - QueryAccessKey: ABCDEFGHIJ0123456789 - QueryHeaderSize: 287 - QueryDate: '2017-05-10T12:34:56.789Z' - QueryHeaderRaw: 'Host: api.eu-west-2.outscale.com\nAccept: */*\nConnection: close\nUser-Agent: oAPI CLI v0.1 - 2018-09-28\nX-Osc-Date: 20170510T000000Z\nContent-Type: application/json; charset=utf-8\nAuthorization: *****\nContent-Length: 2\nAccept-Encoding: gzip, deflate\nX-Forwarded-For: 192.0.2.0' - description: '' - tags: - - ApiLog - /ReadCO2EmissionAccount: - post: - description: Gets information about the estimated carbon footprint of your account for the current Region within the specified time period. - operationId: ReadCO2EmissionAccount - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadCO2EmissionAccountRequest' - examples: - ex1: - value: - FromMonth: '2025-05-01' - ToMonth: '2025-06-01' - Overall: true - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadCO2EmissionAccountResponse' - examples: - ex1: - value: - Unit: KG - Value: 2.469 - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - CO2EmissionEntries: - - Value: 2.469 - AccountId: '123456789012' - CategoryDistribution: - - Value: 1.2345 - Category: compute - Month: '2025-05-01' - PayingAccountId: '123456789012' - FactorDistribution: - - Value: 1.2345 - Factor: electricity - description: '' - tags: - - Account - /ReadCas: - post: - description: Gets information about one or more of your Client Certificate Authorities (CAs). - operationId: ReadCas - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadCasRequest' - examples: - ex1: - value: - Filters: - CaIds: - - ca-fedcba0987654321fedcba0987654321 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadCasResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - Cas: - - Description: CA example - CaId: ca-fedcba0987654321fedcba0987654321 - CaFingerprint: 1234567890abcdef1234567890abcdef12345678 - description: '' - security: - - ApiKeyAuthSec: [] - - BasicAuth: [] - tags: - - Ca - /ReadCatalog: - post: - description: Returns the price list of OUTSCALE services for the current Region. - operationId: ReadCatalog - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadCatalogRequest' - examples: - ex1: - value: {} - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadCatalogResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - Catalog: - Entries: - - UnitPrice: 0.04 - Type: CustomCore:v5-p1 - Title: Instance - On demand - Unite de vCore pour une instance Tina v5 CxRy Performance highest - par heure - SubregionName: eu-west-2 - Category: compute - Service: TinaOS-FCU - Operation: RunInstances-OD - description: '' - tags: - - Catalog - /ReadCatalogs: - post: - description: Returns the price list of OUTSCALE services for the current Region within a specific time period. - operationId: ReadCatalogs - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadCatalogsRequest' - examples: - ex1: - value: - Filters: - CurrentCatalogOnly: true - FromDate: '2021-01-01' - ToDate: '2023-01-01' - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadCatalogsResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - Catalogs: - - State: CURRENT - FromDate: 2021-01-01T00:00:00.000+0000 - Entries: - - UnitPrice: 0.04 - Type: CustomCore:v5-p1 - Title: Instance - On demand - Unite de vCore pour une instance Tina v5 CxRy Performance highest - par heure - SubregionName: eu-west-2 - Category: compute - Service: TinaOS-FCU - Operation: RunInstances-OD - description: '' - tags: - - Catalog - /ReadClientGateways: - post: - description: Lists one or more of your client gateways. - operationId: ReadClientGateways - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadClientGatewaysRequest' - examples: - ex1: - value: - Filters: - ClientGatewayIds: - - cgw-12345678 - ex2: - value: - Filters: - BgpAsns: - - 65000 - PublicIps: - - 192.0.2.0 - - 198.51.100.0 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadClientGatewaysResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - ClientGateways: - - State: available - BgpAsn: 65000 - Tags: [] - ClientGatewayId: cgw-12345678 - ConnectionType: ipsec.1 - PublicIp: 192.0.2.0 - description: '' - tags: - - ClientGateway - /ReadConsoleOutput: - post: - description: |- - Gets the console output for a virtual machine (VM). This console is not in real-time. It is refreshed every two seconds and provides the most recent 64 KiB output.

- - **[IMPORTANT]**
- On Windows VMs, the console is handled only on the first boot. It returns no output after the first boot. - operationId: ReadConsoleOutput - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadConsoleOutputRequest' - examples: - ex1: - value: - VmId: i-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadConsoleOutputResponse' - examples: - ex1: - value: - VmId: i-12345678 - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - ConsoleOutput: ... - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - Vm - /ReadConsumptionAccount: - post: - description: Gets information about the consumption of your OUTSCALE account for each billable resource within the specified time period. - operationId: ReadConsumptionAccount - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadConsumptionAccountRequest' - examples: - ex1: - value: - FromDate: '2023-06-01' - ToDate: '2023-07-01' - ShowPrice: false - ShowResourceDetails: false - ex2: - value: - FromDate: '2023-06-01' - ToDate: '2023-07-01' - ShowPrice: true - ShowResourceDetails: true - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadConsumptionAccountResponse' - examples: - ex1: - summary: ReadConsumptionAccount with ShowPrice and ShowResourceDetails at false - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - ConsumptionEntries: - - UnitPrice: 0.18 - Type: BoxUsage:tinav5.c4r8p2 - - FromDate: 2023-06-01T00:00:00.000+0000 - SubregionName: eu-west-2a - Value: 1488 - Title: Instance - On demand - tinav5.c4r8 high performance - par heure - Category: compute - ToDate: 2023-06-30T00:00:00.000+0000 - Service: TinaOS-FCU - AccountId: '123456789012' - PayingAccountId: '123456789012' - Operation: RunInstances-OD - Type: BoxUsage:tinav5.c4r8p2 - ex2: - summary: ReadConsumptionAccount with ShowPrice and ShowResourceDetails at true - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - Currency: EUR - ConsumptionEntries: - - FromDate: 2023-06-01T00:00:00.000+0000 - SubregionName: eu-west-2a - Value: 720 - Title: Instance - On demand - tinav5.c4r8 high performance - par heure - Category: compute - ToDate: 2023-06-30T00:00:00.000+0000 - Service: TinaOS-FCU - AccountId: '123456789012' - PayingAccountId: '123456789012' - Operation: RunInstances-OD - Type: BoxUsage:tinav5.c4r8p2 - UnitPrice: 0.18 - Price: 267.84 - ResourceId: i-12345678 - - FromDate: 2023-06-01T00:00:00.000+0000 - SubregionName: eu-west-2a - Value: 1488 - Title: Instance - On demand - tinav5.c4r8p2 high performance - par heure - Category: compute - ToDate: 2023-06-30T00:00:00.000+0000 - Service: TinaOS-FCU - AccountId: '123456789012' - PayingAccountId: '123456789012' - Operation: RunInstances-OD - Type: BoxUsage:tinav5.c4r8p2 - UnitPrice: 0.18 - Price: 267.84 - ResourceId: i-87654321 - description: '' - tags: - - Account - /ReadDedicatedGroups: - post: - description: List one or more dedicated groups of virtual machines (VMs). - operationId: ReadDedicatedGroups - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadDedicatedGroupsRequest' - examples: - ex1: - summary: Filtering on a specific dedicated group - value: - Filters: - DedicatedGroupIds: - - ded-12345678 - ex2: - summary: Filtering on a specific Subregion and CPU generation - value: - Filters: - SubregionNames: - - eu-west-2a - CpuGenerations: - - 4 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadDedicatedGroupsResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - DedicatedGroups: - - VmIds: - - i-12345678 - NetIds: [] - AccountId: '123456789012' - CpuGeneration: 4 - Name: dedicated-group-example - SubregionName: eu-west-2a - DedicatedGroupId: ded-12345678 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - DedicatedGroup - /ReadDhcpOptions: - post: - description: Gets information about the content of one or more DHCP options sets. - operationId: ReadDhcpOptions - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadDhcpOptionsRequest' - examples: - ex1: - value: - Filters: - DhcpOptionsSetIds: - - dopt-12345678 - ex2: - value: - Filters: - DomainNameServers: - - 192.0.2.0 - - 198.51.100.0 - DomainNames: - - example.com - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadDhcpOptionsResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - DhcpOptionsSets: - - Tags: [] - NtpServers: - - 203.0.113.0 - - 203.0.113.1 - Default: false - DhcpOptionsSetId: dopt-12345678 - DomainName: example.com - DomainNameServers: - - 192.0.2.0 - - 198.51.100.0 - description: '' - tags: - - DhcpOption - /ReadDirectLinkInterfaces: - post: - description: Lists one or more of your DirectLink interfaces. - operationId: ReadDirectLinkInterfaces - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadDirectLinkInterfacesRequest' - examples: - ex1: - value: - Filters: - DirectLinkInterfaceIds: - - dxvif-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadDirectLinkInterfacesResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - DirectLinkInterfaces: - - Vlan: 101 - OutscalePrivateIp: 172.16.0.4/30 - DirectLinkInterfaceId: dxvif-12345678 - BgpAsn: 65000 - AccountId: '123456789012' - ClientPrivateIp: 172.16.0.5/30 - VirtualGatewayId: vgw-12345678 - DirectLinkInterfaceName: MyDirectLinkInterface - DirectLinkId: dxcon-12345678 - Mtu: 1500 - State: available - InterfaceType: private - Location: PAR1 - description: '' - tags: - - DirectLinkInterface - /ReadDirectLinks: - post: - description: Lists all DirectLinks in the Region. - operationId: ReadDirectLinks - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadDirectLinksRequest' - examples: - ex1: - value: - Filters: - DirectLinkIds: - - dxcon-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadDirectLinksResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - DirectLinks: - - AccountId: '123456789012' - Bandwidth: 1Gbps - DirectLinkId: dxcon-12345678 - DirectLinkName: Connection to Outscale - Location: PAR1 - RegionName: eu-west-2 - State: available - description: '' - tags: - - DirectLink - /ReadEntitiesLinkedToPolicy: - post: - description: Lists all entities (account, users, or user groups) linked to a specific managed policy. - operationId: ReadEntitiesLinkedToPolicy - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadEntitiesLinkedToPolicyRequest' - examples: - ex1: - summary: Reading all entities linked to a specific policy - value: - PolicyOrn: orn:ows:idauth::012345678910:policy/example/example-user-policy - ResultsPerPage: 2 - ex2: - summary: Reading only users linked to a specific policy - value: - EntitiesType: - - USER - PolicyOrn: orn:ows:idauth::012345678910:policy/example/example-user-policy - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadEntitiesLinkedToPolicyResponse' - examples: - ex1: - summary: Reading all entities linked to a specific policy - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - PolicyEntities: - Users: - - Id: ABCDEFGHIJKLMNOPQRSTUVWXYZ12345 - Name: example-user - Orn: orn:ows:idauth::012345678910:user/example/user-example - Groups: - - Id: ug-12345678 - Name: example-usergroup - Orn: orn:ows:idauth::012345678910:usergroup/example/usergroup-example - HasMoreItems: true - ItemsCount: 3 - MaxResultsLimit: 100 - MaxResultsTruncated: false - ex2: - summary: Reading only users linked to a specific policy - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - PolicyEntities: - Users: - - Id: ABCDEFGHIJKLMNOPQRSTUVWXYZ12345 - Name: example-user - Orn: orn:ows:idauth::012345678910:user/example/user-example - description: '' - tags: - - Policy - /ReadFlexibleGpuCatalog: - post: - description: Lists all flexible GPUs available in the public catalog. - operationId: ReadFlexibleGpuCatalog - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadFlexibleGpuCatalogRequest' - examples: - ex1: - value: {} - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadFlexibleGpuCatalogResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - FlexibleGpuCatalog: - - VRam: 16000 - Generations: - - v5 - MaxCpu: 80 - MaxRam: 512 - ModelName: nvidia-p100 - description: '' - security: [] - tags: - - FlexibleGpu - /ReadFlexibleGpus: - post: - description: Lists one or more flexible GPUs (fGPUs) allocated to your OUTSCALE account. - operationId: ReadFlexibleGpus - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadFlexibleGpusRequest' - examples: - ex1: - value: - Filters: - FlexibleGpuIds: - - fgpu-12345678 - ex2: - value: - Filters: - ModelNames: - - nvidia-p6 - - nvidia-p100 - States: - - attached - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadFlexibleGpusResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - FlexibleGpus: - - DeleteOnVmDeletion: true - FlexibleGpuId: fgpu-12345678 - Generation: v5 - ModelName: nvidia-p100 - State: attached - SubregionName: eu-west-2a - VmId: i-12345678 - Tags: [] - description: '' - tags: - - FlexibleGpu - /ReadImageExportTasks: - post: - description: Lists one or more image export tasks. - operationId: ReadImageExportTasks - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadImageExportTasksRequest' - examples: - ex1: - value: - Filters: - TaskIds: - - image-export-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadImageExportTasksResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - ImageExportTasks: - - Tags: [] - ImageId: ami-12345678 - TaskId: image-export-12345678 - Comment: Export of image ami-12345678 - OsuExport: - OsuPrefix: PREFIX/ami-12345678/ - OsuBucket: BUCKET - DiskImageFormat: qcow2 - State: pending/queued - Progress: 0 - description: '' - tags: - - Image - /ReadImages: - post: - description: Lists one or more OUTSCALE machine images (OMIs) you can use. - operationId: ReadImages - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadImagesRequest' - examples: - ex1: - summary: Reading a specific image - value: - Filters: - ImageIds: - - ami-12345678 - ex2: - summary: Reading Ubuntu and RockyLinux images created by Outscale - value: - Filters: - AccountAliases: - - Outscale - ImageNames: - - Ubuntu* - - RockyLinux* - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadImagesResponse' - examples: - ex1: - summary: Reading a specific image - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - Images: - - TpmMandatory: false - StateComment: {} - State: available - RootDeviceType: bsu - RootDeviceName: /dev/sda1 - ProductCodes: - - '0001' - PermissionsToLaunch: - GlobalPermission: false - AccountIds: [] - AccountId: '123456789012' - Tags: [] - Description: '' - ImageId: ami-12345678 - BlockDeviceMappings: - - DeviceName: /dev/sda1 - Bsu: - VolumeType: standard - DeleteOnVmDeletion: true - VolumeSize: 50 - SnapshotId: snap-12345678 - BootModes: - - legacy - ImageType: machine - CreationDate: '2010-10-01T12:34:56.789Z' - SecureBoot: false - FileLocation: 123456789012/create-image-example - Architecture: x86_64 - ImageName: create-image-example - ex2: - summary: Reading Ubuntu and RockyLinux images created by Outscale - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - Images: - - TpmMandatory: false - StateComment: {} - State: available - RootDeviceType: bsu - RootDeviceName: /dev/sda1 - ProductCodes: - - '0001' - PermissionsToLaunch: - GlobalPermission: true - AccountIds: [] - AccountId: '123456789012' - Tags: [] - Description: '' - ImageId: ami-12345678 - BlockDeviceMappings: - - DeviceName: /dev/sda1 - Bsu: - VolumeType: standard - DeleteOnVmDeletion: true - VolumeSize: 10 - SnapshotId: snap-12345678 - ImageType: machine - AccountAlias: Outscale - CreationDate: '2010-10-01T12:34:56.789Z' - FileLocation: Outscale/Ubuntu-2010.10.01-0 - Architecture: x86_64 - ImageName: Ubuntu-2010.10.01-0 - - TpmMandatory: false - StateComment: {} - State: available - RootDeviceType: bsu - RootDeviceName: /dev/sda1 - ProductCodes: - - '0001' - PermissionsToLaunch: - GlobalPermission: true - AccountIds: [] - AccountId: '123456789012' - Tags: [] - Description: '' - ImageId: ami-12345678 - BlockDeviceMappings: - - DeviceName: /dev/sda1 - Bsu: - VolumeType: standard - DeleteOnVmDeletion: true - VolumeSize: 10 - SnapshotId: snap-12345678 - ImageType: machine - AccountAlias: Outscale - CreationDate: '2010-10-01T12:34:56.789Z' - BootModes: - - legacy - SecureBoot: false - FileLocation: Outscale/RockyLinux-2010.10.01-0 - Architecture: x86_64 - ImageName: RockyLinux-2010.10.01-0 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - Image - /ReadInternetServices: - post: - description: |- - Lists one or more of your internet services.
- An internet service enables virtual machines (VMs) launched in a Net to connect to the Internet. It allows the routing of incoming and outgoing Internet traffic and management of public IPs. - operationId: ReadInternetServices - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadInternetServicesRequest' - examples: - ex1: - value: - Filters: - InternetServiceIds: - - igw-12345678 - ex2: - value: - Filters: - TagKeys: - - env - TagValues: - - prod - - test - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadInternetServicesResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - InternetServices: - - Tags: - - Value: prod - Key: env - State: available - NetId: vpc-12345678 - InternetServiceId: igw-12345678 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - InternetService - /ReadKeypairs: - post: - description: Lists one or more of your keypairs. - operationId: ReadKeypairs - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadKeypairsRequest' - examples: - ex1: - value: - Filters: - KeypairNames: - - keypair-example - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadKeypairsResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - Keypairs: - - KeypairType: ssh-rsa - KeypairName: keypair-example - KeypairId: key-abcdef1234567890abcdef1234567890 - KeypairFingerprint: 11:22:33:44:55:66:77:88:99:00:aa:bb:cc:dd:ee:ff - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - Keypair - /ReadLinkedPolicies: - post: - description: Lists the managed policies linked to a specified user. - operationId: ReadLinkedPolicies - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadLinkedPoliciesRequest' - examples: - ex1: - value: - Filters: - PathPrefix: /example/ - FirstItem: 1 - ResultsPerPage: 30 - UserName: example-user - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadLinkedPoliciesResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - HasMoreItems: true - Policies: - - PolicyName: example-user-policy - CreationDate: 2010-10-01T12:34:56.789+0000 - LastModificationDate: 2010-10-01T12:34:56.789+0000 - Orn: orn:ows:idauth::012345678910:policy/example/example-user-policy - PolicyId: ABCDEFGHIJKLMNOPQRSTUVWXYZ01234 - MaxResultsLimit: 30 - MaxResultsTruncated: false - description: '' - tags: - - Policy - /ReadListenerRules: - post: - description: Lists one or more listener rules. By default, this action returns the full list of listener rules for the OUTSCALE account. - operationId: ReadListenerRules - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadListenerRulesRequest' - examples: - ex1: - value: - Filters: - ListenerRuleNames: - - example-listener-rule - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadListenerRulesResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - ListenerRules: - - Priority: 10 - VmIds: - - i-12345678 - ListenerRuleName: example-listener-rule - Action: forward - ListenerId: 123456 - HostNamePattern: '*.example.com' - ListenerRuleId: 1234 - description: '' - tags: - - Listener - /ReadLoadBalancerTags: - post: - description: Lists the tags associated with one or more specified load balancers. - operationId: ReadLoadBalancerTags - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadLoadBalancerTagsRequest' - examples: - ex1: - value: - LoadBalancerNames: - - private-lb-example - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadLoadBalancerTagsResponse' - examples: - ex1: - value: - Tags: - - Value: value1 - LoadBalancerName: private-lb-example - Key: key1 - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - LoadBalancer - /ReadLoadBalancers: - post: - description: Lists one or more load balancers and their attributes. - operationId: ReadLoadBalancers - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadLoadBalancersRequest' - examples: - ex1: - value: - Filters: - LoadBalancerNames: - - private* - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadLoadBalancersResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - LoadBalancers: - - Tags: [] - SourceSecurityGroup: - SecurityGroupName: security-group-example - SecurityGroupAccountId: '123456789012' - SecuredCookies: false - PublicIp: 192.0.2.0 - Subnets: - - subnet-12345678 - NetId: vpc-12345678 - BackendVmIds: [] - ApplicationStickyCookiePolicies: [] - SecurityGroups: - - sg-12345678 - LoadBalancerType: internet-facing - AccessLog: - PublicationInterval: 60 - IsEnabled: false - DnsName: private-lb-example.123456789.eu-west-2.lbu.outscale.com - HealthCheck: - UnhealthyThreshold: 2 - Timeout: 5 - CheckInterval: 30 - Protocol: TCP - HealthyThreshold: 10 - Port: 80 - LoadBalancerStickyCookiePolicies: [] - SubregionNames: - - eu-west-2a - Listeners: - - ServerCertificateId: orn:ows:idauth::012345678910:server-certificate/Certificate - BackendPort: 80 - BackendProtocol: HTTP - LoadBalancerPort: 443 - LoadBalancerProtocol: HTTPS - LoadBalancerName: private-lb-example - description: '' - tags: - - LoadBalancer - /ReadLocations: - post: - description: |- - Lists the locations, corresponding to datacenters, where you can set up a DirectLink.

- For more information, see [About DirectLink](https://docs.outscale.com/en/userguide/About-DirectLink.html). - operationId: ReadLocations - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadLocationsRequest' - examples: - ex1: - value: {} - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadLocationsResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - Locations: - - Name: Telehouse 3, France - Code: PAR1 - - Name: Equinix Pantin, France - Code: PAR4 - description: '' - security: [] - tags: - - Location - /ReadManagedPoliciesLinkedToUserGroup: - post: - description: Lists the managed policies linked to a specified group. - operationId: ReadManagedPoliciesLinkedToUserGroup - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadManagedPoliciesLinkedToUserGroupRequest' - examples: - ex1: - value: - Filters: - PathPrefix: /ex - UserGroupIds: - - ug-12345678 - FirstItem: 1 - ResultsPerPage: 30 - UserGroupName: example-usergroup - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadManagedPoliciesLinkedToUserGroupResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - HasMoreItems: true - MaxResultsLimit: 30 - MaxResultsTruncated: true - Policies: - - CreationDate: '2010-10-01T12:34:56.789Z' - LastModificationDate: '2010-10-01T12:34:56.789Z' - Orn: orn:ows:idauth::012345678910:policy/example/example-user-policy - PolicyId: ABCDEFGHIJKLMNOPQRSTUVWXYZ01234 - PolicyName: example-policy - description: '' - tags: - - Policy - /ReadNatServices: - post: - description: Lists one or more network address translation (NAT) services. - operationId: ReadNatServices - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadNatServicesRequest' - examples: - ex1: - value: - Filters: - NatServiceIds: - - nat-12345678 - ex2: - value: - Filters: - NetIds: - - vpc-12345678 - - vpc-87654321 - SubnetIds: - - subnet-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadNatServicesResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - NatServices: - - Tags: [] - SubnetId: subnet-12345678 - NatServiceId: nat-12345678 - PublicIps: - - PublicIpId: eipalloc-12345678 - PublicIp: 192.0.2.0 - NetId: vpc-12345678 - State: available - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - NatService - /ReadNetAccessPointServices: - post: - description: |- - Lists OUTSCALE services available to create Net access points.
- For more information, see [CreateNetAccessPoint](#createnetaccesspoint). - operationId: ReadNetAccessPointServices - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadNetAccessPointServicesRequest' - examples: - ex1: - summary: Listing one or more services according to their service IDs - value: - Filters: - ServiceIds: - - pl-12345678 - - pl-87654321 - ex2: - summary: Listing one or more services according to their service names - value: - Filters: - ServiceNames: - - com.outscale.eu-west-2.api - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadNetAccessPointServicesResponse' - examples: - ex1: - summary: Listing one or more services according to their service IDs - value: - Services: - - ServiceName: com.outscale.eu-west-2.api - ServiceId: pl-12345678 - IpRanges: - - 192.0.2.0 - - ServiceName: com.outscale.eu-west-2.oos - ServiceId: pl-87654321 - IpRanges: - - 198.51.100.0 - - 203.0.113.0 - - 203.0.113.1 - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - ex2: - summary: Listing one or more services according to their service names - value: - Services: - - ServiceName: com.outscale.eu-west-2.api - ServiceId: pl-12345678 - IpRanges: - - 192.0.2.0 - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - security: [] - tags: - - NetAccessPoint - /ReadNetAccessPoints: - post: - description: Lists one or more Net access points. - operationId: ReadNetAccessPoints - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadNetAccessPointsRequest' - examples: - ex1: - value: - Filters: - NetAccessPointIds: - - vpce-12345678 - ex2: - value: - Filters: - NetIds: - - vpc-12345678 - States: - - available - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadNetAccessPointsResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - NetAccessPoints: - - Tags: [] - NetAccessPointId: vpce-12345678 - RouteTableIds: - - rtb-12345678 - State: available - NetId: vpc-12345678 - ServiceName: com.outscale.eu-west-2.oos - description: '' - tags: - - NetAccessPoint - /ReadNetPeerings: - post: - description: Lists one or more peering connections between two Nets. - operationId: ReadNetPeerings - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadNetPeeringsRequest' - examples: - ex1: - value: - Filters: - NetPeeringIds: - - pcx-12345678 - ex2: - value: - Filters: - SourceNetNetIds: - - vpc-12345678 - StateNames: - - active - - pending-acceptance - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadNetPeeringsResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - NetPeerings: - - Tags: [] - State: - Name: active - Message: Active - AccepterNet: - NetId: vpc-12345678 - IpRange: 172.16.0.0/16 - AccountId: '123456789012' - SourceNet: - NetId: vpc-12345678 - IpRange: 10.0.0.0/16 - AccountId: '123456789012' - NetPeeringId: pcx-12345678 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - NetPeering - /ReadNets: - post: - description: Lists one or more Nets. - operationId: ReadNets - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadNetsRequest' - examples: - ex1: - value: - Filters: - NetIds: - - vpc-12345678 - ex2: - value: - Filters: - States: - - available - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadNetsResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - Nets: - - Tags: [] - DhcpOptionsSetId: dopt-12345678 - IpRange: 10.0.0.0/16 - Tenancy: default - NetId: vpc-12345678 - State: available - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - Net - /ReadNics: - post: - description: |- - Lists one or more network interface cards (NICs).
- A NIC is a virtual network interface that you can attach to a virtual machine (VM) in a Net. - operationId: ReadNics - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadNicsRequest' - examples: - ex1: - value: - Filters: - NicIds: - - eni-12345678 - ex2: - value: - Filters: - LinkNicVmIds: - - i-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadNicsResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - Nics: - - SubregionName: eu-west-2a - SubnetId: subnet-12345678 - State: in-use - LinkNic: - VmId: i-12345678 - LinkNicId: eni-attach-12345678 - VmAccountId: '123456789012' - DeleteOnVmDeletion: false - DeviceNumber: 0 - State: attached - IsSourceDestChecked: true - PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal - Tags: [] - Description: Primary network interface - AccountId: '123456789012' - SecurityGroups: - - SecurityGroupName: security-group-example - SecurityGroupId: sg-12345678 - MacAddress: A1:B2:C3:D4:E5:F6 - NetId: vpc-12345678 - NicId: eni-12345678 - PrivateIps: - - PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal - PrivateIp: 10.0.0.4 - IsPrimary: true - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - Nic - /ReadPolicies: - post: - description: Lists all the managed policies available for your OUTSCALE account. - operationId: ReadPolicies - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadPoliciesRequest' - examples: - ex1: - value: - Filters: - OnlyLinked: true - PathPrefix: / - Scope: OWS - FirstItem: 1 - ResultsPerPage: 30 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadPoliciesResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - HasMoreItems: true - Policies: - - ResourcesCount: 1 - PolicyName: example-user-policy - PolicyDefaultVersionId: v1 - Path: /example/ - CreationDate: 2010-10-01T12:34:56.789+0000 - Description: Example of description - PolicyId: ABCDEFGHIJKLMNOPQRSTUVWXYZ01234 - Orn: orn:ows:idauth::012345678910:policy/example/example-user-policy - IsLinkable: true - LastModificationDate: 2010-10-01T12:34:56.789+0000 - MaxResultsLimit: 30 - MaxResultsTruncated: false - description: '' - tags: - - Policy - /ReadPolicy: - post: - description: Lists information about a specified managed policy. - operationId: ReadPolicy - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadPolicyRequest' - examples: - ex1: - value: - PolicyOrn: orn:ows:idauth::012345678910:policy/example/example-user-policy - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadPolicyResponse' - examples: - ex1: - value: - Policy: - ResourcesCount: 0 - PolicyName: example-user-policy - PolicyDefaultVersionId: v1 - Path: /example/ - CreationDate: 2010-10-01T12:34:56.789+0000 - Description: Example of description - PolicyId: ABCDEFGHIJKLMNOPQRSTUVWXYZ01234 - Orn: orn:ows:idauth::012345678910:policy/example/example-user-policy - IsLinkable: true - LastModificationDate: 2010-10-01T12:34:56.789+0000 - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - Policy - /ReadPolicyVersion: - post: - description: Lists information about a specified version of a managed policy. - operationId: ReadPolicyVersion - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadPolicyVersionRequest' - examples: - ex1: - value: - PolicyOrn: orn:ows:idauth::012345678910:policy/example/example-user-policy - VersionId: v1 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadPolicyVersionResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - PolicyVersion: - VersionId: v1 - DefaultVersion: true - CreationDate: 2010-10-01T12:34:56.789+0000 - Body: '{"Statement": [ {"Effect": "Allow", "Action": ["*"], "Resource": ["*"]} ]}' - description: '' - tags: - - Policy - /ReadPolicyVersions: - post: - description: Lists information about all the policy versions of a specified managed policy. - operationId: ReadPolicyVersions - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadPolicyVersionsRequest' - examples: - ex1: - value: - FirstItem: 1 - PolicyOrn: orn:ows:idauth::012345678910:policy/example/example-user-policy - ResultsPerPage: 30 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadPolicyVersionsResponse' - examples: - ex1: - value: - MaxResultsLimit: 30 - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - PolicyVersions: - - VersionId: v1 - DefaultVersion: true - CreationDate: 2010-10-01T12:34:56.789+0000 - Body: '{"Statement": [ {"Effect": "Allow", "Action": ["*"], "Resource": ["*"]} ]}' - HasMoreItems: true - description: '' - tags: - - Policy - /ReadProductTypes: - post: - description: Lists one or more product types. - operationId: ReadProductTypes - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadProductTypesRequest' - examples: - ex1: - value: - Filters: - ProductTypeIds: - - '0001' - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadProductTypesResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - ProductTypes: - - ProductTypeId: '0001' - Description: Linux - description: '' - security: [] - tags: - - ProductType - /ReadPublicCatalog: - post: - description: Returns the price list of OUTSCALE products and services for the Region specified in the endpoint of the request. For more information, see [About Regions and Subregions](https://docs.outscale.com/en/userguide/About-Regions-and-Subregions.html). - operationId: ReadPublicCatalog - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadPublicCatalogRequest' - examples: - ex1: - value: {} - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadPublicCatalogResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - Catalog: - Entries: - - UnitPrice: 0.04 - Type: CustomCore:v5-p1 - Title: Instance - On demand - Unite de vCore pour une instance Tina v5 CxRy Performance highest - par heure - SubregionName: eu-west-2 - Category: compute - Service: TinaOS-FCU - Operation: RunInstances-OD - description: '' - security: [] - tags: - - PublicCatalog - /ReadPublicIpRanges: - post: - description: Gets the public IPv4 addresses in CIDR notation for the Region specified in the endpoint of the request. For more information, see [About Regions and Subregions](https://docs.outscale.com/en/userguide/About-Regions-and-Subregions.html). - operationId: ReadPublicIpRanges - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadPublicIpRangesRequest' - examples: - ex1: - value: {} - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadPublicIpRangesResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - PublicIps: - - 198.51.100.0/24 - - 203.0.113.0/24 - description: '' - security: [] - tags: - - PublicIp - /ReadPublicIps: - post: - description: |- - Lists one or more public IPs allocated to your OUTSCALE account.
- By default, this action returns information about all your public IPs: available or associated with a virtual machine (VM), a network interface card (NIC) or a NAT service. - operationId: ReadPublicIps - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadPublicIpsRequest' - examples: - ex1: - value: - Filters: - PublicIps: - - 192.0.2.0 - ex2: - value: - Filters: - VmIds: - - i-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadPublicIpsResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - PublicIps: - - VmId: i-12345678 - Tags: [] - PublicIpId: eipalloc-12345678 - PublicIp: 192.0.2.0 - LinkPublicIpId: eipassoc-12345678 - NicAccountId: '123456789012' - NicId: eni-12345678 - PrivateIp: 10.0.0.4 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - PublicIp - /ReadQuotas: - post: - description: |- - Lists one or more of your quotas.

- For more information, see [About Your Account](https://docs.outscale.com/en/userguide/About-Your-OUTSCALE-Account.html). - operationId: ReadQuotas - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadQuotasRequest' - examples: - ex1: - summary: Reading specific quota - value: - Filters: - QuotaNames: - - lb_limit - ex2: - summary: Reading collection of quotas - value: - Filters: - Collections: - - VPC - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadQuotasResponse' - examples: - ex1: - summary: Reading specific quota - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - QuotaTypes: - - Quotas: - - ShortDescription: Load Balancer Limit - QuotaCollection: LBU - AccountId: '123456789012' - Description: Maximum number of load balancers per region - MaxValue: 20 - UsedValue: 0 - Name: lb_limit - QuotaType: global - ex2: - summary: Reading collection of quotas - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - QuotaTypes: - - Quotas: - - ShortDescription: Example Limit - QuotaCollection: VPC - AccountId: '123456789012' - Description: Maximum number of examples - MaxValue: 5 - UsedValue: 0 - Name: example_limit - QuotaType: global - - Quotas: - - ShortDescription: Other Example Limit - QuotaCollection: VPC - AccountId: '123456789012' - Description: Maximum number of other examples - MaxValue: 50 - UsedValue: 1 - Name: other_example_limit - QuotaType: vpc-12345678 - description: '' - tags: - - Quota - /ReadRegions: - post: - description: |- - Lists one or more Regions of the OUTSCALE Cloud.

- For more information, see [About Regions and Subregions](https://docs.outscale.com/en/userguide/About-Regions-and-Subregions.html). - operationId: ReadRegions - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadRegionsRequest' - examples: - ex1: - value: {} - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadRegionsResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - Regions: - - RegionName: eu-west-2 - Endpoint: api.eu-west-2.outscale.com - - RegionName: us-east-2 - Endpoint: api.us-east-2.outscale.com - - RegionName: us-west-1 - Endpoint: api.us-west-1.outscale.com - description: '' - security: [] - tags: - - Region - /ReadRouteTables: - post: - description: |- - Lists one or more of your route tables.
- In your Net, each Subnet must be associated with a route table. If a Subnet is not explicitly associated with a route table, it is implicitly associated with the main route table of the Net. - operationId: ReadRouteTables - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadRouteTablesRequest' - examples: - ex1: - value: - Filters: - RouteTableIds: - - rtb-12345678 - ex2: - value: - Filters: - NetIds: - - vpc-12345678 - - vpc-87654321 - LinkRouteTableMain: true - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadRouteTablesResponse' - examples: - ex1: - value: - RouteTables: - - Routes: - - DestinationIpRange: 10.0.0.0/16 - CreationMethod: CreateRouteTable - State: active - LinkRouteTables: - - Main: true - LinkRouteTableId: rtbassoc-12345678 - RouteTableId: rtb-12345678 - NetId: vpc-12345678 - NetId: vpc-12345678 - Tags: [] - RoutePropagatingVirtualGateways: [] - RouteTableId: rtb-12345678 - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - RouteTable - /ReadSecurityGroups: - post: - description: |- - Lists one or more security groups.
- You can specify either the name of the security groups or their IDs. - operationId: ReadSecurityGroups - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadSecurityGroupsRequest' - examples: - ex1: - value: - Filters: - SecurityGroupIds: - - sg-12345678 - ex2: - value: - Filters: - InboundRuleIpRanges: - - 192.0.2.0 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadSecurityGroupsResponse' - examples: - ex1: - value: - SecurityGroups: - - Tags: [] - SecurityGroupName: security-group-example - OutboundRules: - - FromPortRange: -1 - IpProtocol: '-1' - ToPortRange: -1 - IpRanges: - - 0.0.0.0/0 - SecurityGroupId: sg-12345678 - AccountId: '123456789012' - Description: Example of security group - InboundRules: - - FromPortRange: 22 - IpProtocol: tcp - ToPortRange: 22 - IpRanges: - - 192.0.2.0 - - 198.51.100.0 - NetId: vpc-12345678 - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - SecurityGroup - /ReadServerCertificates: - post: - description: Lists your server certificates. - operationId: ReadServerCertificates - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadServerCertificatesRequest' - examples: - ex1: - value: - Filters: - Paths: - - /example/ - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadServerCertificatesResponse' - examples: - ex1: - value: - ServerCertificates: - - Path: /example/ - Id: ABCDEFGHIJKLMNOPQRSTUVWXYZ1234 - Orn: orn:ows:idauth::012345678910:server-certificate/example/server-cert-example - Name: server-cert-example - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - ServerCertificate - /ReadSnapshotExportTasks: - post: - description: Lists one or more snapshot export tasks. - operationId: ReadSnapshotExportTasks - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadSnapshotExportTasksRequest' - examples: - ex1: - value: - Filters: - TaskIds: - - snap-export-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadSnapshotExportTasksResponse' - examples: - ex1: - value: - SnapshotExportTasks: - - Tags: [] - TaskId: snap-export-12345678 - Comment: Export of snapshot snap-12345678 - OsuExport: - OsuPrefix: PREFIX - OsuBucket: BUCKET - DiskImageFormat: qcow2 - State: pending - SnapshotId: snap-12345678 - Progress: 99 - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - Snapshot - /ReadSnapshots: - post: - description: Lists one or more snapshots that are available to you and the permissions to create volumes from them. - operationId: ReadSnapshots - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadSnapshotsRequest' - examples: - ex1: - value: - Filters: - SnapshotIds: - - snap-12345678 - ex2: - value: - Filters: - TagKeys: - - env - TagValues: - - prod - - test - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadSnapshotsResponse' - examples: - ex1: - value: - Snapshots: - - VolumeSize: 10 - AccountId: '123456789012' - VolumeId: vol-12345678 - CreationDate: '2010-10-01T12:34:56.789Z' - PermissionsToCreateVolume: - GlobalPermission: false - AccountIds: [] - Progress: 100 - SnapshotId: snap-12345678 - State: completed - Description: Snapshot created from a volume - Tags: [] - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - ex2: - value: - Snapshots: - - VolumeSize: 10 - AccountId: '123456789012' - VolumeId: vol-12345678 - CreationDate: '2010-10-01T12:34:56.789Z' - PermissionsToCreateVolume: - GlobalPermission: false - AccountIds: [] - Progress: 100 - SnapshotId: snap-12345678 - State: completed - Description: Test snapshot - Tags: - - Value: test - Key: env - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - Snapshot - /ReadSubnets: - post: - description: |- - Lists one or more of your Subnets.
- If you do not specify any Subnet ID, this action describes all of your Subnets. - operationId: ReadSubnets - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadSubnetsRequest' - examples: - ex1: - value: - Filters: - NetIds: - - vpc-12345678 - ex2: - value: - Filters: - States: - - available - - pending - SubregionNames: - - eu-west-2a - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadSubnetsResponse' - examples: - ex1: - value: - Subnets: - - Tags: [] - SubregionName: eu-west-2a - SubnetId: subnet-12345678 - AvailableIpsCount: 16379 - IpRange: 10.0.0.0/18 - MapPublicIpOnLaunch: false - State: available - NetId: vpc-12345678 - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - Subnet - /ReadSubregions: - post: - description: |- - Lists one or more of the enabled Subregions that you can access in the current Region.

- - For more information, see [About Regions and Subregions](https://docs.outscale.com/en/userguide/About-Regions-and-Subregions.html). - operationId: ReadSubregions - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadSubregionsRequest' - examples: - ex1: - summary: Listing a specific Subregion in the current Region - value: - Filters: - SubregionNames: - - eu-west-2a - ex2: - summary: Listing two specific Subregions in the current Region - value: - Filters: - SubregionNames: - - eu-west-2a - - eu-west-2b - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadSubregionsResponse' - examples: - ex1: - summary: Listing a specific Subregion in the current Region - value: - Subregions: - - State: available - RegionName: eu-west-2 - SubregionName: eu-west-2a - LocationCode: PAR1 - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - ex2: - summary: Listing two specific Subregions in the current Region - value: - Subregions: - - State: available - RegionName: eu-west-2 - SubregionName: eu-west-2a - LocationCode: PAR1 - - State: available - RegionName: eu-west-2 - SubregionName: eu-west-2b - LocationCode: PAR4 - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - Subregion - /ReadTags: - post: - description: Lists one or more tags for your resources. - operationId: ReadTags - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadTagsRequest' - examples: - ex1: - value: - Filters: - ResourceTypes: - - snapshot - Keys: - - key1 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadTagsResponse' - examples: - ex1: - value: - Tags: - - Value: value1 - ResourceType: snapshot - ResourceId: snap-12345678 - Key: key1 - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - Tag - /ReadUnitPrice: - post: - description: Gets unit price information for the specified parameters. - operationId: ReadUnitPrice - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadUnitPriceRequest' - examples: - ex1: - value: - Operation: CreateVolume - Service: TinaOS-FCU - Type: BSU:VolumeIOPS:io1 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadUnitPriceResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - UnitPriceEntry: - UnitPrice: 0.01 - Unit: PER_IOPS_PER_MONTH - Currency: EUR - Operation: CreateVolume - Type: BSU:VolumeIOPS:io1 - Service: TinaOS-FCU - description: '' - tags: - - Catalog - /ReadUserGroup: - post: - description: Lists information about a specified user group, including its users. - operationId: ReadUserGroup - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadUserGroupRequest' - examples: - ex1: - value: - Path: /example/ - UserGroupName: example-usergroup - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadUserGroupResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - UserGroup: - CreationDate: '2010-10-01T12:34:56.789Z' - LastModificationDate: '2010-10-01T12:34:56.789Z' - Name: example-usergroup - Orn: orn:ows:idauth::012345678910:usergroup/example/usergroup-example - Path: /example/ - UserGroupId: ug-12345678 - Users: - - CreationDate: '2010-10-01T12:34:56.789Z' - LastModificationDate: '2010-10-01T12:34:56.789Z' - Path: /example/ - UserEmail: user@example.com - UserId: ABCDEFGHIJKLMNOPQRSTUVWXYZ12345 - UserName: example-user - description: '' - tags: - - UserGroup - /ReadUserGroupPolicies: - post: - description: Lists the names of the inline policies embedded in a specific group. - operationId: ReadUserGroupPolicies - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadUserGroupPoliciesRequest' - examples: - ex1: - value: - FirstItem: 1 - ResultsPerPage: 30 - UserGroupName: example-usergroup - UserGroupPath: /example/ - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadUserGroupPoliciesResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - HasMoreItems: true - MaxResultsLimit: 30 - MaxResultsTruncated: true - Policies: - - Body: '{"Statement": [ {"Effect": "Allow", "Action": ["*"], "Resource": ["*"]} ]}' - Name: example-policy - description: '' - tags: - - Policy - /ReadUserGroupPolicy: - post: - description: Returns information about an inline policy included in a specified group. - operationId: ReadUserGroupPolicy - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadUserGroupPolicyRequest' - examples: - ex1: - value: - PolicyName: example-policy - UserGroupName: example-usergroup - UserGroupPath: /example/ - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadUserGroupPolicyResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - Policy: - Body: '{"Statement": [ {"Effect": "Allow", "Action": ["*"], "Resource": ["*"]} ]}' - Name: example-policy - description: '' - tags: - - Policy - /ReadUserGroups: - post: - description: |- - Lists all the user groups of the OUTSCALE account.
- The response can be filtered using either the PathPrefix or the UserGroupIds. - operationId: ReadUserGroups - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadUserGroupsRequest' - examples: - ex1: - value: - Filters: - PathPrefix: /ex - UserGroupIds: - - ug-12345678 - FirstItem: 1 - ResultsPerPage: 30 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadUserGroupsResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - HasMoreItems: true - MaxResultsLimit: 30 - MaxResultsTruncated: true - UserGroups: - - CreationDate: '2010-10-01T12:34:56.789Z' - LastModificationDate: '2010-10-01T12:34:56.789Z' - Name: example-usergroup - Orn: orn:ows:idauth::012345678910:usergroup/example/usergroup-example - Path: /example/ - UserGroupId: ug-12345678 - description: '' - tags: - - UserGroup - /ReadUserGroupsPerUser: - post: - description: Lists the groups a specified user belongs to. - operationId: ReadUserGroupsPerUser - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadUserGroupsPerUserRequest' - examples: - ex1: - value: - UserName: example-user - UserPath: /example/ - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadUserGroupsPerUserResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - UserGroups: - - CreationDate: '2010-10-01T12:34:56.789Z' - LastModificationDate: '2010-10-01T12:34:56.789Z' - Name: example-usergroup - Orn: orn:ows:idauth::012345678910:usergroup/example/usergroup-example - Path: /example/ - UserGroupId: ug-12345678 - description: '' - tags: - - UserGroup - /ReadUserPolicies: - post: - description: Lists the names of inline policies included in a specified user. - operationId: ReadUserPolicies - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadUserPoliciesRequest' - examples: - ex1: - value: - UserName: example-user - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadUserPoliciesResponse' - examples: - ex1: - value: - PolicyNames: - - example-policy - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - Policy - /ReadUserPolicy: - post: - description: Returns information about an inline policy included in a specified user. - operationId: ReadUserPolicy - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadUserPolicyRequest' - examples: - ex1: - value: - UserName: example-user - PolicyName: example-user-policy - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadUserPolicyResponse' - examples: - ex1: - value: - PolicyDocument: '{"Statement": [ {"Effect": "Allow", "Action": ["*"], "Resource": ["*"]} ]}' - PolicyName: example-user-policy - UserName: example-user - description: '' - tags: - - Policy - /ReadUsers: - post: - description: |- - Lists all EIM users in the OUTSCALE account.
- The response can be filtered using the UserIds. - operationId: ReadUsers - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadUsersRequest' - examples: - ex1: - value: - Filters: - UserIds: - - ABCDEFGHIJKLMNOPQRSTUVWXYZ12345 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadUsersResponse' - examples: - ex1: - value: - Users: - - UserEmail: user@example.com - UserName: example-user - UserId: ABCDEFGHIJKLMNOPQRSTUVWXYZ12345 - Path: /documentation/ - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - User - /ReadVirtualGateways: - post: - description: Lists one or more virtual gateways. - operationId: ReadVirtualGateways - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadVirtualGatewaysRequest' - examples: - ex1: - value: - Filters: - VirtualGatewayIds: - - vgw-12345678 - ex2: - value: - Filters: - States: - - available - LinkStates: - - attached - - detached - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadVirtualGatewaysResponse' - examples: - ex1: - value: - VirtualGateways: - - VirtualGatewayId: vgw-12345678 - ConnectionType: ipsec.1 - NetToVirtualGatewayLinks: [] - State: available - Tags: [] - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - ex2: - value: - VirtualGateways: - - VirtualGatewayId: vgw-12345678 - ConnectionType: ipsec.1 - NetToVirtualGatewayLinks: - - State: attached - NetId: vpc-12345678 - State: available - Tags: [] - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - VirtualGateway - /ReadVmGroups: - post: - description: |- - > [WARNING]
- > This feature is currently under development and may not function properly.
- - Lists one or more group of virtual machines (VMs). - operationId: ReadVmGroups - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadVmGroupsRequest' - examples: - ex1: - value: - Filters: - VmGroupIds: - - vmgroup-12345678901234567890123456789012 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadVmGroupsResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - VmGroups: - - SecurityGroupIds: - - sg-87654321 - VmIds: - - i-12345678 - CreationDate: 2010-10-01T12:34:56.789+0000 - VmCount: 1 - VmGroupName: ClusterLog-PPD01 - SubnetId: subnet-12345678 - PositioningStrategy: attract - State: available - VmGroupId: vmgroup-12345678901234567890123456789012 - Tags: - - Value: value1 - Key: key1 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - VmGroup - /ReadVmTemplates: - post: - description: |- - > [WARNING]
- > This feature is currently under development and may not function properly.
- - Lists one or more virtual machine (VM) templates. - operationId: ReadVmTemplates - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadVmTemplatesRequest' - examples: - ex1: - value: - Filters: - VmTemplateNames: - - vmtemplate-example - ex2: - value: - Filters: - CpuCores: - - 2 - CpuGenerations: - - v4 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadVmTemplatesResponse' - examples: - ex1: - value: - VmTemplates: - - VmTemplateName: vmtemplate-example - CpuPerformance: high - CreationDate: 2010-10-01T12:34:56.789+0000 - CpuCores: 2 - Tags: [] - Description: '' - ImageId: ami-12345678 - CpuGeneration: v4 - VmTemplateId: vmtemplate-98765432109876543210987654321012 - Ram: 2 - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - VmTemplate - /ReadVmTypes: - post: - description: Lists one or more predefined VM types. - operationId: ReadVmTypes - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadVmTypesRequest' - examples: - ex1: - value: - Filters: - VmTypeNames: - - t2.small - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadVmTypesResponse' - examples: - ex1: - value: - VmTypes: - - VolumeCount: 0 - VmTypeName: t2.small - BsuOptimized: false - MaxPrivateIps: 4 - MemorySize: 2 - VcoreCount: 1 - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - security: [] - tags: - - Vm - /ReadVms: - post: - description: |- - Lists one or more of your virtual machines (VMs).
- If you provide one or more VM IDs, this action returns a description for all of these VMs. If you do not provide any VM ID, this action returns a description for all of the VMs that belong to you. If you provide an invalid VM ID, an error is returned. If you provide the ID of a VM that does not belong to you, the description of this VM is not included in the response. The refresh interval for data returned by this action is one hour, meaning that a terminated VM may appear in the response. - operationId: ReadVms - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadVmsRequest' - examples: - ex1: - value: - Filters: - VmIds: - - i-12345678 - ex2: - value: - Filters: - TagKeys: - - env - TagValues: - - prod - - test - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadVmsResponse' - examples: - ex1: - value: - Vms: - - VmType: tinav5.c1r1p2 - VmInitiatedShutdownBehavior: stop - State: running - StateReason: '' - RootDeviceType: ebs - RootDeviceName: /dev/sda1 - IsSourceDestChecked: true - KeypairName: keypair-example - ImageId: ami-12345678 - DeletionProtection: false - BootMode: legacy - Architecture: x86_64 - NestedVirtualization: false - BlockDeviceMappings: - - DeviceName: /dev/sda1 - Bsu: - VolumeId: vol-12345678 - State: attached - LinkDate: '2010-10-01T12:34:56.789Z' - DeleteOnVmDeletion: true - VmId: i-12345678 - TpmEnabled: false - ReservationId: r-12345678 - Hypervisor: xen - Placement: - Tenancy: default - SubregionName: eu-west-2a - ProductCodes: - - '0001' - CreationDate: '2010-10-01T12:34:56.789Z' - UserData: '' - SubnetId: subnet-12345678 - PrivateIp: 10.0.0.4 - SecurityGroups: - - SecurityGroupName: security-group-example - SecurityGroupId: sg-12345678 - BsuOptimized: false - LaunchNumber: 0 - NetId: vpc-12345678 - Nics: - - SubnetId: subnet-12345678 - State: in-use - LinkNic: - State: attached - DeviceNumber: 0 - LinkNicId: eni-attach-12345678 - DeleteOnVmDeletion: true - IsSourceDestChecked: true - PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal - Description: Primary network interface - AccountId: '123456789012' - SecurityGroups: - - SecurityGroupName: security-group-example - SecurityGroupId: sg-12345678 - MacAddress: A1:B2:C3:D4:E5:F6 - NetId: vpc-12345678 - NicId: eni-12345678 - PrivateIps: - - PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal - PrivateIp: 10.0.0.4 - IsPrimary: true - Performance: high - Tags: - - Value: prod - Key: env - ActionsOnNextBoot: - SecureBoot: none - PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - Vm - /ReadVmsHealth: - post: - description: Lists the state of one or more backend virtual machines (VMs) registered with a specified load balancer. - operationId: ReadVmsHealth - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadVmsHealthRequest' - examples: - ex1: - value: - LoadBalancerName: example-lbu - BackendVmIds: - - i-12345678 - - i-87654321 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadVmsHealthResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - BackendVmHealth: - - VmId: i-12345678 - State: UP - - VmId: i-87654321 - StateReason: ELB - State: DOWN - Description: Instance registration is pending - description: '' - tags: - - LoadBalancer - /ReadVmsState: - post: - description: Lists the status of one or more virtual machines (VMs). - operationId: ReadVmsState - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadVmsStateRequest' - examples: - ex1: - value: - AllVms: true - ex2: - value: - Filters: - SubregionNames: - - eu-west-2a - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadVmsStateResponse' - examples: - ex1: - value: - VmStates: - - VmId: i-12345678 - VmState: running - SubregionName: eu-west-2a - MaintenanceEvents: [] - - VmId: i-87654321 - VmState: stopped - SubregionName: eu-west-2a - MaintenanceEvents: [] - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - ex2: - value: - VmStates: - - VmId: i-12345678 - VmState: running - SubregionName: eu-west-2a - MaintenanceEvents: [] - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - Vm - /ReadVolumeUpdateTasks: - post: - description: Lists one or more specified tasks of volume update. - operationId: ReadVolumeUpdateTasks - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadVolumeUpdateTasksRequest' - examples: - ex1: - summary: Read a specific volume update task - value: - Filters: - TaskIds: - - vol-update-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadVolumeUpdateTasksResponse' - examples: - ex1: - summary: Read a specific volume update task - value: - VolumeUpdateTasks: - - VolumeUpdate: - Target: - Iops: 200 - Size: 50 - VolumeType: io1 - Origin: - Iops: 100 - Size: 25 - VolumeType: standard - Tags: [] - TaskId: vol-update-12345678 - Comment: Update of volume vol-12345678 - VolumeId: vol-12345678 - State: completed - Progress: 100 - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - summary: Lists one or more update tasks of volumes - tags: - - Volume - /ReadVolumes: - post: - description: Lists one or more specified Block Storage Unit (BSU) volumes. - operationId: ReadVolumes - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadVolumesRequest' - examples: - ex1: - value: - Filters: - VolumeIds: - - vol-12345678 - ex2: - value: - Filters: - VolumeStates: - - in-use - VolumeTypes: - - gp2 - - io1 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadVolumesResponse' - examples: - ex1: - value: - Volumes: - - VolumeId: vol-12345678 - Tags: [] - VolumeType: gp2 - SubregionName: eu-west-2a - State: in-use - CreationDate: '2010-10-01T12:34:56.789Z' - Iops: 100 - LinkedVolumes: - - VolumeId: vol-12345678 - DeleteOnVmDeletion: false - DeviceName: /dev/sdb - State: attached - VmId: i-12345678 - Size: 10 - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - Volume - /ReadVpnConnections: - post: - description: Lists one or more VPN connections. - operationId: ReadVpnConnections - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ReadVpnConnectionsRequest' - examples: - ex1: - value: - Filters: - VpnConnectionIds: - - vpn-12345678 - ex2: - value: - Filters: - ClientGatewayIds: - - cgw-12345678 - VirtualGatewayIds: - - vgw-12345678 - - vgw-87654321 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ReadVpnConnectionsResponse' - examples: - ex1: - value: - VpnConnections: - - Routes: [] - Tags: [] - ClientGatewayConfiguration: ... - StaticRoutesOnly: true - VirtualGatewayId: vgw-12345678 - ConnectionType: ipsec.1 - ClientGatewayId: cgw-12345678 - State: pending - VgwTelemetries: - - StateDescription: IPSEC IS DOWN - AcceptedRouteCount: 0 - LastStateChangeDate: '2017-05-10T12:34:56.789Z' - OutsideIpAddress: 192.0.2.0 - VpnConnectionId: vpn-12345678 - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - VpnConnection - /RebootVms: - post: - description: |- - Reboots one or more virtual machines (VMs).
- This operation sends a reboot request to one or more specified VMs. This is an asynchronous action that queues this reboot request. This action only reboots VMs that are valid and that belong to you. - operationId: RebootVms - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/RebootVmsRequest' - examples: - ex1: - value: - VmIds: - - i-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/RebootVmsResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - Vm - /RegisterVmsInLoadBalancer: - post: - description: |- - > [WARNING]
- > Deprecated: This call is deprecated and will be removed.
- - Registers one or more virtual machines (VMs) with a specified load balancer.
- The VMs can be in different Subnets and different Subregions than the load balancer, as long as the VMs and load balancers are all in the public Cloud or all in the same Net. It may take a little time for a VM to be registered with the load balancer. Once the VM is registered with a load balancer, it receives traffic and requests from this load balancer and is called a backend VM. - operationId: RegisterVmsInLoadBalancer - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/RegisterVmsInLoadBalancerRequest' - examples: - ex1: - value: - LoadBalancerName: example-lbu - BackendVmIds: - - i-12345678 - - i-87654321 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/RegisterVmsInLoadBalancerResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - LoadBalancer - /RejectNetPeering: - post: - description: |- - Rejects a Net peering request.
- The Net peering must be in the `pending-acceptance` state to be rejected. The rejected Net peering is then in the `rejected` state. - operationId: RejectNetPeering - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/RejectNetPeeringRequest' - examples: - ex1: - value: - NetPeeringId: pcx-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/RejectNetPeeringResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '409': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - NetPeering - /RemoveUserFromUserGroup: - post: - description: Removes a specified user from a specified group. - operationId: RemoveUserFromUserGroup - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/RemoveUserFromUserGroupRequest' - examples: - ex1: - value: - UserGroupName: example-usergroup - UserGroupPath: /example/ - UserName: example-user - UserPath: /example/ - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/RemoveUserFromUserGroupResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - UserGroup - /ScaleDownVmGroup: - post: - description: |- - > [WARNING]
- > This feature is currently under development and may not function properly.
- - Deletes virtual machines (VMs) from a VM group.
- The oldest VMs are the first to be deleted. - operationId: ScaleDownVmGroup - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ScaleDownVmGroupRequest' - examples: - ex1: - summary: Removing 1 VM from a VM group - value: - VmGroupId: vmgroup-12345678901234567890123456789012 - VmSubtraction: 1 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ScaleDownVmGroupResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - VmGroup - /ScaleUpVmGroup: - post: - description: |- - > [WARNING]
- > This feature is currently under development and may not function properly.
- - Creates additional virtual machines (VMs) in a VM group.
- The new VMs use the current version of the VM template. - operationId: ScaleUpVmGroup - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ScaleUpVmGroupRequest' - examples: - ex1: - summary: Adding 2 VMs in a VM group - value: - VmGroupId: vmgroup-12345678901234567890123456789012 - VmAddition: 2 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ScaleUpVmGroupResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - VmGroup - /SetDefaultPolicyVersion: - post: - description: |- - Sets a specified version of a managed policy as the default (operative) one.
- You can modify the default version of a policy at any time. -

- - **[IMPORTANT]**
- A delay of up to 15 seconds can occur when attaching, detaching, or updating a managed policy. - operationId: SetDefaultPolicyVersion - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/SetDefaultPolicyVersionRequest' - examples: - ex1: - value: - PolicyOrn: orn:ows:idauth::012345678910:policy/example/example-user-policy - VersionId: v1 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/SetDefaultPolicyVersionResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - Policy - /StartVms: - post: - description: |- - Start one or more virtual machines (VMs).
- You can start only VMs that are valid and that belong to you. - operationId: StartVms - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/StartVmsRequest' - examples: - ex1: - value: - VmIds: - - i-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/StartVmsResponse' - examples: - ex1: - value: - Vms: - - VmId: i-12345678 - PreviousState: stopped - CurrentState: pending - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - Vm - /StopVms: - post: - description: |- - Stops one or more running virtual machines (VMs).
- You can stop only VMs that are valid and that belong to you. Data stored in the VM RAM is lost. - operationId: StopVms - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/StopVmsRequest' - examples: - ex1: - value: - VmIds: - - i-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/StopVmsResponse' - examples: - ex1: - value: - Vms: - - VmId: i-12345678 - PreviousState: running - CurrentState: stopping - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - Vm - /UnlinkFlexibleGpu: - post: - description: |- - Detaches a flexible GPU (fGPU) from a virtual machine (VM).
- The fGPU is in the `detaching` state until the VM is stopped, after which it becomes `allocated`. It is then available again for attachment to a VM. - operationId: UnlinkFlexibleGpu - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UnlinkFlexibleGpuRequest' - examples: - ex1: - value: - FlexibleGpuId: fgpu-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/UnlinkFlexibleGpuResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - FlexibleGpu - /UnlinkInternetService: - post: - description: |- - Detaches an internet service from a Net.
- This action disables and detaches an internet service from a Net. The Net must not contain virtual machines (VMs) using public IPs nor internet-facing load balancers. - operationId: UnlinkInternetService - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UnlinkInternetServiceRequest' - examples: - ex1: - value: - InternetServiceId: igw-12345678 - NetId: vpc-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/UnlinkInternetServiceResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - InternetService - /UnlinkLoadBalancerBackendMachines: - post: - description: Detaches one or more backend virtual machines (VMs) from a load balancer. You need to specify at least the `BackendIps` or the `BackendVmIds` parameter. - operationId: UnlinkLoadBalancerBackendMachines - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UnlinkLoadBalancerBackendMachinesRequest' - examples: - ex1: - summary: Unlinking VMs from a load balancer - value: - LoadBalancerName: example-lbu - BackendVmIds: - - i-12345678 - - i-87654321 - ex2: - summary: Unlinking public IPs from a load balancer - value: - LoadBalancerName: example-lbu - BackendIps: - - 192.0.2.0 - - 198.51.100.0 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/UnlinkLoadBalancerBackendMachinesResponse' - examples: - ex1: - summary: Unlinking VMs from a load balancer - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - ex2: - summary: Unlinking public IPs from a load balancer - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - LoadBalancer - /UnlinkManagedPolicyFromUserGroup: - post: - description: |- - Unlinks a managed policy from a specific group. -

- - **[IMPORTANT]**
- A delay of up to 15 seconds can occur when attaching, detaching, or updating a managed policy. - operationId: UnlinkManagedPolicyFromUserGroup - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UnlinkManagedPolicyFromUserGroupRequest' - examples: - ex1: - value: - PolicyOrn: orn:ows:idauth::012345678910:policy/example/example-user-policy - UserGroupName: example-usergroup - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/UnlinkManagedPolicyFromUserGroupResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - Policy - /UnlinkNic: - post: - description: |- - Detaches a network interface card (NIC) from a virtual machine (VM).
- The primary NIC cannot be detached. - operationId: UnlinkNic - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UnlinkNicRequest' - examples: - ex1: - value: - LinkNicId: eni-attach-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/UnlinkNicResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - Nic - /UnlinkPolicy: - post: - description: |- - Removes a managed policy from a specific user. -

- - **[IMPORTANT]**
- A delay of up to 15 seconds can occur when attaching, detaching, or updating a managed policy. - operationId: UnlinkPolicy - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UnlinkPolicyRequest' - examples: - ex1: - value: - PolicyOrn: orn:ows:idauth::012345678910:policy/example/example-user-policy - UserName: example-user - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/UnlinkPolicyResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - Policy - /UnlinkPrivateIps: - post: - description: Unassigns one or more secondary private IPs from a network interface card (NIC). - operationId: UnlinkPrivateIps - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UnlinkPrivateIpsRequest' - examples: - ex1: - value: - NicId: eni-12345678 - PrivateIps: - - 10.0.0.6 - - 10.0.0.7 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/UnlinkPrivateIpsResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - Nic - /UnlinkPublicIp: - post: - description: |- - Disassociates a public IP from the virtual machine (VM) or network interface card (NIC) it is associated with.

- - **[IMPORTANT]**
- To disassociate the public IP from a NAT service, you need to delete the NAT service. For more information, see the [DeleteNatService](#deletenatservice) method. - operationId: UnlinkPublicIp - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UnlinkPublicIpRequest' - examples: - ex1: - value: - PublicIp: 192.0.2.0 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/UnlinkPublicIpResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - PublicIp - /UnlinkRouteTable: - post: - description: |- - Disassociates a Subnet from a route table.
- After disassociation, the Subnet can no longer use the routes in this route table, but uses the routes in the main route table of the Net instead. - operationId: UnlinkRouteTable - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UnlinkRouteTableRequest' - examples: - ex1: - value: - LinkRouteTableId: rtbassoc-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/UnlinkRouteTableResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - RouteTable - /UnlinkVirtualGateway: - post: - description: |- - Detaches a virtual gateway from a Net.
- You must wait until the virtual gateway is in the detached state before you can attach another Net to it or delete the Net it was previously attached to. - operationId: UnlinkVirtualGateway - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UnlinkVirtualGatewayRequest' - examples: - ex1: - value: - VirtualGatewayId: vgw-12345678 - NetId: vpc-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/UnlinkVirtualGatewayResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - VirtualGateway - /UnlinkVolume: - post: - description: |- - Detaches a Block Storage Unit (BSU) volume from a virtual machine (VM).
- To detach the root device of a VM, this VM must be stopped. - operationId: UnlinkVolume - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UnlinkVolumeRequest' - examples: - ex1: - value: - VolumeId: vol-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/UnlinkVolumeResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - Volume - /UpdateAccessKey: - post: - description: |- - Modifies the attributes of the specified access key of either the root user or an EIM user.

- The parameter `ExpirationDate` is not required when updating the state of your access key. However, if you do not specify the expiration date of an access key when updating its state, it is then set to not expire. - operationId: UpdateAccessKey - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateAccessKeyRequest' - examples: - ex1: - summary: Updating the expiration date of the access key - value: - AccessKeyId: ABCDEFGHIJ0123456789 - State: ACTIVE - ExpirationDate: '2063-04-05' - ex2: - summary: Updating the state of one of your own access keys (if you are the root user or an EIM user) - value: - AccessKeyId: ABCDEFGHIJ0123456789 - State: ACTIVE - ex3: - summary: Updating the access key of a specific EIM user - value: - AccessKeyId: ABCDEFGHIJ0123456789 - State: ACTIVE - UserName: example-user - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateAccessKeyResponse' - examples: - ex1: - summary: Updating an access key when using the parameter ExpirationDate - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - AccessKey: - State: ACTIVE - AccessKeyId: ABCDEFGHIJ0123456789 - CreationDate: 2010-10-01T12:34:56.789+0000 - ExpirationDate: 2063-04-05T00:00:00.000+0000 - LastModificationDate: 2017-05-10T12:34:56.789+0000 - Tag: Group1 - ex2: - summary: Updating an access key when not using the parameter ExpirationDate - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - AccessKey: - State: ACTIVE - AccessKeyId: ABCDEFGHIJ0123456789 - CreationDate: 2010-10-01T12:34:56.789+0000 - LastModificationDate: 2017-05-10T12:34:56.789+0000 - Tag: Group1 - description: '' - security: - - ApiKeyAuthSec: [] - - BasicAuth: [] - tags: - - AccessKey - /UpdateAccount: - post: - description: Updates the OUTSCALE account information for the account that sends the request. - operationId: UpdateAccount - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateAccountRequest' - examples: - ex1: - value: - AdditionalEmails: - - another@example.com - - yet.another@example.com - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateAccountResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - Account: - ZipCode: '92210' - CompanyName: EXAMPLE SAS - FirstName: JEAN - AdditionalEmails: - - another@example.com - - yet.another@example.com - City: SAINT-CLOUD - Country: FRANCE - LastName: DUPONT - AccountId: '123456789012' - CustomerId: '87654321' - Email: example@example.com - description: '' - tags: - - Account - /UpdateApiAccessPolicy: - post: - description: |- - Updates the API access policy of your OUTSCALE account.

- - **[IMPORTANT]**
- Only one API access policy can be associated with your account. - operationId: UpdateApiAccessPolicy - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateApiAccessPolicyRequest' - examples: - ex1: - summary: Require expiration dates of maximum 1 year - value: - MaxAccessKeyExpirationSeconds: 31536000 - RequireTrustedEnv: false - ex2: - summary: Require expiration dates of maximum 100 years and activate a trusted session - value: - MaxAccessKeyExpirationSeconds: 3153600000 - RequireTrustedEnv: true - ex3: - summary: Do not require expiration dates and deactivate a trusted session - value: - MaxAccessKeyExpirationSeconds: 0 - RequireTrustedEnv: false - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateApiAccessPolicyResponse' - examples: - ex1: - summary: Require expiration dates of maximum 1 year - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - ApiAccessPolicy: - RequireTrustedEnv: false - MaxAccessKeyExpirationSeconds: 31536000 - ex2: - summary: Require expiration dates of maximum 100 years and activate a trusted session - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - ApiAccessPolicy: - RequireTrustedEnv: true - MaxAccessKeyExpirationSeconds: 3153600000 - ex3: - summary: Do not require expiration dates and deactivate a trusted session - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - ApiAccessPolicy: - RequireTrustedEnv: false - MaxAccessKeyExpirationSeconds: 0 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - security: - - ApiKeyAuthSec: [] - - BasicAuth: [] - tags: - - ApiAccessPolicy - /UpdateApiAccessRule: - post: - description: |- - Modifies a specified API access rule.

- - **[WARNING]**
- - The new rule you specify fully replaces the old rule. Therefore, for a parameter that is not specified, any previously set value is deleted.
- - If, as result of your modification, you no longer have access to the APIs, you will need to contact the Support team to regain access. For more information, see [Technical Support](https://docs.outscale.com/en/userguide/Technical-Support.html). - operationId: UpdateApiAccessRule - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateApiAccessRuleRequest' - examples: - ex1: - value: - ApiAccessRuleId: aar-1234567890abcdef1234567890abcdef - IpRanges: - - 0.0.0.0/0 - Description: Allows all Ipv4 domain - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateApiAccessRuleResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - ApiAccessRule: - IpRanges: - - 0.0.0.0/0 - ApiAccessRuleId: aar-1234567890abcdef1234567890abcdef - CaIds: [] - Cns: [] - Description: Allows all IPv4 domain - description: '' - security: - - ApiKeyAuthSec: [] - - BasicAuth: [] - tags: - - ApiAccessRule - /UpdateCa: - post: - description: Modifies the specified attribute of a Client Certificate Authority (CA). - operationId: UpdateCa - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateCaRequest' - examples: - ex1: - value: - CaId: ca-fedcba0987654321fedcba0987654321 - Description: New description - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateCaResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - Ca: - Description: New description - CaId: ca-fedcba0987654321fedcba0987654321 - CaFingerprint: 1234567890abcdef1234567890abcdef12345678 - description: '' - security: - - ApiKeyAuthSec: [] - - BasicAuth: [] - tags: - - Ca - /UpdateDedicatedGroup: - post: - description: Modifies the name of a specified dedicated group. - operationId: UpdateDedicatedGroup - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateDedicatedGroupRequest' - examples: - ex1: - value: - DedicatedGroupId: ded-12345678 - Name: New-dedicated-group-name - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateDedicatedGroupResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - DedicatedGroup: - VmIds: - - i-12345678 - NetIds: - - vpc-12345678 - AccountId: '123456789012' - CpuGeneration: 4 - Name: New-dedicated-group-name - SubregionName: eu-west-2a - DedicatedGroupId: ded-12345678 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - DedicatedGroup - /UpdateDirectLinkInterface: - post: - description: Modifies the maximum transmission unit (MTU) of a DirectLink interface. - operationId: UpdateDirectLinkInterface - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateDirectLinkInterfaceRequest' - examples: - ex1: - value: - DirectLinkInterfaceId: dxvif-12345678 - Mtu: 1500 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateDirectLinkInterfaceResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - DirectLinkInterface: - Vlan: 101 - OutscalePrivateIp: 172.16.0.4/30 - DirectLinkInterfaceId: dxvif-12345678 - BgpAsn: 65000 - AccountId: '123456789012' - ClientPrivateIp: 172.16.0.5/30 - VirtualGatewayId: vgw-12345678 - DirectLinkInterfaceName: MyDirectLinkInterface - DirectLinkId: dxcon-12345678 - Mtu: 1500 - State: available - InterfaceType: private - Location: PAR1 - description: '' - tags: - - DirectLinkInterface - /UpdateFlexibleGpu: - post: - description: Modifies a flexible GPU (fGPU) behavior. - operationId: UpdateFlexibleGpu - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateFlexibleGpuRequest' - examples: - ex1: - value: - FlexibleGpuId: fgpu-12345678 - DeleteOnVmDeletion: false - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateFlexibleGpuResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - FlexibleGpu: - DeleteOnVmDeletion: false - FlexibleGpuId: fgpu-12345678 - Generation: v5 - ModelName: nvidia-p100 - State: allocated - SubregionName: eu-west-2a - Tags: [] - description: '' - tags: - - FlexibleGpu - /UpdateImage: - post: - description: |- - Modifies the access permissions for an OUTSCALE machine image (OMI).
- You must specify either the `Additions` or the `Removals` parameter.
- After sharing an OMI with an OUTSCALE account, the other account can create a copy of it that they own. For more information about copying OMIs, see [CreateImage](#createimage). - operationId: UpdateImage - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateImageRequest' - examples: - ex1: - summary: Adding permission - value: - ImageId: ami-12345678 - PermissionsToLaunch: - Additions: - AccountIds: - - '987654321098' - ex2: - summary: Removing permission - value: - ImageId: ami-12345678 - PermissionsToLaunch: - Removals: - AccountIds: - - '987654321098' - ex3: - summary: Making an image public to everyone - value: - ImageId: ami-12345678 - PermissionsToLaunch: - Additions: - GlobalPermission: true - ex4: - summary: Making an image private to everyone - value: - ImageId: ami-12345678 - Description: Private image - PermissionsToLaunch: - Removals: - GlobalPermission: true - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateImageResponse' - examples: - ex1: - summary: Adding permission - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - Image: - StateComment: {} - State: available - RootDeviceType: bsu - RootDeviceName: /dev/sda1 - ProductCodes: - - '0001' - PermissionsToLaunch: - GlobalPermission: false - AccountIds: - - '987654321098' - AccountId: '123456789012' - Tags: [] - Description: '' - ImageId: ami-12345678 - BlockDeviceMappings: - - DeviceName: /dev/sda1 - Bsu: - VolumeType: standard - DeleteOnVmDeletion: true - VolumeSize: 50 - SnapshotId: snap-12345678 - ImageType: machine - CreationDate: '2010-10-01T12:34:56.789Z' - FileLocation: 123456789012/image-example - Architecture: x86_64 - ImageName: image-example - ex2: - summary: Removing permission - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - Image: - StateComment: {} - State: available - RootDeviceType: bsu - RootDeviceName: /dev/sda1 - ProductCodes: - - '0001' - PermissionsToLaunch: - GlobalPermission: false - AccountIds: [] - AccountId: '123456789012' - Tags: [] - Description: '' - ImageId: ami-12345678 - BlockDeviceMappings: - - DeviceName: /dev/sda1 - Bsu: - VolumeType: standard - DeleteOnVmDeletion: true - VolumeSize: 50 - SnapshotId: snap-12345678 - ImageType: machine - CreationDate: '2010-10-01T12:34:56.789Z' - FileLocation: 123456789012/image-example - Architecture: x86_64 - ImageName: image-example - ex3: - summary: Making an image public to everyone - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - Image: - StateComment: {} - State: available - RootDeviceType: bsu - RootDeviceName: /dev/sda1 - ProductCodes: - - '0001' - PermissionsToLaunch: - GlobalPermission: true - AccountIds: [] - AccountId: '123456789012' - Tags: [] - Description: '' - ImageId: ami-12345678 - BlockDeviceMappings: - - DeviceName: /dev/sda1 - Bsu: - VolumeType: standard - DeleteOnVmDeletion: true - VolumeSize: 50 - SnapshotId: snap-12345678 - ImageType: machine - CreationDate: '2010-10-01T12:34:56.789Z' - FileLocation: 123456789012/image-example - Architecture: x86_64 - ImageName: image-example - ex4: - summary: Making an image private to everyone - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - Image: - StateComment: {} - State: available - RootDeviceType: bsu - RootDeviceName: /dev/sda1 - ProductCodes: - - '0001' - PermissionsToLaunch: - GlobalPermission: false - AccountIds: [] - AccountId: '123456789012' - Tags: [] - Description: Private image - ImageId: ami-12345678 - BlockDeviceMappings: - - DeviceName: /dev/sda1 - Bsu: - VolumeType: standard - DeleteOnVmDeletion: true - VolumeSize: 50 - SnapshotId: snap-12345678 - ImageType: machine - CreationDate: '2010-10-01T12:34:56.789Z' - FileLocation: 123456789012/image-example - Architecture: x86_64 - ImageName: image-example - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - Image - /UpdateListenerRule: - post: - description: |- - Updates the pattern of the listener rule.
- This call updates the pattern matching algorithm for incoming traffic. - operationId: UpdateListenerRule - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateListenerRuleRequest' - examples: - ex1: - value: - ListenerRuleName: example-listener-rule - HostPattern: '*.newhost.com' - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateListenerRuleResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - ListenerRule: - Priority: 10 - VmIds: - - i-12345678 - ListenerRuleName: example-listener-rule - Action: forward - ListenerId: 123456 - HostNamePattern: '*.newhost.com' - ListenerRuleId: 1234 - description: '' - tags: - - Listener - /UpdateLoadBalancer: - post: - description: |- - Modifies the specified attribute of a load balancer. You can specify only one attribute at a time.

- - You can set a new SSL certificate to an SSL or HTTPS listener of a load balancer.
- This certificate replaces any certificate used on the same load balancer and port.

- - You can also replace the currently enabled policy for the load balancer with another one.
- If the `PolicyNames` parameter is empty, the currently enabled policy is disabled. - operationId: UpdateLoadBalancer - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateLoadBalancerRequest' - examples: - ex1: - summary: Updating health checks - value: - LoadBalancerName: private-lb-example - HealthCheck: - HealthyThreshold: 10 - CheckInterval: 30 - Path: /index.html - Port: 8080 - Protocol: HTTPS - Timeout: 5 - UnhealthyThreshold: 5 - ex2: - summary: Updating access logs - value: - LoadBalancerName: private-lb-example - AccessLog: - PublicationInterval: 5 - IsEnabled: true - OsuBucketName: BUCKET - OsuBucketPrefix: PREFIX - ex3: - summary: Updating policies - value: - LoadBalancerName: private-lb-example - LoadBalancerPort: 443 - PolicyNames: - - example-browser-policy - ex4: - summary: Updating SSL certificate - value: - LoadBalancerName: private-lb-example - LoadBalancerPort: 443 - ServerCertificateId: orn:ows:idauth::012345678910:server-certificate/AnotherCertificate - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateLoadBalancerResponse' - examples: - ex1: - summary: Updating health checks - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - LoadBalancer: - Tags: [] - SourceSecurityGroup: - SecurityGroupName: security-group-example - SecurityGroupAccountId: '123456789012' - SecuredCookies: false - PublicIp: 192.0.2.0 - Subnets: - - subnet-12345678 - NetId: vpc-12345678 - BackendVmIds: [] - ApplicationStickyCookiePolicies: [] - SecurityGroups: - - sg-12345678 - LoadBalancerType: internet-facing - AccessLog: - PublicationInterval: 60 - IsEnabled: false - DnsName: private-lb-example.123456789.eu-west-2.lbu.outscale.com - HealthCheck: - UnhealthyThreshold: 5 - Timeout: 5 - CheckInterval: 30 - Path: /index.html - Protocol: HTTPS - HealthyThreshold: 10 - Port: 8080 - LoadBalancerStickyCookiePolicies: [] - SubregionNames: - - eu-west-2a - Listeners: - - ServerCertificateId: orn:ows:idauth::012345678910:server-certificate/Certificate - BackendPort: 80 - BackendProtocol: HTTP - LoadBalancerPort: 443 - LoadBalancerProtocol: HTTPS - LoadBalancerName: private-lb-example - ex2: - summary: Updating access logs - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - LoadBalancer: - Tags: [] - SourceSecurityGroup: - SecurityGroupName: security-group-example - SecurityGroupAccountId: '123456789012' - SecuredCookies: false - PublicIp: 192.0.2.0 - Subnets: - - subnet-12345678 - NetId: vpc-12345678 - BackendVmIds: [] - ApplicationStickyCookiePolicies: [] - SecurityGroups: - - sg-12345678 - LoadBalancerType: internet-facing - AccessLog: - PublicationInterval: 5 - OsuBucketPrefix: PREFIX - OsuBucketName: BUCKET - IsEnabled: true - DnsName: private-lb-example.123456789.eu-west-2.lbu.outscale.com - HealthCheck: - UnhealthyThreshold: 2 - Timeout: 5 - CheckInterval: 30 - Protocol: TCP - HealthyThreshold: 10 - Port: 80 - LoadBalancerStickyCookiePolicies: [] - SubregionNames: - - eu-west-2a - Listeners: - - ServerCertificateId: orn:ows:idauth::012345678910:server-certificate/Certificate - BackendPort: 80 - BackendProtocol: HTTP - LoadBalancerPort: 443 - LoadBalancerProtocol: HTTPS - LoadBalancerName: private-lb-example - ex3: - summary: Updating policies - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - LoadBalancer: - Tags: [] - SourceSecurityGroup: - SecurityGroupName: security-group-example - SecurityGroupAccountId: '123456789012' - SecuredCookies: false - PublicIp: 192.0.2.0 - Subnets: - - subnet-12345678 - NetId: vpc-12345678 - BackendVmIds: [] - ApplicationStickyCookiePolicies: [] - SecurityGroups: - - sg-12345678 - LoadBalancerType: internet-facing - AccessLog: - PublicationInterval: 60 - IsEnabled: false - DnsName: private-lb-example.123456789.eu-west-2.lbu.outscale.com - HealthCheck: - UnhealthyThreshold: 2 - Timeout: 5 - CheckInterval: 30 - Protocol: TCP - HealthyThreshold: 10 - Port: 80 - LoadBalancerStickyCookiePolicies: - - PolicyName: example-browser-policy - CookieExpirationPeriod: 1 - SubregionNames: - - eu-west-2a - Listeners: - - ServerCertificateId: orn:ows:idauth::012345678910:server-certificate/Certificate - BackendPort: 80 - BackendProtocol: HTTP - LoadBalancerPort: 443 - LoadBalancerProtocol: HTTPS - LoadBalancerName: private-lb-example - ex4: - summary: Updating SSL certificate - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - LoadBalancer: - Tags: [] - SourceSecurityGroup: - SecurityGroupName: security-group-example - SecurityGroupAccountId: '123456789012' - SecuredCookies: false - PublicIp: 192.0.2.0 - Subnets: - - subnet-12345678 - NetId: vpc-12345678 - BackendVmIds: [] - ApplicationStickyCookiePolicies: [] - SecurityGroups: - - sg-12345678 - LoadBalancerType: internet-facing - AccessLog: - PublicationInterval: 60 - IsEnabled: false - DnsName: private-lb-example.123456789.eu-west-2.lbu.outscale.com - HealthCheck: - UnhealthyThreshold: 2 - Timeout: 5 - CheckInterval: 30 - Protocol: TCP - HealthyThreshold: 10 - Port: 80 - LoadBalancerStickyCookiePolicies: [] - SubregionNames: - - eu-west-2a - Listeners: - - ServerCertificateId: orn:ows:idauth::012345678910:server-certificate/AnotherCertificate - BackendPort: 80 - BackendProtocol: HTTP - LoadBalancerPort: 443 - LoadBalancerProtocol: HTTPS - LoadBalancerName: private-lb-example - description: '' - tags: - - LoadBalancer - /UpdateNet: - post: - description: Associates a DHCP options set with a specified Net. - operationId: UpdateNet - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateNetRequest' - examples: - ex1: - value: - NetId: vpc-12345678 - DhcpOptionsSetId: dopt-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateNetResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - Net: - Tags: [] - DhcpOptionsSetId: dopt-12345678 - IpRange: 10.0.0.0/16 - Tenancy: default - NetId: vpc-12345678 - State: available - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - Net - /UpdateNetAccessPoint: - post: - description: |- - Modifies the attributes of a Net access point.
- This action enables you to add or remove route tables associated with the specified Net access point. - operationId: UpdateNetAccessPoint - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateNetAccessPointRequest' - examples: - ex1: - summary: Adding a route table - value: - NetAccessPointId: vpce-12345678 - AddRouteTableIds: - - rtb-87654321 - ex2: - summary: Removing a route table - value: - NetAccessPointId: vpce-12345678 - RemoveRouteTableIds: - - rtb-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateNetAccessPointResponse' - examples: - ex1: - summary: Adding a route table - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - NetAccessPoint: - Tags: [] - NetAccessPointId: vpce-12345678 - RouteTableIds: - - rtb-12345678 - - rtb-87654321 - State: available - NetId: vpc-12345678 - ServiceName: com.outscale.eu-west-2.oos - ex2: - summary: Removing a route table - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - NetAccessPoint: - Tags: [] - NetAccessPointId: vpce-12345678 - RouteTableIds: [] - State: available - NetId: vpc-12345678 - ServiceName: com.outscale.eu-west-2.oos - description: '' - tags: - - NetAccessPoint - /UpdateNic: - post: - description: Modifies the specified network interface card (NIC). You can specify only one attribute at a time. - operationId: UpdateNic - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateNicRequest' - examples: - ex1: - summary: Modifying the DeleteOnVmDeletion value of a NIC - value: - NicId: eni-12345678 - LinkNic: - DeleteOnVmDeletion: false - LinkNicId: eni-attach-12345678 - ex2: - summary: Modifying the security groups of a NIC - value: - NicId: eni-12345678 - SecurityGroupIds: - - sg-12345678 - ex3: - summary: Modifying the description of a NIC - value: - NicId: eni-12345678 - Description: Example of description - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateNicResponse' - examples: - ex1: - summary: Modifying the DeleteOnVmDeletion value of a NIC - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - Nic: - SubregionName: eu-west-2a - SubnetId: subnet-12345678 - State: in-use - LinkNic: - VmId: i-12345678 - LinkNicId: eni-attach-12345678 - VmAccountId: '123456789012' - DeleteOnVmDeletion: false - DeviceNumber: 0 - State: attached - IsSourceDestChecked: true - PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal - Tags: [] - Description: Primary network interface - AccountId: '123456789012' - SecurityGroups: - - SecurityGroupName: default - SecurityGroupId: sg-12345678 - MacAddress: A1:B2:C3:D4:E5:F6 - NetId: vpc-12345678 - NicId: eni-12345678 - PrivateIps: - - PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal - PrivateIp: 10.0.0.4 - IsPrimary: true - ex2: - summary: Modifying the security groups of a NIC - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - Nic: - SubregionName: eu-west-2a - SubnetId: subnet-12345678 - State: in-use - LinkNic: - VmId: i-12345678 - LinkNicId: eni-attach-12345678 - VmAccountId: '123456789012' - DeleteOnVmDeletion: true - DeviceNumber: 0 - State: attached - IsSourceDestChecked: true - PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal - Tags: [] - Description: Primary network interface - AccountId: '123456789012' - SecurityGroups: - - SecurityGroupName: security-group-example - SecurityGroupId: sg-12345678 - MacAddress: A1:B2:C3:D4:E5:F6 - NetId: vpc-12345678 - NicId: eni-12345678 - PrivateIps: - - PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal - PrivateIp: 10.0.0.4 - IsPrimary: true - ex3: - summary: Modifying the description of a NIC - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - Nic: - SubregionName: eu-west-2a - SubnetId: subnet-12345678 - State: in-use - LinkNic: - VmId: i-12345678 - LinkNicId: eni-attach-12345678 - VmAccountId: '123456789012' - DeleteOnVmDeletion: true - DeviceNumber: 0 - State: attached - IsSourceDestChecked: true - PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal - Tags: [] - Description: Example of description - AccountId: '123456789012' - SecurityGroups: - - SecurityGroupName: default - SecurityGroupId: sg-12345678 - MacAddress: A1:B2:C3:D4:E5:F6 - NetId: vpc-12345678 - NicId: eni-12345678 - PrivateIps: - - PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal - PrivateIp: 10.0.0.4 - IsPrimary: true - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - Nic - /UpdateRoute: - post: - description: |- - Replaces an existing route within a route table in a Net.
- You must specify one of the following elements as the target:

- - * Net peering
- * NAT virtual machine (VM)
- * Internet service
- * Virtual gateway
- * NAT service
- * Network interface card (NIC)

- - The routing algorithm is based on the most specific match. - operationId: UpdateRoute - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateRouteRequest' - examples: - ex1: - summary: Updating a route to a virtual gateway - value: - RouteTableId: rtb-12345678 - DestinationIpRange: 198.51.100.0/24 - GatewayId: vgw-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateRouteResponse' - examples: - ex1: - summary: Updating a route to a virtual gateway - value: - RouteTable: - Routes: - - DestinationIpRange: 10.0.0.0/16 - CreationMethod: CreateRouteTable - State: active - - GatewayId: vgw-12345678 - DestinationIpRange: 198.51.100.0/24 - CreationMethod: CreateRoute - State: active - LinkRouteTables: - - RouteTableId: rtb-12345678 - Main: false - SubnetId: subnet-12345678 - LinkRouteTableId: rtbassoc-12345678 - NetId: vpc-12345678 - Tags: [] - RoutePropagatingVirtualGateways: [] - RouteTableId: rtb-12345678 - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - Route - /UpdateRoutePropagation: - post: - description: Configures the propagation of routes to a specified route table of a Net by a virtual gateway. - operationId: UpdateRoutePropagation - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateRoutePropagationRequest' - examples: - ex1: - value: - VirtualGatewayId: vgw-12345678 - RouteTableId: rtb-12345678 - Enable: true - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateRoutePropagationResponse' - examples: - ex1: - value: - RouteTable: - Routes: - - DestinationIpRange: 10.0.0.0/16 - CreationMethod: CreateRouteTable - State: active - LinkRouteTables: - - RouteTableId: rtb-12345678 - Main: true - LinkRouteTableId: rtbassoc-12345678 - NetId: vpc-12345678 - Tags: [] - RoutePropagatingVirtualGateways: - - VirtualGatewayId: vgw-12345678 - RouteTableId: rtb-12345678 - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - VirtualGateway - /UpdateRouteTableLink: - post: - description: |- - Replaces the route table associated with a specific Subnet in a Net with another one.
- After the route table is replaced, the Subnet uses the routes in the new route table it is associated with. - operationId: UpdateRouteTableLink - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateRouteTableLinkRequest' - examples: - ex1: - value: - LinkRouteTableId: rtbassoc-12345678 - RouteTableId: rtb-12345678 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateRouteTableLinkResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - LinkRouteTableId: rtbassoc-12345678 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - RouteTable - /UpdateServerCertificate: - post: - description: Modifies the name and/or the path of a specified server certificate. - operationId: UpdateServerCertificate - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateServerCertificateRequest' - examples: - ex1: - value: - Name: server-cert-example - NewName: new-name - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateServerCertificateResponse' - examples: - ex1: - value: - ServerCertificate: - Path: /example/ - Id: ABCDEFGHIJKLMNOPQRSTUVWXYZ1234 - Name: new-name - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - ServerCertificate - /UpdateSnapshot: - post: - description: |- - Modifies the permissions for a specified snapshot.
- You must specify either the `Additions` or the `Removals` parameter.
- After sharing a snapshot with an OUTSCALE account, the other account can create a copy of it that they own. For more information about copying snapshots, see [CreateSnapshot](#createsnapshot). - operationId: UpdateSnapshot - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateSnapshotRequest' - examples: - ex1: - summary: Adding permission - value: - SnapshotId: snap-12345678 - PermissionsToCreateVolume: - Additions: - AccountIds: - - '987654321098' - ex2: - summary: Removing permission - value: - SnapshotId: snap-12345678 - PermissionsToCreateVolume: - Removals: - AccountIds: - - '987654321098' - ex3: - summary: Making a snapshot public to everyone - value: - SnapshotId: snap-12345678 - PermissionsToCreateVolume: - Additions: - GlobalPermission: true - ex4: - summary: Making a snapshot private to everyone - value: - SnapshotId: snap-12345678 - PermissionsToCreateVolume: - Removals: - GlobalPermission: true - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateSnapshotResponse' - examples: - ex1: - summary: Adding permission - value: - Snapshot: - VolumeSize: 10 - AccountId: '123456789012' - VolumeId: vol-12345678 - CreationDate: '2010-10-01T12:34:56.789Z' - PermissionsToCreateVolume: - GlobalPermission: false - AccountIds: - - '987654321098' - Progress: 100 - SnapshotId: snap-12345678 - State: completed - Description: Snapshot created from a volume - Tags: [] - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - ex2: - summary: Removing permission - value: - Snapshot: - VolumeSize: 10 - AccountId: '123456789012' - VolumeId: vol-12345678 - CreationDate: '2010-10-01T12:34:56.789Z' - PermissionsToCreateVolume: - GlobalPermission: false - AccountIds: [] - Progress: 100 - SnapshotId: snap-12345678 - State: completed - Description: Snapshot created from a volume - Tags: [] - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - ex3: - summary: Making a snapshot public to everyone - value: - Snapshot: - VolumeSize: 10 - AccountId: '123456789012' - VolumeId: vol-12345678 - CreationDate: '2010-10-01T12:34:56.789Z' - PermissionsToCreateVolume: - GlobalPermission: true - AccountIds: [] - Progress: 100 - SnapshotId: snap-12345678 - State: completed - Description: Snapshot created from a volume - Tags: [] - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - ex4: - summary: Making a snapshot private to everyone - value: - Snapshot: - VolumeSize: 10 - AccountId: '123456789012' - VolumeId: vol-12345678 - CreationDate: '2010-10-01T12:34:56.789Z' - PermissionsToCreateVolume: - GlobalPermission: false - AccountIds: [] - Progress: 100 - SnapshotId: snap-12345678 - State: completed - Description: Snapshot created from a volume - Tags: [] - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - Snapshot - /UpdateSubnet: - post: - description: Modifies the specified attribute of a Subnet. - operationId: UpdateSubnet - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateSubnetRequest' - examples: - ex1: - value: - SubnetId: subnet-12345678 - MapPublicIpOnLaunch: true - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateSubnetResponse' - examples: - ex1: - value: - Subnet: - Tags: [] - SubregionName: eu-west-2a - SubnetId: subnet-12345678 - AvailableIpsCount: 16379 - IpRange: 10.0.0.0/18 - MapPublicIpOnLaunch: true - State: available - NetId: vpc-12345678 - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - Subnet - /UpdateUser: - post: - description: Modifies the name and/or the path of a specified EIM user. - operationId: UpdateUser - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateUserRequest' - examples: - ex1: - value: - UserName: example-user - NewUserEmail: user@example.com - NewUserName: test-user - NewPath: /product/ - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateUserResponse' - examples: - ex1: - value: - User: - CreationDate: 2010-10-01T12:34:56.789+0000 - LastModificationDate: 2017-05-10T12:34:56.789+0000 - UserEmail: user@example.com - UserName: test-user - UserId: ABCDEFGHIJKLMNOPQRSTUVWXYZ12345 - Path: /product/ - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - User - /UpdateUserGroup: - post: - description: Modifies the name and/or the path of a specified group. - operationId: UpdateUserGroup - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateUserGroupRequest' - examples: - ex1: - value: - NewPath: /new-path/ - NewUserGroupName: new-usergroup - Path: /example/ - UserGroupName: example-usergroup - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateUserGroupResponse' - examples: - ex1: - value: - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - UserGroup: - CreationDate: '2010-10-01T12:34:56.789Z' - LastModificationDate: '2010-10-01T12:34:56.789Z' - Name: new-usergroup - Orn: orn:ows:idauth::012345678910:usergroup/example/usergroup-example - Path: /new-path/ - UserGroupId: ug-12345678 - Users: - - CreationDate: '2010-10-01T12:34:56.789Z' - LastModificationDate: '2010-10-01T12:34:56.789Z' - Path: /example/ - UserEmail: user@example.com - UserId: ABCDEFGHIJKLMNOPQRSTUVWXYZ12345 - UserName: example-user - description: '' - tags: - - UserGroup - /UpdateVm: - post: - description: |- - Modifies the specified attributes of a virtual machine (VM).
- You must stop the VM before modifying the following attributes:
- * `NestedVirtualization`
- * `Performance`
- * `UserData`
- * `VmType` - - To complete the update of secure boot, you need to do a stop/start of the VM. A simple restart is not sufficient, as the update is done when the VM goes through the stopped state. For the difference between stop/start and restart, see [About VM Lifecycle](https://docs.outscale.com/en/userguide/About-VM-Lifecycle.html). - operationId: UpdateVm - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateVmRequest' - examples: - ex1: - value: - VmId: i-12345678 - VmType: tinav5.c2r2p2 - ex2: - value: - VmId: i-12345678 - UserData: ... - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateVmResponse' - examples: - ex1: - value: - Vm: - VmType: tinav5.c2r2p2 - VmInitiatedShutdownBehavior: stop - State: stopped - StateReason: '' - RootDeviceType: ebs - RootDeviceName: /dev/sda1 - IsSourceDestChecked: true - KeypairName: keypair-example - ImageId: ami-12345678 - DeletionProtection: false - Architecture: x86_64 - NestedVirtualization: false - BlockDeviceMappings: - - DeviceName: /dev/sda1 - Bsu: - VolumeId: vol-12345678 - State: attached - LinkDate: '2010-10-01T12:34:56.789Z' - DeleteOnVmDeletion: true - VmId: i-12345678 - ReservationId: r-12345678 - Hypervisor: xen - Placement: - Tenancy: default - SubregionName: eu-west-2a - ProductCodes: - - '0001' - CreationDate: '2010-10-01T12:34:56.789Z' - UserData: '' - SubnetId: subnet-12345678 - PrivateIp: 10.0.0.4 - SecurityGroups: - - SecurityGroupName: security-group-example - SecurityGroupId: sg-12345678 - BsuOptimized: false - LaunchNumber: 0 - NetId: vpc-12345678 - Nics: - - SubnetId: subnet-12345678 - State: in-use - LinkNic: - State: attached - DeviceNumber: 0 - LinkNicId: eni-attach-12345678 - DeleteOnVmDeletion: true - IsSourceDestChecked: true - PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal - Description: Primary network interface - AccountId: '123456789012' - SecurityGroups: - - SecurityGroupName: security-group-example - SecurityGroupId: sg-12345678 - MacAddress: A1:B2:C3:D4:E5:F6 - NetId: vpc-12345678 - NicId: eni-12345678 - PrivateIps: - - PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal - PrivateIp: 10.0.0.4 - IsPrimary: true - Performance: high - Tags: - - Value: prod - Key: env - PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal - ActionsOnNextBoot: - SecureBoot: none - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - ex2: - value: - Vm: - VmType: tinav5.c1r1p2 - VmInitiatedShutdownBehavior: stop - State: stopped - StateReason: '' - RootDeviceType: ebs - RootDeviceName: /dev/sda1 - IsSourceDestChecked: true - KeypairName: keypair-example - ImageId: ami-12345678 - DeletionProtection: true - Architecture: x86_64 - NestedVirtualization: false - BlockDeviceMappings: - - DeviceName: /dev/sda1 - Bsu: - VolumeId: vol-12345678 - State: attached - LinkDate: '2010-10-01T12:34:56.789Z' - DeleteOnVmDeletion: true - VmId: i-12345678 - ReservationId: r-12345678 - Hypervisor: xen - Placement: - Tenancy: default - SubregionName: eu-west-2a - ProductCodes: - - '0001' - CreationDate: '2010-10-01T12:34:56.789Z' - UserData: ... - SubnetId: subnet-12345678 - PrivateIp: 10.0.0.4 - SecurityGroups: - - SecurityGroupName: security-group-example - SecurityGroupId: sg-12345678 - BsuOptimized: false - LaunchNumber: 0 - NetId: vpc-12345678 - Nics: - - SubnetId: subnet-12345678 - State: in-use - LinkNic: - State: attached - DeviceNumber: 0 - LinkNicId: eni-attach-12345678 - DeleteOnVmDeletion: true - IsSourceDestChecked: true - PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal - Description: Primary network interface - AccountId: '123456789012' - SecurityGroups: - - SecurityGroupName: security-group-example - SecurityGroupId: sg-12345678 - MacAddress: A1:B2:C3:D4:E5:F6 - NetId: vpc-12345678 - NicId: eni-12345678 - PrivateIps: - - PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal - PrivateIp: 10.0.0.4 - IsPrimary: true - Performance: high - Tags: - - Value: prod - Key: env - PrivateDnsName: ip-10-0-0-4.eu-west-2.compute.internal - ActionsOnNextBoot: - SecureBoot: none - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - Vm - /UpdateVmGroup: - post: - description: |- - > [WARNING]
- > This feature is currently under development and may not function properly.
- - Modifies the specified attributes of a group of virtual machines (VMs). - operationId: UpdateVmGroup - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateVmGroupRequest' - examples: - ex1: - summary: Updating the name and description of a VM group - value: - VmGroupId: vmgroup-12345678901234567890123456789012 - VmGroupName: new-name - Description: New description of the VM group - ex2: - summary: Updating the VM template of a VM group - value: - VmGroupId: vmgroup-12345678901234567890123456789012 - VmTemplateId: vmtemplate-98765432109876543210987654321012 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateVmGroupResponse' - examples: - ex1: - value: - VmGroup: - VmTemplateId: vmtemplate-98765432109876543210987654321012 - SecurityGroupIds: - - sg-12345678 - VmIds: [] - CreationDate: 2010-10-01T12:34:56.789+0000 - VmCount: 2 - VmGroupName: new-name - SubnetId: subnet-12345678 - PositioningStrategy: attract - State: available - VmGroupId: vmgroup-12345678901234567890123456789012 - Description: New description of the VM group - Tags: [] - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - VmGroup - /UpdateVmTemplate: - post: - description: |- - > [WARNING]
- > This feature is currently under development and may not function properly.
- - Modifies the specified attributes of a template of virtual machines (VMs). - operationId: UpdateVmTemplate - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateVmTemplateRequest' - examples: - ex1: - value: - Description: The new description of the VM template - VmTemplateId: vmtemplate-98765432109876543210987654321012 - VmTemplateName: second-name - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateVmTemplateResponse' - examples: - ex1: - value: - VmTemplate: - VmTemplateName: second-name - CpuPerformance: high - CreationDate: 2010-10-01T12:34:56.789+0000 - CpuCores: 2 - Tags: [] - Description: The new description of the VM template - ImageId: ami-12345678 - CpuGeneration: v4 - VmTemplateId: vmtemplate-98765432109876543210987654321012 - Ram: 2 - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - tags: - - VmTemplate - /UpdateVolume: - post: - description: |- - Modifies the specified attributes of a volume.
- - **[WARNING]**
- - We recommend creating a snapshot of your volume before updating it, in case any issue occurs during the process. For more information, see [Creating a Snapshot of a Volume](https://docs.outscale.com/en/userguide/Creating-a-Snapshot-of-a-Volume.html). - - Do not shut down or restart the virtual machine (VM) from within the guest operating system while a volume update is in progress. This interrupts the process and compromises the integrity of the volume. - - When the modification is not instantaneous, the response displays the previous value. You can use the [ReadVolumeUpdateTasks](#readvolumeupdatetasks) method to see the progression of the update.
- operationId: UpdateVolume - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateVolumeRequest' - examples: - ex1: - summary: Updating the size of a volume - value: - VolumeId: vol-12345678 - Size: 50 - ex2: - summary: Updating the type of a volume to io1 - value: - VolumeId: vol-12345678 - VolumeType: io1 - Iops: 200 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateVolumeResponse' - examples: - ex1: - summary: Updating the size of a volume - value: - Volume: - VolumeId: vol-12345678 - Tags: [] - VolumeType: gp2 - SubregionName: eu-west-2a - State: available - CreationDate: '2010-10-01T12:34:56.789Z' - Iops: 100 - LinkedVolumes: [] - Size: 10 - TaskId: vol-update-12345678 - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - ex2: - summary: Updating the type of a volume to io1 - value: - Volume: - VolumeId: vol-12345678 - Tags: [] - VolumeType: io1 - SubregionName: eu-west-2a - State: available - CreationDate: '2010-10-01T12:34:56.789Z' - Iops: 200 - LinkedVolumes: [] - Size: 10 - TaskId: vol-update-12345678 - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - Volume - /UpdateVpnConnection: - post: - description: Modifies the specified attributes of a VPN connection. - operationId: UpdateVpnConnection - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateVpnConnectionRequest' - examples: - ex1: - value: - VpnConnectionId: vpn-12345678 - VpnOptions: - TunnelInsideIpRange: 169.254.254.22/30 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateVpnConnectionResponse' - examples: - ex1: - value: - VpnConnection: - VpnOptions: - TunnelInsideIpRange: 169.254.254.22/30 - Routes: [] - Tags: [] - ClientGatewayConfiguration: ... - StaticRoutesOnly: true - VirtualGatewayId: vgw-12345678 - ConnectionType: ipsec.1 - ClientGatewayId: cgw-12345678 - State: pending - VgwTelemetries: - - StateDescription: IPSEC IS DOWN - AcceptedRouteCount: 0 - LastStateChangeDate: '2017-05-10T12:34:56.789Z' - OutsideIpAddress: 192.0.2.0 - VpnConnectionId: vpn-12345678 - ResponseContext: - RequestId: 0475ca1e-d0c5-441d-712a-da55a4175157 - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - description: '' - tags: - - VpnConnection -security: -- ApiKeyAuth: [] -servers: -- url: https://api.{region}.outscale.com/api/v1 - variables: - region: - default: eu-west-2 - enum: - - ap-northeast-1 - - cloudgouv-eu-west-1 - - eu-west-2 - - us-east-2 - - us-west-1 diff --git a/osc_sdk_python/runtime/async_/call.py b/osc_sdk_python/runtime/async_/call.py index f5d3338..a19e96f 100644 --- a/osc_sdk_python/runtime/async_/call.py +++ b/osc_sdk_python/runtime/async_/call.py @@ -1,6 +1,7 @@ import json import warnings from datetime import timedelta +from urllib.parse import urlencode import httpx from urllib3.util import parse_url @@ -9,6 +10,7 @@ from ...authentication import Authentication, DEFAULT_USER_AGENT from ...credentials import Profile from ...limiter import RateLimiter +from ..request import RequestSpec class AsyncCall(object): @@ -71,11 +73,18 @@ def update_retry(self, **kwargs): self.retry_kwargs[key] = float(value) return kwargs - async def api(self, action, service="api", **data): - endpoint = self.profile.get_endpoint(service) + "/" + action + async def request(self, spec: RequestSpec, path_params=None): + path = spec.resolved_path(path_params) + endpoint = ( + self.profile.get_endpoint(spec.service).rstrip("/") + "/" + path.lstrip("/") + ) parsed_url = parse_url(endpoint) uri = parsed_url.path host = parsed_url.host + canonical_querystring = urlencode( + sorted((spec.query_params or {}).items()), doseq=True + ) + payload = "" if spec.json_body is None else json.dumps(spec.json_body) if self.limiter is not None: await self.limiter.async_acquire() @@ -85,6 +94,8 @@ async def api(self, action, service="api", **data): Authentication( self.profile, host, + method=spec.method.upper(), + service=spec.service, user_agent=self.user_agent, ), endpoint, @@ -92,11 +103,30 @@ async def api(self, action, service="api", **data): ) if self.logger is not None: self.logger.do_log( - "uri: " + uri + "\npayload:\n" + json.dumps(data, indent=2) + "uri: " + + uri + + "\npayload:\n" + + json.dumps(spec.json_body, indent=2) ) - response = await requester.send(uri, json.dumps(data)) + response = await requester.send( + spec.method.upper(), + uri, + payload, + query_params=spec.query_params, + canonical_querystring=canonical_querystring, + ) return response.json() + async def api(self, action, service="api", **data): + return await self.request( + RequestSpec( + service=service, + method="POST", + path="/" + action, + json_body=data, + ) + ) + async def close(self): if self.client: await self.client.aclose() diff --git a/osc_sdk_python/runtime/async_/requester.py b/osc_sdk_python/runtime/async_/requester.py index fbee7c1..82600fa 100644 --- a/osc_sdk_python/runtime/async_/requester.py +++ b/osc_sdk_python/runtime/async_/requester.py @@ -8,14 +8,24 @@ def __init__(self, client, auth, endpoint, **kwargs): self.endpoint = endpoint self.request_kwargs = kwargs - async def send(self, uri, payload): - if self.auth.is_basic_auth_configured(): + async def send(self, method, uri, payload, query_params=None, canonical_querystring=""): + if self.auth.service == "oks": + headers = self.auth.forge_headers_oks() + elif self.auth.is_basic_auth_configured(): headers = self.auth.get_basic_auth_header() else: - headers = self.auth.forge_headers_signed(uri, payload) + headers = self.auth.forge_headers_signed( + uri, payload, canonical_querystring=canonical_querystring + ) retry_kwargs = self.request_kwargs.copy() - retry_kwargs.update({"content": payload, "headers": headers}) + retry_kwargs.update( + { + "content": payload, + "headers": headers, + "params": query_params or {}, + } + ) - response = AsyncRetry(self.client, "POST", self.endpoint, **retry_kwargs) + response = AsyncRetry(self.client, method, self.endpoint, **retry_kwargs) return await response.execute() diff --git a/osc_sdk_python/runtime/request.py b/osc_sdk_python/runtime/request.py new file mode 100644 index 0000000..3209294 --- /dev/null +++ b/osc_sdk_python/runtime/request.py @@ -0,0 +1,17 @@ +from dataclasses import dataclass, field +from urllib.parse import quote + + +@dataclass +class RequestSpec: + service: str + method: str + path: str + json_body: dict | list | None = None + query_params: dict = field(default_factory=dict) + + def resolved_path(self, path_params: dict | None = None) -> str: + path = self.path + for name, value in (path_params or {}).items(): + path = path.replace("{" + name + "}", quote(str(value), safe="")) + return path diff --git a/osc_sdk_python/runtime/sync/call.py b/osc_sdk_python/runtime/sync/call.py index e14f270..5cbe85a 100644 --- a/osc_sdk_python/runtime/sync/call.py +++ b/osc_sdk_python/runtime/sync/call.py @@ -1,14 +1,15 @@ -from ...authentication import Authentication -from ...authentication import DEFAULT_USER_AGENT +import json +import warnings +from datetime import timedelta +from urllib.parse import urlencode + +from ...authentication import Authentication, DEFAULT_USER_AGENT from ...credentials import Profile +from ...limiter import RateLimiter +from ..request import RequestSpec from .requester import Requester from requests import Session from urllib3.util import parse_url -from datetime import timedelta -from ...limiter import RateLimiter - -import json -import warnings class Call(object): @@ -64,12 +65,21 @@ def update_retry(self, **kwargs): self.retry_kwargs[key] = float(value) return kwargs - def api(self, action, service="api", **data): + def request(self, spec: RequestSpec, path_params=None): try: - endpoint = self.profile.get_endpoint(service) + "/" + action + path = spec.resolved_path(path_params) + endpoint = ( + self.profile.get_endpoint(spec.service).rstrip("/") + + "/" + + path.lstrip("/") + ) parsed_url = parse_url(endpoint) uri = parsed_url.path host = parsed_url.host + canonical_querystring = urlencode( + sorted((spec.query_params or {}).items()), doseq=True + ) + payload = "" if spec.json_body is None else json.dumps(spec.json_body) if self.limiter is not None: self.limiter.acquire() @@ -79,6 +89,8 @@ def api(self, action, service="api", **data): Authentication( self.profile, host, + method=spec.method.upper(), + service=spec.service, user_agent=self.user_agent, ), endpoint, @@ -86,12 +98,31 @@ def api(self, action, service="api", **data): ) if self.logger is not None: self.logger.do_log( - "uri: " + uri + "\npayload:\n" + json.dumps(data, indent=2) + "uri: " + + uri + + "\npayload:\n" + + json.dumps(spec.json_body, indent=2) ) - return requester.send(uri, json.dumps(data)) + return requester.send( + spec.method.upper(), + uri, + payload, + query_params=spec.query_params, + canonical_querystring=canonical_querystring, + ) except Exception as err: raise err + def api(self, action, service="api", **data): + return self.request( + RequestSpec( + service=service, + method="POST", + path="/" + action, + json_body=data, + ) + ) + def close(self): if self.session: self.session.close() diff --git a/osc_sdk_python/runtime/sync/requester.py b/osc_sdk_python/runtime/sync/requester.py index 3e89887..f926f9b 100644 --- a/osc_sdk_python/runtime/sync/requester.py +++ b/osc_sdk_python/runtime/sync/requester.py @@ -8,12 +8,16 @@ def __init__(self, session, auth, endpoint, **kwargs): self.endpoint = endpoint self.request_kwargs = kwargs - def send(self, uri, payload): + def send(self, method, uri, payload, query_params=None, canonical_querystring=""): headers = None - if self.auth.is_basic_auth_configured(): + if self.auth.service == "oks": + headers = self.auth.forge_headers_oks() + elif self.auth.is_basic_auth_configured(): headers = self.auth.get_basic_auth_header() else: - headers = self.auth.forge_headers_signed(uri, payload) + headers = self.auth.forge_headers_signed( + uri, payload, canonical_querystring=canonical_querystring + ) if self.auth.x509_client_cert is not None: cert_file = self.auth.x509_client_cert @@ -22,8 +26,14 @@ def send(self, uri, payload): retry_kwargs = self.request_kwargs.copy() retry_kwargs.update( - {"data": payload, "headers": headers, "verify": True, "cert": cert_file} + { + "data": payload, + "headers": headers, + "verify": True, + "cert": cert_file, + "params": query_params or {}, + } ) - response = Retry(self.session, "post", self.endpoint, **retry_kwargs) + response = Retry(self.session, method, self.endpoint, **retry_kwargs) return response.execute().json() diff --git a/tests/async_/test_async_oks.py b/tests/async_/test_async_oks.py new file mode 100644 index 0000000..9f74867 --- /dev/null +++ b/tests/async_/test_async_oks.py @@ -0,0 +1,29 @@ +import asyncio +import unittest + +from osc_sdk_python import AsyncClient + + +class TestAsyncOks(unittest.TestCase): + def test_list_projects(self): + async def run(): + async with AsyncClient() as client: + projects = await client.oks.ListProjects() + + self.assertEqual(type(projects), dict) + self.assertEqual(type(projects.get("Projects")), list) + + asyncio.run(run()) + + def test_kubernetes_versions(self): + async def run(): + async with AsyncClient() as client: + versions = await client.oks.GetKubernetesVersions() + + self.assertEqual(type(versions), dict) + self.assertEqual(type(versions.get("Versions")), list) + + asyncio.run(run()) + +if __name__ == "__main__": + unittest.main() diff --git a/tests/async_/test_async_vm.py b/tests/async_/test_async_vm.py index 6576f13..130b79d 100644 --- a/tests/async_/test_async_vm.py +++ b/tests/async_/test_async_vm.py @@ -3,17 +3,17 @@ import unittest sys.path.append("..") -from osc_sdk_python import AsyncGateway +from osc_sdk_python import AsyncClient class TestAsyncVm(unittest.TestCase): def test_listing(self): async def run(): - gw = AsyncGateway() + client = AsyncClient() try: - vms = await gw.ReadVms() + vms = await client.osc.ReadVms() finally: - await gw.close() + await client.close() self.assertEqual(type(vms), dict) self.assertEqual(type(vms.get("Vms")), list) @@ -22,8 +22,8 @@ async def run(): def test_listing_with_context_manager(self): async def run(): - async with AsyncGateway() as gw: - vms = await gw.ReadVms() + async with AsyncClient() as client: + vms = await client.osc.ReadVms() self.assertEqual(type(vms), dict) self.assertEqual(type(vms.get("Vms")), list) From 489ecda6d9af895f62758e7b0dbc1d85d880c978 Mon Sep 17 00:00:00 2001 From: Yash Gaykar Date: Mon, 18 May 2026 21:45:01 +0530 Subject: [PATCH 06/26] :bookmark: release: add OKS spec update automation --- .github/scripts/release-build.sh | 5 +++++ .github/workflows/build.yml | 10 ++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/.github/scripts/release-build.sh b/.github/scripts/release-build.sh index f3520b8..a4c02d6 100755 --- a/.github/scripts/release-build.sh +++ b/.github/scripts/release-build.sh @@ -1,6 +1,7 @@ #!/bin/env bash set -e osc_api_version=${1#v} +oks_api_url=${2:-https://docs.outscale.com/_attachments/oks.yaml} if [ -z "$osc_api_version" ]; then echo "run $0 with version tag as argument, abort." @@ -21,6 +22,10 @@ new_sdk_version="$local_sdk_version_major.$new_sdk_version_minor.0" curl --retry 10 -o "${root}/osc_sdk_python/resources/osc/api.yaml" "https://raw.githubusercontent.com/outscale/osc-api/refs/tags/${osc_api_version}/outscale.yaml" git add "${root}/osc_sdk_python/resources/osc/api.yaml" +# Update oks-api version +curl --retry 10 -o "${root}/osc_sdk_python/resources/oks/api.yaml" "${oks_api_url}" +git add "${root}/osc_sdk_python/resources/oks/api.yaml" + # Setup new SDK version for f in "$root/README.md" "$root/osc_sdk_python/VERSION"; do sed -i "s/$local_sdk_version_major\.$local_sdk_version_minor\.$local_sdk_version_patch/$local_sdk_version_major\.$new_sdk_version_minor\.0/g" "$f" diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f6c2f33..df5c6fb 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -6,6 +6,10 @@ on: api_version: description: 'Outscale API version' required: true + oks_api_url: + description: 'OKS OpenAPI URL' + required: false + default: 'https://docs.outscale.com/_attachments/oks.yaml' permissions: contents: write @@ -24,9 +28,10 @@ jobs: - name: Set up Python run: uv python install - name: Build release - run: .github/scripts/release-build.sh "$API_VERSION" + run: .github/scripts/release-build.sh "$API_VERSION" "$OKS_API_URL" env: API_VERSION: ${{ github.event.inputs.api_version }} + OKS_API_URL: ${{ github.event.inputs.oks_api_url }} - name: Get SDK version id: get-sdk-version run: | @@ -38,11 +43,12 @@ jobs: author: "Outscale Bot " commit-message: "🔖 release: osc-sdk-python v${{ env.sdk_version }}" body: | - Automatic build of SDK v${{ env.sdk_version }} version based on Outscale API ${{ env.api_version }}. + Automatic build of SDK v${{ env.sdk_version }} version based on Outscale API ${{ env.api_version }} and OKS API ${{ env.oks_api_url }}. title: "SDK v${{ env.sdk_version }}" token: "${{ env.token }}" labels: "kind/feature" env: sdk_version: ${{ steps.get-sdk-version.outputs.sdk_version }} api_version: ${{ github.event.inputs.api_version }} + oks_api_url: ${{ github.event.inputs.oks_api_url }} token: ${{ secrets.GH_TOKEN || secrets.GITHUB_TOKEN }} From 653069c33d88335a0b6ac83ec44ec03c4b78af8e Mon Sep 17 00:00:00 2001 From: Yash Gaykar Date: Wed, 20 May 2026 13:31:44 +0530 Subject: [PATCH 07/26] :white_check_mark: test: add test for async security group lifecycle --- tests/async_/test_async_security_group.py | 78 +++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 tests/async_/test_async_security_group.py diff --git a/tests/async_/test_async_security_group.py b/tests/async_/test_async_security_group.py new file mode 100644 index 0000000..186ab6b --- /dev/null +++ b/tests/async_/test_async_security_group.py @@ -0,0 +1,78 @@ +import asyncio +import sys +import unittest + +sys.path.append("..") +from osc_sdk_python import AsyncClient +from tests.integration_utils import get_tagged_name, log_test_step + + +class TestAsyncSecurityGroup(unittest.TestCase): + def test_security_group_lifecycle(self): + async def run(): + async with AsyncClient() as client: + security_group_id = None + tcp = "tcp" + ip_range = "0.0.0.0/0" + try: + log_test_step("Creating security group (async)") + response = await client.osc.CreateSecurityGroup( + SecurityGroupName=get_tagged_name("osc-sdk-python-sg-async"), + Description="Test security group lifecycle async", + ) + security_group = response.get("SecurityGroup") + self.assertIsInstance(security_group, dict) + security_group_id = security_group.get("SecurityGroupId") + self.assertTrue(security_group_id) + log_test_step("Created security group {} (async)".format(security_group_id)) + + log_test_step("Creating inbound SSH rule on {} (async)".format(security_group_id)) + rule_response = await client.osc.CreateSecurityGroupRule( + SecurityGroupId=security_group_id, + Flow="Inbound", + IpProtocol=tcp, + FromPortRange=22, + ToPortRange=22, + IpRange=ip_range, + ) + self.assertIsInstance(rule_response.get("SecurityGroup"), dict) + + log_test_step("Reading security group {} (async)".format(security_group_id)) + read_response = await client.osc.ReadSecurityGroups( + Filters={"SecurityGroupIds": [security_group_id]} + ) + security_groups = read_response.get("SecurityGroups") + self.assertIsInstance(security_groups, list) + self.assertEqual(len(security_groups), 1) + + rules = security_groups[0].get("InboundRules", []) + self.assertTrue( + any( + rule.get("FromPortRange") == 22 + and rule.get("ToPortRange") == 22 + and rule.get("IpProtocol") == tcp + and ip_range in rule.get("IpRanges", []) + for rule in rules + ), + "expected SSH inbound rule on the security group", + ) + + log_test_step("Deleting inbound SSH rule on {} (async)".format(security_group_id)) + await client.osc.DeleteSecurityGroupRule( + SecurityGroupId=security_group_id, + Flow="Inbound", + IpProtocol=tcp, + FromPortRange=22, + ToPortRange=22, + IpRange=ip_range, + ) + finally: + if security_group_id: + log_test_step("Deleting security group {} (async)".format(security_group_id)) + await client.osc.DeleteSecurityGroup(SecurityGroupId=security_group_id) + + asyncio.run(run()) + + +if __name__ == "__main__": + unittest.main() \ No newline at end of file From 85e8622abd45904af7051eb33f85d5d17fe99b4e Mon Sep 17 00:00:00 2001 From: Yash Gaykar Date: Thu, 21 May 2026 14:43:34 +0530 Subject: [PATCH 08/26] :sparkles: feat: Add generator for oks to create models, funs to integrate with SDK --- osc_sdk_python/codegen/__init__.py | 2 + osc_sdk_python/codegen/adapters.py | 170 ++++ osc_sdk_python/codegen/generator.py | 181 ++++ osc_sdk_python/codegen/ir.py | 28 + osc_sdk_python/generated/__init__.py | 2 + osc_sdk_python/generated/oks/__init__.py | 205 +++++ osc_sdk_python/generated/oks/async_client.py | 864 +++++++++++++++++++ osc_sdk_python/generated/oks/models.py | 528 ++++++++++++ osc_sdk_python/outscale_gateway.py | 34 +- pyproject.toml | 1 + tests/async_/test_async_typed_oks.py | 24 + uv.lock | 154 ++++ 12 files changed, 2175 insertions(+), 18 deletions(-) create mode 100644 osc_sdk_python/codegen/__init__.py create mode 100644 osc_sdk_python/codegen/adapters.py create mode 100644 osc_sdk_python/codegen/generator.py create mode 100644 osc_sdk_python/codegen/ir.py create mode 100644 osc_sdk_python/generated/__init__.py create mode 100644 osc_sdk_python/generated/oks/__init__.py create mode 100644 osc_sdk_python/generated/oks/async_client.py create mode 100644 osc_sdk_python/generated/oks/models.py create mode 100644 tests/async_/test_async_typed_oks.py diff --git a/osc_sdk_python/codegen/__init__.py b/osc_sdk_python/codegen/__init__.py new file mode 100644 index 0000000..4bcfe30 --- /dev/null +++ b/osc_sdk_python/codegen/__init__.py @@ -0,0 +1,2 @@ +"""Small OpenAPI code generation helpers for generated typed clients.""" + diff --git a/osc_sdk_python/codegen/adapters.py b/osc_sdk_python/codegen/adapters.py new file mode 100644 index 0000000..ef30c0f --- /dev/null +++ b/osc_sdk_python/codegen/adapters.py @@ -0,0 +1,170 @@ +import keyword +import re +from typing import Any + +from .ir import Field, Model, Operation + + +def snake_case(value: str) -> str: + value = re.sub(r"(.)([A-Z][a-z]+)", r"\1_\2", value) + value = re.sub(r"([a-z0-9])([A-Z])", r"\1_\2", value) + name = re.sub(r"\W+", "_", value).strip("_").lower() + if not name: + name = "value" + if name[0].isdigit(): + name = "_" + name + if keyword.iskeyword(name): + name += "_" + return name + + +def class_name(value: str) -> str: + name = re.sub(r"\W+", "_", value).strip("_") + if not name: + return "Generated" + if name[0].isdigit(): + name = "_" + name + return name + + +def schema_type(schema: dict[str, Any], ref_resolver=class_name) -> str: + if schema.get("nullable"): + return ( + schema_type({k: v for k, v in schema.items() if k != "nullable"}, ref_resolver) + + " | None" + ) + + if "$ref" in schema: + return ref_resolver(ref_name(schema["$ref"])) + + for composed in ("allOf", "oneOf", "anyOf"): + options = schema.get(composed) + if not options: + continue + if len(options) == 1: + return schema_type(options[0], ref_resolver) + return "Any" + + typ = schema.get("type") + if typ == "boolean": + return "bool" + if typ == "integer": + return "int" + if typ == "number": + return "float" + if typ == "array": + item_type = schema_type(schema.get("items", {}), ref_resolver) + return f"list[{item_type}]" + if typ == "object": + additional = schema.get("additionalProperties") + if isinstance(additional, dict): + return f"dict[str, {schema_type(additional, ref_resolver)}]" + return "dict[str, Any]" + return "str" + + +def ref_name(ref: str) -> str: + return ref.rsplit("/", 1)[-1] + + +class PathOperationAdapter: + def __init__(self, spec: dict[str, Any], service: str): + self.spec = spec + self.service = service + + def operations(self, selected: set[str] | None = None) -> list[Operation]: + operations = [] + for path, path_item in self.spec.get("paths", {}).items(): + for method in ["get", "post", "put", "patch", "delete"]: + operation = path_item.get(method) + if operation is None: + continue + + operation_id = operation.get("operationId") + if selected is not None and operation_id not in selected: + continue + + path_fields = [] + query_fields = [] + for parameter in path_item.get("parameters", []) + operation.get("parameters", []): + location = parameter.get("in") + if location not in {"path", "query"}: + continue + name = parameter["name"] + field = Field( + name=snake_case(name), + alias=name, + annotation=schema_type(parameter.get("schema", {})), + required=parameter.get("required", False), + ) + if location == "path": + path_fields.append(field) + else: + query_fields.append(field) + + body_field = self._body_field(operation) + request_fields = path_fields + query_fields + if body_field is not None: + request_fields.append(body_field) + + request_model = Model(f"{operation_id}Request", request_fields) + response_model = self._response_model(operation) + operations.append( + Operation( + operation_id=operation_id, + method_name=snake_case(operation_id), + request_model=request_model, + response_model=response_model, + http_method=method.upper(), + path=path, + path_fields=path_fields, + query_fields=query_fields, + body_field=body_field, + ) + ) + return operations + + def schema_models(self) -> list[Model]: + models = [] + schemas = self.spec.get("components", {}).get("schemas", {}) + for schema_name, schema in schemas.items(): + required_fields = set(schema.get("required", [])) + fields = [] + for property_name, property_schema in schema.get("properties", {}).items(): + fields.append( + Field( + name=snake_case(property_name), + alias=property_name, + annotation=schema_type(property_schema), + required=property_name in required_fields, + ) + ) + models.append(Model(class_name(schema_name), fields)) + return models + + def _body_field(self, operation: dict[str, Any]) -> Field | None: + request_body = operation.get("requestBody") + if request_body is None: + return None + + content = request_body.get("content", {}) + schema = content.get("application/json", {}).get("schema", {}) + return Field( + name="body", + alias="body", + annotation=schema_type(schema), + required=request_body.get("required", False), + ) + + def _response_model(self, operation: dict[str, Any]) -> str: + responses = operation.get("responses", {}) + for status in sorted(responses): + if not str(status).startswith("2"): + continue + content = responses[status].get("content", {}) + schema = content.get("application/json", {}).get("schema", {}) + if "$ref" in schema: + return class_name(ref_name(schema["$ref"])) + if schema: + return schema_type(schema) + return "dict[str, Any]" diff --git a/osc_sdk_python/codegen/generator.py b/osc_sdk_python/codegen/generator.py new file mode 100644 index 0000000..f5bf96c --- /dev/null +++ b/osc_sdk_python/codegen/generator.py @@ -0,0 +1,181 @@ +from pathlib import Path +from typing import Iterable + +import ruamel.yaml + +from .adapters import PathOperationAdapter +from .ir import Field, Model, Operation + + +GENERATED_HEADER = '''"""Generated typed OKS client slice. + +Do not edit by hand. Regenerate with: + python -m osc_sdk_python.codegen.generator +""" +''' + + +def _annotation(value: str, required: bool) -> str: + if required or " | None" in value: + return value + return value + " | None" + + +def _field_args(required: bool, alias: str) -> str: + if required: + return f"alias={alias!r}" + return f"default=None, alias={alias!r}" + + +def _render_model(model: Model) -> str: + lines = [f"class {model.name}(GeneratedModel):"] + if not model.fields: + lines.append(" pass") + return "\n".join(lines) + + for field in model.fields: + lines.append( + f" {field.name}: {_annotation(field.annotation, field.required)} = Field({_field_args(field.required, field.alias)})" + ) + return "\n".join(lines) + + +def render_models(operations: Iterable[Operation], schema_models: Iterable[Model]) -> str: + models = [_render_model(model) for model in schema_models] + models.extend(_render_model(operation.request_model) for operation in operations) + return ( + GENERATED_HEADER + + "from __future__ import annotations\n\n" + + "from typing import Any\n\n" + + "from pydantic import BaseModel, ConfigDict, Field\n\n\n" + + "class GeneratedModel(BaseModel):\n" + + " model_config = ConfigDict(populate_by_name=True, extra=\"allow\")\n\n\n" + + "\n\n".join(models) + + "\n" + ) + + +def _field_dump(field: Field) -> str: + return f"{field.alias!r}: request.{field.name}" + + +def render_async_client(operations: list[Operation]) -> str: + imports = sorted( + {operation.request_model.name for operation in operations} + | {operation.response_model for operation in operations} + ) + model_imports = "\n".join(f" {name}," for name in imports) + lines = [ + GENERATED_HEADER, + "from typing import Any", + "", + "from osc_sdk_python.runtime.request import RequestSpec", + "from .models import (", + model_imports, + ")", + "", + "", + "def _dump_json_body(value: Any) -> Any:", + " if hasattr(value, \"model_dump\"):", + " return value.model_dump(exclude_none=True, by_alias=True)", + " return value", + "", + "", + "class AsyncOksTypedMixin:", + ] + for operation in operations: + json_body = ( + f"_dump_json_body(request.{operation.body_field.name})" + if operation.body_field is not None + else "None" + ) + lines.extend( + [ + f" async def {operation.method_name}(", + " self,", + f" request: {operation.request_model.name} | None = None,", + f" ) -> {operation.response_model}:", + " if request is None:", + f" request = {operation.request_model.name}()", + "", + " path_params = {", + ] + ) + lines.extend(f" {_field_dump(field)}," for field in operation.path_fields) + lines.extend( + [ + " }", + " query_params = {", + ] + ) + lines.extend(f" {_field_dump(field)}," for field in operation.query_fields) + lines.extend( + [ + " }", + " response = await self.call.request(", + " RequestSpec(", + " service=\"oks\",", + f" method=\"{operation.http_method}\",", + f" path=\"{operation.path}\",", + f" json_body={json_body},", + " query_params={", + " key: value", + " for key, value in query_params.items()", + " if value is not None", + " },", + " ),", + " path_params=path_params,", + " )", + f" return {operation.response_model}.model_validate(response)", + "", + ] + ) + return "\n".join(lines) + + +def render_init(operations: list[Operation], schema_models: list[Model]) -> str: + model_names = sorted( + {model.name for model in schema_models} + | {operation.request_model.name for operation in operations} + ) + lines = [ + "from .async_client import AsyncOksTypedMixin", + "from .models import (", + ] + lines.extend(f" {name}," for name in model_names) + lines.extend( + [ + ")", + "", + "__all__ = [", + " \"AsyncOksTypedMixin\",", + ] + ) + lines.extend(f" {name!r}," for name in model_names) + lines.append("]\n") + return "\n".join(lines) + + +def generate(spec_path: Path, output_dir: Path) -> None: + yaml = ruamel.yaml.YAML(typ="safe") + spec = yaml.load(spec_path.read_text()) + adapter = PathOperationAdapter(spec, service="oks") + operations = adapter.operations() + schema_models = adapter.schema_models() + + output_dir.mkdir(parents=True, exist_ok=True) + (output_dir / "models.py").write_text(render_models(operations, schema_models)) + (output_dir / "async_client.py").write_text(render_async_client(operations)) + (output_dir / "__init__.py").write_text(render_init(operations, schema_models)) + + +def main() -> None: + root = Path(__file__).resolve().parents[1] + generate( + root / "resources" / "oks" / "api.yaml", + root / "generated" / "oks", + ) + + +if __name__ == "__main__": + main() diff --git a/osc_sdk_python/codegen/ir.py b/osc_sdk_python/codegen/ir.py new file mode 100644 index 0000000..a8bb327 --- /dev/null +++ b/osc_sdk_python/codegen/ir.py @@ -0,0 +1,28 @@ +from dataclasses import dataclass, field + + +@dataclass +class Field: + name: str + alias: str + annotation: str + required: bool = False + + +@dataclass +class Model: + name: str + fields: list[Field] = field(default_factory=list) + + +@dataclass +class Operation: + operation_id: str + method_name: str + request_model: Model + response_model: str + http_method: str + path: str + path_fields: list[Field] = field(default_factory=list) + query_fields: list[Field] = field(default_factory=list) + body_field: Field | None = None diff --git a/osc_sdk_python/generated/__init__.py b/osc_sdk_python/generated/__init__.py new file mode 100644 index 0000000..9c2c8c4 --- /dev/null +++ b/osc_sdk_python/generated/__init__.py @@ -0,0 +1,2 @@ +"""Generated typed SDK modules.""" + diff --git a/osc_sdk_python/generated/oks/__init__.py b/osc_sdk_python/generated/oks/__init__.py new file mode 100644 index 0000000..bd25565 --- /dev/null +++ b/osc_sdk_python/generated/oks/__init__.py @@ -0,0 +1,205 @@ +from .async_client import AsyncOksTypedMixin +from .models import ( + AdmissionFlags, + AdmissionFlagsInput, + AuthStrategy, + AutoMaintenances, + AutoUpgradeMaintenance, + CPSubregionsResponse, + Cluster, + ClusterInput, + ClusterInputTemplate, + ClusterResponse, + ClusterResponseList, + ClusterUpdate, + ControlPlanesResponse, + CreateClusterRequest, + CreateProjectRequest, + Cursor, + DeleteClusterRequest, + DeleteProjectRequest, + DetailResponse, + ErrorItem, + ErrorResponse, + GetCPSubregionsRequest, + GetClientIPRequest, + GetClusterRequest, + GetClusterTemplateRequest, + GetControlPlanePlansRequest, + GetKubeconfigRequest, + GetKubeconfigWithPubkeyNACLRequest, + GetKubernetesVersionsRequest, + GetNetPeeringAcceptanceTemplateRequest, + GetNetPeeringRequestTemplateRequest, + GetNodepoolTemplateRequest, + GetProjectNetsRequest, + GetProjectPublicIpsRequest, + GetProjectQuotasRequest, + GetProjectRequest, + GetProjectSnapshotsRequest, + GetProjectTemplateRequest, + GetQuotasRequest, + IPDetails, + IPResponse, + KubeconfigData, + KubeconfigResponse, + KubernetesVersionsResponse, + ListAllClustersRequest, + ListClustersByProjectIDRequest, + ListProjectsRequest, + Maintenance, + MaintenanceWindow, + Net, + NetPeeringAcceptance, + NetPeeringRequest, + NetsResponse, + Nodepool, + OKSQuotas, + Offset, + OpenIdConnectConfig, + Pagination, + PermissionsOnResource, + Project, + ProjectInput, + ProjectResponse, + ProjectResponseList, + ProjectUpdate, + PublicIp, + PublicIpsResponse, + Quotas, + QuotasData, + ResourceTag, + ResponseContext_Input, + Snapshot, + SnapshotsResponse, + Spec, + SpecNetPeeringAcceptance, + SpecNetPeeringRequest, + Statuses, + Subregion, + TemplateResponse_ClusterInputTemplate, + TemplateResponse_NetPeeringAcceptance, + TemplateResponse_NetPeeringRequest, + TemplateResponse_Nodepool, + TemplateResponse_ProjectInput, + UpdateClusterRequest, + UpdateProjectRequest, + UpgradeClusterRequest, + UpgradeStrategy, + ValidationDetail, + Volume, + clusters__cluster_schema__RPCResponse, + clusters__cluster_schema__ResponseContext, + myip__myip_schema__ResponseContext, + netpeerings__netpeering_schema__Metadata, + nodepools__nodepool_schema__Metadata, + projects__project_schema__QuotasResponse, + projects__project_schema__RPCResponse, + projects__project_schema__ResponseContext, + quotas__quota_schema__QuotasResponse, + quotas__quota_schema__ResponseContext, + templates__template_schema__ResponseContext, +) + +__all__ = [ + "AsyncOksTypedMixin", + 'AdmissionFlags', + 'AdmissionFlagsInput', + 'AuthStrategy', + 'AutoMaintenances', + 'AutoUpgradeMaintenance', + 'CPSubregionsResponse', + 'Cluster', + 'ClusterInput', + 'ClusterInputTemplate', + 'ClusterResponse', + 'ClusterResponseList', + 'ClusterUpdate', + 'ControlPlanesResponse', + 'CreateClusterRequest', + 'CreateProjectRequest', + 'Cursor', + 'DeleteClusterRequest', + 'DeleteProjectRequest', + 'DetailResponse', + 'ErrorItem', + 'ErrorResponse', + 'GetCPSubregionsRequest', + 'GetClientIPRequest', + 'GetClusterRequest', + 'GetClusterTemplateRequest', + 'GetControlPlanePlansRequest', + 'GetKubeconfigRequest', + 'GetKubeconfigWithPubkeyNACLRequest', + 'GetKubernetesVersionsRequest', + 'GetNetPeeringAcceptanceTemplateRequest', + 'GetNetPeeringRequestTemplateRequest', + 'GetNodepoolTemplateRequest', + 'GetProjectNetsRequest', + 'GetProjectPublicIpsRequest', + 'GetProjectQuotasRequest', + 'GetProjectRequest', + 'GetProjectSnapshotsRequest', + 'GetProjectTemplateRequest', + 'GetQuotasRequest', + 'IPDetails', + 'IPResponse', + 'KubeconfigData', + 'KubeconfigResponse', + 'KubernetesVersionsResponse', + 'ListAllClustersRequest', + 'ListClustersByProjectIDRequest', + 'ListProjectsRequest', + 'Maintenance', + 'MaintenanceWindow', + 'Net', + 'NetPeeringAcceptance', + 'NetPeeringRequest', + 'NetsResponse', + 'Nodepool', + 'OKSQuotas', + 'Offset', + 'OpenIdConnectConfig', + 'Pagination', + 'PermissionsOnResource', + 'Project', + 'ProjectInput', + 'ProjectResponse', + 'ProjectResponseList', + 'ProjectUpdate', + 'PublicIp', + 'PublicIpsResponse', + 'Quotas', + 'QuotasData', + 'ResourceTag', + 'ResponseContext_Input', + 'Snapshot', + 'SnapshotsResponse', + 'Spec', + 'SpecNetPeeringAcceptance', + 'SpecNetPeeringRequest', + 'Statuses', + 'Subregion', + 'TemplateResponse_ClusterInputTemplate', + 'TemplateResponse_NetPeeringAcceptance', + 'TemplateResponse_NetPeeringRequest', + 'TemplateResponse_Nodepool', + 'TemplateResponse_ProjectInput', + 'UpdateClusterRequest', + 'UpdateProjectRequest', + 'UpgradeClusterRequest', + 'UpgradeStrategy', + 'ValidationDetail', + 'Volume', + 'clusters__cluster_schema__RPCResponse', + 'clusters__cluster_schema__ResponseContext', + 'myip__myip_schema__ResponseContext', + 'netpeerings__netpeering_schema__Metadata', + 'nodepools__nodepool_schema__Metadata', + 'projects__project_schema__QuotasResponse', + 'projects__project_schema__RPCResponse', + 'projects__project_schema__ResponseContext', + 'quotas__quota_schema__QuotasResponse', + 'quotas__quota_schema__ResponseContext', + 'templates__template_schema__ResponseContext', +] diff --git a/osc_sdk_python/generated/oks/async_client.py b/osc_sdk_python/generated/oks/async_client.py new file mode 100644 index 0000000..d411dd2 --- /dev/null +++ b/osc_sdk_python/generated/oks/async_client.py @@ -0,0 +1,864 @@ +"""Generated typed OKS client slice. + +Do not edit by hand. Regenerate with: + python -m osc_sdk_python.codegen.generator +""" + +from typing import Any + +from osc_sdk_python.runtime.request import RequestSpec +from .models import ( + CPSubregionsResponse, + ClusterResponse, + ClusterResponseList, + ControlPlanesResponse, + CreateClusterRequest, + CreateProjectRequest, + DeleteClusterRequest, + DeleteProjectRequest, + DetailResponse, + GetCPSubregionsRequest, + GetClientIPRequest, + GetClusterRequest, + GetClusterTemplateRequest, + GetControlPlanePlansRequest, + GetKubeconfigRequest, + GetKubeconfigWithPubkeyNACLRequest, + GetKubernetesVersionsRequest, + GetNetPeeringAcceptanceTemplateRequest, + GetNetPeeringRequestTemplateRequest, + GetNodepoolTemplateRequest, + GetProjectNetsRequest, + GetProjectPublicIpsRequest, + GetProjectQuotasRequest, + GetProjectRequest, + GetProjectSnapshotsRequest, + GetProjectTemplateRequest, + GetQuotasRequest, + IPResponse, + KubeconfigResponse, + KubernetesVersionsResponse, + ListAllClustersRequest, + ListClustersByProjectIDRequest, + ListProjectsRequest, + NetsResponse, + ProjectResponse, + ProjectResponseList, + PublicIpsResponse, + SnapshotsResponse, + TemplateResponse_ClusterInputTemplate, + TemplateResponse_NetPeeringAcceptance, + TemplateResponse_NetPeeringRequest, + TemplateResponse_Nodepool, + TemplateResponse_ProjectInput, + UpdateClusterRequest, + UpdateProjectRequest, + UpgradeClusterRequest, + projects__project_schema__QuotasResponse, + quotas__quota_schema__QuotasResponse, +) + + +def _dump_json_body(value: Any) -> Any: + if hasattr(value, "model_dump"): + return value.model_dump(exclude_none=True, by_alias=True) + return value + + +class AsyncOksTypedMixin: + async def list_projects( + self, + request: ListProjectsRequest | None = None, + ) -> ProjectResponseList: + if request is None: + request = ListProjectsRequest() + + path_params = { + } + query_params = { + 'name': request.name, + 'status': request.status, + 'cidr': request.cidr, + 'deleted': request.deleted, + 'cursor': request.cursor, + 'page': request.page, + 'limit': request.limit, + } + response = await self.call.request( + RequestSpec( + service="oks", + method="GET", + path="/projects", + json_body=None, + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return ProjectResponseList.model_validate(response) + + async def create_project( + self, + request: CreateProjectRequest | None = None, + ) -> ProjectResponse: + if request is None: + request = CreateProjectRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="oks", + method="POST", + path="/projects", + json_body=_dump_json_body(request.body), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return ProjectResponse.model_validate(response) + + async def get_project( + self, + request: GetProjectRequest | None = None, + ) -> ProjectResponse: + if request is None: + request = GetProjectRequest() + + path_params = { + 'project_id': request.project_id, + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="oks", + method="GET", + path="/projects/{project_id}", + json_body=None, + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return ProjectResponse.model_validate(response) + + async def update_project( + self, + request: UpdateProjectRequest | None = None, + ) -> ProjectResponse: + if request is None: + request = UpdateProjectRequest() + + path_params = { + 'project_id': request.project_id, + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="oks", + method="PATCH", + path="/projects/{project_id}", + json_body=_dump_json_body(request.body), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return ProjectResponse.model_validate(response) + + async def delete_project( + self, + request: DeleteProjectRequest | None = None, + ) -> DetailResponse: + if request is None: + request = DeleteProjectRequest() + + path_params = { + 'project_id': request.project_id, + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="oks", + method="DELETE", + path="/projects/{project_id}", + json_body=None, + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return DetailResponse.model_validate(response) + + async def get_project_quotas( + self, + request: GetProjectQuotasRequest | None = None, + ) -> projects__project_schema__QuotasResponse: + if request is None: + request = GetProjectQuotasRequest() + + path_params = { + 'project_id': request.project_id, + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="oks", + method="GET", + path="/projects/{project_id}/quotas", + json_body=None, + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return projects__project_schema__QuotasResponse.model_validate(response) + + async def get_project_snapshots( + self, + request: GetProjectSnapshotsRequest | None = None, + ) -> SnapshotsResponse: + if request is None: + request = GetProjectSnapshotsRequest() + + path_params = { + 'project_id': request.project_id, + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="oks", + method="GET", + path="/projects/{project_id}/snapshots", + json_body=None, + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return SnapshotsResponse.model_validate(response) + + async def get_project_public_ips( + self, + request: GetProjectPublicIpsRequest | None = None, + ) -> PublicIpsResponse: + if request is None: + request = GetProjectPublicIpsRequest() + + path_params = { + 'project_id': request.project_id, + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="oks", + method="GET", + path="/projects/{project_id}/public_ips", + json_body=None, + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return PublicIpsResponse.model_validate(response) + + async def get_project_nets( + self, + request: GetProjectNetsRequest | None = None, + ) -> NetsResponse: + if request is None: + request = GetProjectNetsRequest() + + path_params = { + 'project_id': request.project_id, + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="oks", + method="GET", + path="/projects/{project_id}/nets", + json_body=None, + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return NetsResponse.model_validate(response) + + async def list_clusters_by_project_id( + self, + request: ListClustersByProjectIDRequest | None = None, + ) -> ClusterResponseList: + if request is None: + request = ListClustersByProjectIDRequest() + + path_params = { + } + query_params = { + 'project_id': request.project_id, + 'name': request.name, + 'status': request.status, + 'version': request.version, + 'deleted': request.deleted, + 'cursor': request.cursor, + 'page': request.page, + 'limit': request.limit, + } + response = await self.call.request( + RequestSpec( + service="oks", + method="GET", + path="/clusters", + json_body=None, + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return ClusterResponseList.model_validate(response) + + async def create_cluster( + self, + request: CreateClusterRequest | None = None, + ) -> ClusterResponse: + if request is None: + request = CreateClusterRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="oks", + method="POST", + path="/clusters", + json_body=_dump_json_body(request.body), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return ClusterResponse.model_validate(response) + + async def list_all_clusters( + self, + request: ListAllClustersRequest | None = None, + ) -> ClusterResponseList: + if request is None: + request = ListAllClustersRequest() + + path_params = { + } + query_params = { + 'name': request.name, + 'status': request.status, + 'version': request.version, + 'deleted': request.deleted, + 'cursor': request.cursor, + 'page': request.page, + 'limit': request.limit, + } + response = await self.call.request( + RequestSpec( + service="oks", + method="GET", + path="/clusters/all", + json_body=None, + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return ClusterResponseList.model_validate(response) + + async def get_cluster( + self, + request: GetClusterRequest | None = None, + ) -> ClusterResponse: + if request is None: + request = GetClusterRequest() + + path_params = { + 'cluster_id': request.cluster_id, + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="oks", + method="GET", + path="/clusters/{cluster_id}", + json_body=None, + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return ClusterResponse.model_validate(response) + + async def update_cluster( + self, + request: UpdateClusterRequest | None = None, + ) -> ClusterResponse: + if request is None: + request = UpdateClusterRequest() + + path_params = { + 'cluster_id': request.cluster_id, + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="oks", + method="PATCH", + path="/clusters/{cluster_id}", + json_body=_dump_json_body(request.body), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return ClusterResponse.model_validate(response) + + async def delete_cluster( + self, + request: DeleteClusterRequest | None = None, + ) -> DetailResponse: + if request is None: + request = DeleteClusterRequest() + + path_params = { + 'cluster_id': request.cluster_id, + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="oks", + method="DELETE", + path="/clusters/{cluster_id}", + json_body=None, + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return DetailResponse.model_validate(response) + + async def get_kubeconfig( + self, + request: GetKubeconfigRequest | None = None, + ) -> KubeconfigResponse: + if request is None: + request = GetKubeconfigRequest() + + path_params = { + 'cluster_id': request.cluster_id, + } + query_params = { + 'user': request.user, + 'group': request.group, + 'ttl': request.ttl, + } + response = await self.call.request( + RequestSpec( + service="oks", + method="GET", + path="/clusters/{cluster_id}/kubeconfig", + json_body=None, + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return KubeconfigResponse.model_validate(response) + + async def get_kubeconfig_with_pubkey_nacl( + self, + request: GetKubeconfigWithPubkeyNACLRequest | None = None, + ) -> KubeconfigResponse: + if request is None: + request = GetKubeconfigWithPubkeyNACLRequest() + + path_params = { + 'cluster_id': request.cluster_id, + } + query_params = { + 'user': request.user, + 'group': request.group, + 'ttl': request.ttl, + } + response = await self.call.request( + RequestSpec( + service="oks", + method="POST", + path="/clusters/{cluster_id}/kubeconfig", + json_body=None, + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return KubeconfigResponse.model_validate(response) + + async def upgrade_cluster( + self, + request: UpgradeClusterRequest | None = None, + ) -> ClusterResponse: + if request is None: + request = UpgradeClusterRequest() + + path_params = { + 'cluster_id': request.cluster_id, + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="oks", + method="PATCH", + path="/clusters/{cluster_id}/upgrade", + json_body=None, + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return ClusterResponse.model_validate(response) + + async def get_kubernetes_versions( + self, + request: GetKubernetesVersionsRequest | None = None, + ) -> KubernetesVersionsResponse: + if request is None: + request = GetKubernetesVersionsRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="oks", + method="GET", + path="/clusters/limits/kubernetes_versions", + json_body=None, + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return KubernetesVersionsResponse.model_validate(response) + + async def get_cp_subregions( + self, + request: GetCPSubregionsRequest | None = None, + ) -> CPSubregionsResponse: + if request is None: + request = GetCPSubregionsRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="oks", + method="GET", + path="/clusters/limits/cp_subregions", + json_body=None, + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return CPSubregionsResponse.model_validate(response) + + async def get_control_plane_plans( + self, + request: GetControlPlanePlansRequest | None = None, + ) -> ControlPlanesResponse: + if request is None: + request = GetControlPlanePlansRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="oks", + method="GET", + path="/clusters/limits/control_plane_plans", + json_body=None, + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return ControlPlanesResponse.model_validate(response) + + async def get_project_template( + self, + request: GetProjectTemplateRequest | None = None, + ) -> TemplateResponse_ProjectInput: + if request is None: + request = GetProjectTemplateRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="oks", + method="GET", + path="/templates/project", + json_body=None, + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TemplateResponse_ProjectInput.model_validate(response) + + async def get_cluster_template( + self, + request: GetClusterTemplateRequest | None = None, + ) -> TemplateResponse_ClusterInputTemplate: + if request is None: + request = GetClusterTemplateRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="oks", + method="GET", + path="/templates/cluster", + json_body=None, + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TemplateResponse_ClusterInputTemplate.model_validate(response) + + async def get_nodepool_template( + self, + request: GetNodepoolTemplateRequest | None = None, + ) -> TemplateResponse_Nodepool: + if request is None: + request = GetNodepoolTemplateRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="oks", + method="GET", + path="/templates/nodepool", + json_body=None, + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TemplateResponse_Nodepool.model_validate(response) + + async def get_net_peering_request_template( + self, + request: GetNetPeeringRequestTemplateRequest | None = None, + ) -> TemplateResponse_NetPeeringRequest: + if request is None: + request = GetNetPeeringRequestTemplateRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="oks", + method="GET", + path="/templates/netpeeringrequest", + json_body=None, + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TemplateResponse_NetPeeringRequest.model_validate(response) + + async def get_net_peering_acceptance_template( + self, + request: GetNetPeeringAcceptanceTemplateRequest | None = None, + ) -> TemplateResponse_NetPeeringAcceptance: + if request is None: + request = GetNetPeeringAcceptanceTemplateRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="oks", + method="GET", + path="/templates/netpeeringacceptance", + json_body=None, + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TemplateResponse_NetPeeringAcceptance.model_validate(response) + + async def get_quotas( + self, + request: GetQuotasRequest | None = None, + ) -> quotas__quota_schema__QuotasResponse: + if request is None: + request = GetQuotasRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="oks", + method="GET", + path="/quotas", + json_body=None, + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return quotas__quota_schema__QuotasResponse.model_validate(response) + + async def get_client_ip( + self, + request: GetClientIPRequest | None = None, + ) -> IPResponse: + if request is None: + request = GetClientIPRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="oks", + method="GET", + path="/myip", + json_body=None, + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return IPResponse.model_validate(response) diff --git a/osc_sdk_python/generated/oks/models.py b/osc_sdk_python/generated/oks/models.py new file mode 100644 index 0000000..7255c35 --- /dev/null +++ b/osc_sdk_python/generated/oks/models.py @@ -0,0 +1,528 @@ +"""Generated typed OKS client slice. + +Do not edit by hand. Regenerate with: + python -m osc_sdk_python.codegen.generator +""" +from __future__ import annotations + +from typing import Any + +from pydantic import BaseModel, ConfigDict, Field + + +class GeneratedModel(BaseModel): + model_config = ConfigDict(populate_by_name=True, extra="allow") + + +class AdmissionFlags(GeneratedModel): + disable_admission_plugins: list[str] | None = Field(default=None, alias='disable_admission_plugins') + enable_admission_plugins: list[str] | None = Field(default=None, alias='enable_admission_plugins') + applied_admission_plugins: list[str] | None = Field(default=None, alias='applied_admission_plugins') + +class AdmissionFlagsInput(GeneratedModel): + disable_admission_plugins: list[str] | None = Field(default=None, alias='disable_admission_plugins') + enable_admission_plugins: list[str] | None = Field(default=None, alias='enable_admission_plugins') + +class AuthStrategy(GeneratedModel): + oidc: OpenIdConnectConfig = Field(alias='oidc') + +class AutoMaintenances(GeneratedModel): + minor_upgrade_maintenance: MaintenanceWindow = Field(alias='minor_upgrade_maintenance') + patch_upgrade_maintenance: MaintenanceWindow = Field(alias='patch_upgrade_maintenance') + +class AutoUpgradeMaintenance(GeneratedModel): + duration_hours: int = Field(alias='durationHours') + start_hour: int = Field(alias='startHour') + week_day: str = Field(alias='weekDay') + +class CPSubregionsResponse(GeneratedModel): + response_context: clusters__cluster_schema__ResponseContext = Field(alias='ResponseContext') + cp_subregions: list[str] = Field(alias='CPSubregions') + +class Cluster(GeneratedModel): + project_id: str = Field(alias='project_id') + id: str = Field(alias='id') + name: str = Field(alias='name') + description: str | None = Field(default=None, alias='description') + cp_multi_az: bool = Field(alias='cp_multi_az') + cp_subregions: list[str] = Field(alias='cp_subregions') + version: str = Field(alias='version') + expected_version: str | None = Field(default=None, alias='expected_version') + cni: str = Field(alias='cni') + admin_lbu: bool = Field(alias='admin_lbu') + admission_flags: AdmissionFlags = Field(alias='admission_flags') + cidr_pods: str = Field(alias='cidr_pods') + cidr_service: str = Field(alias='cidr_service') + cluster_dns: str = Field(alias='cluster_dns') + tags: dict[str, str] = Field(alias='tags') + auto_maintenances: AutoMaintenances | None = Field(default=None, alias='auto_maintenances') + maintenance_window: Maintenance | None = Field(default=None, alias='maintenance_window') + control_planes: str = Field(alias='control_planes') + expected_control_planes: str | None = Field(default=None, alias='expected_control_planes') + admin_whitelist: list[str] = Field(alias='admin_whitelist') + statuses: Statuses = Field(alias='statuses') + disable_api_termination: bool | None = Field(default=None, alias='disable_api_termination') + auth: AuthStrategy | None = Field(default=None, alias='auth') + +class ClusterInput(GeneratedModel): + name: str = Field(alias='name') + project_id: str = Field(alias='project_id') + description: str | None = Field(default=None, alias='description') + cp_multi_az: bool | None = Field(default=None, alias='cp_multi_az') + cp_subregions: list[str] | None = Field(default=None, alias='cp_subregions') + version: str = Field(alias='version') + admin_lbu: bool | None = Field(default=None, alias='admin_lbu') + admission_flags: AdmissionFlagsInput | None = Field(default=None, alias='admission_flags') + cidr_pods: str = Field(alias='cidr_pods') + cidr_service: str = Field(alias='cidr_service') + cluster_dns: str | None = Field(default=None, alias='cluster_dns') + tags: dict[str, str] | None = Field(default=None, alias='tags') + auto_maintenances: AutoMaintenances | None = Field(default=None, alias='auto_maintenances') + maintenance_window: Maintenance | None = Field(default=None, alias='maintenance_window') + control_planes: str | None = Field(default=None, alias='control_planes') + admin_whitelist: list[str] = Field(alias='admin_whitelist') + quirks: list[str] | None = Field(default=None, alias='quirks') + disable_api_termination: bool | None = Field(default=None, alias='disable_api_termination') + auth: AuthStrategy | None = Field(default=None, alias='auth') + +class ClusterInputTemplate(GeneratedModel): + project_id: str = Field(alias='project_id') + description: str | None = Field(default=None, alias='description') + version: str = Field(alias='version') + admin_lbu: bool | None = Field(default=None, alias='admin_lbu') + admission_flags: AdmissionFlagsInput | None = Field(default=None, alias='admission_flags') + cidr_pods: str | None = Field(default=None, alias='cidr_pods') + cidr_service: str | None = Field(default=None, alias='cidr_service') + cluster_dns: str | None = Field(default=None, alias='cluster_dns') + tags: dict[str, str] | None = Field(default=None, alias='tags') + auto_maintenances: AutoMaintenances | None = Field(default=None, alias='auto_maintenances') + maintenance_window: Maintenance | None = Field(default=None, alias='maintenance_window') + control_planes: str | None = Field(default=None, alias='control_planes') + admin_whitelist: list[str] = Field(alias='admin_whitelist') + quirks: list[str] | None = Field(default=None, alias='quirks') + disable_api_termination: bool | None = Field(default=None, alias='disable_api_termination') + +class ClusterResponse(GeneratedModel): + response_context: clusters__cluster_schema__ResponseContext = Field(alias='ResponseContext') + cluster: Cluster = Field(alias='Cluster') + +class ClusterResponseList(GeneratedModel): + response_context: clusters__cluster_schema__ResponseContext = Field(alias='ResponseContext') + pagination: Pagination = Field(alias='Pagination') + clusters: list[Cluster] = Field(alias='Clusters') + +class ClusterUpdate(GeneratedModel): + description: str | None = Field(default=None, alias='description') + admission_flags: AdmissionFlagsInput | None = Field(default=None, alias='admission_flags') + tags: dict[str, str] | None = Field(default=None, alias='tags') + auto_maintenances: AutoMaintenances | None = Field(default=None, alias='auto_maintenances') + maintenance_window: Maintenance | None = Field(default=None, alias='maintenance_window') + admin_whitelist: list[str] | None = Field(default=None, alias='admin_whitelist') + quirks: list[str] | None = Field(default=None, alias='quirks') + disable_api_termination: bool | None = Field(default=None, alias='disable_api_termination') + version: str | None = Field(default=None, alias='version') + control_planes: str | None = Field(default=None, alias='control_planes') + auth: AuthStrategy | None = Field(default=None, alias='auth') + +class ControlPlanesResponse(GeneratedModel): + response_context: clusters__cluster_schema__ResponseContext = Field(alias='ResponseContext') + control_planes: list[str] = Field(alias='ControlPlanes') + +class Cursor(GeneratedModel): + next_cursor: str | None = Field(default=None, alias='next_cursor') + +class DetailResponse(GeneratedModel): + response_context: projects__project_schema__ResponseContext = Field(alias='ResponseContext') + detail: str = Field(alias='detail') + +class ErrorItem(GeneratedModel): + type: str = Field(alias='Type') + details: Any = Field(alias='Details') + code: str = Field(alias='Code') + +class ErrorResponse(GeneratedModel): + errors: list[ErrorItem] = Field(alias='Errors') + response_context: ResponseContext_Input = Field(alias='ResponseContext') + +class IPDetails(GeneratedModel): + x_real_ip: str | None = Field(default=None, alias='x_real_ip') + +class IPResponse(GeneratedModel): + response_context: myip__myip_schema__ResponseContext = Field(alias='ResponseContext') + ip: IPDetails = Field(alias='IP') + +class KubeconfigData(GeneratedModel): + kubeconfig: str = Field(alias='kubeconfig') + +class KubeconfigResponse(GeneratedModel): + response_context: clusters__cluster_schema__ResponseContext = Field(alias='ResponseContext') + cluster: clusters__cluster_schema__RPCResponse = Field(alias='Cluster') + +class KubernetesVersionsResponse(GeneratedModel): + response_context: clusters__cluster_schema__ResponseContext = Field(alias='ResponseContext') + versions: list[str] = Field(alias='Versions') + +class Maintenance(GeneratedModel): + duration_hours: int = Field(alias='duration_hours') + start_hour: int = Field(alias='start_hour') + week_day: str = Field(alias='week_day') + tz: str | None = Field(default=None, alias='tz') + +class MaintenanceWindow(GeneratedModel): + enabled: bool | None = Field(default=None, alias='enabled') + duration_hours: int | None = Field(default=None, alias='duration_hours') + start_hour: int | None = Field(default=None, alias='start_hour') + week_day: str | None = Field(default=None, alias='week_day') + tz: str | None = Field(default=None, alias='tz') + +class Net(GeneratedModel): + dhcp_options_set_id: str = Field(alias='DhcpOptionsSetId') + ip_range: str = Field(alias='IpRange') + net_id: str = Field(alias='NetId') + state: str = Field(alias='State') + tenancy: str = Field(alias='Tenancy') + +class NetPeeringAcceptance(GeneratedModel): + api_version: str = Field(alias='apiVersion') + kind: str = Field(alias='kind') + metadata: netpeerings__netpeering_schema__Metadata = Field(alias='metadata') + spec: SpecNetPeeringAcceptance = Field(alias='spec') + +class NetPeeringRequest(GeneratedModel): + api_version: str = Field(alias='apiVersion') + kind: str = Field(alias='kind') + metadata: netpeerings__netpeering_schema__Metadata = Field(alias='metadata') + spec: SpecNetPeeringRequest = Field(alias='spec') + +class NetsResponse(GeneratedModel): + response_context: projects__project_schema__ResponseContext = Field(alias='ResponseContext') + nets: list[Net] = Field(alias='Nets') + +class Nodepool(GeneratedModel): + api_version: str = Field(alias='apiVersion') + kind: str = Field(alias='kind') + metadata: nodepools__nodepool_schema__Metadata = Field(alias='metadata') + spec: Spec = Field(alias='spec') + +class OKSQuotas(GeneratedModel): + projects: int = Field(alias='Projects') + clusters_per_project: int = Field(alias='ClustersPerProject') + kube_versions: list[str] = Field(alias='KubeVersions') + cp_subregions: list[str] = Field(alias='CPSubregions') + +class Offset(GeneratedModel): + page: int | None = Field(default=None, alias='page') + limit: int | None = Field(default=None, alias='limit') + total: int | None = Field(default=None, alias='total') + +class OpenIdConnectConfig(GeneratedModel): + issuer_url: str = Field(alias='issuer-url') + client_id: str = Field(alias='client-id') + username_claim: str | None = Field(default=None, alias='username-claim') + username_prefix: str | None = Field(default=None, alias='username-prefix') + groups_claim: list[str] | None = Field(default=None, alias='groups-claim') + groups_prefix: str | None = Field(default=None, alias='groups-prefix') + required_claim: dict[str, str] | None = Field(default=None, alias='required-claim') + +class Pagination(GeneratedModel): + cursor: Cursor | None = Field(default=None, alias='cursor') + offset: Offset | None = Field(default=None, alias='offset') + +class PermissionsOnResource(GeneratedModel): + global_permission: int = Field(alias='GlobalPermission') + account_ids: list[str] = Field(alias='AccountIds') + +class Project(GeneratedModel): + id: str = Field(alias='id') + name: str = Field(alias='name') + description: str | None = Field(default=None, alias='description') + cidr: str = Field(alias='cidr') + region: str = Field(alias='region') + status: str = Field(alias='status') + tags: dict[str, str] = Field(alias='tags') + disable_api_termination: bool | None = Field(default=None, alias='disable_api_termination') + created_at: str = Field(alias='created_at') + updated_at: str = Field(alias='updated_at') + deleted_at: str | None = Field(default=None, alias='deleted_at') + +class ProjectInput(GeneratedModel): + name: str = Field(alias='name') + description: str | None = Field(default=None, alias='description') + cidr: str = Field(alias='cidr') + region: str = Field(alias='region') + tags: dict[str, str] | None = Field(default=None, alias='tags') + quirks: list[str] | None = Field(default=None, alias='quirks') + disable_api_termination: bool | None = Field(default=None, alias='disable_api_termination') + +class ProjectResponse(GeneratedModel): + response_context: projects__project_schema__ResponseContext = Field(alias='ResponseContext') + project: Project = Field(alias='Project') + +class ProjectResponseList(GeneratedModel): + response_context: projects__project_schema__ResponseContext = Field(alias='ResponseContext') + pagination: Pagination = Field(alias='Pagination') + projects: list[Project] = Field(alias='Projects') + +class ProjectUpdate(GeneratedModel): + description: str | None = Field(default=None, alias='description') + tags: dict[str, str] | None = Field(default=None, alias='tags') + quirks: list[str] | None = Field(default=None, alias='quirks') + disable_api_termination: bool | None = Field(default=None, alias='disable_api_termination') + +class PublicIp(GeneratedModel): + tags: list[ResourceTag] = Field(alias='Tags') + public_ip: str = Field(alias='PublicIp') + public_ip_id: str = Field(alias='PublicIpId') + +class PublicIpsResponse(GeneratedModel): + response_context: projects__project_schema__ResponseContext = Field(alias='ResponseContext') + public_ips: list[PublicIp] = Field(alias='PublicIps') + +class Quotas(GeneratedModel): + short_description: str = Field(alias='ShortDescription') + quota_collection: str = Field(alias='QuotaCollection') + account_id: str = Field(alias='AccountId') + description: str = Field(alias='Description') + max_value: int = Field(alias='MaxValue') + used_value: int = Field(alias='UsedValue') + name: str = Field(alias='Name') + +class QuotasData(GeneratedModel): + quotas: list[Quotas] = Field(alias='quotas') + subregions: list[Subregion] = Field(alias='subregions') + +class ResourceTag(GeneratedModel): + key: str = Field(alias='Key') + value: str = Field(alias='Value') + +class ResponseContext_Input(GeneratedModel): + request_id: str = Field(alias='RequestId') + +class Snapshot(GeneratedModel): + volume_size: int = Field(alias='VolumeSize') + account_id: str = Field(alias='AccountId') + volume_id: str = Field(alias='VolumeId') + creation_date: str = Field(alias='CreationDate') + progress: int = Field(alias='Progress') + snapshot_id: str = Field(alias='SnapshotId') + state: str = Field(alias='State') + description: str = Field(alias='Description') + tags: list[ResourceTag] = Field(alias='Tags') + permissions_to_create_volume: PermissionsOnResource = Field(alias='PermissionsToCreateVolume') + +class SnapshotsResponse(GeneratedModel): + response_context: projects__project_schema__ResponseContext = Field(alias='ResponseContext') + snapshots: list[Snapshot] = Field(alias='Snapshots') + +class Spec(GeneratedModel): + desired_nodes: str = Field(alias='desiredNodes') + node_type: str = Field(alias='nodeType') + zones: list[str] = Field(alias='zones') + volumes: list[Volume] = Field(alias='volumes') + upgrade_strategy: UpgradeStrategy = Field(alias='upgradeStrategy') + auto_healing: bool = Field(alias='autoHealing') + +class SpecNetPeeringAcceptance(GeneratedModel): + net_peering_id: str = Field(alias='netPeeringId') + +class SpecNetPeeringRequest(GeneratedModel): + accepter_net_id: str = Field(alias='accepterNetId') + accepter_owner_id: str = Field(alias='accepterOwnerId') + +class Statuses(GeneratedModel): + created_at: str = Field(alias='created_at') + deleted_at: str | None = Field(default=None, alias='deleted_at') + updated_at: str | None = Field(default=None, alias='updated_at') + status: str | None = Field(default=None, alias='status') + available_upgrade: str | None = Field(default=None, alias='available_upgrade') + +class Subregion(GeneratedModel): + state: str = Field(alias='State') + region_name: str = Field(alias='RegionName') + subregion_name: str = Field(alias='SubregionName') + location_code: str = Field(alias='LocationCode') + +class TemplateResponse_ClusterInputTemplate(GeneratedModel): + response_context: templates__template_schema__ResponseContext = Field(alias='ResponseContext') + template: ClusterInputTemplate = Field(alias='Template') + +class TemplateResponse_NetPeeringAcceptance(GeneratedModel): + response_context: templates__template_schema__ResponseContext = Field(alias='ResponseContext') + template: NetPeeringAcceptance = Field(alias='Template') + +class TemplateResponse_NetPeeringRequest(GeneratedModel): + response_context: templates__template_schema__ResponseContext = Field(alias='ResponseContext') + template: NetPeeringRequest = Field(alias='Template') + +class TemplateResponse_Nodepool(GeneratedModel): + response_context: templates__template_schema__ResponseContext = Field(alias='ResponseContext') + template: Nodepool = Field(alias='Template') + +class TemplateResponse_ProjectInput(GeneratedModel): + response_context: templates__template_schema__ResponseContext = Field(alias='ResponseContext') + template: ProjectInput = Field(alias='Template') + +class UpgradeStrategy(GeneratedModel): + max_unavailable: int = Field(alias='maxUnavailable') + max_surge: int = Field(alias='maxSurge') + auto_upgrade_enabled: bool = Field(alias='autoUpgradeEnabled') + auto_upgrade_maintenance: AutoUpgradeMaintenance = Field(alias='autoUpgradeMaintenance') + +class ValidationDetail(GeneratedModel): + loc: list[Any] = Field(alias='loc') + msg: str = Field(alias='msg') + type: str = Field(alias='type') + +class Volume(GeneratedModel): + device: str = Field(alias='device') + type: str = Field(alias='type') + size: int = Field(alias='size') + dir: str = Field(alias='dir') + +class clusters__cluster_schema__RPCResponse(GeneratedModel): + request_id: str = Field(alias='request_id') + data: KubeconfigData = Field(alias='data') + +class clusters__cluster_schema__ResponseContext(GeneratedModel): + request_id: str = Field(alias='RequestId') + +class myip__myip_schema__ResponseContext(GeneratedModel): + request_id: str = Field(alias='RequestId') + +class netpeerings__netpeering_schema__Metadata(GeneratedModel): + name: str = Field(alias='name') + +class nodepools__nodepool_schema__Metadata(GeneratedModel): + name: str = Field(alias='name') + +class projects__project_schema__QuotasResponse(GeneratedModel): + response_context: projects__project_schema__ResponseContext = Field(alias='ResponseContext') + project: projects__project_schema__RPCResponse = Field(alias='Project') + +class projects__project_schema__RPCResponse(GeneratedModel): + request_id: str = Field(alias='request_id') + data: QuotasData = Field(alias='data') + +class projects__project_schema__ResponseContext(GeneratedModel): + request_id: str = Field(alias='RequestId') + +class quotas__quota_schema__QuotasResponse(GeneratedModel): + response_context: quotas__quota_schema__ResponseContext = Field(alias='ResponseContext') + quotas: OKSQuotas = Field(alias='Quotas') + +class quotas__quota_schema__ResponseContext(GeneratedModel): + request_id: str = Field(alias='RequestId') + +class templates__template_schema__ResponseContext(GeneratedModel): + request_id: str = Field(alias='RequestId') + +class ListProjectsRequest(GeneratedModel): + name: str | None = Field(default=None, alias='name') + status: str | None = Field(default=None, alias='status') + cidr: str | None = Field(default=None, alias='cidr') + deleted: bool | None = Field(default=None, alias='deleted') + cursor: str | None = Field(default=None, alias='cursor') + page: int | None = Field(default=None, alias='page') + limit: int | None = Field(default=None, alias='limit') + +class CreateProjectRequest(GeneratedModel): + body: ProjectInput = Field(alias='body') + +class GetProjectRequest(GeneratedModel): + project_id: str = Field(alias='project_id') + +class UpdateProjectRequest(GeneratedModel): + project_id: str = Field(alias='project_id') + body: ProjectUpdate = Field(alias='body') + +class DeleteProjectRequest(GeneratedModel): + project_id: str = Field(alias='project_id') + +class GetProjectQuotasRequest(GeneratedModel): + project_id: str = Field(alias='project_id') + +class GetProjectSnapshotsRequest(GeneratedModel): + project_id: str = Field(alias='project_id') + +class GetProjectPublicIpsRequest(GeneratedModel): + project_id: str = Field(alias='project_id') + +class GetProjectNetsRequest(GeneratedModel): + project_id: str = Field(alias='project_id') + +class ListClustersByProjectIDRequest(GeneratedModel): + project_id: str | None = Field(default=None, alias='project_id') + name: str | None = Field(default=None, alias='name') + status: str | None = Field(default=None, alias='status') + version: str | None = Field(default=None, alias='version') + deleted: bool | None = Field(default=None, alias='deleted') + cursor: str | None = Field(default=None, alias='cursor') + page: int | None = Field(default=None, alias='page') + limit: int | None = Field(default=None, alias='limit') + +class CreateClusterRequest(GeneratedModel): + body: ClusterInput = Field(alias='body') + +class ListAllClustersRequest(GeneratedModel): + name: str | None = Field(default=None, alias='name') + status: str | None = Field(default=None, alias='status') + version: str | None = Field(default=None, alias='version') + deleted: bool | None = Field(default=None, alias='deleted') + cursor: str | None = Field(default=None, alias='cursor') + page: int | None = Field(default=None, alias='page') + limit: int | None = Field(default=None, alias='limit') + +class GetClusterRequest(GeneratedModel): + cluster_id: str = Field(alias='cluster_id') + +class UpdateClusterRequest(GeneratedModel): + cluster_id: str = Field(alias='cluster_id') + body: ClusterUpdate = Field(alias='body') + +class DeleteClusterRequest(GeneratedModel): + cluster_id: str = Field(alias='cluster_id') + +class GetKubeconfigRequest(GeneratedModel): + cluster_id: str = Field(alias='cluster_id') + user: str | None = Field(default=None, alias='user') + group: str | None = Field(default=None, alias='group') + ttl: str | None = Field(default=None, alias='ttl') + +class GetKubeconfigWithPubkeyNACLRequest(GeneratedModel): + cluster_id: str = Field(alias='cluster_id') + user: str | None = Field(default=None, alias='user') + group: str | None = Field(default=None, alias='group') + ttl: str | None = Field(default=None, alias='ttl') + +class UpgradeClusterRequest(GeneratedModel): + cluster_id: str = Field(alias='cluster_id') + +class GetKubernetesVersionsRequest(GeneratedModel): + pass + +class GetCPSubregionsRequest(GeneratedModel): + pass + +class GetControlPlanePlansRequest(GeneratedModel): + pass + +class GetProjectTemplateRequest(GeneratedModel): + pass + +class GetClusterTemplateRequest(GeneratedModel): + pass + +class GetNodepoolTemplateRequest(GeneratedModel): + pass + +class GetNetPeeringRequestTemplateRequest(GeneratedModel): + pass + +class GetNetPeeringAcceptanceTemplateRequest(GeneratedModel): + pass + +class GetQuotasRequest(GeneratedModel): + pass + +class GetClientIPRequest(GeneratedModel): + pass diff --git a/osc_sdk_python/outscale_gateway.py b/osc_sdk_python/outscale_gateway.py index c76d078..d55b26c 100644 --- a/osc_sdk_python/outscale_gateway.py +++ b/osc_sdk_python/outscale_gateway.py @@ -3,6 +3,13 @@ from .runtime.async_.call import AsyncCall from .runtime.sync.call import Call from .runtime.request import RequestSpec +try: + from .generated.oks import AsyncOksTypedMixin +except (ImportError, ModuleNotFoundError): + # This allows the generator to run even if the generated code is missing + class AsyncOksTypedMixin: + pass + from .limiter import RateLimiter import ruamel.yaml from .version import get_version @@ -261,11 +268,6 @@ def close(self): self.call.close() -class OutscaleGateway(OpenAPIActionAPI): - def __init__(self, **kwargs): - super().__init__(OSC_SPEC, service="api", **kwargs) - - class AsyncOpenAPIActionAPI(OpenAPIActionAPI): def __init__(self, spec, service="api", **kwargs): self.service = service @@ -308,16 +310,6 @@ async def close(self): await self.call.close() -class AsyncOutscaleGateway(AsyncOpenAPIActionAPI): - def __init__(self, **kwargs): - super().__init__(OSC_SPEC, service="api", **kwargs) - - - - - - - class OpenAPIPathAPI: def __init__(self, spec, service, **kwargs): self.service = service @@ -459,8 +451,14 @@ def __exit__(self, type, value, traceback): return None -BaseAPI = OpenAPIActionAPI -AsyncBaseAPI = AsyncOpenAPIActionAPI +class OutscaleGateway(OpenAPIActionAPI): + def __init__(self, **kwargs): + super().__init__(OSC_SPEC, service="api", **kwargs) + + +class AsyncOutscaleGateway(AsyncOpenAPIActionAPI): + def __init__(self, **kwargs): + super().__init__(OSC_SPEC, service="api", **kwargs) class OksGateway(OpenAPIPathAPI): @@ -468,7 +466,7 @@ def __init__(self, **kwargs): super().__init__(OKS_SPEC, service="oks", **kwargs) -class AsyncOksGateway(AsyncOpenAPIPathAPI): +class AsyncOksGateway(AsyncOksTypedMixin, AsyncOpenAPIPathAPI): def __init__(self, **kwargs): super().__init__(OKS_SPEC, service="oks", **kwargs) diff --git a/pyproject.toml b/pyproject.toml index 0a55e89..aceab59 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -21,6 +21,7 @@ classifiers = [ ] dependencies = [ "httpx>=0.28.0", + "pydantic>=2.0.0", "requests>=2.20.0", "ruamel.yaml==0.19.1", "urllib3>=2.6.3", diff --git a/tests/async_/test_async_typed_oks.py b/tests/async_/test_async_typed_oks.py new file mode 100644 index 0000000..f862f25 --- /dev/null +++ b/tests/async_/test_async_typed_oks.py @@ -0,0 +1,24 @@ +import asyncio +import unittest + +from osc_sdk_python import AsyncClient +from osc_sdk_python.generated.oks import ( + KubernetesVersionsResponse, + ListProjectsRequest, + ProjectResponseList, +) + +class TestAsyncTypedOks(unittest.TestCase): + + def test_typed_async_oks_methods_use_runtime_and_models(self): + + async def run(): + async with AsyncClient() as client: + projects = await client.oks.list_projects( + ListProjectsRequest(name="demo", deleted=False) + ) + versions = await client.oks.get_kubernetes_versions() + assert isinstance(projects, ProjectResponseList) + assert isinstance(versions, KubernetesVersionsResponse) + + asyncio.run(run()) diff --git a/uv.lock b/uv.lock index c78014f..3275077 100644 --- a/uv.lock +++ b/uv.lock @@ -2,6 +2,15 @@ version = 1 revision = 3 requires-python = ">=3.10" +[[package]] +name = "annotated-types" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081, upload-time = "2024-05-20T21:33:25.928Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload-time = "2024-05-20T21:33:24.1Z" }, +] + [[package]] name = "anyio" version = "4.13.0" @@ -204,6 +213,7 @@ version = "0.41.0" source = { editable = "." } dependencies = [ { name = "httpx" }, + { name = "pydantic" }, { name = "requests" }, { name = "ruamel-yaml" }, { name = "urllib3" }, @@ -219,6 +229,7 @@ dev = [ [package.metadata] requires-dist = [ { name = "httpx", specifier = ">=0.28.0" }, + { name = "pydantic", specifier = ">=2.0.0" }, { name = "requests", specifier = ">=2.20.0" }, { name = "ruamel-yaml", specifier = "==0.19.1" }, { name = "urllib3", specifier = ">=2.6.3" }, @@ -258,6 +269,137 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" }, ] +[[package]] +name = "pydantic" +version = "2.13.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-types" }, + { name = "pydantic-core" }, + { name = "typing-extensions" }, + { name = "typing-inspection" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/18/a5/b60d21ac674192f8ab0ba4e9fd860690f9b4a6e51ca5df118733b487d8d6/pydantic-2.13.4.tar.gz", hash = "sha256:c40756b57adaa8b1efeeced5c196f3f3b7c435f90e84ea7f443901bec8099ef6", size = 844775, upload-time = "2026-05-06T13:43:05.343Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fd/7b/122376b1fd3c62c1ed9dc80c931ace4844b3c55407b6fb2d199377c9736f/pydantic-2.13.4-py3-none-any.whl", hash = "sha256:45a282cde31d808236fd7ea9d919b128653c8b38b393d1c4ab335c62924d9aba", size = 472262, upload-time = "2026-05-06T13:43:02.641Z" }, +] + +[[package]] +name = "pydantic-core" +version = "2.46.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9d/56/921726b776ace8d8f5db44c4ef961006580d91dc52b803c489fafd1aa249/pydantic_core-2.46.4.tar.gz", hash = "sha256:62f875393d7f270851f20523dd2e29f082bcc82292d66db2b64ea71f64b6e1c1", size = 471464, upload-time = "2026-05-06T13:37:06.98Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/08/f1ba952f1c8ae5581c70fa9c6da89f247b83e3dd8c09c035d5d7931fc23d/pydantic_core-2.46.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:a396dcc17e5a0b164dbe026896245a4fa9ff402edca1dff0be3d53a517f74de4", size = 2113146, upload-time = "2026-05-06T13:37:36.537Z" }, + { url = "https://files.pythonhosted.org/packages/56/c6/65f646c7ff09bd257f660434adb45c4dfcbbcebcc030562fecf6f5bf887d/pydantic_core-2.46.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:da4b951fe36dc7c3a1ccb4e3cd1747c3542b8c9ceede8fc86cae054e764485f5", size = 1949769, upload-time = "2026-05-06T13:37:46.365Z" }, + { url = "https://files.pythonhosted.org/packages/64/ba/bfb1d928fd5b49e1258935ff104ae356e9fd89384a55bf9f847e9193ad40/pydantic_core-2.46.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb63e0198ca18aad131c089b9204c23079c3afa95487e561f4c522d519e55aba", size = 1974958, upload-time = "2026-05-06T13:37:28.611Z" }, + { url = "https://files.pythonhosted.org/packages/4e/74/76223bfb117b64af743c9b6670d1364516f5c0604f96b48f3272f6af6cc6/pydantic_core-2.46.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f47286a97f0bc9b8859519809077b91b2cefe4ae47fcbf5e466a009c1c5d742b", size = 2042118, upload-time = "2026-05-06T13:36:55.216Z" }, + { url = "https://files.pythonhosted.org/packages/cb/7b/848732968bc8f48f3187542f08358b9d842db564147b256669426ebb1652/pydantic_core-2.46.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:905a0ed8ea6f2d61c1738835f99b699348d7857379083e5fc497fa0c967a407c", size = 2222876, upload-time = "2026-05-06T13:38:25.455Z" }, + { url = "https://files.pythonhosted.org/packages/b5/2f/e90b63ee2e14bd8d3db8f705a6d75d64e6ee1b7c2c8833747ce706e1e0ce/pydantic_core-2.46.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ea793e075b70290d89d8142074262885d3f7da19634845135751bd6344f73b50", size = 2286703, upload-time = "2026-05-06T13:37:53.304Z" }, + { url = "https://files.pythonhosted.org/packages/ba/1e/acc4d70f88a0a277e4a1fa77ebb985ceabaf900430f875bf9338e11c9420/pydantic_core-2.46.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:395aebd9183f9d112f569aeb5b2214d1a10a33bec8456447f7fbdfa51d38d4cd", size = 2092042, upload-time = "2026-05-06T13:38:46.981Z" }, + { url = "https://files.pythonhosted.org/packages/a9/da/0a422b57bf8504102bf3c4ccea9c41bab5a5cee6a54650acf8faf67f5a24/pydantic_core-2.46.4-cp310-cp310-manylinux_2_31_riscv64.whl", hash = "sha256:b078afbc25f3a1436c7a1d2cd3e322497ee99615ba97c563566fdf46aff1ee01", size = 2117231, upload-time = "2026-05-06T13:39:23.146Z" }, + { url = "https://files.pythonhosted.org/packages/bd/2a/2ac13c3af305843e23c5078c53d135656b3f05a2fd78cb7bbbb12e97b473/pydantic_core-2.46.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f747929cf940cddb5b3668a390056ddd5ba2e5010615ea2dcf4f9c4f3ab8791d", size = 2168388, upload-time = "2026-05-06T13:40:08.06Z" }, + { url = "https://files.pythonhosted.org/packages/72/04/2beacf7e1607e93eefe4aed1b4709f079b905fb77530179d4f7c71745f22/pydantic_core-2.46.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:daa27d92c36f24388fe3ad306b174781c747627f134452e4f128ea00ce1fe8c4", size = 2184769, upload-time = "2026-05-06T13:38:13.901Z" }, + { url = "https://files.pythonhosted.org/packages/9e/29/d2b9fd9f539133548eaf622c06a4ce176cb46ac59f32d0359c4abc0de047/pydantic_core-2.46.4-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:19e51f073cd3df251856a8a4189fbdf1de4012c3ebacfb1884f94f1eb406079f", size = 2319312, upload-time = "2026-05-06T13:39:08.24Z" }, + { url = "https://files.pythonhosted.org/packages/7c/af/0f7a5b85fec6075bea96e3ef9187de38fccced0de92c1e7feda8d5cc7bb9/pydantic_core-2.46.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c1747f85cee84c26985853c6f3d9bd3e75da5212912443fa111c113b9c246f39", size = 2361817, upload-time = "2026-05-06T13:38:43.2Z" }, + { url = "https://files.pythonhosted.org/packages/25/a4/73363fec545fd3ec025490bdda2743c56d0dd5b6266b1a53bbe9e4265375/pydantic_core-2.46.4-cp310-cp310-win32.whl", hash = "sha256:2f84c03c8607173d16b5a854ec68a2f9079ae03237a54fb506d13af47e1d018d", size = 1987085, upload-time = "2026-05-06T13:39:25.497Z" }, + { url = "https://files.pythonhosted.org/packages/01/aa/62f082da2c91fac1c234bc9ee0066257ce83f0604abd72e4c9d5991f2d84/pydantic_core-2.46.4-cp310-cp310-win_amd64.whl", hash = "sha256:8358a950c8909158e3df31538a7e4edc2d7265a7c54b47f0864d9e5bae9dcebf", size = 2074311, upload-time = "2026-05-06T13:39:59.922Z" }, + { url = "https://files.pythonhosted.org/packages/5c/fa/6d7708d2cfc1a832acb6aeb0cd16e801902df8a0f583bb3b4b527fde022e/pydantic_core-2.46.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:0e96592440881c74a213e5ad528e2b24d3d4f940de2766bed9010ab1d9e51594", size = 2111872, upload-time = "2026-05-06T13:40:27.596Z" }, + { url = "https://files.pythonhosted.org/packages/ae/6f/aa064a3e74b5745afbdf250594f38e7ead05e2d651bcb35994b9417a0d4d/pydantic_core-2.46.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e0d65b8c354be7fb5f720c3caa8bc940bc2d20ce749c8e06135f07f8ed95dd7c", size = 1948255, upload-time = "2026-05-06T13:39:12.574Z" }, + { url = "https://files.pythonhosted.org/packages/43/3a/41114a9f7569b84b4d84e7a018c57c56347dac30c0d4a872946ec4e36c46/pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bfb192b3f4b9e8a89b6277b6ce787564f62cfd272055f6e685726b111dc7826", size = 1972827, upload-time = "2026-05-06T13:38:19.841Z" }, + { url = "https://files.pythonhosted.org/packages/ef/25/1ab42e8048fe551934d9884e8d64daa7e990ad386f310a15981aeb6a5b08/pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9037063db01f09b09e237c282b6792bd4da634b5402c4e7f0c61effed7701a04", size = 2041051, upload-time = "2026-05-06T13:38:10.447Z" }, + { url = "https://files.pythonhosted.org/packages/94/c2/1a934597ddf08da410385b3b7aae91956a5a76c635effef456074fad7e88/pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fc010ab034c8c7452522748bf937df58020d256ccae0874463d1f4d01758af8e", size = 2221314, upload-time = "2026-05-06T13:40:13.089Z" }, + { url = "https://files.pythonhosted.org/packages/02/6d/9e8ad178c9c4df27ad3c8f25d1fe2a7ab0d2ba0559fad4aee5d3d1f16771/pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8c5dac79fa1614d1e06ca695109c6105923bd9c7d1d6c918d4e637b7e6b32fd3", size = 2285146, upload-time = "2026-05-06T13:38:59.224Z" }, + { url = "https://files.pythonhosted.org/packages/80/50/540cd3aeefc041beb111125c4bff779831a2111fc6b15a9138cda277d32c/pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9fa868638bf362d3d138ea55829cefb3d5f4b0d7f142234382a15e2485dbec4", size = 2089685, upload-time = "2026-05-06T13:38:17.762Z" }, + { url = "https://files.pythonhosted.org/packages/6b/a4/b440ad35f05f6a38f89fa0f149accb3f0e02be94ca5e15f3c449a61b4bc9/pydantic_core-2.46.4-cp311-cp311-manylinux_2_31_riscv64.whl", hash = "sha256:17299feefe090f2caa5b8e37222bb5f663e4935a8bfa6931d4102e5df1a9f398", size = 2115420, upload-time = "2026-05-06T13:37:58.195Z" }, + { url = "https://files.pythonhosted.org/packages/99/61/de4f55db8dfd57bfdfa9a12ec90fe1b57c4f41062f7ca86f08586b3e0ac0/pydantic_core-2.46.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4c63ebc82684aa89d9a3bcbd13d515b3be44250dc68dd3bd81526c1cb31286c3", size = 2165122, upload-time = "2026-05-06T13:37:01.167Z" }, + { url = "https://files.pythonhosted.org/packages/f7/52/7c529d7bdb2d1068bd52f51fe32572c8301f9a4febf1948f10639f1436f5/pydantic_core-2.46.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:aaa2a54443eff1950ba5ddc6b6ccda0d9c84a364276a62f969bdf2a390650848", size = 2182573, upload-time = "2026-05-06T13:38:45.04Z" }, + { url = "https://files.pythonhosted.org/packages/37/b3/7c40325848ba78247f2812dcf9c7274e38cd801820ca6dd9fe63bcfb0eb4/pydantic_core-2.46.4-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:18e5ceec2ab67e6d5f1a9085e5a24c9c4e2ac4545730bfe668680bca05e555f3", size = 2317139, upload-time = "2026-05-06T13:37:15.539Z" }, + { url = "https://files.pythonhosted.org/packages/d9/37/f913f81a657c865b75da6c0dbed79876073c2a43b5bd9edbe8da785e4d49/pydantic_core-2.46.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a0f62d0a58f4e7da165457e995725421e0064f2255d8eccebc49f41bbc23b109", size = 2360433, upload-time = "2026-05-06T13:37:30.099Z" }, + { url = "https://files.pythonhosted.org/packages/c4/67/6acaa1be2567f9256b056d8477158cac7240813956ce86e49deae8e173b4/pydantic_core-2.46.4-cp311-cp311-win32.whl", hash = "sha256:041bde0a48fd37cf71cab1c9d56d3e8625a3793fef1f7dd232b3ff37e978ecda", size = 1985513, upload-time = "2026-05-06T13:38:15.669Z" }, + { url = "https://files.pythonhosted.org/packages/aa/e6/c505f83dfeda9a2e5c995cfd872949e4d05e12f7feb3dca72f633daefa94/pydantic_core-2.46.4-cp311-cp311-win_amd64.whl", hash = "sha256:6f2eeda33a839975441c86a4119e1383c50b47faf0cbb5176985565c6bb02c33", size = 2071114, upload-time = "2026-05-06T13:40:35.416Z" }, + { url = "https://files.pythonhosted.org/packages/0f/da/7a263a96d965d9d0df5e8de8a475f33495451117035b09acb110288c381f/pydantic_core-2.46.4-cp311-cp311-win_arm64.whl", hash = "sha256:14f4c5d6db102bd796a627bbb3a17b4cf4574b9ae861d8b7c9a9661c6dd3362d", size = 2044298, upload-time = "2026-05-06T13:38:29.754Z" }, + { url = "https://files.pythonhosted.org/packages/ce/8c/af022f0af448d7747c5154288d46b5f2bc5f17366eaa0e23e9aa04d59f3b/pydantic_core-2.46.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:3245406455a5d98187ec35530fd772b1d799b26667980872c8d4614991e2c4a2", size = 2106158, upload-time = "2026-05-06T13:38:57.215Z" }, + { url = "https://files.pythonhosted.org/packages/19/95/6195171e385007300f0f5574592e467c568becce2d937a0b6804f218bc49/pydantic_core-2.46.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:962ccbab7b642487b1d8b7df90ef677e03134cf1fd8880bf698649b22a69371f", size = 1951724, upload-time = "2026-05-06T13:37:02.697Z" }, + { url = "https://files.pythonhosted.org/packages/8e/bc/f47d1ff9cbb1620e1b5b697eef06010035735f07820180e74178226b27b3/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8233f2947cf85404441fd7e0085f53b10c93e0ee78611099b5c7237e36aacbf7", size = 1975742, upload-time = "2026-05-06T13:37:09.448Z" }, + { url = "https://files.pythonhosted.org/packages/5b/11/9b9a5b0306345664a2da6410877af6e8082481b5884b3ddd78d47c6013ce/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3a233125ac121aa3ffba9a2b59edfc4a985a76092dc8279586ab4b71390875e7", size = 2052418, upload-time = "2026-05-06T13:37:38.234Z" }, + { url = "https://files.pythonhosted.org/packages/f1/b7/a65fec226f5d78fc39f4a13c4cc0c768c22b113438f60c14adc9d2865038/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5b712b53160b79a5850310b912a5ef8e57e56947c8ad690c227f5c9d7e561712", size = 2232274, upload-time = "2026-05-06T13:38:27.753Z" }, + { url = "https://files.pythonhosted.org/packages/68/f0/92039db98b907ef49269a8271f67db9cb78ae2fc68062ef7e4e77adb5f61/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9401557acd873c3a7f3eb9383edef8ac4968f9510e340f4808d427e75667e7b4", size = 2309940, upload-time = "2026-05-06T13:38:05.353Z" }, + { url = "https://files.pythonhosted.org/packages/5f/97/2aab507d3d00ca626e8e57c1eac6a79e4e5fbcc63eb99733ff55d1717f65/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:926c9541b14b12b1681dca8a0b75feb510b06c6341b70a8e500c2fdcff837cce", size = 2094516, upload-time = "2026-05-06T13:39:10.577Z" }, + { url = "https://files.pythonhosted.org/packages/22/37/a8aca44d40d737dde2bc05b3c6c07dff0de07ce6f82e9f3167aeaf4d5dea/pydantic_core-2.46.4-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:56cb4851bcaf3d117eddcef4fe66afd750a50274b0da8e22be256d10e5611987", size = 2136854, upload-time = "2026-05-06T13:40:22.59Z" }, + { url = "https://files.pythonhosted.org/packages/24/99/fcef1b79238c06a8cbec70819ac722ba76e02bc8ada9b0fd66eba40da01b/pydantic_core-2.46.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c68fcd102d71ea85c5b2dfac3f4f8476eff42a9e078fd5faefff6d145063536b", size = 2180306, upload-time = "2026-05-06T13:40:10.666Z" }, + { url = "https://files.pythonhosted.org/packages/ae/6c/fc44000918855b42779d007ae63b0532794739027b2f417321cddbc44f6a/pydantic_core-2.46.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b2f69dec1725e79a012d920df1707de5caf7ed5e08f3be4435e25803efc47458", size = 2190044, upload-time = "2026-05-06T13:40:43.231Z" }, + { url = "https://files.pythonhosted.org/packages/6b/65/d9cadc9f1920d7a127ad2edba16c1db7916e59719285cd6c94600b0080ba/pydantic_core-2.46.4-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:8d0820e8192167f80d88d64038e609c31452eeca865b4e1d9950a27a4609b00b", size = 2329133, upload-time = "2026-05-06T13:39:57.365Z" }, + { url = "https://files.pythonhosted.org/packages/d0/cf/c873d91679f3a30bcf5e7ac280ce5573483e72295307685120d0d5ad3416/pydantic_core-2.46.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fbdb89b3e1c94a30cc5edfce477c6e6a5dc4d8f84665b455c27582f211a1c72c", size = 2374464, upload-time = "2026-05-06T13:38:06.976Z" }, + { url = "https://files.pythonhosted.org/packages/47/bd/6f2fc8188f31bf10590f1e98e7b306336161fac930a8c514cd7bd828c7dc/pydantic_core-2.46.4-cp312-cp312-win32.whl", hash = "sha256:9aa768456404a8bf48a4406685ac2bec8e72b62c69313734fa3b73cf33b3a894", size = 1974823, upload-time = "2026-05-06T13:40:47.985Z" }, + { url = "https://files.pythonhosted.org/packages/40/8c/985c1d41ea1107c2534abd9870e4ed5c8e7669b5c308297835c001e7a1c4/pydantic_core-2.46.4-cp312-cp312-win_amd64.whl", hash = "sha256:e9c26f834c65f5752f3f06cb08cb86a913ceb7274d0db6e267808a708b46bc89", size = 2072919, upload-time = "2026-05-06T13:39:21.153Z" }, + { url = "https://files.pythonhosted.org/packages/c4/ba/f463d006e0c47373ca7ec5e1a261c59dc01ef4d62b2657af925fb0deee3a/pydantic_core-2.46.4-cp312-cp312-win_arm64.whl", hash = "sha256:4fc73cb559bdb54b1134a706a2802a4cddd27a0633f5abb7e53056268751ac6a", size = 2027604, upload-time = "2026-05-06T13:39:03.753Z" }, + { url = "https://files.pythonhosted.org/packages/51/a2/5d30b469c5267a17b39dec53208222f76a8d351dfac4af661888c5aee77d/pydantic_core-2.46.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:5d5902252db0d3cedf8d4a1bc68f70eeb430f7e4c7104c8c476753519b423008", size = 2106306, upload-time = "2026-05-06T13:37:48.029Z" }, + { url = "https://files.pythonhosted.org/packages/c1/81/4fa520eaffa8bd7d1525e644cd6d39e7d60b1592bc5b516693c7340b50f1/pydantic_core-2.46.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:c94f0688e7b8d0a67abf40e57a7eaaecd17cc9586706a31b76c031f63df052b4", size = 1951906, upload-time = "2026-05-06T13:37:17.012Z" }, + { url = "https://files.pythonhosted.org/packages/03/d5/fd02da45b659668b05923b17ba3a0100a0a3d5541e3bd8fcc4ecb711309e/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f027324c56cd5406ca49c124b0db10e56c69064fec039acc571c29020cc87c76", size = 1976802, upload-time = "2026-05-06T13:37:35.113Z" }, + { url = "https://files.pythonhosted.org/packages/21/f2/95727e1368be3d3ed485eaab7adbd7dda408f33f7a36e8b48e0144002b91/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e739fee756ba1010f8bcccb534252e85a35fe45ae92c295a06059ce58b74ccd3", size = 2052446, upload-time = "2026-05-06T13:37:12.313Z" }, + { url = "https://files.pythonhosted.org/packages/9c/86/5d99feea3f77c7234b8718075b23db11532773c1a0dbd9b9490215dc2eeb/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d56801be94b86a9da183e5f3766e6310752b99ff647e38b09a9500d88e46e76", size = 2232757, upload-time = "2026-05-06T13:39:01.149Z" }, + { url = "https://files.pythonhosted.org/packages/d2/3a/508ac615935ef7588cf6d9e9b91309fdc2da751af865e02a9098de88258c/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2412e734dcb48da14d4e4006b82b46b74f2518b8a26ee7e58c6844a6cd6d03c4", size = 2309275, upload-time = "2026-05-06T13:37:41.406Z" }, + { url = "https://files.pythonhosted.org/packages/07/f8/41db9de19d7987d6b04715a02b3b40aea467000275d9d758ffaa31af7d50/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9551187363ffc0de2a00b2e47c25aeaeb1020b69b668762966df15fc5659dd5a", size = 2094467, upload-time = "2026-05-06T13:39:18.847Z" }, + { url = "https://files.pythonhosted.org/packages/2c/e2/f35033184cb11d0052daf4416e8e10a502ea2ac006fc4f459aee872727d1/pydantic_core-2.46.4-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:0186750b482eefa11d7f435892b09c5c606193ef3375bcf94aa00ae6bfb66262", size = 2134417, upload-time = "2026-05-06T13:40:17.944Z" }, + { url = "https://files.pythonhosted.org/packages/7e/7b/6ceeb1cc90e193862f444ebe373d8fdf613f0a82572dde03fb10734c6c71/pydantic_core-2.46.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5855698a4856556d86e8e6cd8434bc3ac0314ee8e12089ae0e143f64c6256e4e", size = 2179782, upload-time = "2026-05-06T13:40:32.618Z" }, + { url = "https://files.pythonhosted.org/packages/5a/f2/c8d7773ede6af08036423a00ae0ceffce266c3c52a096c435d68c896083f/pydantic_core-2.46.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:cbaf13819775b7f769bf4a1f066cb6df7a28d4480081a589828ef190226881cd", size = 2188782, upload-time = "2026-05-06T13:36:51.018Z" }, + { url = "https://files.pythonhosted.org/packages/59/31/0c864784e31f09f05cdd87606f08923b9c9e7f6e51dd27f20f62f975ce9f/pydantic_core-2.46.4-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:633147d34cf4550417f12e2b1a0383973bdf5cdfde212cb09e9a581cf10820be", size = 2328334, upload-time = "2026-05-06T13:40:37.764Z" }, + { url = "https://files.pythonhosted.org/packages/c2/eb/4f6c8a41efa30baa755590f4141abf3a8c370fab610915733e74134a7270/pydantic_core-2.46.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:82cf5301172168103724d49a1444d3378cb20cdee30b116a1bd6031236298a5d", size = 2372986, upload-time = "2026-05-06T13:39:34.152Z" }, + { url = "https://files.pythonhosted.org/packages/5b/24/b375a480d53113860c299764bfe9f349a3dc9108b3adc0d7f0d786492ebf/pydantic_core-2.46.4-cp313-cp313-win32.whl", hash = "sha256:9fa8ae11da9e2b3126c6426f147e0fba88d96d65921799bb30c6abd1cb2c97fb", size = 1973693, upload-time = "2026-05-06T13:37:55.072Z" }, + { url = "https://files.pythonhosted.org/packages/7e/e8/cff247591966f2d22ec8c003cd7587e27b7ba7b81ab2fb888e3ab75dc285/pydantic_core-2.46.4-cp313-cp313-win_amd64.whl", hash = "sha256:6b3ace8194b0e5204818c92802dcdca7fc6d88aabbb799d7c795540d9cd6d292", size = 2071819, upload-time = "2026-05-06T13:38:49.139Z" }, + { url = "https://files.pythonhosted.org/packages/c6/1a/f4aee670d5670e9e148e0c82c7db98d780be566c6e6a97ee8035528ca0b3/pydantic_core-2.46.4-cp313-cp313-win_arm64.whl", hash = "sha256:184c081504d17f1c1066e430e117142b2c77d9448a97f7b65c6ac9fd9aee238d", size = 2027411, upload-time = "2026-05-06T13:40:45.796Z" }, + { url = "https://files.pythonhosted.org/packages/8d/74/228a26ddad29c6672b805d9fd78e8d251cd04004fa7eed0e622096cd0250/pydantic_core-2.46.4-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:428e04521a40150c85216fc8b85e8d39fece235a9cf5e383761238c7fa9b96fb", size = 2102079, upload-time = "2026-05-06T13:38:41.019Z" }, + { url = "https://files.pythonhosted.org/packages/ad/1f/8970b150a4b4365623ae00fc88603491f763c627311ae8031e3111356d6e/pydantic_core-2.46.4-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:23ace664830ee0bfe014a0c7bc248b1f7f25ed7ad103852c317624a1083af462", size = 1952179, upload-time = "2026-05-06T13:36:59.812Z" }, + { url = "https://files.pythonhosted.org/packages/95/30/5211a831ae054928054b2f79731661087a2bc5c01e825c672b3a4a8f1b3e/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce5c1d2a8b27468f433ca974829c44060b8097eedc39933e3c206a90ee49c4a9", size = 1978926, upload-time = "2026-05-06T13:37:39.933Z" }, + { url = "https://files.pythonhosted.org/packages/57/e9/689668733b1eb67adeef047db3c2e8788fcf65a7fd9c9e2b46b7744fe245/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7283d57845ecf5a163403eb0702dfc220cc4fbdd18919cb5ccea4f95ee1cdab4", size = 2046785, upload-time = "2026-05-06T13:38:01.995Z" }, + { url = "https://files.pythonhosted.org/packages/60/d9/6715260422ff50a2109878fd24d948a6c3446bb2664f34ee78cd972b3acd/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8daafc69c93ee8a0204506a3b6b30f586ef54028f52aeeeb5c4cfc5184fd5914", size = 2228733, upload-time = "2026-05-06T13:40:50.371Z" }, + { url = "https://files.pythonhosted.org/packages/18/ae/fdb2f64316afca925640f8e70bb1a564b0ec2721c1389e25b8eb4bf9a299/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd2213145bcc2ba85884d0ac63d222fece9209678f77b9b4d76f054c561adb28", size = 2307534, upload-time = "2026-05-06T13:37:21.531Z" }, + { url = "https://files.pythonhosted.org/packages/89/1d/8eff589b45bb8190a9d12c49cfad0f176a5cbd1534908a6b5125e2886239/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a5f930472650a82629163023e630d160863fce524c616f4e5186e5de9d9a49b", size = 2099732, upload-time = "2026-05-06T13:39:31.942Z" }, + { url = "https://files.pythonhosted.org/packages/06/d5/ee5a3366637fee41dee51a1fc91562dcf12ddbc68fda34e6b253da2324bb/pydantic_core-2.46.4-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:c1b3f518abeca3aa13c712fd202306e145abf59a18b094a6bafb2d2bbf59192c", size = 2129627, upload-time = "2026-05-06T13:37:25.033Z" }, + { url = "https://files.pythonhosted.org/packages/94/33/2414be571d2c6a6c4d08be21f9292b6d3fdb08949a97b6dfe985017821db/pydantic_core-2.46.4-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1a7dd0b3ee80d90150e3495a3a13ac34dbcbfd4f012996a6a1d8900e91b5c0fb", size = 2179141, upload-time = "2026-05-06T13:37:14.046Z" }, + { url = "https://files.pythonhosted.org/packages/7b/79/7daa95be995be0eecc4cf75064cb33f9bbbfe3fe0158caf2f0d4a996a5c7/pydantic_core-2.46.4-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:3fb702cd90b0446a3a1c5e470bfa0dd23c0233b676a9099ddcc964fa6ca13898", size = 2184325, upload-time = "2026-05-06T13:36:53.615Z" }, + { url = "https://files.pythonhosted.org/packages/9f/cb/d0a382f5c0de8a222dc61c65348e0ce831b1f68e0a018450d31c2cace3a5/pydantic_core-2.46.4-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:b8458003118a712e66286df6a707db01c52c0f52f7db8e4a38f0da1d3b94fc4e", size = 2323990, upload-time = "2026-05-06T13:40:29.971Z" }, + { url = "https://files.pythonhosted.org/packages/05/db/d9ba624cc4a5aced1598e88c04fdbd8310c8a69b9d38b9a3d39ce3a61ed7/pydantic_core-2.46.4-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:372429a130e469c9cd698925ce5fc50940b7a1336b0d82038e63d5bbc4edc519", size = 2369978, upload-time = "2026-05-06T13:37:23.027Z" }, + { url = "https://files.pythonhosted.org/packages/f2/20/d15df15ba918c423461905802bfd2981c3af0bfa0e40d05e13edbfa48bc3/pydantic_core-2.46.4-cp314-cp314-win32.whl", hash = "sha256:85bb3611ff1802f3ee7fdd7dbff26b56f343fb432d57a4728fdd49b6ef35e2f4", size = 1966354, upload-time = "2026-05-06T13:38:03.499Z" }, + { url = "https://files.pythonhosted.org/packages/fc/b6/6b8de4c0a7d7ab3004c439c80c5c1e0a3e8d78bbae19379b01960383d9e5/pydantic_core-2.46.4-cp314-cp314-win_amd64.whl", hash = "sha256:811ff8e9c313ab425368bcbb36e5c4ebd7108c2bbf4e4089cfbb0b01eff63fac", size = 2072238, upload-time = "2026-05-06T13:39:40.807Z" }, + { url = "https://files.pythonhosted.org/packages/32/36/51eb763beec1f4cf59b1db243a7dcc39cbb41230f050a09b9d69faaf0a48/pydantic_core-2.46.4-cp314-cp314-win_arm64.whl", hash = "sha256:bfec22eab3c8cc2ceec0248aec886624116dc079afa027ecc8ad4a7e62010f8a", size = 2018251, upload-time = "2026-05-06T13:37:26.72Z" }, + { url = "https://files.pythonhosted.org/packages/e8/91/855af51d625b23aa987116a19e231d2aaef9c4a415273ddc189b79a45fee/pydantic_core-2.46.4-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:af8244b2bef6aaad6d92cda81372de7f8c8d36c9f0c3ea36e827c60e7d9467a0", size = 2099593, upload-time = "2026-05-06T13:39:47.682Z" }, + { url = "https://files.pythonhosted.org/packages/fb/1b/8784a54c65edb5f49f0a14d6977cf1b209bba85a4c77445b255c2de58ab3/pydantic_core-2.46.4-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:5a4330cdbc57162e4b3aa303f588ba752257694c9c9be3e7ebb11b4aca659b5d", size = 1935226, upload-time = "2026-05-06T13:40:40.428Z" }, + { url = "https://files.pythonhosted.org/packages/e8/e7/1955d28d1afc56dd4b3ad7cc0cf39df1b9852964cf16e5d13912756d6d6b/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29c61fc04a3d840155ff08e475a04809278972fe6aef51e2720554e96367e34b", size = 1974605, upload-time = "2026-05-06T13:37:32.029Z" }, + { url = "https://files.pythonhosted.org/packages/93/e2/3fedbf0ba7a22850e6e9fd78117f1c0f10f950182344d8a6c535d468fdd8/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c50f2528cf200c5eed56faf3f4e22fcd5f38c157a8b78576e6ba3168ec35f000", size = 2030777, upload-time = "2026-05-06T13:38:55.239Z" }, + { url = "https://files.pythonhosted.org/packages/f8/61/46be275fcaaba0b4f5b9669dd852267ce1ff616592dccf7a7845588df091/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0cbe8b01f948de4286c74cdd6c667aceb38f5c1e26f0693b3983d9d74887c65e", size = 2236641, upload-time = "2026-05-06T13:37:08.096Z" }, + { url = "https://files.pythonhosted.org/packages/60/db/12e93e46a8bac9988be3c016860f83293daea8c716c029c9ace279036f2f/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:617d7e2ca7dcb8c5cf6bcb8c59b8832c94b36196bbf1cbd1bfb56ed341905edd", size = 2286404, upload-time = "2026-05-06T13:40:20.221Z" }, + { url = "https://files.pythonhosted.org/packages/e2/4a/4d8b19008f38d31c53b8219cfedc2e3d5de5fe99d90076b7e767de29274f/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7027560ee92211647d0d34e3f7cd6f50da56399d26a9c8ad0da286d3869a53f3", size = 2109219, upload-time = "2026-05-06T13:38:12.153Z" }, + { url = "https://files.pythonhosted.org/packages/88/70/3cbc40978fefb7bb09c6708d40d4ad1a5d70fd7213c3d17f971de868ec1f/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:f99626688942fb746e545232e7726926f3be91b5975f8b55327665fafda991c7", size = 2110594, upload-time = "2026-05-06T13:40:02.971Z" }, + { url = "https://files.pythonhosted.org/packages/9d/20/b8d36736216e29491125531685b2f9e61aa5b4b2599893f8268551da3338/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fc3e9034a63de20e15e8ade85358bc6efc614008cab72898b4b4952bea0509ff", size = 2159542, upload-time = "2026-05-06T13:39:27.506Z" }, + { url = "https://files.pythonhosted.org/packages/1d/a2/367df868eb584dacf6bf82a389272406d7178e301c4ac82545ab98bc2dd9/pydantic_core-2.46.4-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:97e7cf2be5c77b7d1a9713a05605d49460d02c6078d38d8bef3cbe323c548424", size = 2168146, upload-time = "2026-05-06T13:38:31.93Z" }, + { url = "https://files.pythonhosted.org/packages/c1/b8/4460f77f7e201893f649a29ab355dddd3beee8a97bcb1a320db414f9a06e/pydantic_core-2.46.4-cp314-cp314t-musllinux_1_1_armv7l.whl", hash = "sha256:3bf92c5d0e00fefaab325a4d27828fe6b6e2a21848686b5b60d2d9eeb09d76c6", size = 2306309, upload-time = "2026-05-06T13:37:44.717Z" }, + { url = "https://files.pythonhosted.org/packages/64/c4/be2639293acd87dc8ddbcec41a73cee9b2ebf996fe6d892a1a74e88ad3f7/pydantic_core-2.46.4-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:3ecbc122d18468d06ca279dc26a8c2e2d5acb10943bb35e36ae92096dc3b5565", size = 2369736, upload-time = "2026-05-06T13:37:05.645Z" }, + { url = "https://files.pythonhosted.org/packages/30/a6/9f9f380dbb301f67023bf8f707aaa75daadf84f7152d95c410fd7e81d994/pydantic_core-2.46.4-cp314-cp314t-win32.whl", hash = "sha256:e846ae7835bf0703ae43f534ab79a867146dadd59dc9ca5c8b53d5c8f7c9ef02", size = 1955575, upload-time = "2026-05-06T13:38:51.116Z" }, + { url = "https://files.pythonhosted.org/packages/40/1f/f1eb9eb350e795d1af8586289746f5c5677d16043040d63710e22abc43c9/pydantic_core-2.46.4-cp314-cp314t-win_amd64.whl", hash = "sha256:2108ba5c1c1eca18030634489dc544844144ee36357f2f9f780b93e7ddbb44b5", size = 2051624, upload-time = "2026-05-06T13:38:21.672Z" }, + { url = "https://files.pythonhosted.org/packages/f6/d2/42dd53d0a85c27606f316d3aa5d2869c4e8470a5ed6dec30e4a1abe19192/pydantic_core-2.46.4-cp314-cp314t-win_arm64.whl", hash = "sha256:4fcbe087dbc2068af7eda3aa87634eba216dbda64d1ae73c8684b621d33f6596", size = 2017325, upload-time = "2026-05-06T13:40:52.723Z" }, + { url = "https://files.pythonhosted.org/packages/ee/a4/73995fd4ebbb46ba0ee51e6fa049b8f02c40daebb762208feda8a6b7894d/pydantic_core-2.46.4-graalpy311-graalpy242_311_native-macosx_10_12_x86_64.whl", hash = "sha256:14d4edf427bdcf950a8a02d7cb44a08614388dd6e1bdcbf4f67504fa7887da9c", size = 2111589, upload-time = "2026-05-06T13:37:10.817Z" }, + { url = "https://files.pythonhosted.org/packages/fb/7f/f37d3a5e8bfcc2e403f5c57a730f2d815693fb42119e8ea48b3789335af1/pydantic_core-2.46.4-graalpy311-graalpy242_311_native-macosx_11_0_arm64.whl", hash = "sha256:0ce40cd7b21210e99342afafbd4d0f76d784eb5b1d60f3bdc566be4983c6c73b", size = 1944552, upload-time = "2026-05-06T13:36:56.717Z" }, + { url = "https://files.pythonhosted.org/packages/15/3c/d7eb777b3ff43e8433a4efb39a17aa8fd98a4ee8561a24a67ef5db07b2d6/pydantic_core-2.46.4-graalpy311-graalpy242_311_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:90884113d8b48f760e9587002789ddd741e76ab9f89518cd1e43b1f1a52ec44b", size = 1982984, upload-time = "2026-05-06T13:39:06.207Z" }, + { url = "https://files.pythonhosted.org/packages/63/87/70b9f40170a81afd55ca26c9b2acb25c20d64bcfbf888fafecb3ba077d4c/pydantic_core-2.46.4-graalpy311-graalpy242_311_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66ce7632c22d837c95301830e111ad0128a32b8207533b60896a96c4915192ea", size = 2138417, upload-time = "2026-05-06T13:39:45.476Z" }, + { url = "https://files.pythonhosted.org/packages/9d/1d/8987ad40f65ae1432753072f214fb5c74fe47ffbd0698bb9cbbb585664f8/pydantic_core-2.46.4-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:1d8ba486450b14f3b1d63bc521d410ec7565e52f887b9fb671791886436a42f7", size = 2095527, upload-time = "2026-05-06T13:39:52.283Z" }, + { url = "https://files.pythonhosted.org/packages/64/d3/84c282a7eee1d3ac4c0377546ef5a1ea436ce26840d9ac3b7ed54a377507/pydantic_core-2.46.4-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:3009f12e4e90b7f88b4f9adb1b0c4a3d58fe7820f3238c190047209d148026df", size = 1936024, upload-time = "2026-05-06T13:40:15.671Z" }, + { url = "https://files.pythonhosted.org/packages/d7/ca/eac61596cdeb4d7e174d3dc0bd8a6238f14f75f97a24e7b7db4c7e7340a0/pydantic_core-2.46.4-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad785e92e6dc634c21555edc8bd6b64957ab844541bcb96a1366c202951ae526", size = 1990696, upload-time = "2026-05-06T13:38:34.717Z" }, + { url = "https://files.pythonhosted.org/packages/fa/c3/7c8b240552251faf6b3a957db200fcfbbcec36763c050428b601e0c9b83b/pydantic_core-2.46.4-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00c603d540afdd6b80eb39f078f33ebd46211f02f33e34a32d9f053bba711de0", size = 2147590, upload-time = "2026-05-06T13:39:29.883Z" }, + { url = "https://files.pythonhosted.org/packages/11/cb/428de0385b6c8d44b716feba566abfacfbd23ee3c4439faa789a1456242f/pydantic_core-2.46.4-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:0c563b08bca408dc7f65f700633d8442fffb2421fc47b8101377e9fd65051ff0", size = 2112782, upload-time = "2026-05-06T13:37:04.016Z" }, + { url = "https://files.pythonhosted.org/packages/0b/b5/6a17bdadd0fc1f170adfd05a20d37c832f52b117b4d9131da1f41bb097ce/pydantic_core-2.46.4-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:db06ffe51636ffe9ca531fe9023dd64bdd794be8754cb5df57c5498ae5b518a7", size = 1952146, upload-time = "2026-05-06T13:39:43.092Z" }, + { url = "https://files.pythonhosted.org/packages/2a/dc/03734d80e362cd43ef65428e9de77c730ce7f2f11c60d2b1e1b39f0fbf99/pydantic_core-2.46.4-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:133878133d271ade3d41d1bfb2a45ec38dbdbda40bc065921c6b04e4630127e2", size = 2134492, upload-time = "2026-05-06T13:36:58.124Z" }, + { url = "https://files.pythonhosted.org/packages/de/df/5e5ffc085ed07cc22d298134d3d911c63e91f6a0eb91fe646750a3209910/pydantic_core-2.46.4-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9bc519fbf2b7578398853d815009ae5e4d4603d12f4e3f91da8c06852d3da3e9", size = 2156604, upload-time = "2026-05-06T13:37:49.88Z" }, + { url = "https://files.pythonhosted.org/packages/81/44/6e112a4253e56f5705467cbab7ab5e91ee7398ba3d56d358635958893d3e/pydantic_core-2.46.4-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:c7a7bd4e39e8e4c12c39cd480356842b6a8a06e41b23a55a5e3e191718838ddf", size = 2183828, upload-time = "2026-05-06T13:37:43.053Z" }, + { url = "https://files.pythonhosted.org/packages/ac/ad/5565071e937d8e752842ac241463944c9eb14c87e2d269f2658a5bd05e98/pydantic_core-2.46.4-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:d396ec2b979760aaf3218e76c24e65bd0aca24983298653b3a9d7a45f9e47b30", size = 2310000, upload-time = "2026-05-06T13:37:56.694Z" }, + { url = "https://files.pythonhosted.org/packages/4f/c3/66883a5cec183e7fba4d024b4cbbe61851a63750ef606b0afecc46d1f2bf/pydantic_core-2.46.4-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:86e1a4418c6cd97d60c95c71164158eaf7324fae7b0923264016baa993eba6fc", size = 2361286, upload-time = "2026-05-06T13:40:05.667Z" }, + { url = "https://files.pythonhosted.org/packages/4b/2d/69abac8f838090bbecd5df894befb2c2619e7996a98ddb949db9f3b93225/pydantic_core-2.46.4-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:d51026d73fcfd93610abc7b27789c26b313920fcfb20e27462d74a7f8b06e983", size = 2193071, upload-time = "2026-05-06T13:38:08.682Z" }, +] + [[package]] name = "pygments" version = "2.19.2" @@ -448,6 +590,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614, upload-time = "2025-08-25T13:49:24.86Z" }, ] +[[package]] +name = "typing-inspection" +version = "0.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/55/e3/70399cb7dd41c10ac53367ae42139cf4b1ca5f36bb3dc6c9d33acdb43655/typing_inspection-0.4.2.tar.gz", hash = "sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464", size = 75949, upload-time = "2025-10-01T02:14:41.687Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl", hash = "sha256:4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7", size = 14611, upload-time = "2025-10-01T02:14:40.154Z" }, +] + [[package]] name = "urllib3" version = "2.7.0" From 61c939f639b2e132d379ac96378775bd88b99246 Mon Sep 17 00:00:00 2001 From: Yash Gaykar Date: Tue, 26 May 2026 13:47:48 +0530 Subject: [PATCH 09/26] :sparkles: feat: add generater for clients and schemas --- osc_sdk_python/codegen/adapters.py | 52 +++++++--- osc_sdk_python/codegen/generator.py | 142 ++++++++++++++++++++++------ osc_sdk_python/codegen/ir.py | 2 + 3 files changed, 155 insertions(+), 41 deletions(-) diff --git a/osc_sdk_python/codegen/adapters.py b/osc_sdk_python/codegen/adapters.py index ef30c0f..a1c73ad 100644 --- a/osc_sdk_python/codegen/adapters.py +++ b/osc_sdk_python/codegen/adapters.py @@ -37,6 +37,10 @@ def schema_type(schema: dict[str, Any], ref_resolver=class_name) -> str: if "$ref" in schema: return ref_resolver(ref_name(schema["$ref"])) + enum_values = schema.get("enum") + if enum_values: + return "Literal[" + ", ".join(repr(value) for value in enum_values) + "]" + for composed in ("allOf", "oneOf", "anyOf"): options = schema.get(composed) if not options: @@ -81,6 +85,8 @@ def operations(self, selected: set[str] | None = None) -> list[Operation]: continue operation_id = operation.get("operationId") + if operation_id is None: + continue if selected is not None and operation_id not in selected: continue @@ -102,12 +108,31 @@ def operations(self, selected: set[str] | None = None) -> list[Operation]: else: query_fields.append(field) - body_field = self._body_field(operation) + body_schema, body_required = self._body_schema(operation) + uses_request_as_body = False + body_field = None request_fields = path_fields + query_fields - if body_field is not None: + request_model = None + + if ( + body_schema is not None + and not request_fields + and "$ref" in body_schema + and self._is_action_body_operation(path, operation_id) + ): + request_model = Model(class_name(ref_name(body_schema["$ref"]))) + uses_request_as_body = True + elif body_schema is not None: + body_field = Field( + name="body", + alias="body", + annotation=schema_type(body_schema), + required=body_required, + ) request_fields.append(body_field) - request_model = Model(f"{operation_id}Request", request_fields) + if request_model is None: + request_model = Model(f"{operation_id}Request", request_fields) response_model = self._response_model(operation) operations.append( Operation( @@ -120,6 +145,7 @@ def operations(self, selected: set[str] | None = None) -> list[Operation]: path_fields=path_fields, query_fields=query_fields, body_field=body_field, + uses_request_as_body=uses_request_as_body, ) ) return operations @@ -130,6 +156,12 @@ def schema_models(self) -> list[Model]: for schema_name, schema in schemas.items(): required_fields = set(schema.get("required", [])) fields = [] + if "properties" not in schema and ( + schema.get("enum") or schema.get("type") not in {None, "object"} + ): + models.append(Model(class_name(schema_name), alias=schema_type(schema))) + continue + for property_name, property_schema in schema.get("properties", {}).items(): fields.append( Field( @@ -142,19 +174,17 @@ def schema_models(self) -> list[Model]: models.append(Model(class_name(schema_name), fields)) return models - def _body_field(self, operation: dict[str, Any]) -> Field | None: + def _body_schema(self, operation: dict[str, Any]) -> tuple[dict[str, Any] | None, bool]: request_body = operation.get("requestBody") if request_body is None: - return None + return None, False content = request_body.get("content", {}) schema = content.get("application/json", {}).get("schema", {}) - return Field( - name="body", - alias="body", - annotation=schema_type(schema), - required=request_body.get("required", False), - ) + return schema, request_body.get("required", False) + + def _is_action_body_operation(self, path: str, operation_id: str) -> bool: + return path.strip("/").lower() == operation_id.lower() def _response_model(self, operation: dict[str, Any]) -> str: responses = operation.get("responses", {}) diff --git a/osc_sdk_python/codegen/generator.py b/osc_sdk_python/codegen/generator.py index f5bf96c..09dc2eb 100644 --- a/osc_sdk_python/codegen/generator.py +++ b/osc_sdk_python/codegen/generator.py @@ -1,4 +1,6 @@ from pathlib import Path +import argparse +import re from typing import Iterable import ruamel.yaml @@ -7,7 +9,7 @@ from .ir import Field, Model, Operation -GENERATED_HEADER = '''"""Generated typed OKS client slice. +GENERATED_HEADER = '''"""Generated typed {service_label} client slice. Do not edit by hand. Regenerate with: python -m osc_sdk_python.codegen.generator @@ -15,6 +17,27 @@ ''' +DEFAULT_SERVICE_NAMES = { + "osc": "api", +} + + +def _service_label(package_name: str) -> str: + return package_name.upper() + + +def _service_class_name(package_name: str) -> str: + return "".join(part.capitalize() for part in re.split(r"[_\W]+", package_name) if part) + + +def _mixin_name(package_name: str) -> str: + return f"Async{_service_class_name(package_name)}TypedMixin" + + +def _header(package_name: str) -> str: + return GENERATED_HEADER.format(service_label=_service_label(package_name)) + + def _annotation(value: str, required: bool) -> str: if required or " | None" in value: return value @@ -28,6 +51,9 @@ def _field_args(required: bool, alias: str) -> str: def _render_model(model: Model) -> str: + if model.alias is not None: + return f"{model.name} = {model.alias}" + lines = [f"class {model.name}(GeneratedModel):"] if not model.fields: lines.append(" pass") @@ -40,13 +66,23 @@ def _render_model(model: Model) -> str: return "\n".join(lines) -def render_models(operations: Iterable[Operation], schema_models: Iterable[Model]) -> str: +def render_models( + operations: Iterable[Operation], + schema_models: Iterable[Model], + package_name: str, +) -> str: + schema_models = list(schema_models) + schema_model_names = {model.name for model in schema_models} models = [_render_model(model) for model in schema_models] - models.extend(_render_model(operation.request_model) for operation in operations) + models.extend( + _render_model(operation.request_model) + for operation in operations + if operation.request_model.name not in schema_model_names + ) return ( - GENERATED_HEADER + _header(package_name) + "from __future__ import annotations\n\n" - + "from typing import Any\n\n" + + "from typing import Any, Literal\n\n" + "from pydantic import BaseModel, ConfigDict, Field\n\n\n" + "class GeneratedModel(BaseModel):\n" + " model_config = ConfigDict(populate_by_name=True, extra=\"allow\")\n\n\n" @@ -59,16 +95,29 @@ def _field_dump(field: Field) -> str: return f"{field.alias!r}: request.{field.name}" -def render_async_client(operations: list[Operation]) -> str: - imports = sorted( - {operation.request_model.name for operation in operations} - | {operation.response_model for operation in operations} +def _model_imports(operations: list[Operation]) -> list[str]: + names = {operation.request_model.name for operation in operations} + names.update( + operation.response_model + for operation in operations + if re.fullmatch(r"[A-Za-z_][A-Za-z0-9_]*", operation.response_model) ) + return sorted(names) + + +def render_async_client( + operations: list[Operation], + service: str, + package_name: str, +) -> str: + imports = _model_imports(operations) model_imports = "\n".join(f" {name}," for name in imports) lines = [ - GENERATED_HEADER, + _header(package_name), "from typing import Any", "", + "from pydantic import TypeAdapter", + "", "from osc_sdk_python.runtime.request import RequestSpec", "from .models import (", model_imports, @@ -81,14 +130,15 @@ def render_async_client(operations: list[Operation]) -> str: " return value", "", "", - "class AsyncOksTypedMixin:", + f"class {_mixin_name(package_name)}:", ] for operation in operations: - json_body = ( - f"_dump_json_body(request.{operation.body_field.name})" - if operation.body_field is not None - else "None" - ) + if operation.uses_request_as_body: + json_body = "_dump_json_body(request)" + elif operation.body_field is not None: + json_body = f"_dump_json_body(request.{operation.body_field.name})" + else: + json_body = "None" lines.extend( [ f" async def {operation.method_name}(", @@ -114,7 +164,7 @@ def render_async_client(operations: list[Operation]) -> str: " }", " response = await self.call.request(", " RequestSpec(", - " service=\"oks\",", + f" service=\"{service}\",", f" method=\"{operation.http_method}\",", f" path=\"{operation.path}\",", f" json_body={json_body},", @@ -126,20 +176,25 @@ def render_async_client(operations: list[Operation]) -> str: " ),", " path_params=path_params,", " )", - f" return {operation.response_model}.model_validate(response)", + f" return TypeAdapter({operation.response_model}).validate_python(response)", "", ] ) return "\n".join(lines) -def render_init(operations: list[Operation], schema_models: list[Model]) -> str: +def render_init( + operations: list[Operation], + schema_models: list[Model], + package_name: str, +) -> str: model_names = sorted( {model.name for model in schema_models} | {operation.request_model.name for operation in operations} ) + mixin_name = _mixin_name(package_name) lines = [ - "from .async_client import AsyncOksTypedMixin", + f"from .async_client import {mixin_name}", "from .models import (", ] lines.extend(f" {name}," for name in model_names) @@ -148,7 +203,7 @@ def render_init(operations: list[Operation], schema_models: list[Model]) -> str: ")", "", "__all__ = [", - " \"AsyncOksTypedMixin\",", + f" \"{mixin_name}\",", ] ) lines.extend(f" {name!r}," for name in model_names) @@ -156,25 +211,52 @@ def render_init(operations: list[Operation], schema_models: list[Model]) -> str: return "\n".join(lines) -def generate(spec_path: Path, output_dir: Path) -> None: +def generate(spec_path: Path, output_dir: Path, service: str, package_name: str | None = None) -> None: + package_name = package_name or output_dir.name yaml = ruamel.yaml.YAML(typ="safe") spec = yaml.load(spec_path.read_text()) - adapter = PathOperationAdapter(spec, service="oks") + adapter = PathOperationAdapter(spec, service=service) operations = adapter.operations() schema_models = adapter.schema_models() output_dir.mkdir(parents=True, exist_ok=True) - (output_dir / "models.py").write_text(render_models(operations, schema_models)) - (output_dir / "async_client.py").write_text(render_async_client(operations)) - (output_dir / "__init__.py").write_text(render_init(operations, schema_models)) + (output_dir / "models.py").write_text(render_models(operations, schema_models, package_name)) + (output_dir / "async_client.py").write_text( + render_async_client(operations, service, package_name) + ) + (output_dir / "__init__.py").write_text(render_init(operations, schema_models, package_name)) + + +def generate_all(root: Path, services: list[str] | None = None) -> None: + resources_root = root / "resources" + service_dirs = [ + path + for path in sorted(resources_root.iterdir()) + if path.is_dir() and (path / "api.yaml").exists() + ] + selected = set(services or []) + for service_dir in service_dirs: + package_name = service_dir.name + if selected and package_name not in selected: + continue + generate( + service_dir / "api.yaml", + root / "generated" / package_name, + DEFAULT_SERVICE_NAMES.get(package_name, package_name), + package_name, + ) def main() -> None: - root = Path(__file__).resolve().parents[1] - generate( - root / "resources" / "oks" / "api.yaml", - root / "generated" / "oks", + parser = argparse.ArgumentParser(description="Generate typed SDK service slices.") + parser.add_argument( + "services", + nargs="*", + help="Service package names to generate, for example: osc oks. Defaults to all resources/*/api.yaml services.", ) + args = parser.parse_args() + root = Path(__file__).resolve().parents[1] + generate_all(root, args.services or None) if __name__ == "__main__": diff --git a/osc_sdk_python/codegen/ir.py b/osc_sdk_python/codegen/ir.py index a8bb327..c563135 100644 --- a/osc_sdk_python/codegen/ir.py +++ b/osc_sdk_python/codegen/ir.py @@ -13,6 +13,7 @@ class Field: class Model: name: str fields: list[Field] = field(default_factory=list) + alias: str | None = None @dataclass @@ -26,3 +27,4 @@ class Operation: path_fields: list[Field] = field(default_factory=list) query_fields: list[Field] = field(default_factory=list) body_field: Field | None = None + uses_request_as_body: bool = False From 504180d7561812fa5eb2a75a3ef8ae0214c89221 Mon Sep 17 00:00:00 2001 From: Yash Gaykar Date: Tue, 26 May 2026 13:49:07 +0530 Subject: [PATCH 10/26] :sparkles: feat: add generated clients and models --- osc_sdk_python/generated/oks/async_client.py | 58 +- osc_sdk_python/generated/oks/models.py | 8 +- osc_sdk_python/generated/osc/__init__.py | 1307 ++++ osc_sdk_python/generated/osc/async_client.py | 6834 ++++++++++++++++++ osc_sdk_python/generated/osc/models.py | 3801 ++++++++++ 5 files changed, 11976 insertions(+), 32 deletions(-) create mode 100644 osc_sdk_python/generated/osc/__init__.py create mode 100644 osc_sdk_python/generated/osc/async_client.py create mode 100644 osc_sdk_python/generated/osc/models.py diff --git a/osc_sdk_python/generated/oks/async_client.py b/osc_sdk_python/generated/oks/async_client.py index d411dd2..bcf2786 100644 --- a/osc_sdk_python/generated/oks/async_client.py +++ b/osc_sdk_python/generated/oks/async_client.py @@ -6,6 +6,8 @@ from typing import Any +from pydantic import TypeAdapter + from osc_sdk_python.runtime.request import RequestSpec from .models import ( CPSubregionsResponse, @@ -98,7 +100,7 @@ async def list_projects( ), path_params=path_params, ) - return ProjectResponseList.model_validate(response) + return TypeAdapter(ProjectResponseList).validate_python(response) async def create_project( self, @@ -125,7 +127,7 @@ async def create_project( ), path_params=path_params, ) - return ProjectResponse.model_validate(response) + return TypeAdapter(ProjectResponse).validate_python(response) async def get_project( self, @@ -153,7 +155,7 @@ async def get_project( ), path_params=path_params, ) - return ProjectResponse.model_validate(response) + return TypeAdapter(ProjectResponse).validate_python(response) async def update_project( self, @@ -181,7 +183,7 @@ async def update_project( ), path_params=path_params, ) - return ProjectResponse.model_validate(response) + return TypeAdapter(ProjectResponse).validate_python(response) async def delete_project( self, @@ -209,7 +211,7 @@ async def delete_project( ), path_params=path_params, ) - return DetailResponse.model_validate(response) + return TypeAdapter(DetailResponse).validate_python(response) async def get_project_quotas( self, @@ -237,7 +239,7 @@ async def get_project_quotas( ), path_params=path_params, ) - return projects__project_schema__QuotasResponse.model_validate(response) + return TypeAdapter(projects__project_schema__QuotasResponse).validate_python(response) async def get_project_snapshots( self, @@ -265,7 +267,7 @@ async def get_project_snapshots( ), path_params=path_params, ) - return SnapshotsResponse.model_validate(response) + return TypeAdapter(SnapshotsResponse).validate_python(response) async def get_project_public_ips( self, @@ -293,7 +295,7 @@ async def get_project_public_ips( ), path_params=path_params, ) - return PublicIpsResponse.model_validate(response) + return TypeAdapter(PublicIpsResponse).validate_python(response) async def get_project_nets( self, @@ -321,7 +323,7 @@ async def get_project_nets( ), path_params=path_params, ) - return NetsResponse.model_validate(response) + return TypeAdapter(NetsResponse).validate_python(response) async def list_clusters_by_project_id( self, @@ -356,7 +358,7 @@ async def list_clusters_by_project_id( ), path_params=path_params, ) - return ClusterResponseList.model_validate(response) + return TypeAdapter(ClusterResponseList).validate_python(response) async def create_cluster( self, @@ -383,7 +385,7 @@ async def create_cluster( ), path_params=path_params, ) - return ClusterResponse.model_validate(response) + return TypeAdapter(ClusterResponse).validate_python(response) async def list_all_clusters( self, @@ -417,7 +419,7 @@ async def list_all_clusters( ), path_params=path_params, ) - return ClusterResponseList.model_validate(response) + return TypeAdapter(ClusterResponseList).validate_python(response) async def get_cluster( self, @@ -445,7 +447,7 @@ async def get_cluster( ), path_params=path_params, ) - return ClusterResponse.model_validate(response) + return TypeAdapter(ClusterResponse).validate_python(response) async def update_cluster( self, @@ -473,7 +475,7 @@ async def update_cluster( ), path_params=path_params, ) - return ClusterResponse.model_validate(response) + return TypeAdapter(ClusterResponse).validate_python(response) async def delete_cluster( self, @@ -501,7 +503,7 @@ async def delete_cluster( ), path_params=path_params, ) - return DetailResponse.model_validate(response) + return TypeAdapter(DetailResponse).validate_python(response) async def get_kubeconfig( self, @@ -532,7 +534,7 @@ async def get_kubeconfig( ), path_params=path_params, ) - return KubeconfigResponse.model_validate(response) + return TypeAdapter(KubeconfigResponse).validate_python(response) async def get_kubeconfig_with_pubkey_nacl( self, @@ -563,7 +565,7 @@ async def get_kubeconfig_with_pubkey_nacl( ), path_params=path_params, ) - return KubeconfigResponse.model_validate(response) + return TypeAdapter(KubeconfigResponse).validate_python(response) async def upgrade_cluster( self, @@ -591,7 +593,7 @@ async def upgrade_cluster( ), path_params=path_params, ) - return ClusterResponse.model_validate(response) + return TypeAdapter(ClusterResponse).validate_python(response) async def get_kubernetes_versions( self, @@ -618,7 +620,7 @@ async def get_kubernetes_versions( ), path_params=path_params, ) - return KubernetesVersionsResponse.model_validate(response) + return TypeAdapter(KubernetesVersionsResponse).validate_python(response) async def get_cp_subregions( self, @@ -645,7 +647,7 @@ async def get_cp_subregions( ), path_params=path_params, ) - return CPSubregionsResponse.model_validate(response) + return TypeAdapter(CPSubregionsResponse).validate_python(response) async def get_control_plane_plans( self, @@ -672,7 +674,7 @@ async def get_control_plane_plans( ), path_params=path_params, ) - return ControlPlanesResponse.model_validate(response) + return TypeAdapter(ControlPlanesResponse).validate_python(response) async def get_project_template( self, @@ -699,7 +701,7 @@ async def get_project_template( ), path_params=path_params, ) - return TemplateResponse_ProjectInput.model_validate(response) + return TypeAdapter(TemplateResponse_ProjectInput).validate_python(response) async def get_cluster_template( self, @@ -726,7 +728,7 @@ async def get_cluster_template( ), path_params=path_params, ) - return TemplateResponse_ClusterInputTemplate.model_validate(response) + return TypeAdapter(TemplateResponse_ClusterInputTemplate).validate_python(response) async def get_nodepool_template( self, @@ -753,7 +755,7 @@ async def get_nodepool_template( ), path_params=path_params, ) - return TemplateResponse_Nodepool.model_validate(response) + return TypeAdapter(TemplateResponse_Nodepool).validate_python(response) async def get_net_peering_request_template( self, @@ -780,7 +782,7 @@ async def get_net_peering_request_template( ), path_params=path_params, ) - return TemplateResponse_NetPeeringRequest.model_validate(response) + return TypeAdapter(TemplateResponse_NetPeeringRequest).validate_python(response) async def get_net_peering_acceptance_template( self, @@ -807,7 +809,7 @@ async def get_net_peering_acceptance_template( ), path_params=path_params, ) - return TemplateResponse_NetPeeringAcceptance.model_validate(response) + return TypeAdapter(TemplateResponse_NetPeeringAcceptance).validate_python(response) async def get_quotas( self, @@ -834,7 +836,7 @@ async def get_quotas( ), path_params=path_params, ) - return quotas__quota_schema__QuotasResponse.model_validate(response) + return TypeAdapter(quotas__quota_schema__QuotasResponse).validate_python(response) async def get_client_ip( self, @@ -861,4 +863,4 @@ async def get_client_ip( ), path_params=path_params, ) - return IPResponse.model_validate(response) + return TypeAdapter(IPResponse).validate_python(response) diff --git a/osc_sdk_python/generated/oks/models.py b/osc_sdk_python/generated/oks/models.py index 7255c35..1fa50a9 100644 --- a/osc_sdk_python/generated/oks/models.py +++ b/osc_sdk_python/generated/oks/models.py @@ -5,7 +5,7 @@ """ from __future__ import annotations -from typing import Any +from typing import Any, Literal from pydantic import BaseModel, ConfigDict, Field @@ -33,7 +33,7 @@ class AutoMaintenances(GeneratedModel): class AutoUpgradeMaintenance(GeneratedModel): duration_hours: int = Field(alias='durationHours') start_hour: int = Field(alias='startHour') - week_day: str = Field(alias='weekDay') + week_day: Literal['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] = Field(alias='weekDay') class CPSubregionsResponse(GeneratedModel): response_context: clusters__cluster_schema__ResponseContext = Field(alias='ResponseContext') @@ -165,14 +165,14 @@ class KubernetesVersionsResponse(GeneratedModel): class Maintenance(GeneratedModel): duration_hours: int = Field(alias='duration_hours') start_hour: int = Field(alias='start_hour') - week_day: str = Field(alias='week_day') + week_day: Literal['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun', 'string'] = Field(alias='week_day') tz: str | None = Field(default=None, alias='tz') class MaintenanceWindow(GeneratedModel): enabled: bool | None = Field(default=None, alias='enabled') duration_hours: int | None = Field(default=None, alias='duration_hours') start_hour: int | None = Field(default=None, alias='start_hour') - week_day: str | None = Field(default=None, alias='week_day') + week_day: Literal['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun', 'string'] | None = Field(default=None, alias='week_day') tz: str | None = Field(default=None, alias='tz') class Net(GeneratedModel): diff --git a/osc_sdk_python/generated/osc/__init__.py b/osc_sdk_python/generated/osc/__init__.py new file mode 100644 index 0000000..04ce9a4 --- /dev/null +++ b/osc_sdk_python/generated/osc/__init__.py @@ -0,0 +1,1307 @@ +from .async_client import AsyncOscTypedMixin +from .models import ( + AcceptNetPeeringRequest, + AcceptNetPeeringResponse, + AccepterNet, + AccessKey, + AccessKeySecretKey, + AccessLog, + Account, + ActionsOnNextBoot, + AddUserToUserGroupRequest, + AddUserToUserGroupResponse, + ApiAccessPolicy, + ApiAccessRule, + ApplicationStickyCookiePolicy, + BackendVmHealth, + BlockDeviceMappingCreated, + BlockDeviceMappingImage, + BlockDeviceMappingVmCreation, + BlockDeviceMappingVmUpdate, + BootMode, + BsuCreated, + BsuToCreate, + BsuToUpdateVm, + CO2CategoryDistribution, + CO2EmissionEntry, + CO2FactorDistribution, + Ca, + Catalog, + CatalogEntry, + Catalogs, + CheckAuthenticationRequest, + CheckAuthenticationResponse, + ClientGateway, + ConsumptionEntry, + CreateAccessKeyRequest, + CreateAccessKeyResponse, + CreateAccountRequest, + CreateAccountResponse, + CreateApiAccessRuleRequest, + CreateApiAccessRuleResponse, + CreateCaRequest, + CreateCaResponse, + CreateClientGatewayRequest, + CreateClientGatewayResponse, + CreateDedicatedGroupRequest, + CreateDedicatedGroupResponse, + CreateDhcpOptionsRequest, + CreateDhcpOptionsResponse, + CreateDirectLinkInterfaceRequest, + CreateDirectLinkInterfaceResponse, + CreateDirectLinkRequest, + CreateDirectLinkResponse, + CreateFlexibleGpuRequest, + CreateFlexibleGpuResponse, + CreateImageExportTaskRequest, + CreateImageExportTaskResponse, + CreateImageRequest, + CreateImageResponse, + CreateInternetServiceRequest, + CreateInternetServiceResponse, + CreateKeypairRequest, + CreateKeypairResponse, + CreateListenerRuleRequest, + CreateListenerRuleResponse, + CreateLoadBalancerListenersRequest, + CreateLoadBalancerListenersResponse, + CreateLoadBalancerPolicyRequest, + CreateLoadBalancerPolicyResponse, + CreateLoadBalancerRequest, + CreateLoadBalancerResponse, + CreateLoadBalancerTagsRequest, + CreateLoadBalancerTagsResponse, + CreateNatServiceRequest, + CreateNatServiceResponse, + CreateNetAccessPointRequest, + CreateNetAccessPointResponse, + CreateNetPeeringRequest, + CreateNetPeeringResponse, + CreateNetRequest, + CreateNetResponse, + CreateNicRequest, + CreateNicResponse, + CreatePolicyRequest, + CreatePolicyResponse, + CreatePolicyVersionRequest, + CreatePolicyVersionResponse, + CreateProductTypeRequest, + CreateProductTypeResponse, + CreatePublicIpRequest, + CreatePublicIpResponse, + CreateRouteRequest, + CreateRouteResponse, + CreateRouteTableRequest, + CreateRouteTableResponse, + CreateSecurityGroupRequest, + CreateSecurityGroupResponse, + CreateSecurityGroupRuleRequest, + CreateSecurityGroupRuleResponse, + CreateServerCertificateRequest, + CreateServerCertificateResponse, + CreateSnapshotExportTaskRequest, + CreateSnapshotExportTaskResponse, + CreateSnapshotRequest, + CreateSnapshotResponse, + CreateSubnetRequest, + CreateSubnetResponse, + CreateTagsRequest, + CreateTagsResponse, + CreateUserGroupRequest, + CreateUserGroupResponse, + CreateUserRequest, + CreateUserResponse, + CreateVirtualGatewayRequest, + CreateVirtualGatewayResponse, + CreateVmGroupRequest, + CreateVmGroupResponse, + CreateVmTemplateRequest, + CreateVmTemplateResponse, + CreateVmsRequest, + CreateVmsResponse, + CreateVolumeRequest, + CreateVolumeResponse, + CreateVpnConnectionRequest, + CreateVpnConnectionResponse, + CreateVpnConnectionRouteRequest, + CreateVpnConnectionRouteResponse, + DedicatedGroup, + DeleteAccessKeyRequest, + DeleteAccessKeyResponse, + DeleteApiAccessRuleRequest, + DeleteApiAccessRuleResponse, + DeleteCaRequest, + DeleteCaResponse, + DeleteClientGatewayRequest, + DeleteClientGatewayResponse, + DeleteDedicatedGroupRequest, + DeleteDedicatedGroupResponse, + DeleteDhcpOptionsRequest, + DeleteDhcpOptionsResponse, + DeleteDirectLinkInterfaceRequest, + DeleteDirectLinkInterfaceResponse, + DeleteDirectLinkRequest, + DeleteDirectLinkResponse, + DeleteExportTaskRequest, + DeleteExportTaskResponse, + DeleteFlexibleGpuRequest, + DeleteFlexibleGpuResponse, + DeleteImageRequest, + DeleteImageResponse, + DeleteInternetServiceRequest, + DeleteInternetServiceResponse, + DeleteKeypairRequest, + DeleteKeypairResponse, + DeleteListenerRuleRequest, + DeleteListenerRuleResponse, + DeleteLoadBalancerListenersRequest, + DeleteLoadBalancerListenersResponse, + DeleteLoadBalancerPolicyRequest, + DeleteLoadBalancerPolicyResponse, + DeleteLoadBalancerRequest, + DeleteLoadBalancerResponse, + DeleteLoadBalancerTagsRequest, + DeleteLoadBalancerTagsResponse, + DeleteNatServiceRequest, + DeleteNatServiceResponse, + DeleteNetAccessPointRequest, + DeleteNetAccessPointResponse, + DeleteNetPeeringRequest, + DeleteNetPeeringResponse, + DeleteNetRequest, + DeleteNetResponse, + DeleteNicRequest, + DeleteNicResponse, + DeletePolicyRequest, + DeletePolicyResponse, + DeletePolicyVersionRequest, + DeletePolicyVersionResponse, + DeleteProductTypeRequest, + DeleteProductTypeResponse, + DeletePublicIpRequest, + DeletePublicIpResponse, + DeleteRouteRequest, + DeleteRouteResponse, + DeleteRouteTableRequest, + DeleteRouteTableResponse, + DeleteSecurityGroupRequest, + DeleteSecurityGroupResponse, + DeleteSecurityGroupRuleRequest, + DeleteSecurityGroupRuleResponse, + DeleteServerCertificateRequest, + DeleteServerCertificateResponse, + DeleteSnapshotRequest, + DeleteSnapshotResponse, + DeleteSubnetRequest, + DeleteSubnetResponse, + DeleteTagsRequest, + DeleteTagsResponse, + DeleteUserGroupPolicyRequest, + DeleteUserGroupPolicyResponse, + DeleteUserGroupRequest, + DeleteUserGroupResponse, + DeleteUserPolicyRequest, + DeleteUserPolicyResponse, + DeleteUserRequest, + DeleteUserResponse, + DeleteVirtualGatewayRequest, + DeleteVirtualGatewayResponse, + DeleteVmGroupRequest, + DeleteVmGroupResponse, + DeleteVmTemplateRequest, + DeleteVmTemplateResponse, + DeleteVmsRequest, + DeleteVmsResponse, + DeleteVolumeRequest, + DeleteVolumeResponse, + DeleteVpnConnectionRequest, + DeleteVpnConnectionResponse, + DeleteVpnConnectionRouteRequest, + DeleteVpnConnectionRouteResponse, + DeregisterVmsInLoadBalancerRequest, + DeregisterVmsInLoadBalancerResponse, + DhcpOptionsSet, + DirectLink, + DirectLinkInterface, + DirectLinkInterfaces, + DisableOutscaleLoginForUsersRequest, + DisableOutscaleLoginForUsersResponse, + DisableOutscaleLoginPerUsersRequest, + DisableOutscaleLoginPerUsersResponse, + DisableOutscaleLoginRequest, + DisableOutscaleLoginResponse, + EnableOutscaleLoginForUsersRequest, + EnableOutscaleLoginForUsersResponse, + EnableOutscaleLoginPerUsersRequest, + EnableOutscaleLoginPerUsersResponse, + EnableOutscaleLoginRequest, + EnableOutscaleLoginResponse, + ErrorResponse, + Errors, + FiltersAccessKeys, + FiltersApiAccessRule, + FiltersApiLog, + FiltersCa, + FiltersCatalogs, + FiltersClientGateway, + FiltersDedicatedGroup, + FiltersDhcpOptions, + FiltersDirectLink, + FiltersDirectLinkInterface, + FiltersFlexibleGpu, + FiltersImage, + FiltersInternetService, + FiltersKeypair, + FiltersListenerRule, + FiltersLoadBalancer, + FiltersNatService, + FiltersNet, + FiltersNetAccessPoint, + FiltersNetPeering, + FiltersNic, + FiltersProductType, + FiltersPublicIp, + FiltersQuota, + FiltersReadImageExportTask, + FiltersReadVolumeUpdateTask, + FiltersRouteTable, + FiltersSecurityGroup, + FiltersServerCertificate, + FiltersService, + FiltersSnapshot, + FiltersSnapshotExportTask, + FiltersSubnet, + FiltersSubregion, + FiltersTag, + FiltersUserGroup, + FiltersUsers, + FiltersVirtualGateway, + FiltersVm, + FiltersVmGroup, + FiltersVmTemplate, + FiltersVmType, + FiltersVmsState, + FiltersVolume, + FiltersVpnConnection, + FlexibleGpu, + FlexibleGpuCatalog, + HealthCheck, + Image, + ImageExportTask, + InlinePolicy, + InternetService, + Keypair, + KeypairCreated, + LinkFlexibleGpuRequest, + LinkFlexibleGpuResponse, + LinkInternetServiceRequest, + LinkInternetServiceResponse, + LinkLoadBalancerBackendMachinesRequest, + LinkLoadBalancerBackendMachinesResponse, + LinkManagedPolicyToUserGroupRequest, + LinkManagedPolicyToUserGroupResponse, + LinkNic, + LinkNicLight, + LinkNicRequest, + LinkNicResponse, + LinkNicToUpdate, + LinkPolicyRequest, + LinkPolicyResponse, + LinkPrivateIpsRequest, + LinkPrivateIpsResponse, + LinkPublicIp, + LinkPublicIpLightForVm, + LinkPublicIpRequest, + LinkPublicIpResponse, + LinkRouteTable, + LinkRouteTableRequest, + LinkRouteTableResponse, + LinkVirtualGatewayRequest, + LinkVirtualGatewayResponse, + LinkVolumeRequest, + LinkVolumeResponse, + LinkedPolicy, + LinkedVolume, + Listener, + ListenerForCreation, + ListenerRule, + ListenerRuleForCreation, + LoadBalancer, + LoadBalancerLight, + LoadBalancerStickyCookiePolicy, + LoadBalancerTag, + Location, + Log, + MaintenanceEvent, + MinimalPolicy, + NatService, + Net, + NetAccessPoint, + NetPeering, + NetPeeringState, + NetToVirtualGatewayLink, + Nic, + NicForVmCreation, + NicLight, + OsuApiKey, + OsuExportImageExportTask, + OsuExportSnapshotExportTask, + OsuExportToCreate, + PermissionsOnResource, + PermissionsOnResourceCreation, + Phase1Options, + Phase2Options, + Placement, + Policy, + PolicyEntities, + PolicyVersion, + PrivateIp, + PrivateIpLight, + PrivateIpLightForVm, + ProductType, + PublicIp, + PublicIpLight, + PutUserGroupPolicyRequest, + PutUserGroupPolicyResponse, + PutUserPolicyRequest, + PutUserPolicyResponse, + Quota, + QuotaTypes, + ReadAccessKeysRequest, + ReadAccessKeysResponse, + ReadAccountsRequest, + ReadAccountsResponse, + ReadAdminPasswordRequest, + ReadAdminPasswordResponse, + ReadApiAccessPolicyRequest, + ReadApiAccessPolicyResponse, + ReadApiAccessRulesRequest, + ReadApiAccessRulesResponse, + ReadApiLogsRequest, + ReadApiLogsResponse, + ReadCO2EmissionAccountRequest, + ReadCO2EmissionAccountResponse, + ReadCasRequest, + ReadCasResponse, + ReadCatalogRequest, + ReadCatalogResponse, + ReadCatalogsRequest, + ReadCatalogsResponse, + ReadClientGatewaysRequest, + ReadClientGatewaysResponse, + ReadConsoleOutputRequest, + ReadConsoleOutputResponse, + ReadConsumptionAccountRequest, + ReadConsumptionAccountResponse, + ReadDedicatedGroupsRequest, + ReadDedicatedGroupsResponse, + ReadDhcpOptionsRequest, + ReadDhcpOptionsResponse, + ReadDirectLinkInterfacesRequest, + ReadDirectLinkInterfacesResponse, + ReadDirectLinksRequest, + ReadDirectLinksResponse, + ReadEntitiesLinkedToPolicyRequest, + ReadEntitiesLinkedToPolicyResponse, + ReadFlexibleGpuCatalogRequest, + ReadFlexibleGpuCatalogResponse, + ReadFlexibleGpusRequest, + ReadFlexibleGpusResponse, + ReadImageExportTasksRequest, + ReadImageExportTasksResponse, + ReadImagesRequest, + ReadImagesResponse, + ReadInternetServicesRequest, + ReadInternetServicesResponse, + ReadKeypairsRequest, + ReadKeypairsResponse, + ReadLinkedPoliciesFilters, + ReadLinkedPoliciesRequest, + ReadLinkedPoliciesResponse, + ReadListenerRulesRequest, + ReadListenerRulesResponse, + ReadLoadBalancerTagsRequest, + ReadLoadBalancerTagsResponse, + ReadLoadBalancersRequest, + ReadLoadBalancersResponse, + ReadLocationsRequest, + ReadLocationsResponse, + ReadManagedPoliciesLinkedToUserGroupRequest, + ReadManagedPoliciesLinkedToUserGroupResponse, + ReadNatServicesRequest, + ReadNatServicesResponse, + ReadNetAccessPointServicesRequest, + ReadNetAccessPointServicesResponse, + ReadNetAccessPointsRequest, + ReadNetAccessPointsResponse, + ReadNetPeeringsRequest, + ReadNetPeeringsResponse, + ReadNetsRequest, + ReadNetsResponse, + ReadNicsRequest, + ReadNicsResponse, + ReadPoliciesFilters, + ReadPoliciesRequest, + ReadPoliciesResponse, + ReadPolicyRequest, + ReadPolicyResponse, + ReadPolicyVersionRequest, + ReadPolicyVersionResponse, + ReadPolicyVersionsRequest, + ReadPolicyVersionsResponse, + ReadProductTypesRequest, + ReadProductTypesResponse, + ReadPublicCatalogRequest, + ReadPublicCatalogResponse, + ReadPublicIpRangesRequest, + ReadPublicIpRangesResponse, + ReadPublicIpsRequest, + ReadPublicIpsResponse, + ReadQuotasRequest, + ReadQuotasResponse, + ReadRegionsRequest, + ReadRegionsResponse, + ReadRouteTablesRequest, + ReadRouteTablesResponse, + ReadSecurityGroupsRequest, + ReadSecurityGroupsResponse, + ReadServerCertificatesRequest, + ReadServerCertificatesResponse, + ReadSnapshotExportTasksRequest, + ReadSnapshotExportTasksResponse, + ReadSnapshotsRequest, + ReadSnapshotsResponse, + ReadSubnetsRequest, + ReadSubnetsResponse, + ReadSubregionsRequest, + ReadSubregionsResponse, + ReadTagsRequest, + ReadTagsResponse, + ReadUnitPriceRequest, + ReadUnitPriceResponse, + ReadUserGroupPoliciesRequest, + ReadUserGroupPoliciesResponse, + ReadUserGroupPolicyRequest, + ReadUserGroupPolicyResponse, + ReadUserGroupRequest, + ReadUserGroupResponse, + ReadUserGroupsPerUserRequest, + ReadUserGroupsPerUserResponse, + ReadUserGroupsRequest, + ReadUserGroupsResponse, + ReadUserPoliciesRequest, + ReadUserPoliciesResponse, + ReadUserPolicyRequest, + ReadUserPolicyResponse, + ReadUsersRequest, + ReadUsersResponse, + ReadVirtualGatewaysRequest, + ReadVirtualGatewaysResponse, + ReadVmGroupsRequest, + ReadVmGroupsResponse, + ReadVmTemplatesRequest, + ReadVmTemplatesResponse, + ReadVmTypesRequest, + ReadVmTypesResponse, + ReadVmsHealthRequest, + ReadVmsHealthResponse, + ReadVmsRequest, + ReadVmsResponse, + ReadVmsStateRequest, + ReadVmsStateResponse, + ReadVolumeUpdateTasksRequest, + ReadVolumeUpdateTasksResponse, + ReadVolumesRequest, + ReadVolumesResponse, + ReadVpnConnectionsRequest, + ReadVpnConnectionsResponse, + RebootVmsRequest, + RebootVmsResponse, + Region, + RegisterVmsInLoadBalancerRequest, + RegisterVmsInLoadBalancerResponse, + RejectNetPeeringRequest, + RejectNetPeeringResponse, + RemoveUserFromUserGroupRequest, + RemoveUserFromUserGroupResponse, + ResourceLoadBalancerTag, + ResourceTag, + ResponseContext, + Route, + RouteLight, + RoutePropagatingVirtualGateway, + RouteTable, + ScaleDownVmGroupRequest, + ScaleDownVmGroupResponse, + ScaleUpVmGroupRequest, + ScaleUpVmGroupResponse, + SecureBootAction, + SecurityGroup, + SecurityGroupLight, + SecurityGroupRule, + SecurityGroupsMember, + ServerCertificate, + Service, + SetDefaultPolicyVersionRequest, + SetDefaultPolicyVersionResponse, + Snapshot, + SnapshotExportTask, + SourceNet, + SourceSecurityGroup, + StartVmsRequest, + StartVmsResponse, + StateComment, + StopVmsRequest, + StopVmsResponse, + Subnet, + Subregion, + Tag, + UnitPriceEntry, + UnlinkFlexibleGpuRequest, + UnlinkFlexibleGpuResponse, + UnlinkInternetServiceRequest, + UnlinkInternetServiceResponse, + UnlinkLoadBalancerBackendMachinesRequest, + UnlinkLoadBalancerBackendMachinesResponse, + UnlinkManagedPolicyFromUserGroupRequest, + UnlinkManagedPolicyFromUserGroupResponse, + UnlinkNicRequest, + UnlinkNicResponse, + UnlinkPolicyRequest, + UnlinkPolicyResponse, + UnlinkPrivateIpsRequest, + UnlinkPrivateIpsResponse, + UnlinkPublicIpRequest, + UnlinkPublicIpResponse, + UnlinkRouteTableRequest, + UnlinkRouteTableResponse, + UnlinkVirtualGatewayRequest, + UnlinkVirtualGatewayResponse, + UnlinkVolumeRequest, + UnlinkVolumeResponse, + UpdateAccessKeyRequest, + UpdateAccessKeyResponse, + UpdateAccountRequest, + UpdateAccountResponse, + UpdateApiAccessPolicyRequest, + UpdateApiAccessPolicyResponse, + UpdateApiAccessRuleRequest, + UpdateApiAccessRuleResponse, + UpdateCaRequest, + UpdateCaResponse, + UpdateDedicatedGroupRequest, + UpdateDedicatedGroupResponse, + UpdateDirectLinkInterfaceRequest, + UpdateDirectLinkInterfaceResponse, + UpdateFlexibleGpuRequest, + UpdateFlexibleGpuResponse, + UpdateImageRequest, + UpdateImageResponse, + UpdateListenerRuleRequest, + UpdateListenerRuleResponse, + UpdateLoadBalancerRequest, + UpdateLoadBalancerResponse, + UpdateNetAccessPointRequest, + UpdateNetAccessPointResponse, + UpdateNetRequest, + UpdateNetResponse, + UpdateNicRequest, + UpdateNicResponse, + UpdateRoutePropagationRequest, + UpdateRoutePropagationResponse, + UpdateRouteRequest, + UpdateRouteResponse, + UpdateRouteTableLinkRequest, + UpdateRouteTableLinkResponse, + UpdateServerCertificateRequest, + UpdateServerCertificateResponse, + UpdateSnapshotRequest, + UpdateSnapshotResponse, + UpdateSubnetRequest, + UpdateSubnetResponse, + UpdateUserGroupRequest, + UpdateUserGroupResponse, + UpdateUserRequest, + UpdateUserResponse, + UpdateVmGroupRequest, + UpdateVmGroupResponse, + UpdateVmRequest, + UpdateVmResponse, + UpdateVmTemplateRequest, + UpdateVmTemplateResponse, + UpdateVolumeRequest, + UpdateVolumeResponse, + UpdateVpnConnectionRequest, + UpdateVpnConnectionResponse, + User, + UserGroup, + VgwTelemetry, + VirtualGateway, + Vm, + VmGroup, + VmState, + VmStates, + VmTemplate, + VmType, + Volume, + VolumeUpdate, + VolumeUpdateParameters, + VolumeUpdateTask, + VpnConnection, + VpnOptions, + With, +) + +__all__ = [ + "AsyncOscTypedMixin", + 'AcceptNetPeeringRequest', + 'AcceptNetPeeringResponse', + 'AccepterNet', + 'AccessKey', + 'AccessKeySecretKey', + 'AccessLog', + 'Account', + 'ActionsOnNextBoot', + 'AddUserToUserGroupRequest', + 'AddUserToUserGroupResponse', + 'ApiAccessPolicy', + 'ApiAccessRule', + 'ApplicationStickyCookiePolicy', + 'BackendVmHealth', + 'BlockDeviceMappingCreated', + 'BlockDeviceMappingImage', + 'BlockDeviceMappingVmCreation', + 'BlockDeviceMappingVmUpdate', + 'BootMode', + 'BsuCreated', + 'BsuToCreate', + 'BsuToUpdateVm', + 'CO2CategoryDistribution', + 'CO2EmissionEntry', + 'CO2FactorDistribution', + 'Ca', + 'Catalog', + 'CatalogEntry', + 'Catalogs', + 'CheckAuthenticationRequest', + 'CheckAuthenticationResponse', + 'ClientGateway', + 'ConsumptionEntry', + 'CreateAccessKeyRequest', + 'CreateAccessKeyResponse', + 'CreateAccountRequest', + 'CreateAccountResponse', + 'CreateApiAccessRuleRequest', + 'CreateApiAccessRuleResponse', + 'CreateCaRequest', + 'CreateCaResponse', + 'CreateClientGatewayRequest', + 'CreateClientGatewayResponse', + 'CreateDedicatedGroupRequest', + 'CreateDedicatedGroupResponse', + 'CreateDhcpOptionsRequest', + 'CreateDhcpOptionsResponse', + 'CreateDirectLinkInterfaceRequest', + 'CreateDirectLinkInterfaceResponse', + 'CreateDirectLinkRequest', + 'CreateDirectLinkResponse', + 'CreateFlexibleGpuRequest', + 'CreateFlexibleGpuResponse', + 'CreateImageExportTaskRequest', + 'CreateImageExportTaskResponse', + 'CreateImageRequest', + 'CreateImageResponse', + 'CreateInternetServiceRequest', + 'CreateInternetServiceResponse', + 'CreateKeypairRequest', + 'CreateKeypairResponse', + 'CreateListenerRuleRequest', + 'CreateListenerRuleResponse', + 'CreateLoadBalancerListenersRequest', + 'CreateLoadBalancerListenersResponse', + 'CreateLoadBalancerPolicyRequest', + 'CreateLoadBalancerPolicyResponse', + 'CreateLoadBalancerRequest', + 'CreateLoadBalancerResponse', + 'CreateLoadBalancerTagsRequest', + 'CreateLoadBalancerTagsResponse', + 'CreateNatServiceRequest', + 'CreateNatServiceResponse', + 'CreateNetAccessPointRequest', + 'CreateNetAccessPointResponse', + 'CreateNetPeeringRequest', + 'CreateNetPeeringResponse', + 'CreateNetRequest', + 'CreateNetResponse', + 'CreateNicRequest', + 'CreateNicResponse', + 'CreatePolicyRequest', + 'CreatePolicyResponse', + 'CreatePolicyVersionRequest', + 'CreatePolicyVersionResponse', + 'CreateProductTypeRequest', + 'CreateProductTypeResponse', + 'CreatePublicIpRequest', + 'CreatePublicIpResponse', + 'CreateRouteRequest', + 'CreateRouteResponse', + 'CreateRouteTableRequest', + 'CreateRouteTableResponse', + 'CreateSecurityGroupRequest', + 'CreateSecurityGroupResponse', + 'CreateSecurityGroupRuleRequest', + 'CreateSecurityGroupRuleResponse', + 'CreateServerCertificateRequest', + 'CreateServerCertificateResponse', + 'CreateSnapshotExportTaskRequest', + 'CreateSnapshotExportTaskResponse', + 'CreateSnapshotRequest', + 'CreateSnapshotResponse', + 'CreateSubnetRequest', + 'CreateSubnetResponse', + 'CreateTagsRequest', + 'CreateTagsResponse', + 'CreateUserGroupRequest', + 'CreateUserGroupResponse', + 'CreateUserRequest', + 'CreateUserResponse', + 'CreateVirtualGatewayRequest', + 'CreateVirtualGatewayResponse', + 'CreateVmGroupRequest', + 'CreateVmGroupResponse', + 'CreateVmTemplateRequest', + 'CreateVmTemplateResponse', + 'CreateVmsRequest', + 'CreateVmsResponse', + 'CreateVolumeRequest', + 'CreateVolumeResponse', + 'CreateVpnConnectionRequest', + 'CreateVpnConnectionResponse', + 'CreateVpnConnectionRouteRequest', + 'CreateVpnConnectionRouteResponse', + 'DedicatedGroup', + 'DeleteAccessKeyRequest', + 'DeleteAccessKeyResponse', + 'DeleteApiAccessRuleRequest', + 'DeleteApiAccessRuleResponse', + 'DeleteCaRequest', + 'DeleteCaResponse', + 'DeleteClientGatewayRequest', + 'DeleteClientGatewayResponse', + 'DeleteDedicatedGroupRequest', + 'DeleteDedicatedGroupResponse', + 'DeleteDhcpOptionsRequest', + 'DeleteDhcpOptionsResponse', + 'DeleteDirectLinkInterfaceRequest', + 'DeleteDirectLinkInterfaceResponse', + 'DeleteDirectLinkRequest', + 'DeleteDirectLinkResponse', + 'DeleteExportTaskRequest', + 'DeleteExportTaskResponse', + 'DeleteFlexibleGpuRequest', + 'DeleteFlexibleGpuResponse', + 'DeleteImageRequest', + 'DeleteImageResponse', + 'DeleteInternetServiceRequest', + 'DeleteInternetServiceResponse', + 'DeleteKeypairRequest', + 'DeleteKeypairResponse', + 'DeleteListenerRuleRequest', + 'DeleteListenerRuleResponse', + 'DeleteLoadBalancerListenersRequest', + 'DeleteLoadBalancerListenersResponse', + 'DeleteLoadBalancerPolicyRequest', + 'DeleteLoadBalancerPolicyResponse', + 'DeleteLoadBalancerRequest', + 'DeleteLoadBalancerResponse', + 'DeleteLoadBalancerTagsRequest', + 'DeleteLoadBalancerTagsResponse', + 'DeleteNatServiceRequest', + 'DeleteNatServiceResponse', + 'DeleteNetAccessPointRequest', + 'DeleteNetAccessPointResponse', + 'DeleteNetPeeringRequest', + 'DeleteNetPeeringResponse', + 'DeleteNetRequest', + 'DeleteNetResponse', + 'DeleteNicRequest', + 'DeleteNicResponse', + 'DeletePolicyRequest', + 'DeletePolicyResponse', + 'DeletePolicyVersionRequest', + 'DeletePolicyVersionResponse', + 'DeleteProductTypeRequest', + 'DeleteProductTypeResponse', + 'DeletePublicIpRequest', + 'DeletePublicIpResponse', + 'DeleteRouteRequest', + 'DeleteRouteResponse', + 'DeleteRouteTableRequest', + 'DeleteRouteTableResponse', + 'DeleteSecurityGroupRequest', + 'DeleteSecurityGroupResponse', + 'DeleteSecurityGroupRuleRequest', + 'DeleteSecurityGroupRuleResponse', + 'DeleteServerCertificateRequest', + 'DeleteServerCertificateResponse', + 'DeleteSnapshotRequest', + 'DeleteSnapshotResponse', + 'DeleteSubnetRequest', + 'DeleteSubnetResponse', + 'DeleteTagsRequest', + 'DeleteTagsResponse', + 'DeleteUserGroupPolicyRequest', + 'DeleteUserGroupPolicyResponse', + 'DeleteUserGroupRequest', + 'DeleteUserGroupResponse', + 'DeleteUserPolicyRequest', + 'DeleteUserPolicyResponse', + 'DeleteUserRequest', + 'DeleteUserResponse', + 'DeleteVirtualGatewayRequest', + 'DeleteVirtualGatewayResponse', + 'DeleteVmGroupRequest', + 'DeleteVmGroupResponse', + 'DeleteVmTemplateRequest', + 'DeleteVmTemplateResponse', + 'DeleteVmsRequest', + 'DeleteVmsResponse', + 'DeleteVolumeRequest', + 'DeleteVolumeResponse', + 'DeleteVpnConnectionRequest', + 'DeleteVpnConnectionResponse', + 'DeleteVpnConnectionRouteRequest', + 'DeleteVpnConnectionRouteResponse', + 'DeregisterVmsInLoadBalancerRequest', + 'DeregisterVmsInLoadBalancerResponse', + 'DhcpOptionsSet', + 'DirectLink', + 'DirectLinkInterface', + 'DirectLinkInterfaces', + 'DisableOutscaleLoginForUsersRequest', + 'DisableOutscaleLoginForUsersResponse', + 'DisableOutscaleLoginPerUsersRequest', + 'DisableOutscaleLoginPerUsersResponse', + 'DisableOutscaleLoginRequest', + 'DisableOutscaleLoginResponse', + 'EnableOutscaleLoginForUsersRequest', + 'EnableOutscaleLoginForUsersResponse', + 'EnableOutscaleLoginPerUsersRequest', + 'EnableOutscaleLoginPerUsersResponse', + 'EnableOutscaleLoginRequest', + 'EnableOutscaleLoginResponse', + 'ErrorResponse', + 'Errors', + 'FiltersAccessKeys', + 'FiltersApiAccessRule', + 'FiltersApiLog', + 'FiltersCa', + 'FiltersCatalogs', + 'FiltersClientGateway', + 'FiltersDedicatedGroup', + 'FiltersDhcpOptions', + 'FiltersDirectLink', + 'FiltersDirectLinkInterface', + 'FiltersFlexibleGpu', + 'FiltersImage', + 'FiltersInternetService', + 'FiltersKeypair', + 'FiltersListenerRule', + 'FiltersLoadBalancer', + 'FiltersNatService', + 'FiltersNet', + 'FiltersNetAccessPoint', + 'FiltersNetPeering', + 'FiltersNic', + 'FiltersProductType', + 'FiltersPublicIp', + 'FiltersQuota', + 'FiltersReadImageExportTask', + 'FiltersReadVolumeUpdateTask', + 'FiltersRouteTable', + 'FiltersSecurityGroup', + 'FiltersServerCertificate', + 'FiltersService', + 'FiltersSnapshot', + 'FiltersSnapshotExportTask', + 'FiltersSubnet', + 'FiltersSubregion', + 'FiltersTag', + 'FiltersUserGroup', + 'FiltersUsers', + 'FiltersVirtualGateway', + 'FiltersVm', + 'FiltersVmGroup', + 'FiltersVmTemplate', + 'FiltersVmType', + 'FiltersVmsState', + 'FiltersVolume', + 'FiltersVpnConnection', + 'FlexibleGpu', + 'FlexibleGpuCatalog', + 'HealthCheck', + 'Image', + 'ImageExportTask', + 'InlinePolicy', + 'InternetService', + 'Keypair', + 'KeypairCreated', + 'LinkFlexibleGpuRequest', + 'LinkFlexibleGpuResponse', + 'LinkInternetServiceRequest', + 'LinkInternetServiceResponse', + 'LinkLoadBalancerBackendMachinesRequest', + 'LinkLoadBalancerBackendMachinesResponse', + 'LinkManagedPolicyToUserGroupRequest', + 'LinkManagedPolicyToUserGroupResponse', + 'LinkNic', + 'LinkNicLight', + 'LinkNicRequest', + 'LinkNicResponse', + 'LinkNicToUpdate', + 'LinkPolicyRequest', + 'LinkPolicyResponse', + 'LinkPrivateIpsRequest', + 'LinkPrivateIpsResponse', + 'LinkPublicIp', + 'LinkPublicIpLightForVm', + 'LinkPublicIpRequest', + 'LinkPublicIpResponse', + 'LinkRouteTable', + 'LinkRouteTableRequest', + 'LinkRouteTableResponse', + 'LinkVirtualGatewayRequest', + 'LinkVirtualGatewayResponse', + 'LinkVolumeRequest', + 'LinkVolumeResponse', + 'LinkedPolicy', + 'LinkedVolume', + 'Listener', + 'ListenerForCreation', + 'ListenerRule', + 'ListenerRuleForCreation', + 'LoadBalancer', + 'LoadBalancerLight', + 'LoadBalancerStickyCookiePolicy', + 'LoadBalancerTag', + 'Location', + 'Log', + 'MaintenanceEvent', + 'MinimalPolicy', + 'NatService', + 'Net', + 'NetAccessPoint', + 'NetPeering', + 'NetPeeringState', + 'NetToVirtualGatewayLink', + 'Nic', + 'NicForVmCreation', + 'NicLight', + 'OsuApiKey', + 'OsuExportImageExportTask', + 'OsuExportSnapshotExportTask', + 'OsuExportToCreate', + 'PermissionsOnResource', + 'PermissionsOnResourceCreation', + 'Phase1Options', + 'Phase2Options', + 'Placement', + 'Policy', + 'PolicyEntities', + 'PolicyVersion', + 'PrivateIp', + 'PrivateIpLight', + 'PrivateIpLightForVm', + 'ProductType', + 'PublicIp', + 'PublicIpLight', + 'PutUserGroupPolicyRequest', + 'PutUserGroupPolicyResponse', + 'PutUserPolicyRequest', + 'PutUserPolicyResponse', + 'Quota', + 'QuotaTypes', + 'ReadAccessKeysRequest', + 'ReadAccessKeysResponse', + 'ReadAccountsRequest', + 'ReadAccountsResponse', + 'ReadAdminPasswordRequest', + 'ReadAdminPasswordResponse', + 'ReadApiAccessPolicyRequest', + 'ReadApiAccessPolicyResponse', + 'ReadApiAccessRulesRequest', + 'ReadApiAccessRulesResponse', + 'ReadApiLogsRequest', + 'ReadApiLogsResponse', + 'ReadCO2EmissionAccountRequest', + 'ReadCO2EmissionAccountResponse', + 'ReadCasRequest', + 'ReadCasResponse', + 'ReadCatalogRequest', + 'ReadCatalogResponse', + 'ReadCatalogsRequest', + 'ReadCatalogsResponse', + 'ReadClientGatewaysRequest', + 'ReadClientGatewaysResponse', + 'ReadConsoleOutputRequest', + 'ReadConsoleOutputResponse', + 'ReadConsumptionAccountRequest', + 'ReadConsumptionAccountResponse', + 'ReadDedicatedGroupsRequest', + 'ReadDedicatedGroupsResponse', + 'ReadDhcpOptionsRequest', + 'ReadDhcpOptionsResponse', + 'ReadDirectLinkInterfacesRequest', + 'ReadDirectLinkInterfacesResponse', + 'ReadDirectLinksRequest', + 'ReadDirectLinksResponse', + 'ReadEntitiesLinkedToPolicyRequest', + 'ReadEntitiesLinkedToPolicyResponse', + 'ReadFlexibleGpuCatalogRequest', + 'ReadFlexibleGpuCatalogResponse', + 'ReadFlexibleGpusRequest', + 'ReadFlexibleGpusResponse', + 'ReadImageExportTasksRequest', + 'ReadImageExportTasksResponse', + 'ReadImagesRequest', + 'ReadImagesResponse', + 'ReadInternetServicesRequest', + 'ReadInternetServicesResponse', + 'ReadKeypairsRequest', + 'ReadKeypairsResponse', + 'ReadLinkedPoliciesFilters', + 'ReadLinkedPoliciesRequest', + 'ReadLinkedPoliciesResponse', + 'ReadListenerRulesRequest', + 'ReadListenerRulesResponse', + 'ReadLoadBalancerTagsRequest', + 'ReadLoadBalancerTagsResponse', + 'ReadLoadBalancersRequest', + 'ReadLoadBalancersResponse', + 'ReadLocationsRequest', + 'ReadLocationsResponse', + 'ReadManagedPoliciesLinkedToUserGroupRequest', + 'ReadManagedPoliciesLinkedToUserGroupResponse', + 'ReadNatServicesRequest', + 'ReadNatServicesResponse', + 'ReadNetAccessPointServicesRequest', + 'ReadNetAccessPointServicesResponse', + 'ReadNetAccessPointsRequest', + 'ReadNetAccessPointsResponse', + 'ReadNetPeeringsRequest', + 'ReadNetPeeringsResponse', + 'ReadNetsRequest', + 'ReadNetsResponse', + 'ReadNicsRequest', + 'ReadNicsResponse', + 'ReadPoliciesFilters', + 'ReadPoliciesRequest', + 'ReadPoliciesResponse', + 'ReadPolicyRequest', + 'ReadPolicyResponse', + 'ReadPolicyVersionRequest', + 'ReadPolicyVersionResponse', + 'ReadPolicyVersionsRequest', + 'ReadPolicyVersionsResponse', + 'ReadProductTypesRequest', + 'ReadProductTypesResponse', + 'ReadPublicCatalogRequest', + 'ReadPublicCatalogResponse', + 'ReadPublicIpRangesRequest', + 'ReadPublicIpRangesResponse', + 'ReadPublicIpsRequest', + 'ReadPublicIpsResponse', + 'ReadQuotasRequest', + 'ReadQuotasResponse', + 'ReadRegionsRequest', + 'ReadRegionsResponse', + 'ReadRouteTablesRequest', + 'ReadRouteTablesResponse', + 'ReadSecurityGroupsRequest', + 'ReadSecurityGroupsResponse', + 'ReadServerCertificatesRequest', + 'ReadServerCertificatesResponse', + 'ReadSnapshotExportTasksRequest', + 'ReadSnapshotExportTasksResponse', + 'ReadSnapshotsRequest', + 'ReadSnapshotsResponse', + 'ReadSubnetsRequest', + 'ReadSubnetsResponse', + 'ReadSubregionsRequest', + 'ReadSubregionsResponse', + 'ReadTagsRequest', + 'ReadTagsResponse', + 'ReadUnitPriceRequest', + 'ReadUnitPriceResponse', + 'ReadUserGroupPoliciesRequest', + 'ReadUserGroupPoliciesResponse', + 'ReadUserGroupPolicyRequest', + 'ReadUserGroupPolicyResponse', + 'ReadUserGroupRequest', + 'ReadUserGroupResponse', + 'ReadUserGroupsPerUserRequest', + 'ReadUserGroupsPerUserResponse', + 'ReadUserGroupsRequest', + 'ReadUserGroupsResponse', + 'ReadUserPoliciesRequest', + 'ReadUserPoliciesResponse', + 'ReadUserPolicyRequest', + 'ReadUserPolicyResponse', + 'ReadUsersRequest', + 'ReadUsersResponse', + 'ReadVirtualGatewaysRequest', + 'ReadVirtualGatewaysResponse', + 'ReadVmGroupsRequest', + 'ReadVmGroupsResponse', + 'ReadVmTemplatesRequest', + 'ReadVmTemplatesResponse', + 'ReadVmTypesRequest', + 'ReadVmTypesResponse', + 'ReadVmsHealthRequest', + 'ReadVmsHealthResponse', + 'ReadVmsRequest', + 'ReadVmsResponse', + 'ReadVmsStateRequest', + 'ReadVmsStateResponse', + 'ReadVolumeUpdateTasksRequest', + 'ReadVolumeUpdateTasksResponse', + 'ReadVolumesRequest', + 'ReadVolumesResponse', + 'ReadVpnConnectionsRequest', + 'ReadVpnConnectionsResponse', + 'RebootVmsRequest', + 'RebootVmsResponse', + 'Region', + 'RegisterVmsInLoadBalancerRequest', + 'RegisterVmsInLoadBalancerResponse', + 'RejectNetPeeringRequest', + 'RejectNetPeeringResponse', + 'RemoveUserFromUserGroupRequest', + 'RemoveUserFromUserGroupResponse', + 'ResourceLoadBalancerTag', + 'ResourceTag', + 'ResponseContext', + 'Route', + 'RouteLight', + 'RoutePropagatingVirtualGateway', + 'RouteTable', + 'ScaleDownVmGroupRequest', + 'ScaleDownVmGroupResponse', + 'ScaleUpVmGroupRequest', + 'ScaleUpVmGroupResponse', + 'SecureBootAction', + 'SecurityGroup', + 'SecurityGroupLight', + 'SecurityGroupRule', + 'SecurityGroupsMember', + 'ServerCertificate', + 'Service', + 'SetDefaultPolicyVersionRequest', + 'SetDefaultPolicyVersionResponse', + 'Snapshot', + 'SnapshotExportTask', + 'SourceNet', + 'SourceSecurityGroup', + 'StartVmsRequest', + 'StartVmsResponse', + 'StateComment', + 'StopVmsRequest', + 'StopVmsResponse', + 'Subnet', + 'Subregion', + 'Tag', + 'UnitPriceEntry', + 'UnlinkFlexibleGpuRequest', + 'UnlinkFlexibleGpuResponse', + 'UnlinkInternetServiceRequest', + 'UnlinkInternetServiceResponse', + 'UnlinkLoadBalancerBackendMachinesRequest', + 'UnlinkLoadBalancerBackendMachinesResponse', + 'UnlinkManagedPolicyFromUserGroupRequest', + 'UnlinkManagedPolicyFromUserGroupResponse', + 'UnlinkNicRequest', + 'UnlinkNicResponse', + 'UnlinkPolicyRequest', + 'UnlinkPolicyResponse', + 'UnlinkPrivateIpsRequest', + 'UnlinkPrivateIpsResponse', + 'UnlinkPublicIpRequest', + 'UnlinkPublicIpResponse', + 'UnlinkRouteTableRequest', + 'UnlinkRouteTableResponse', + 'UnlinkVirtualGatewayRequest', + 'UnlinkVirtualGatewayResponse', + 'UnlinkVolumeRequest', + 'UnlinkVolumeResponse', + 'UpdateAccessKeyRequest', + 'UpdateAccessKeyResponse', + 'UpdateAccountRequest', + 'UpdateAccountResponse', + 'UpdateApiAccessPolicyRequest', + 'UpdateApiAccessPolicyResponse', + 'UpdateApiAccessRuleRequest', + 'UpdateApiAccessRuleResponse', + 'UpdateCaRequest', + 'UpdateCaResponse', + 'UpdateDedicatedGroupRequest', + 'UpdateDedicatedGroupResponse', + 'UpdateDirectLinkInterfaceRequest', + 'UpdateDirectLinkInterfaceResponse', + 'UpdateFlexibleGpuRequest', + 'UpdateFlexibleGpuResponse', + 'UpdateImageRequest', + 'UpdateImageResponse', + 'UpdateListenerRuleRequest', + 'UpdateListenerRuleResponse', + 'UpdateLoadBalancerRequest', + 'UpdateLoadBalancerResponse', + 'UpdateNetAccessPointRequest', + 'UpdateNetAccessPointResponse', + 'UpdateNetRequest', + 'UpdateNetResponse', + 'UpdateNicRequest', + 'UpdateNicResponse', + 'UpdateRoutePropagationRequest', + 'UpdateRoutePropagationResponse', + 'UpdateRouteRequest', + 'UpdateRouteResponse', + 'UpdateRouteTableLinkRequest', + 'UpdateRouteTableLinkResponse', + 'UpdateServerCertificateRequest', + 'UpdateServerCertificateResponse', + 'UpdateSnapshotRequest', + 'UpdateSnapshotResponse', + 'UpdateSubnetRequest', + 'UpdateSubnetResponse', + 'UpdateUserGroupRequest', + 'UpdateUserGroupResponse', + 'UpdateUserRequest', + 'UpdateUserResponse', + 'UpdateVmGroupRequest', + 'UpdateVmGroupResponse', + 'UpdateVmRequest', + 'UpdateVmResponse', + 'UpdateVmTemplateRequest', + 'UpdateVmTemplateResponse', + 'UpdateVolumeRequest', + 'UpdateVolumeResponse', + 'UpdateVpnConnectionRequest', + 'UpdateVpnConnectionResponse', + 'User', + 'UserGroup', + 'VgwTelemetry', + 'VirtualGateway', + 'Vm', + 'VmGroup', + 'VmState', + 'VmStates', + 'VmTemplate', + 'VmType', + 'Volume', + 'VolumeUpdate', + 'VolumeUpdateParameters', + 'VolumeUpdateTask', + 'VpnConnection', + 'VpnOptions', + 'With', +] diff --git a/osc_sdk_python/generated/osc/async_client.py b/osc_sdk_python/generated/osc/async_client.py new file mode 100644 index 0000000..a66b22e --- /dev/null +++ b/osc_sdk_python/generated/osc/async_client.py @@ -0,0 +1,6834 @@ +"""Generated typed OSC client slice. + +Do not edit by hand. Regenerate with: + python -m osc_sdk_python.codegen.generator +""" + +from typing import Any + +from pydantic import TypeAdapter + +from osc_sdk_python.runtime.request import RequestSpec +from .models import ( + AcceptNetPeeringRequest, + AcceptNetPeeringResponse, + AddUserToUserGroupRequest, + AddUserToUserGroupResponse, + CheckAuthenticationRequest, + CheckAuthenticationResponse, + CreateAccessKeyRequest, + CreateAccessKeyResponse, + CreateAccountRequest, + CreateAccountResponse, + CreateApiAccessRuleRequest, + CreateApiAccessRuleResponse, + CreateCaRequest, + CreateCaResponse, + CreateClientGatewayRequest, + CreateClientGatewayResponse, + CreateDedicatedGroupRequest, + CreateDedicatedGroupResponse, + CreateDhcpOptionsRequest, + CreateDhcpOptionsResponse, + CreateDirectLinkInterfaceRequest, + CreateDirectLinkInterfaceResponse, + CreateDirectLinkRequest, + CreateDirectLinkResponse, + CreateFlexibleGpuRequest, + CreateFlexibleGpuResponse, + CreateImageExportTaskRequest, + CreateImageExportTaskResponse, + CreateImageRequest, + CreateImageResponse, + CreateInternetServiceRequest, + CreateInternetServiceResponse, + CreateKeypairRequest, + CreateKeypairResponse, + CreateListenerRuleRequest, + CreateListenerRuleResponse, + CreateLoadBalancerListenersRequest, + CreateLoadBalancerListenersResponse, + CreateLoadBalancerPolicyRequest, + CreateLoadBalancerPolicyResponse, + CreateLoadBalancerRequest, + CreateLoadBalancerResponse, + CreateLoadBalancerTagsRequest, + CreateLoadBalancerTagsResponse, + CreateNatServiceRequest, + CreateNatServiceResponse, + CreateNetAccessPointRequest, + CreateNetAccessPointResponse, + CreateNetPeeringRequest, + CreateNetPeeringResponse, + CreateNetRequest, + CreateNetResponse, + CreateNicRequest, + CreateNicResponse, + CreatePolicyRequest, + CreatePolicyResponse, + CreatePolicyVersionRequest, + CreatePolicyVersionResponse, + CreateProductTypeRequest, + CreateProductTypeResponse, + CreatePublicIpRequest, + CreatePublicIpResponse, + CreateRouteRequest, + CreateRouteResponse, + CreateRouteTableRequest, + CreateRouteTableResponse, + CreateSecurityGroupRequest, + CreateSecurityGroupResponse, + CreateSecurityGroupRuleRequest, + CreateSecurityGroupRuleResponse, + CreateServerCertificateRequest, + CreateServerCertificateResponse, + CreateSnapshotExportTaskRequest, + CreateSnapshotExportTaskResponse, + CreateSnapshotRequest, + CreateSnapshotResponse, + CreateSubnetRequest, + CreateSubnetResponse, + CreateTagsRequest, + CreateTagsResponse, + CreateUserGroupRequest, + CreateUserGroupResponse, + CreateUserRequest, + CreateUserResponse, + CreateVirtualGatewayRequest, + CreateVirtualGatewayResponse, + CreateVmGroupRequest, + CreateVmGroupResponse, + CreateVmTemplateRequest, + CreateVmTemplateResponse, + CreateVmsRequest, + CreateVmsResponse, + CreateVolumeRequest, + CreateVolumeResponse, + CreateVpnConnectionRequest, + CreateVpnConnectionResponse, + CreateVpnConnectionRouteRequest, + CreateVpnConnectionRouteResponse, + DeleteAccessKeyRequest, + DeleteAccessKeyResponse, + DeleteApiAccessRuleRequest, + DeleteApiAccessRuleResponse, + DeleteCaRequest, + DeleteCaResponse, + DeleteClientGatewayRequest, + DeleteClientGatewayResponse, + DeleteDedicatedGroupRequest, + DeleteDedicatedGroupResponse, + DeleteDhcpOptionsRequest, + DeleteDhcpOptionsResponse, + DeleteDirectLinkInterfaceRequest, + DeleteDirectLinkInterfaceResponse, + DeleteDirectLinkRequest, + DeleteDirectLinkResponse, + DeleteExportTaskRequest, + DeleteExportTaskResponse, + DeleteFlexibleGpuRequest, + DeleteFlexibleGpuResponse, + DeleteImageRequest, + DeleteImageResponse, + DeleteInternetServiceRequest, + DeleteInternetServiceResponse, + DeleteKeypairRequest, + DeleteKeypairResponse, + DeleteListenerRuleRequest, + DeleteListenerRuleResponse, + DeleteLoadBalancerListenersRequest, + DeleteLoadBalancerListenersResponse, + DeleteLoadBalancerPolicyRequest, + DeleteLoadBalancerPolicyResponse, + DeleteLoadBalancerRequest, + DeleteLoadBalancerResponse, + DeleteLoadBalancerTagsRequest, + DeleteLoadBalancerTagsResponse, + DeleteNatServiceRequest, + DeleteNatServiceResponse, + DeleteNetAccessPointRequest, + DeleteNetAccessPointResponse, + DeleteNetPeeringRequest, + DeleteNetPeeringResponse, + DeleteNetRequest, + DeleteNetResponse, + DeleteNicRequest, + DeleteNicResponse, + DeletePolicyRequest, + DeletePolicyResponse, + DeletePolicyVersionRequest, + DeletePolicyVersionResponse, + DeleteProductTypeRequest, + DeleteProductTypeResponse, + DeletePublicIpRequest, + DeletePublicIpResponse, + DeleteRouteRequest, + DeleteRouteResponse, + DeleteRouteTableRequest, + DeleteRouteTableResponse, + DeleteSecurityGroupRequest, + DeleteSecurityGroupResponse, + DeleteSecurityGroupRuleRequest, + DeleteSecurityGroupRuleResponse, + DeleteServerCertificateRequest, + DeleteServerCertificateResponse, + DeleteSnapshotRequest, + DeleteSnapshotResponse, + DeleteSubnetRequest, + DeleteSubnetResponse, + DeleteTagsRequest, + DeleteTagsResponse, + DeleteUserGroupPolicyRequest, + DeleteUserGroupPolicyResponse, + DeleteUserGroupRequest, + DeleteUserGroupResponse, + DeleteUserPolicyRequest, + DeleteUserPolicyResponse, + DeleteUserRequest, + DeleteUserResponse, + DeleteVirtualGatewayRequest, + DeleteVirtualGatewayResponse, + DeleteVmGroupRequest, + DeleteVmGroupResponse, + DeleteVmTemplateRequest, + DeleteVmTemplateResponse, + DeleteVmsRequest, + DeleteVmsResponse, + DeleteVolumeRequest, + DeleteVolumeResponse, + DeleteVpnConnectionRequest, + DeleteVpnConnectionResponse, + DeleteVpnConnectionRouteRequest, + DeleteVpnConnectionRouteResponse, + DeregisterVmsInLoadBalancerRequest, + DeregisterVmsInLoadBalancerResponse, + DisableOutscaleLoginPerUsersRequest, + DisableOutscaleLoginPerUsersResponse, + DisableOutscaleLoginRequest, + DisableOutscaleLoginResponse, + EnableOutscaleLoginForUsersRequest, + EnableOutscaleLoginForUsersResponse, + EnableOutscaleLoginPerUsersRequest, + EnableOutscaleLoginPerUsersResponse, + EnableOutscaleLoginRequest, + EnableOutscaleLoginResponse, + LinkFlexibleGpuRequest, + LinkFlexibleGpuResponse, + LinkInternetServiceRequest, + LinkInternetServiceResponse, + LinkLoadBalancerBackendMachinesRequest, + LinkLoadBalancerBackendMachinesResponse, + LinkManagedPolicyToUserGroupRequest, + LinkManagedPolicyToUserGroupResponse, + LinkNicRequest, + LinkNicResponse, + LinkPolicyRequest, + LinkPolicyResponse, + LinkPrivateIpsRequest, + LinkPrivateIpsResponse, + LinkPublicIpRequest, + LinkPublicIpResponse, + LinkRouteTableRequest, + LinkRouteTableResponse, + LinkVirtualGatewayRequest, + LinkVirtualGatewayResponse, + LinkVolumeRequest, + LinkVolumeResponse, + PutUserGroupPolicyRequest, + PutUserGroupPolicyResponse, + PutUserPolicyRequest, + PutUserPolicyResponse, + ReadAccessKeysRequest, + ReadAccessKeysResponse, + ReadAccountsRequest, + ReadAccountsResponse, + ReadAdminPasswordRequest, + ReadAdminPasswordResponse, + ReadApiAccessPolicyRequest, + ReadApiAccessPolicyResponse, + ReadApiAccessRulesRequest, + ReadApiAccessRulesResponse, + ReadApiLogsRequest, + ReadApiLogsResponse, + ReadCO2EmissionAccountRequest, + ReadCO2EmissionAccountResponse, + ReadCasRequest, + ReadCasResponse, + ReadCatalogRequest, + ReadCatalogResponse, + ReadCatalogsRequest, + ReadCatalogsResponse, + ReadClientGatewaysRequest, + ReadClientGatewaysResponse, + ReadConsoleOutputRequest, + ReadConsoleOutputResponse, + ReadConsumptionAccountRequest, + ReadConsumptionAccountResponse, + ReadDedicatedGroupsRequest, + ReadDedicatedGroupsResponse, + ReadDhcpOptionsRequest, + ReadDhcpOptionsResponse, + ReadDirectLinkInterfacesRequest, + ReadDirectLinkInterfacesResponse, + ReadDirectLinksRequest, + ReadDirectLinksResponse, + ReadEntitiesLinkedToPolicyRequest, + ReadEntitiesLinkedToPolicyResponse, + ReadFlexibleGpuCatalogRequest, + ReadFlexibleGpuCatalogResponse, + ReadFlexibleGpusRequest, + ReadFlexibleGpusResponse, + ReadImageExportTasksRequest, + ReadImageExportTasksResponse, + ReadImagesRequest, + ReadImagesResponse, + ReadInternetServicesRequest, + ReadInternetServicesResponse, + ReadKeypairsRequest, + ReadKeypairsResponse, + ReadLinkedPoliciesRequest, + ReadLinkedPoliciesResponse, + ReadListenerRulesRequest, + ReadListenerRulesResponse, + ReadLoadBalancerTagsRequest, + ReadLoadBalancerTagsResponse, + ReadLoadBalancersRequest, + ReadLoadBalancersResponse, + ReadLocationsRequest, + ReadLocationsResponse, + ReadManagedPoliciesLinkedToUserGroupRequest, + ReadManagedPoliciesLinkedToUserGroupResponse, + ReadNatServicesRequest, + ReadNatServicesResponse, + ReadNetAccessPointServicesRequest, + ReadNetAccessPointServicesResponse, + ReadNetAccessPointsRequest, + ReadNetAccessPointsResponse, + ReadNetPeeringsRequest, + ReadNetPeeringsResponse, + ReadNetsRequest, + ReadNetsResponse, + ReadNicsRequest, + ReadNicsResponse, + ReadPoliciesRequest, + ReadPoliciesResponse, + ReadPolicyRequest, + ReadPolicyResponse, + ReadPolicyVersionRequest, + ReadPolicyVersionResponse, + ReadPolicyVersionsRequest, + ReadPolicyVersionsResponse, + ReadProductTypesRequest, + ReadProductTypesResponse, + ReadPublicCatalogRequest, + ReadPublicCatalogResponse, + ReadPublicIpRangesRequest, + ReadPublicIpRangesResponse, + ReadPublicIpsRequest, + ReadPublicIpsResponse, + ReadQuotasRequest, + ReadQuotasResponse, + ReadRegionsRequest, + ReadRegionsResponse, + ReadRouteTablesRequest, + ReadRouteTablesResponse, + ReadSecurityGroupsRequest, + ReadSecurityGroupsResponse, + ReadServerCertificatesRequest, + ReadServerCertificatesResponse, + ReadSnapshotExportTasksRequest, + ReadSnapshotExportTasksResponse, + ReadSnapshotsRequest, + ReadSnapshotsResponse, + ReadSubnetsRequest, + ReadSubnetsResponse, + ReadSubregionsRequest, + ReadSubregionsResponse, + ReadTagsRequest, + ReadTagsResponse, + ReadUnitPriceRequest, + ReadUnitPriceResponse, + ReadUserGroupPoliciesRequest, + ReadUserGroupPoliciesResponse, + ReadUserGroupPolicyRequest, + ReadUserGroupPolicyResponse, + ReadUserGroupRequest, + ReadUserGroupResponse, + ReadUserGroupsPerUserRequest, + ReadUserGroupsPerUserResponse, + ReadUserGroupsRequest, + ReadUserGroupsResponse, + ReadUserPoliciesRequest, + ReadUserPoliciesResponse, + ReadUserPolicyRequest, + ReadUserPolicyResponse, + ReadUsersRequest, + ReadUsersResponse, + ReadVirtualGatewaysRequest, + ReadVirtualGatewaysResponse, + ReadVmGroupsRequest, + ReadVmGroupsResponse, + ReadVmTemplatesRequest, + ReadVmTemplatesResponse, + ReadVmTypesRequest, + ReadVmTypesResponse, + ReadVmsHealthRequest, + ReadVmsHealthResponse, + ReadVmsRequest, + ReadVmsResponse, + ReadVmsStateRequest, + ReadVmsStateResponse, + ReadVolumeUpdateTasksRequest, + ReadVolumeUpdateTasksResponse, + ReadVolumesRequest, + ReadVolumesResponse, + ReadVpnConnectionsRequest, + ReadVpnConnectionsResponse, + RebootVmsRequest, + RebootVmsResponse, + RegisterVmsInLoadBalancerRequest, + RegisterVmsInLoadBalancerResponse, + RejectNetPeeringRequest, + RejectNetPeeringResponse, + RemoveUserFromUserGroupRequest, + RemoveUserFromUserGroupResponse, + ScaleDownVmGroupRequest, + ScaleDownVmGroupResponse, + ScaleUpVmGroupRequest, + ScaleUpVmGroupResponse, + SetDefaultPolicyVersionRequest, + SetDefaultPolicyVersionResponse, + StartVmsRequest, + StartVmsResponse, + StopVmsRequest, + StopVmsResponse, + UnlinkFlexibleGpuRequest, + UnlinkFlexibleGpuResponse, + UnlinkInternetServiceRequest, + UnlinkInternetServiceResponse, + UnlinkLoadBalancerBackendMachinesRequest, + UnlinkLoadBalancerBackendMachinesResponse, + UnlinkManagedPolicyFromUserGroupRequest, + UnlinkManagedPolicyFromUserGroupResponse, + UnlinkNicRequest, + UnlinkNicResponse, + UnlinkPolicyRequest, + UnlinkPolicyResponse, + UnlinkPrivateIpsRequest, + UnlinkPrivateIpsResponse, + UnlinkPublicIpRequest, + UnlinkPublicIpResponse, + UnlinkRouteTableRequest, + UnlinkRouteTableResponse, + UnlinkVirtualGatewayRequest, + UnlinkVirtualGatewayResponse, + UnlinkVolumeRequest, + UnlinkVolumeResponse, + UpdateAccessKeyRequest, + UpdateAccessKeyResponse, + UpdateAccountRequest, + UpdateAccountResponse, + UpdateApiAccessPolicyRequest, + UpdateApiAccessPolicyResponse, + UpdateApiAccessRuleRequest, + UpdateApiAccessRuleResponse, + UpdateCaRequest, + UpdateCaResponse, + UpdateDedicatedGroupRequest, + UpdateDedicatedGroupResponse, + UpdateDirectLinkInterfaceRequest, + UpdateDirectLinkInterfaceResponse, + UpdateFlexibleGpuRequest, + UpdateFlexibleGpuResponse, + UpdateImageRequest, + UpdateImageResponse, + UpdateListenerRuleRequest, + UpdateListenerRuleResponse, + UpdateLoadBalancerRequest, + UpdateLoadBalancerResponse, + UpdateNetAccessPointRequest, + UpdateNetAccessPointResponse, + UpdateNetRequest, + UpdateNetResponse, + UpdateNicRequest, + UpdateNicResponse, + UpdateRoutePropagationRequest, + UpdateRoutePropagationResponse, + UpdateRouteRequest, + UpdateRouteResponse, + UpdateRouteTableLinkRequest, + UpdateRouteTableLinkResponse, + UpdateServerCertificateRequest, + UpdateServerCertificateResponse, + UpdateSnapshotRequest, + UpdateSnapshotResponse, + UpdateSubnetRequest, + UpdateSubnetResponse, + UpdateUserGroupRequest, + UpdateUserGroupResponse, + UpdateUserRequest, + UpdateUserResponse, + UpdateVmGroupRequest, + UpdateVmGroupResponse, + UpdateVmRequest, + UpdateVmResponse, + UpdateVmTemplateRequest, + UpdateVmTemplateResponse, + UpdateVolumeRequest, + UpdateVolumeResponse, + UpdateVpnConnectionRequest, + UpdateVpnConnectionResponse, +) + + +def _dump_json_body(value: Any) -> Any: + if hasattr(value, "model_dump"): + return value.model_dump(exclude_none=True, by_alias=True) + return value + + +class AsyncOscTypedMixin: + async def accept_net_peering( + self, + request: AcceptNetPeeringRequest | None = None, + ) -> AcceptNetPeeringResponse: + if request is None: + request = AcceptNetPeeringRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/AcceptNetPeering", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(AcceptNetPeeringResponse).validate_python(response) + + async def add_user_to_user_group( + self, + request: AddUserToUserGroupRequest | None = None, + ) -> AddUserToUserGroupResponse: + if request is None: + request = AddUserToUserGroupRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/AddUserToUserGroup", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(AddUserToUserGroupResponse).validate_python(response) + + async def check_authentication( + self, + request: CheckAuthenticationRequest | None = None, + ) -> CheckAuthenticationResponse: + if request is None: + request = CheckAuthenticationRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/CheckAuthentication", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(CheckAuthenticationResponse).validate_python(response) + + async def create_access_key( + self, + request: CreateAccessKeyRequest | None = None, + ) -> CreateAccessKeyResponse: + if request is None: + request = CreateAccessKeyRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/CreateAccessKey", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(CreateAccessKeyResponse).validate_python(response) + + async def create_account( + self, + request: CreateAccountRequest | None = None, + ) -> CreateAccountResponse: + if request is None: + request = CreateAccountRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/CreateAccount", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(CreateAccountResponse).validate_python(response) + + async def create_api_access_rule( + self, + request: CreateApiAccessRuleRequest | None = None, + ) -> CreateApiAccessRuleResponse: + if request is None: + request = CreateApiAccessRuleRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/CreateApiAccessRule", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(CreateApiAccessRuleResponse).validate_python(response) + + async def create_ca( + self, + request: CreateCaRequest | None = None, + ) -> CreateCaResponse: + if request is None: + request = CreateCaRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/CreateCa", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(CreateCaResponse).validate_python(response) + + async def create_client_gateway( + self, + request: CreateClientGatewayRequest | None = None, + ) -> CreateClientGatewayResponse: + if request is None: + request = CreateClientGatewayRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/CreateClientGateway", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(CreateClientGatewayResponse).validate_python(response) + + async def create_dedicated_group( + self, + request: CreateDedicatedGroupRequest | None = None, + ) -> CreateDedicatedGroupResponse: + if request is None: + request = CreateDedicatedGroupRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/CreateDedicatedGroup", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(CreateDedicatedGroupResponse).validate_python(response) + + async def create_dhcp_options( + self, + request: CreateDhcpOptionsRequest | None = None, + ) -> CreateDhcpOptionsResponse: + if request is None: + request = CreateDhcpOptionsRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/CreateDhcpOptions", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(CreateDhcpOptionsResponse).validate_python(response) + + async def create_direct_link( + self, + request: CreateDirectLinkRequest | None = None, + ) -> CreateDirectLinkResponse: + if request is None: + request = CreateDirectLinkRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/CreateDirectLink", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(CreateDirectLinkResponse).validate_python(response) + + async def create_direct_link_interface( + self, + request: CreateDirectLinkInterfaceRequest | None = None, + ) -> CreateDirectLinkInterfaceResponse: + if request is None: + request = CreateDirectLinkInterfaceRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/CreateDirectLinkInterface", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(CreateDirectLinkInterfaceResponse).validate_python(response) + + async def create_flexible_gpu( + self, + request: CreateFlexibleGpuRequest | None = None, + ) -> CreateFlexibleGpuResponse: + if request is None: + request = CreateFlexibleGpuRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/CreateFlexibleGpu", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(CreateFlexibleGpuResponse).validate_python(response) + + async def create_image( + self, + request: CreateImageRequest | None = None, + ) -> CreateImageResponse: + if request is None: + request = CreateImageRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/CreateImage", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(CreateImageResponse).validate_python(response) + + async def create_image_export_task( + self, + request: CreateImageExportTaskRequest | None = None, + ) -> CreateImageExportTaskResponse: + if request is None: + request = CreateImageExportTaskRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/CreateImageExportTask", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(CreateImageExportTaskResponse).validate_python(response) + + async def create_internet_service( + self, + request: CreateInternetServiceRequest | None = None, + ) -> CreateInternetServiceResponse: + if request is None: + request = CreateInternetServiceRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/CreateInternetService", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(CreateInternetServiceResponse).validate_python(response) + + async def create_keypair( + self, + request: CreateKeypairRequest | None = None, + ) -> CreateKeypairResponse: + if request is None: + request = CreateKeypairRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/CreateKeypair", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(CreateKeypairResponse).validate_python(response) + + async def create_listener_rule( + self, + request: CreateListenerRuleRequest | None = None, + ) -> CreateListenerRuleResponse: + if request is None: + request = CreateListenerRuleRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/CreateListenerRule", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(CreateListenerRuleResponse).validate_python(response) + + async def create_load_balancer( + self, + request: CreateLoadBalancerRequest | None = None, + ) -> CreateLoadBalancerResponse: + if request is None: + request = CreateLoadBalancerRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/CreateLoadBalancer", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(CreateLoadBalancerResponse).validate_python(response) + + async def create_load_balancer_listeners( + self, + request: CreateLoadBalancerListenersRequest | None = None, + ) -> CreateLoadBalancerListenersResponse: + if request is None: + request = CreateLoadBalancerListenersRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/CreateLoadBalancerListeners", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(CreateLoadBalancerListenersResponse).validate_python(response) + + async def create_load_balancer_policy( + self, + request: CreateLoadBalancerPolicyRequest | None = None, + ) -> CreateLoadBalancerPolicyResponse: + if request is None: + request = CreateLoadBalancerPolicyRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/CreateLoadBalancerPolicy", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(CreateLoadBalancerPolicyResponse).validate_python(response) + + async def create_load_balancer_tags( + self, + request: CreateLoadBalancerTagsRequest | None = None, + ) -> CreateLoadBalancerTagsResponse: + if request is None: + request = CreateLoadBalancerTagsRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/CreateLoadBalancerTags", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(CreateLoadBalancerTagsResponse).validate_python(response) + + async def create_nat_service( + self, + request: CreateNatServiceRequest | None = None, + ) -> CreateNatServiceResponse: + if request is None: + request = CreateNatServiceRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/CreateNatService", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(CreateNatServiceResponse).validate_python(response) + + async def create_net( + self, + request: CreateNetRequest | None = None, + ) -> CreateNetResponse: + if request is None: + request = CreateNetRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/CreateNet", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(CreateNetResponse).validate_python(response) + + async def create_net_access_point( + self, + request: CreateNetAccessPointRequest | None = None, + ) -> CreateNetAccessPointResponse: + if request is None: + request = CreateNetAccessPointRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/CreateNetAccessPoint", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(CreateNetAccessPointResponse).validate_python(response) + + async def create_net_peering( + self, + request: CreateNetPeeringRequest | None = None, + ) -> CreateNetPeeringResponse: + if request is None: + request = CreateNetPeeringRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/CreateNetPeering", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(CreateNetPeeringResponse).validate_python(response) + + async def create_nic( + self, + request: CreateNicRequest | None = None, + ) -> CreateNicResponse: + if request is None: + request = CreateNicRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/CreateNic", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(CreateNicResponse).validate_python(response) + + async def create_policy( + self, + request: CreatePolicyRequest | None = None, + ) -> CreatePolicyResponse: + if request is None: + request = CreatePolicyRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/CreatePolicy", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(CreatePolicyResponse).validate_python(response) + + async def create_policy_version( + self, + request: CreatePolicyVersionRequest | None = None, + ) -> CreatePolicyVersionResponse: + if request is None: + request = CreatePolicyVersionRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/CreatePolicyVersion", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(CreatePolicyVersionResponse).validate_python(response) + + async def create_product_type( + self, + request: CreateProductTypeRequest | None = None, + ) -> CreateProductTypeResponse: + if request is None: + request = CreateProductTypeRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/CreateProductType", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(CreateProductTypeResponse).validate_python(response) + + async def create_public_ip( + self, + request: CreatePublicIpRequest | None = None, + ) -> CreatePublicIpResponse: + if request is None: + request = CreatePublicIpRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/CreatePublicIp", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(CreatePublicIpResponse).validate_python(response) + + async def create_route( + self, + request: CreateRouteRequest | None = None, + ) -> CreateRouteResponse: + if request is None: + request = CreateRouteRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/CreateRoute", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(CreateRouteResponse).validate_python(response) + + async def create_route_table( + self, + request: CreateRouteTableRequest | None = None, + ) -> CreateRouteTableResponse: + if request is None: + request = CreateRouteTableRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/CreateRouteTable", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(CreateRouteTableResponse).validate_python(response) + + async def create_security_group( + self, + request: CreateSecurityGroupRequest | None = None, + ) -> CreateSecurityGroupResponse: + if request is None: + request = CreateSecurityGroupRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/CreateSecurityGroup", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(CreateSecurityGroupResponse).validate_python(response) + + async def create_security_group_rule( + self, + request: CreateSecurityGroupRuleRequest | None = None, + ) -> CreateSecurityGroupRuleResponse: + if request is None: + request = CreateSecurityGroupRuleRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/CreateSecurityGroupRule", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(CreateSecurityGroupRuleResponse).validate_python(response) + + async def create_server_certificate( + self, + request: CreateServerCertificateRequest | None = None, + ) -> CreateServerCertificateResponse: + if request is None: + request = CreateServerCertificateRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/CreateServerCertificate", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(CreateServerCertificateResponse).validate_python(response) + + async def create_snapshot( + self, + request: CreateSnapshotRequest | None = None, + ) -> CreateSnapshotResponse: + if request is None: + request = CreateSnapshotRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/CreateSnapshot", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(CreateSnapshotResponse).validate_python(response) + + async def create_snapshot_export_task( + self, + request: CreateSnapshotExportTaskRequest | None = None, + ) -> CreateSnapshotExportTaskResponse: + if request is None: + request = CreateSnapshotExportTaskRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/CreateSnapshotExportTask", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(CreateSnapshotExportTaskResponse).validate_python(response) + + async def create_subnet( + self, + request: CreateSubnetRequest | None = None, + ) -> CreateSubnetResponse: + if request is None: + request = CreateSubnetRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/CreateSubnet", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(CreateSubnetResponse).validate_python(response) + + async def create_tags( + self, + request: CreateTagsRequest | None = None, + ) -> CreateTagsResponse: + if request is None: + request = CreateTagsRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/CreateTags", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(CreateTagsResponse).validate_python(response) + + async def create_user( + self, + request: CreateUserRequest | None = None, + ) -> CreateUserResponse: + if request is None: + request = CreateUserRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/CreateUser", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(CreateUserResponse).validate_python(response) + + async def create_user_group( + self, + request: CreateUserGroupRequest | None = None, + ) -> CreateUserGroupResponse: + if request is None: + request = CreateUserGroupRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/CreateUserGroup", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(CreateUserGroupResponse).validate_python(response) + + async def create_virtual_gateway( + self, + request: CreateVirtualGatewayRequest | None = None, + ) -> CreateVirtualGatewayResponse: + if request is None: + request = CreateVirtualGatewayRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/CreateVirtualGateway", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(CreateVirtualGatewayResponse).validate_python(response) + + async def create_vm_group( + self, + request: CreateVmGroupRequest | None = None, + ) -> CreateVmGroupResponse: + if request is None: + request = CreateVmGroupRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/CreateVmGroup", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(CreateVmGroupResponse).validate_python(response) + + async def create_vm_template( + self, + request: CreateVmTemplateRequest | None = None, + ) -> CreateVmTemplateResponse: + if request is None: + request = CreateVmTemplateRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/CreateVmTemplate", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(CreateVmTemplateResponse).validate_python(response) + + async def create_vms( + self, + request: CreateVmsRequest | None = None, + ) -> CreateVmsResponse: + if request is None: + request = CreateVmsRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/CreateVms", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(CreateVmsResponse).validate_python(response) + + async def create_volume( + self, + request: CreateVolumeRequest | None = None, + ) -> CreateVolumeResponse: + if request is None: + request = CreateVolumeRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/CreateVolume", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(CreateVolumeResponse).validate_python(response) + + async def create_vpn_connection( + self, + request: CreateVpnConnectionRequest | None = None, + ) -> CreateVpnConnectionResponse: + if request is None: + request = CreateVpnConnectionRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/CreateVpnConnection", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(CreateVpnConnectionResponse).validate_python(response) + + async def create_vpn_connection_route( + self, + request: CreateVpnConnectionRouteRequest | None = None, + ) -> CreateVpnConnectionRouteResponse: + if request is None: + request = CreateVpnConnectionRouteRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/CreateVpnConnectionRoute", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(CreateVpnConnectionRouteResponse).validate_python(response) + + async def delete_access_key( + self, + request: DeleteAccessKeyRequest | None = None, + ) -> DeleteAccessKeyResponse: + if request is None: + request = DeleteAccessKeyRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/DeleteAccessKey", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(DeleteAccessKeyResponse).validate_python(response) + + async def delete_api_access_rule( + self, + request: DeleteApiAccessRuleRequest | None = None, + ) -> DeleteApiAccessRuleResponse: + if request is None: + request = DeleteApiAccessRuleRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/DeleteApiAccessRule", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(DeleteApiAccessRuleResponse).validate_python(response) + + async def delete_ca( + self, + request: DeleteCaRequest | None = None, + ) -> DeleteCaResponse: + if request is None: + request = DeleteCaRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/DeleteCa", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(DeleteCaResponse).validate_python(response) + + async def delete_client_gateway( + self, + request: DeleteClientGatewayRequest | None = None, + ) -> DeleteClientGatewayResponse: + if request is None: + request = DeleteClientGatewayRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/DeleteClientGateway", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(DeleteClientGatewayResponse).validate_python(response) + + async def delete_dedicated_group( + self, + request: DeleteDedicatedGroupRequest | None = None, + ) -> DeleteDedicatedGroupResponse: + if request is None: + request = DeleteDedicatedGroupRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/DeleteDedicatedGroup", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(DeleteDedicatedGroupResponse).validate_python(response) + + async def delete_dhcp_options( + self, + request: DeleteDhcpOptionsRequest | None = None, + ) -> DeleteDhcpOptionsResponse: + if request is None: + request = DeleteDhcpOptionsRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/DeleteDhcpOptions", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(DeleteDhcpOptionsResponse).validate_python(response) + + async def delete_direct_link( + self, + request: DeleteDirectLinkRequest | None = None, + ) -> DeleteDirectLinkResponse: + if request is None: + request = DeleteDirectLinkRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/DeleteDirectLink", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(DeleteDirectLinkResponse).validate_python(response) + + async def delete_direct_link_interface( + self, + request: DeleteDirectLinkInterfaceRequest | None = None, + ) -> DeleteDirectLinkInterfaceResponse: + if request is None: + request = DeleteDirectLinkInterfaceRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/DeleteDirectLinkInterface", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(DeleteDirectLinkInterfaceResponse).validate_python(response) + + async def delete_export_task( + self, + request: DeleteExportTaskRequest | None = None, + ) -> DeleteExportTaskResponse: + if request is None: + request = DeleteExportTaskRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/DeleteExportTask", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(DeleteExportTaskResponse).validate_python(response) + + async def delete_flexible_gpu( + self, + request: DeleteFlexibleGpuRequest | None = None, + ) -> DeleteFlexibleGpuResponse: + if request is None: + request = DeleteFlexibleGpuRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/DeleteFlexibleGpu", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(DeleteFlexibleGpuResponse).validate_python(response) + + async def delete_image( + self, + request: DeleteImageRequest | None = None, + ) -> DeleteImageResponse: + if request is None: + request = DeleteImageRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/DeleteImage", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(DeleteImageResponse).validate_python(response) + + async def delete_internet_service( + self, + request: DeleteInternetServiceRequest | None = None, + ) -> DeleteInternetServiceResponse: + if request is None: + request = DeleteInternetServiceRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/DeleteInternetService", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(DeleteInternetServiceResponse).validate_python(response) + + async def delete_keypair( + self, + request: DeleteKeypairRequest | None = None, + ) -> DeleteKeypairResponse: + if request is None: + request = DeleteKeypairRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/DeleteKeypair", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(DeleteKeypairResponse).validate_python(response) + + async def delete_listener_rule( + self, + request: DeleteListenerRuleRequest | None = None, + ) -> DeleteListenerRuleResponse: + if request is None: + request = DeleteListenerRuleRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/DeleteListenerRule", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(DeleteListenerRuleResponse).validate_python(response) + + async def delete_load_balancer( + self, + request: DeleteLoadBalancerRequest | None = None, + ) -> DeleteLoadBalancerResponse: + if request is None: + request = DeleteLoadBalancerRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/DeleteLoadBalancer", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(DeleteLoadBalancerResponse).validate_python(response) + + async def delete_load_balancer_listeners( + self, + request: DeleteLoadBalancerListenersRequest | None = None, + ) -> DeleteLoadBalancerListenersResponse: + if request is None: + request = DeleteLoadBalancerListenersRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/DeleteLoadBalancerListeners", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(DeleteLoadBalancerListenersResponse).validate_python(response) + + async def delete_load_balancer_policy( + self, + request: DeleteLoadBalancerPolicyRequest | None = None, + ) -> DeleteLoadBalancerPolicyResponse: + if request is None: + request = DeleteLoadBalancerPolicyRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/DeleteLoadBalancerPolicy", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(DeleteLoadBalancerPolicyResponse).validate_python(response) + + async def delete_load_balancer_tags( + self, + request: DeleteLoadBalancerTagsRequest | None = None, + ) -> DeleteLoadBalancerTagsResponse: + if request is None: + request = DeleteLoadBalancerTagsRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/DeleteLoadBalancerTags", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(DeleteLoadBalancerTagsResponse).validate_python(response) + + async def delete_nat_service( + self, + request: DeleteNatServiceRequest | None = None, + ) -> DeleteNatServiceResponse: + if request is None: + request = DeleteNatServiceRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/DeleteNatService", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(DeleteNatServiceResponse).validate_python(response) + + async def delete_net( + self, + request: DeleteNetRequest | None = None, + ) -> DeleteNetResponse: + if request is None: + request = DeleteNetRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/DeleteNet", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(DeleteNetResponse).validate_python(response) + + async def delete_net_access_point( + self, + request: DeleteNetAccessPointRequest | None = None, + ) -> DeleteNetAccessPointResponse: + if request is None: + request = DeleteNetAccessPointRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/DeleteNetAccessPoint", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(DeleteNetAccessPointResponse).validate_python(response) + + async def delete_net_peering( + self, + request: DeleteNetPeeringRequest | None = None, + ) -> DeleteNetPeeringResponse: + if request is None: + request = DeleteNetPeeringRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/DeleteNetPeering", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(DeleteNetPeeringResponse).validate_python(response) + + async def delete_nic( + self, + request: DeleteNicRequest | None = None, + ) -> DeleteNicResponse: + if request is None: + request = DeleteNicRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/DeleteNic", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(DeleteNicResponse).validate_python(response) + + async def delete_policy( + self, + request: DeletePolicyRequest | None = None, + ) -> DeletePolicyResponse: + if request is None: + request = DeletePolicyRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/DeletePolicy", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(DeletePolicyResponse).validate_python(response) + + async def delete_policy_version( + self, + request: DeletePolicyVersionRequest | None = None, + ) -> DeletePolicyVersionResponse: + if request is None: + request = DeletePolicyVersionRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/DeletePolicyVersion", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(DeletePolicyVersionResponse).validate_python(response) + + async def delete_product_type( + self, + request: DeleteProductTypeRequest | None = None, + ) -> DeleteProductTypeResponse: + if request is None: + request = DeleteProductTypeRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/DeleteProductType", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(DeleteProductTypeResponse).validate_python(response) + + async def delete_public_ip( + self, + request: DeletePublicIpRequest | None = None, + ) -> DeletePublicIpResponse: + if request is None: + request = DeletePublicIpRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/DeletePublicIp", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(DeletePublicIpResponse).validate_python(response) + + async def delete_route( + self, + request: DeleteRouteRequest | None = None, + ) -> DeleteRouteResponse: + if request is None: + request = DeleteRouteRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/DeleteRoute", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(DeleteRouteResponse).validate_python(response) + + async def delete_route_table( + self, + request: DeleteRouteTableRequest | None = None, + ) -> DeleteRouteTableResponse: + if request is None: + request = DeleteRouteTableRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/DeleteRouteTable", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(DeleteRouteTableResponse).validate_python(response) + + async def delete_security_group( + self, + request: DeleteSecurityGroupRequest | None = None, + ) -> DeleteSecurityGroupResponse: + if request is None: + request = DeleteSecurityGroupRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/DeleteSecurityGroup", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(DeleteSecurityGroupResponse).validate_python(response) + + async def delete_security_group_rule( + self, + request: DeleteSecurityGroupRuleRequest | None = None, + ) -> DeleteSecurityGroupRuleResponse: + if request is None: + request = DeleteSecurityGroupRuleRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/DeleteSecurityGroupRule", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(DeleteSecurityGroupRuleResponse).validate_python(response) + + async def delete_server_certificate( + self, + request: DeleteServerCertificateRequest | None = None, + ) -> DeleteServerCertificateResponse: + if request is None: + request = DeleteServerCertificateRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/DeleteServerCertificate", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(DeleteServerCertificateResponse).validate_python(response) + + async def delete_snapshot( + self, + request: DeleteSnapshotRequest | None = None, + ) -> DeleteSnapshotResponse: + if request is None: + request = DeleteSnapshotRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/DeleteSnapshot", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(DeleteSnapshotResponse).validate_python(response) + + async def delete_subnet( + self, + request: DeleteSubnetRequest | None = None, + ) -> DeleteSubnetResponse: + if request is None: + request = DeleteSubnetRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/DeleteSubnet", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(DeleteSubnetResponse).validate_python(response) + + async def delete_tags( + self, + request: DeleteTagsRequest | None = None, + ) -> DeleteTagsResponse: + if request is None: + request = DeleteTagsRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/DeleteTags", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(DeleteTagsResponse).validate_python(response) + + async def delete_user( + self, + request: DeleteUserRequest | None = None, + ) -> DeleteUserResponse: + if request is None: + request = DeleteUserRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/DeleteUser", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(DeleteUserResponse).validate_python(response) + + async def delete_user_group( + self, + request: DeleteUserGroupRequest | None = None, + ) -> DeleteUserGroupResponse: + if request is None: + request = DeleteUserGroupRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/DeleteUserGroup", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(DeleteUserGroupResponse).validate_python(response) + + async def delete_user_group_policy( + self, + request: DeleteUserGroupPolicyRequest | None = None, + ) -> DeleteUserGroupPolicyResponse: + if request is None: + request = DeleteUserGroupPolicyRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/DeleteUserGroupPolicy", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(DeleteUserGroupPolicyResponse).validate_python(response) + + async def delete_user_policy( + self, + request: DeleteUserPolicyRequest | None = None, + ) -> DeleteUserPolicyResponse: + if request is None: + request = DeleteUserPolicyRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/DeleteUserPolicy", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(DeleteUserPolicyResponse).validate_python(response) + + async def delete_virtual_gateway( + self, + request: DeleteVirtualGatewayRequest | None = None, + ) -> DeleteVirtualGatewayResponse: + if request is None: + request = DeleteVirtualGatewayRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/DeleteVirtualGateway", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(DeleteVirtualGatewayResponse).validate_python(response) + + async def delete_vm_group( + self, + request: DeleteVmGroupRequest | None = None, + ) -> DeleteVmGroupResponse: + if request is None: + request = DeleteVmGroupRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/DeleteVmGroup", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(DeleteVmGroupResponse).validate_python(response) + + async def delete_vm_template( + self, + request: DeleteVmTemplateRequest | None = None, + ) -> DeleteVmTemplateResponse: + if request is None: + request = DeleteVmTemplateRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/DeleteVmTemplate", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(DeleteVmTemplateResponse).validate_python(response) + + async def delete_vms( + self, + request: DeleteVmsRequest | None = None, + ) -> DeleteVmsResponse: + if request is None: + request = DeleteVmsRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/DeleteVms", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(DeleteVmsResponse).validate_python(response) + + async def delete_volume( + self, + request: DeleteVolumeRequest | None = None, + ) -> DeleteVolumeResponse: + if request is None: + request = DeleteVolumeRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/DeleteVolume", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(DeleteVolumeResponse).validate_python(response) + + async def delete_vpn_connection( + self, + request: DeleteVpnConnectionRequest | None = None, + ) -> DeleteVpnConnectionResponse: + if request is None: + request = DeleteVpnConnectionRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/DeleteVpnConnection", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(DeleteVpnConnectionResponse).validate_python(response) + + async def delete_vpn_connection_route( + self, + request: DeleteVpnConnectionRouteRequest | None = None, + ) -> DeleteVpnConnectionRouteResponse: + if request is None: + request = DeleteVpnConnectionRouteRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/DeleteVpnConnectionRoute", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(DeleteVpnConnectionRouteResponse).validate_python(response) + + async def deregister_vms_in_load_balancer( + self, + request: DeregisterVmsInLoadBalancerRequest | None = None, + ) -> DeregisterVmsInLoadBalancerResponse: + if request is None: + request = DeregisterVmsInLoadBalancerRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/DeregisterVmsInLoadBalancer", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(DeregisterVmsInLoadBalancerResponse).validate_python(response) + + async def disable_outscale_login( + self, + request: DisableOutscaleLoginRequest | None = None, + ) -> DisableOutscaleLoginResponse: + if request is None: + request = DisableOutscaleLoginRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/DisableOutscaleLogin", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(DisableOutscaleLoginResponse).validate_python(response) + + async def disable_outscale_login_for_users( + self, + request: DisableOutscaleLoginRequest | None = None, + ) -> DisableOutscaleLoginResponse: + if request is None: + request = DisableOutscaleLoginRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/DisableOutscaleLoginForUsers", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(DisableOutscaleLoginResponse).validate_python(response) + + async def disable_outscale_login_per_users( + self, + request: DisableOutscaleLoginPerUsersRequest | None = None, + ) -> DisableOutscaleLoginPerUsersResponse: + if request is None: + request = DisableOutscaleLoginPerUsersRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/DisableOutscaleLoginPerUsers", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(DisableOutscaleLoginPerUsersResponse).validate_python(response) + + async def enable_outscale_login( + self, + request: EnableOutscaleLoginRequest | None = None, + ) -> EnableOutscaleLoginResponse: + if request is None: + request = EnableOutscaleLoginRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/EnableOutscaleLogin", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(EnableOutscaleLoginResponse).validate_python(response) + + async def enable_outscale_login_for_users( + self, + request: EnableOutscaleLoginForUsersRequest | None = None, + ) -> EnableOutscaleLoginForUsersResponse: + if request is None: + request = EnableOutscaleLoginForUsersRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/EnableOutscaleLoginForUsers", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(EnableOutscaleLoginForUsersResponse).validate_python(response) + + async def enable_outscale_login_per_users( + self, + request: EnableOutscaleLoginPerUsersRequest | None = None, + ) -> EnableOutscaleLoginPerUsersResponse: + if request is None: + request = EnableOutscaleLoginPerUsersRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/EnableOutscaleLoginPerUsers", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(EnableOutscaleLoginPerUsersResponse).validate_python(response) + + async def link_flexible_gpu( + self, + request: LinkFlexibleGpuRequest | None = None, + ) -> LinkFlexibleGpuResponse: + if request is None: + request = LinkFlexibleGpuRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/LinkFlexibleGpu", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(LinkFlexibleGpuResponse).validate_python(response) + + async def link_internet_service( + self, + request: LinkInternetServiceRequest | None = None, + ) -> LinkInternetServiceResponse: + if request is None: + request = LinkInternetServiceRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/LinkInternetService", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(LinkInternetServiceResponse).validate_python(response) + + async def link_load_balancer_backend_machines( + self, + request: LinkLoadBalancerBackendMachinesRequest | None = None, + ) -> LinkLoadBalancerBackendMachinesResponse: + if request is None: + request = LinkLoadBalancerBackendMachinesRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/LinkLoadBalancerBackendMachines", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(LinkLoadBalancerBackendMachinesResponse).validate_python(response) + + async def link_managed_policy_to_user_group( + self, + request: LinkManagedPolicyToUserGroupRequest | None = None, + ) -> LinkManagedPolicyToUserGroupResponse: + if request is None: + request = LinkManagedPolicyToUserGroupRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/LinkManagedPolicyToUserGroup", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(LinkManagedPolicyToUserGroupResponse).validate_python(response) + + async def link_nic( + self, + request: LinkNicRequest | None = None, + ) -> LinkNicResponse: + if request is None: + request = LinkNicRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/LinkNic", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(LinkNicResponse).validate_python(response) + + async def link_policy( + self, + request: LinkPolicyRequest | None = None, + ) -> LinkPolicyResponse: + if request is None: + request = LinkPolicyRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/LinkPolicy", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(LinkPolicyResponse).validate_python(response) + + async def link_private_ips( + self, + request: LinkPrivateIpsRequest | None = None, + ) -> LinkPrivateIpsResponse: + if request is None: + request = LinkPrivateIpsRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/LinkPrivateIps", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(LinkPrivateIpsResponse).validate_python(response) + + async def link_public_ip( + self, + request: LinkPublicIpRequest | None = None, + ) -> LinkPublicIpResponse: + if request is None: + request = LinkPublicIpRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/LinkPublicIp", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(LinkPublicIpResponse).validate_python(response) + + async def link_route_table( + self, + request: LinkRouteTableRequest | None = None, + ) -> LinkRouteTableResponse: + if request is None: + request = LinkRouteTableRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/LinkRouteTable", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(LinkRouteTableResponse).validate_python(response) + + async def link_virtual_gateway( + self, + request: LinkVirtualGatewayRequest | None = None, + ) -> LinkVirtualGatewayResponse: + if request is None: + request = LinkVirtualGatewayRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/LinkVirtualGateway", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(LinkVirtualGatewayResponse).validate_python(response) + + async def link_volume( + self, + request: LinkVolumeRequest | None = None, + ) -> LinkVolumeResponse: + if request is None: + request = LinkVolumeRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/LinkVolume", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(LinkVolumeResponse).validate_python(response) + + async def put_user_group_policy( + self, + request: PutUserGroupPolicyRequest | None = None, + ) -> PutUserGroupPolicyResponse: + if request is None: + request = PutUserGroupPolicyRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/PutUserGroupPolicy", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(PutUserGroupPolicyResponse).validate_python(response) + + async def put_user_policy( + self, + request: PutUserPolicyRequest | None = None, + ) -> PutUserPolicyResponse: + if request is None: + request = PutUserPolicyRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/PutUserPolicy", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(PutUserPolicyResponse).validate_python(response) + + async def read_access_keys( + self, + request: ReadAccessKeysRequest | None = None, + ) -> ReadAccessKeysResponse: + if request is None: + request = ReadAccessKeysRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadAccessKeys", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadAccessKeysResponse).validate_python(response) + + async def read_accounts( + self, + request: ReadAccountsRequest | None = None, + ) -> ReadAccountsResponse: + if request is None: + request = ReadAccountsRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadAccounts", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadAccountsResponse).validate_python(response) + + async def read_admin_password( + self, + request: ReadAdminPasswordRequest | None = None, + ) -> ReadAdminPasswordResponse: + if request is None: + request = ReadAdminPasswordRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadAdminPassword", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadAdminPasswordResponse).validate_python(response) + + async def read_api_access_policy( + self, + request: ReadApiAccessPolicyRequest | None = None, + ) -> ReadApiAccessPolicyResponse: + if request is None: + request = ReadApiAccessPolicyRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadApiAccessPolicy", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadApiAccessPolicyResponse).validate_python(response) + + async def read_api_access_rules( + self, + request: ReadApiAccessRulesRequest | None = None, + ) -> ReadApiAccessRulesResponse: + if request is None: + request = ReadApiAccessRulesRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadApiAccessRules", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadApiAccessRulesResponse).validate_python(response) + + async def read_api_logs( + self, + request: ReadApiLogsRequest | None = None, + ) -> ReadApiLogsResponse: + if request is None: + request = ReadApiLogsRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadApiLogs", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadApiLogsResponse).validate_python(response) + + async def read_co2_emission_account( + self, + request: ReadCO2EmissionAccountRequest | None = None, + ) -> ReadCO2EmissionAccountResponse: + if request is None: + request = ReadCO2EmissionAccountRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadCO2EmissionAccount", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadCO2EmissionAccountResponse).validate_python(response) + + async def read_cas( + self, + request: ReadCasRequest | None = None, + ) -> ReadCasResponse: + if request is None: + request = ReadCasRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadCas", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadCasResponse).validate_python(response) + + async def read_catalog( + self, + request: ReadCatalogRequest | None = None, + ) -> ReadCatalogResponse: + if request is None: + request = ReadCatalogRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadCatalog", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadCatalogResponse).validate_python(response) + + async def read_catalogs( + self, + request: ReadCatalogsRequest | None = None, + ) -> ReadCatalogsResponse: + if request is None: + request = ReadCatalogsRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadCatalogs", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadCatalogsResponse).validate_python(response) + + async def read_client_gateways( + self, + request: ReadClientGatewaysRequest | None = None, + ) -> ReadClientGatewaysResponse: + if request is None: + request = ReadClientGatewaysRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadClientGateways", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadClientGatewaysResponse).validate_python(response) + + async def read_console_output( + self, + request: ReadConsoleOutputRequest | None = None, + ) -> ReadConsoleOutputResponse: + if request is None: + request = ReadConsoleOutputRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadConsoleOutput", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadConsoleOutputResponse).validate_python(response) + + async def read_consumption_account( + self, + request: ReadConsumptionAccountRequest | None = None, + ) -> ReadConsumptionAccountResponse: + if request is None: + request = ReadConsumptionAccountRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadConsumptionAccount", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadConsumptionAccountResponse).validate_python(response) + + async def read_dedicated_groups( + self, + request: ReadDedicatedGroupsRequest | None = None, + ) -> ReadDedicatedGroupsResponse: + if request is None: + request = ReadDedicatedGroupsRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadDedicatedGroups", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadDedicatedGroupsResponse).validate_python(response) + + async def read_dhcp_options( + self, + request: ReadDhcpOptionsRequest | None = None, + ) -> ReadDhcpOptionsResponse: + if request is None: + request = ReadDhcpOptionsRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadDhcpOptions", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadDhcpOptionsResponse).validate_python(response) + + async def read_direct_link_interfaces( + self, + request: ReadDirectLinkInterfacesRequest | None = None, + ) -> ReadDirectLinkInterfacesResponse: + if request is None: + request = ReadDirectLinkInterfacesRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadDirectLinkInterfaces", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadDirectLinkInterfacesResponse).validate_python(response) + + async def read_direct_links( + self, + request: ReadDirectLinksRequest | None = None, + ) -> ReadDirectLinksResponse: + if request is None: + request = ReadDirectLinksRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadDirectLinks", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadDirectLinksResponse).validate_python(response) + + async def read_entities_linked_to_policy( + self, + request: ReadEntitiesLinkedToPolicyRequest | None = None, + ) -> ReadEntitiesLinkedToPolicyResponse: + if request is None: + request = ReadEntitiesLinkedToPolicyRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadEntitiesLinkedToPolicy", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadEntitiesLinkedToPolicyResponse).validate_python(response) + + async def read_flexible_gpu_catalog( + self, + request: ReadFlexibleGpuCatalogRequest | None = None, + ) -> ReadFlexibleGpuCatalogResponse: + if request is None: + request = ReadFlexibleGpuCatalogRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadFlexibleGpuCatalog", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadFlexibleGpuCatalogResponse).validate_python(response) + + async def read_flexible_gpus( + self, + request: ReadFlexibleGpusRequest | None = None, + ) -> ReadFlexibleGpusResponse: + if request is None: + request = ReadFlexibleGpusRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadFlexibleGpus", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadFlexibleGpusResponse).validate_python(response) + + async def read_image_export_tasks( + self, + request: ReadImageExportTasksRequest | None = None, + ) -> ReadImageExportTasksResponse: + if request is None: + request = ReadImageExportTasksRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadImageExportTasks", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadImageExportTasksResponse).validate_python(response) + + async def read_images( + self, + request: ReadImagesRequest | None = None, + ) -> ReadImagesResponse: + if request is None: + request = ReadImagesRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadImages", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadImagesResponse).validate_python(response) + + async def read_internet_services( + self, + request: ReadInternetServicesRequest | None = None, + ) -> ReadInternetServicesResponse: + if request is None: + request = ReadInternetServicesRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadInternetServices", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadInternetServicesResponse).validate_python(response) + + async def read_keypairs( + self, + request: ReadKeypairsRequest | None = None, + ) -> ReadKeypairsResponse: + if request is None: + request = ReadKeypairsRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadKeypairs", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadKeypairsResponse).validate_python(response) + + async def read_linked_policies( + self, + request: ReadLinkedPoliciesRequest | None = None, + ) -> ReadLinkedPoliciesResponse: + if request is None: + request = ReadLinkedPoliciesRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadLinkedPolicies", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadLinkedPoliciesResponse).validate_python(response) + + async def read_listener_rules( + self, + request: ReadListenerRulesRequest | None = None, + ) -> ReadListenerRulesResponse: + if request is None: + request = ReadListenerRulesRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadListenerRules", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadListenerRulesResponse).validate_python(response) + + async def read_load_balancer_tags( + self, + request: ReadLoadBalancerTagsRequest | None = None, + ) -> ReadLoadBalancerTagsResponse: + if request is None: + request = ReadLoadBalancerTagsRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadLoadBalancerTags", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadLoadBalancerTagsResponse).validate_python(response) + + async def read_load_balancers( + self, + request: ReadLoadBalancersRequest | None = None, + ) -> ReadLoadBalancersResponse: + if request is None: + request = ReadLoadBalancersRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadLoadBalancers", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadLoadBalancersResponse).validate_python(response) + + async def read_locations( + self, + request: ReadLocationsRequest | None = None, + ) -> ReadLocationsResponse: + if request is None: + request = ReadLocationsRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadLocations", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadLocationsResponse).validate_python(response) + + async def read_managed_policies_linked_to_user_group( + self, + request: ReadManagedPoliciesLinkedToUserGroupRequest | None = None, + ) -> ReadManagedPoliciesLinkedToUserGroupResponse: + if request is None: + request = ReadManagedPoliciesLinkedToUserGroupRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadManagedPoliciesLinkedToUserGroup", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadManagedPoliciesLinkedToUserGroupResponse).validate_python(response) + + async def read_nat_services( + self, + request: ReadNatServicesRequest | None = None, + ) -> ReadNatServicesResponse: + if request is None: + request = ReadNatServicesRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadNatServices", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadNatServicesResponse).validate_python(response) + + async def read_net_access_point_services( + self, + request: ReadNetAccessPointServicesRequest | None = None, + ) -> ReadNetAccessPointServicesResponse: + if request is None: + request = ReadNetAccessPointServicesRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadNetAccessPointServices", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadNetAccessPointServicesResponse).validate_python(response) + + async def read_net_access_points( + self, + request: ReadNetAccessPointsRequest | None = None, + ) -> ReadNetAccessPointsResponse: + if request is None: + request = ReadNetAccessPointsRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadNetAccessPoints", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadNetAccessPointsResponse).validate_python(response) + + async def read_net_peerings( + self, + request: ReadNetPeeringsRequest | None = None, + ) -> ReadNetPeeringsResponse: + if request is None: + request = ReadNetPeeringsRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadNetPeerings", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadNetPeeringsResponse).validate_python(response) + + async def read_nets( + self, + request: ReadNetsRequest | None = None, + ) -> ReadNetsResponse: + if request is None: + request = ReadNetsRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadNets", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadNetsResponse).validate_python(response) + + async def read_nics( + self, + request: ReadNicsRequest | None = None, + ) -> ReadNicsResponse: + if request is None: + request = ReadNicsRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadNics", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadNicsResponse).validate_python(response) + + async def read_policies( + self, + request: ReadPoliciesRequest | None = None, + ) -> ReadPoliciesResponse: + if request is None: + request = ReadPoliciesRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadPolicies", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadPoliciesResponse).validate_python(response) + + async def read_policy( + self, + request: ReadPolicyRequest | None = None, + ) -> ReadPolicyResponse: + if request is None: + request = ReadPolicyRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadPolicy", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadPolicyResponse).validate_python(response) + + async def read_policy_version( + self, + request: ReadPolicyVersionRequest | None = None, + ) -> ReadPolicyVersionResponse: + if request is None: + request = ReadPolicyVersionRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadPolicyVersion", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadPolicyVersionResponse).validate_python(response) + + async def read_policy_versions( + self, + request: ReadPolicyVersionsRequest | None = None, + ) -> ReadPolicyVersionsResponse: + if request is None: + request = ReadPolicyVersionsRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadPolicyVersions", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadPolicyVersionsResponse).validate_python(response) + + async def read_product_types( + self, + request: ReadProductTypesRequest | None = None, + ) -> ReadProductTypesResponse: + if request is None: + request = ReadProductTypesRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadProductTypes", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadProductTypesResponse).validate_python(response) + + async def read_public_catalog( + self, + request: ReadPublicCatalogRequest | None = None, + ) -> ReadPublicCatalogResponse: + if request is None: + request = ReadPublicCatalogRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadPublicCatalog", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadPublicCatalogResponse).validate_python(response) + + async def read_public_ip_ranges( + self, + request: ReadPublicIpRangesRequest | None = None, + ) -> ReadPublicIpRangesResponse: + if request is None: + request = ReadPublicIpRangesRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadPublicIpRanges", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadPublicIpRangesResponse).validate_python(response) + + async def read_public_ips( + self, + request: ReadPublicIpsRequest | None = None, + ) -> ReadPublicIpsResponse: + if request is None: + request = ReadPublicIpsRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadPublicIps", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadPublicIpsResponse).validate_python(response) + + async def read_quotas( + self, + request: ReadQuotasRequest | None = None, + ) -> ReadQuotasResponse: + if request is None: + request = ReadQuotasRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadQuotas", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadQuotasResponse).validate_python(response) + + async def read_regions( + self, + request: ReadRegionsRequest | None = None, + ) -> ReadRegionsResponse: + if request is None: + request = ReadRegionsRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadRegions", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadRegionsResponse).validate_python(response) + + async def read_route_tables( + self, + request: ReadRouteTablesRequest | None = None, + ) -> ReadRouteTablesResponse: + if request is None: + request = ReadRouteTablesRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadRouteTables", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadRouteTablesResponse).validate_python(response) + + async def read_security_groups( + self, + request: ReadSecurityGroupsRequest | None = None, + ) -> ReadSecurityGroupsResponse: + if request is None: + request = ReadSecurityGroupsRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadSecurityGroups", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadSecurityGroupsResponse).validate_python(response) + + async def read_server_certificates( + self, + request: ReadServerCertificatesRequest | None = None, + ) -> ReadServerCertificatesResponse: + if request is None: + request = ReadServerCertificatesRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadServerCertificates", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadServerCertificatesResponse).validate_python(response) + + async def read_snapshot_export_tasks( + self, + request: ReadSnapshotExportTasksRequest | None = None, + ) -> ReadSnapshotExportTasksResponse: + if request is None: + request = ReadSnapshotExportTasksRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadSnapshotExportTasks", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadSnapshotExportTasksResponse).validate_python(response) + + async def read_snapshots( + self, + request: ReadSnapshotsRequest | None = None, + ) -> ReadSnapshotsResponse: + if request is None: + request = ReadSnapshotsRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadSnapshots", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadSnapshotsResponse).validate_python(response) + + async def read_subnets( + self, + request: ReadSubnetsRequest | None = None, + ) -> ReadSubnetsResponse: + if request is None: + request = ReadSubnetsRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadSubnets", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadSubnetsResponse).validate_python(response) + + async def read_subregions( + self, + request: ReadSubregionsRequest | None = None, + ) -> ReadSubregionsResponse: + if request is None: + request = ReadSubregionsRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadSubregions", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadSubregionsResponse).validate_python(response) + + async def read_tags( + self, + request: ReadTagsRequest | None = None, + ) -> ReadTagsResponse: + if request is None: + request = ReadTagsRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadTags", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadTagsResponse).validate_python(response) + + async def read_unit_price( + self, + request: ReadUnitPriceRequest | None = None, + ) -> ReadUnitPriceResponse: + if request is None: + request = ReadUnitPriceRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadUnitPrice", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadUnitPriceResponse).validate_python(response) + + async def read_user_group( + self, + request: ReadUserGroupRequest | None = None, + ) -> ReadUserGroupResponse: + if request is None: + request = ReadUserGroupRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadUserGroup", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadUserGroupResponse).validate_python(response) + + async def read_user_group_policies( + self, + request: ReadUserGroupPoliciesRequest | None = None, + ) -> ReadUserGroupPoliciesResponse: + if request is None: + request = ReadUserGroupPoliciesRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadUserGroupPolicies", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadUserGroupPoliciesResponse).validate_python(response) + + async def read_user_group_policy( + self, + request: ReadUserGroupPolicyRequest | None = None, + ) -> ReadUserGroupPolicyResponse: + if request is None: + request = ReadUserGroupPolicyRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadUserGroupPolicy", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadUserGroupPolicyResponse).validate_python(response) + + async def read_user_groups( + self, + request: ReadUserGroupsRequest | None = None, + ) -> ReadUserGroupsResponse: + if request is None: + request = ReadUserGroupsRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadUserGroups", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadUserGroupsResponse).validate_python(response) + + async def read_user_groups_per_user( + self, + request: ReadUserGroupsPerUserRequest | None = None, + ) -> ReadUserGroupsPerUserResponse: + if request is None: + request = ReadUserGroupsPerUserRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadUserGroupsPerUser", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadUserGroupsPerUserResponse).validate_python(response) + + async def read_user_policies( + self, + request: ReadUserPoliciesRequest | None = None, + ) -> ReadUserPoliciesResponse: + if request is None: + request = ReadUserPoliciesRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadUserPolicies", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadUserPoliciesResponse).validate_python(response) + + async def read_user_policy( + self, + request: ReadUserPolicyRequest | None = None, + ) -> ReadUserPolicyResponse: + if request is None: + request = ReadUserPolicyRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadUserPolicy", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadUserPolicyResponse).validate_python(response) + + async def read_users( + self, + request: ReadUsersRequest | None = None, + ) -> ReadUsersResponse: + if request is None: + request = ReadUsersRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadUsers", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadUsersResponse).validate_python(response) + + async def read_virtual_gateways( + self, + request: ReadVirtualGatewaysRequest | None = None, + ) -> ReadVirtualGatewaysResponse: + if request is None: + request = ReadVirtualGatewaysRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadVirtualGateways", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadVirtualGatewaysResponse).validate_python(response) + + async def read_vm_groups( + self, + request: ReadVmGroupsRequest | None = None, + ) -> ReadVmGroupsResponse: + if request is None: + request = ReadVmGroupsRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadVmGroups", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadVmGroupsResponse).validate_python(response) + + async def read_vm_templates( + self, + request: ReadVmTemplatesRequest | None = None, + ) -> ReadVmTemplatesResponse: + if request is None: + request = ReadVmTemplatesRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadVmTemplates", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadVmTemplatesResponse).validate_python(response) + + async def read_vm_types( + self, + request: ReadVmTypesRequest | None = None, + ) -> ReadVmTypesResponse: + if request is None: + request = ReadVmTypesRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadVmTypes", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadVmTypesResponse).validate_python(response) + + async def read_vms( + self, + request: ReadVmsRequest | None = None, + ) -> ReadVmsResponse: + if request is None: + request = ReadVmsRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadVms", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadVmsResponse).validate_python(response) + + async def read_vms_health( + self, + request: ReadVmsHealthRequest | None = None, + ) -> ReadVmsHealthResponse: + if request is None: + request = ReadVmsHealthRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadVmsHealth", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadVmsHealthResponse).validate_python(response) + + async def read_vms_state( + self, + request: ReadVmsStateRequest | None = None, + ) -> ReadVmsStateResponse: + if request is None: + request = ReadVmsStateRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadVmsState", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadVmsStateResponse).validate_python(response) + + async def read_volume_update_tasks( + self, + request: ReadVolumeUpdateTasksRequest | None = None, + ) -> ReadVolumeUpdateTasksResponse: + if request is None: + request = ReadVolumeUpdateTasksRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadVolumeUpdateTasks", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadVolumeUpdateTasksResponse).validate_python(response) + + async def read_volumes( + self, + request: ReadVolumesRequest | None = None, + ) -> ReadVolumesResponse: + if request is None: + request = ReadVolumesRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadVolumes", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadVolumesResponse).validate_python(response) + + async def read_vpn_connections( + self, + request: ReadVpnConnectionsRequest | None = None, + ) -> ReadVpnConnectionsResponse: + if request is None: + request = ReadVpnConnectionsRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ReadVpnConnections", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ReadVpnConnectionsResponse).validate_python(response) + + async def reboot_vms( + self, + request: RebootVmsRequest | None = None, + ) -> RebootVmsResponse: + if request is None: + request = RebootVmsRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/RebootVms", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(RebootVmsResponse).validate_python(response) + + async def register_vms_in_load_balancer( + self, + request: RegisterVmsInLoadBalancerRequest | None = None, + ) -> RegisterVmsInLoadBalancerResponse: + if request is None: + request = RegisterVmsInLoadBalancerRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/RegisterVmsInLoadBalancer", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(RegisterVmsInLoadBalancerResponse).validate_python(response) + + async def reject_net_peering( + self, + request: RejectNetPeeringRequest | None = None, + ) -> RejectNetPeeringResponse: + if request is None: + request = RejectNetPeeringRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/RejectNetPeering", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(RejectNetPeeringResponse).validate_python(response) + + async def remove_user_from_user_group( + self, + request: RemoveUserFromUserGroupRequest | None = None, + ) -> RemoveUserFromUserGroupResponse: + if request is None: + request = RemoveUserFromUserGroupRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/RemoveUserFromUserGroup", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(RemoveUserFromUserGroupResponse).validate_python(response) + + async def scale_down_vm_group( + self, + request: ScaleDownVmGroupRequest | None = None, + ) -> ScaleDownVmGroupResponse: + if request is None: + request = ScaleDownVmGroupRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ScaleDownVmGroup", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ScaleDownVmGroupResponse).validate_python(response) + + async def scale_up_vm_group( + self, + request: ScaleUpVmGroupRequest | None = None, + ) -> ScaleUpVmGroupResponse: + if request is None: + request = ScaleUpVmGroupRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/ScaleUpVmGroup", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(ScaleUpVmGroupResponse).validate_python(response) + + async def set_default_policy_version( + self, + request: SetDefaultPolicyVersionRequest | None = None, + ) -> SetDefaultPolicyVersionResponse: + if request is None: + request = SetDefaultPolicyVersionRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/SetDefaultPolicyVersion", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(SetDefaultPolicyVersionResponse).validate_python(response) + + async def start_vms( + self, + request: StartVmsRequest | None = None, + ) -> StartVmsResponse: + if request is None: + request = StartVmsRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/StartVms", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(StartVmsResponse).validate_python(response) + + async def stop_vms( + self, + request: StopVmsRequest | None = None, + ) -> StopVmsResponse: + if request is None: + request = StopVmsRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/StopVms", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(StopVmsResponse).validate_python(response) + + async def unlink_flexible_gpu( + self, + request: UnlinkFlexibleGpuRequest | None = None, + ) -> UnlinkFlexibleGpuResponse: + if request is None: + request = UnlinkFlexibleGpuRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/UnlinkFlexibleGpu", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(UnlinkFlexibleGpuResponse).validate_python(response) + + async def unlink_internet_service( + self, + request: UnlinkInternetServiceRequest | None = None, + ) -> UnlinkInternetServiceResponse: + if request is None: + request = UnlinkInternetServiceRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/UnlinkInternetService", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(UnlinkInternetServiceResponse).validate_python(response) + + async def unlink_load_balancer_backend_machines( + self, + request: UnlinkLoadBalancerBackendMachinesRequest | None = None, + ) -> UnlinkLoadBalancerBackendMachinesResponse: + if request is None: + request = UnlinkLoadBalancerBackendMachinesRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/UnlinkLoadBalancerBackendMachines", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(UnlinkLoadBalancerBackendMachinesResponse).validate_python(response) + + async def unlink_managed_policy_from_user_group( + self, + request: UnlinkManagedPolicyFromUserGroupRequest | None = None, + ) -> UnlinkManagedPolicyFromUserGroupResponse: + if request is None: + request = UnlinkManagedPolicyFromUserGroupRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/UnlinkManagedPolicyFromUserGroup", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(UnlinkManagedPolicyFromUserGroupResponse).validate_python(response) + + async def unlink_nic( + self, + request: UnlinkNicRequest | None = None, + ) -> UnlinkNicResponse: + if request is None: + request = UnlinkNicRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/UnlinkNic", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(UnlinkNicResponse).validate_python(response) + + async def unlink_policy( + self, + request: UnlinkPolicyRequest | None = None, + ) -> UnlinkPolicyResponse: + if request is None: + request = UnlinkPolicyRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/UnlinkPolicy", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(UnlinkPolicyResponse).validate_python(response) + + async def unlink_private_ips( + self, + request: UnlinkPrivateIpsRequest | None = None, + ) -> UnlinkPrivateIpsResponse: + if request is None: + request = UnlinkPrivateIpsRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/UnlinkPrivateIps", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(UnlinkPrivateIpsResponse).validate_python(response) + + async def unlink_public_ip( + self, + request: UnlinkPublicIpRequest | None = None, + ) -> UnlinkPublicIpResponse: + if request is None: + request = UnlinkPublicIpRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/UnlinkPublicIp", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(UnlinkPublicIpResponse).validate_python(response) + + async def unlink_route_table( + self, + request: UnlinkRouteTableRequest | None = None, + ) -> UnlinkRouteTableResponse: + if request is None: + request = UnlinkRouteTableRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/UnlinkRouteTable", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(UnlinkRouteTableResponse).validate_python(response) + + async def unlink_virtual_gateway( + self, + request: UnlinkVirtualGatewayRequest | None = None, + ) -> UnlinkVirtualGatewayResponse: + if request is None: + request = UnlinkVirtualGatewayRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/UnlinkVirtualGateway", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(UnlinkVirtualGatewayResponse).validate_python(response) + + async def unlink_volume( + self, + request: UnlinkVolumeRequest | None = None, + ) -> UnlinkVolumeResponse: + if request is None: + request = UnlinkVolumeRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/UnlinkVolume", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(UnlinkVolumeResponse).validate_python(response) + + async def update_access_key( + self, + request: UpdateAccessKeyRequest | None = None, + ) -> UpdateAccessKeyResponse: + if request is None: + request = UpdateAccessKeyRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/UpdateAccessKey", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(UpdateAccessKeyResponse).validate_python(response) + + async def update_account( + self, + request: UpdateAccountRequest | None = None, + ) -> UpdateAccountResponse: + if request is None: + request = UpdateAccountRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/UpdateAccount", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(UpdateAccountResponse).validate_python(response) + + async def update_api_access_policy( + self, + request: UpdateApiAccessPolicyRequest | None = None, + ) -> UpdateApiAccessPolicyResponse: + if request is None: + request = UpdateApiAccessPolicyRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/UpdateApiAccessPolicy", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(UpdateApiAccessPolicyResponse).validate_python(response) + + async def update_api_access_rule( + self, + request: UpdateApiAccessRuleRequest | None = None, + ) -> UpdateApiAccessRuleResponse: + if request is None: + request = UpdateApiAccessRuleRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/UpdateApiAccessRule", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(UpdateApiAccessRuleResponse).validate_python(response) + + async def update_ca( + self, + request: UpdateCaRequest | None = None, + ) -> UpdateCaResponse: + if request is None: + request = UpdateCaRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/UpdateCa", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(UpdateCaResponse).validate_python(response) + + async def update_dedicated_group( + self, + request: UpdateDedicatedGroupRequest | None = None, + ) -> UpdateDedicatedGroupResponse: + if request is None: + request = UpdateDedicatedGroupRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/UpdateDedicatedGroup", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(UpdateDedicatedGroupResponse).validate_python(response) + + async def update_direct_link_interface( + self, + request: UpdateDirectLinkInterfaceRequest | None = None, + ) -> UpdateDirectLinkInterfaceResponse: + if request is None: + request = UpdateDirectLinkInterfaceRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/UpdateDirectLinkInterface", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(UpdateDirectLinkInterfaceResponse).validate_python(response) + + async def update_flexible_gpu( + self, + request: UpdateFlexibleGpuRequest | None = None, + ) -> UpdateFlexibleGpuResponse: + if request is None: + request = UpdateFlexibleGpuRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/UpdateFlexibleGpu", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(UpdateFlexibleGpuResponse).validate_python(response) + + async def update_image( + self, + request: UpdateImageRequest | None = None, + ) -> UpdateImageResponse: + if request is None: + request = UpdateImageRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/UpdateImage", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(UpdateImageResponse).validate_python(response) + + async def update_listener_rule( + self, + request: UpdateListenerRuleRequest | None = None, + ) -> UpdateListenerRuleResponse: + if request is None: + request = UpdateListenerRuleRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/UpdateListenerRule", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(UpdateListenerRuleResponse).validate_python(response) + + async def update_load_balancer( + self, + request: UpdateLoadBalancerRequest | None = None, + ) -> UpdateLoadBalancerResponse: + if request is None: + request = UpdateLoadBalancerRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/UpdateLoadBalancer", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(UpdateLoadBalancerResponse).validate_python(response) + + async def update_net( + self, + request: UpdateNetRequest | None = None, + ) -> UpdateNetResponse: + if request is None: + request = UpdateNetRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/UpdateNet", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(UpdateNetResponse).validate_python(response) + + async def update_net_access_point( + self, + request: UpdateNetAccessPointRequest | None = None, + ) -> UpdateNetAccessPointResponse: + if request is None: + request = UpdateNetAccessPointRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/UpdateNetAccessPoint", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(UpdateNetAccessPointResponse).validate_python(response) + + async def update_nic( + self, + request: UpdateNicRequest | None = None, + ) -> UpdateNicResponse: + if request is None: + request = UpdateNicRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/UpdateNic", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(UpdateNicResponse).validate_python(response) + + async def update_route( + self, + request: UpdateRouteRequest | None = None, + ) -> UpdateRouteResponse: + if request is None: + request = UpdateRouteRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/UpdateRoute", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(UpdateRouteResponse).validate_python(response) + + async def update_route_propagation( + self, + request: UpdateRoutePropagationRequest | None = None, + ) -> UpdateRoutePropagationResponse: + if request is None: + request = UpdateRoutePropagationRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/UpdateRoutePropagation", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(UpdateRoutePropagationResponse).validate_python(response) + + async def update_route_table_link( + self, + request: UpdateRouteTableLinkRequest | None = None, + ) -> UpdateRouteTableLinkResponse: + if request is None: + request = UpdateRouteTableLinkRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/UpdateRouteTableLink", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(UpdateRouteTableLinkResponse).validate_python(response) + + async def update_server_certificate( + self, + request: UpdateServerCertificateRequest | None = None, + ) -> UpdateServerCertificateResponse: + if request is None: + request = UpdateServerCertificateRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/UpdateServerCertificate", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(UpdateServerCertificateResponse).validate_python(response) + + async def update_snapshot( + self, + request: UpdateSnapshotRequest | None = None, + ) -> UpdateSnapshotResponse: + if request is None: + request = UpdateSnapshotRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/UpdateSnapshot", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(UpdateSnapshotResponse).validate_python(response) + + async def update_subnet( + self, + request: UpdateSubnetRequest | None = None, + ) -> UpdateSubnetResponse: + if request is None: + request = UpdateSubnetRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/UpdateSubnet", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(UpdateSubnetResponse).validate_python(response) + + async def update_user( + self, + request: UpdateUserRequest | None = None, + ) -> UpdateUserResponse: + if request is None: + request = UpdateUserRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/UpdateUser", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(UpdateUserResponse).validate_python(response) + + async def update_user_group( + self, + request: UpdateUserGroupRequest | None = None, + ) -> UpdateUserGroupResponse: + if request is None: + request = UpdateUserGroupRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/UpdateUserGroup", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(UpdateUserGroupResponse).validate_python(response) + + async def update_vm( + self, + request: UpdateVmRequest | None = None, + ) -> UpdateVmResponse: + if request is None: + request = UpdateVmRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/UpdateVm", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(UpdateVmResponse).validate_python(response) + + async def update_vm_group( + self, + request: UpdateVmGroupRequest | None = None, + ) -> UpdateVmGroupResponse: + if request is None: + request = UpdateVmGroupRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/UpdateVmGroup", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(UpdateVmGroupResponse).validate_python(response) + + async def update_vm_template( + self, + request: UpdateVmTemplateRequest | None = None, + ) -> UpdateVmTemplateResponse: + if request is None: + request = UpdateVmTemplateRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/UpdateVmTemplate", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(UpdateVmTemplateResponse).validate_python(response) + + async def update_volume( + self, + request: UpdateVolumeRequest | None = None, + ) -> UpdateVolumeResponse: + if request is None: + request = UpdateVolumeRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/UpdateVolume", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(UpdateVolumeResponse).validate_python(response) + + async def update_vpn_connection( + self, + request: UpdateVpnConnectionRequest | None = None, + ) -> UpdateVpnConnectionResponse: + if request is None: + request = UpdateVpnConnectionRequest() + + path_params = { + } + query_params = { + } + response = await self.call.request( + RequestSpec( + service="api", + method="POST", + path="/UpdateVpnConnection", + json_body=_dump_json_body(request), + query_params={ + key: value + for key, value in query_params.items() + if value is not None + }, + ), + path_params=path_params, + ) + return TypeAdapter(UpdateVpnConnectionResponse).validate_python(response) diff --git a/osc_sdk_python/generated/osc/models.py b/osc_sdk_python/generated/osc/models.py new file mode 100644 index 0000000..bc1c9d7 --- /dev/null +++ b/osc_sdk_python/generated/osc/models.py @@ -0,0 +1,3801 @@ +"""Generated typed OSC client slice. + +Do not edit by hand. Regenerate with: + python -m osc_sdk_python.codegen.generator +""" +from __future__ import annotations + +from typing import Any, Literal + +from pydantic import BaseModel, ConfigDict, Field + + +class GeneratedModel(BaseModel): + model_config = ConfigDict(populate_by_name=True, extra="allow") + + +class AcceptNetPeeringRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + net_peering_id: str = Field(alias='NetPeeringId') + +class AcceptNetPeeringResponse(GeneratedModel): + net_peering: NetPeering | None = Field(default=None, alias='NetPeering') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class AccepterNet(GeneratedModel): + account_id: str | None = Field(default=None, alias='AccountId') + ip_range: str | None = Field(default=None, alias='IpRange') + net_id: str | None = Field(default=None, alias='NetId') + +class AccessKey(GeneratedModel): + access_key_id: str | None = Field(default=None, alias='AccessKeyId') + creation_date: str | None = Field(default=None, alias='CreationDate') + expiration_date: str | None = Field(default=None, alias='ExpirationDate') + last_modification_date: str | None = Field(default=None, alias='LastModificationDate') + state: str | None = Field(default=None, alias='State') + tag: str | None = Field(default=None, alias='Tag') + +class AccessKeySecretKey(GeneratedModel): + access_key_id: str | None = Field(default=None, alias='AccessKeyId') + creation_date: str | None = Field(default=None, alias='CreationDate') + expiration_date: str | None = Field(default=None, alias='ExpirationDate') + last_modification_date: str | None = Field(default=None, alias='LastModificationDate') + secret_key: str | None = Field(default=None, alias='SecretKey') + state: str | None = Field(default=None, alias='State') + tag: str | None = Field(default=None, alias='Tag') + +class AccessLog(GeneratedModel): + is_enabled: bool | None = Field(default=None, alias='IsEnabled') + osu_bucket_name: str | None = Field(default=None, alias='OsuBucketName') + osu_bucket_prefix: str | None = Field(default=None, alias='OsuBucketPrefix') + publication_interval: int | None = Field(default=None, alias='PublicationInterval') + +class Account(GeneratedModel): + account_id: str | None = Field(default=None, alias='AccountId') + additional_emails: list[str] | None = Field(default=None, alias='AdditionalEmails') + city: str | None = Field(default=None, alias='City') + company_name: str | None = Field(default=None, alias='CompanyName') + country: str | None = Field(default=None, alias='Country') + customer_id: str | None = Field(default=None, alias='CustomerId') + email: str | None = Field(default=None, alias='Email') + first_name: str | None = Field(default=None, alias='FirstName') + job_title: str | None = Field(default=None, alias='JobTitle') + last_name: str | None = Field(default=None, alias='LastName') + mobile_number: str | None = Field(default=None, alias='MobileNumber') + outscale_login_allowed: bool | None = Field(default=None, alias='OutscaleLoginAllowed') + phone_number: str | None = Field(default=None, alias='PhoneNumber') + state_province: str | None = Field(default=None, alias='StateProvince') + vat_number: str | None = Field(default=None, alias='VatNumber') + zip_code: str | None = Field(default=None, alias='ZipCode') + +class ActionsOnNextBoot(GeneratedModel): + secure_boot: SecureBootAction | None = Field(default=None, alias='SecureBoot') + +class AddUserToUserGroupRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + user_group_name: str = Field(alias='UserGroupName') + user_group_path: str | None = Field(default=None, alias='UserGroupPath') + user_name: str = Field(alias='UserName') + user_path: str | None = Field(default=None, alias='UserPath') + +class AddUserToUserGroupResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class ApiAccessPolicy(GeneratedModel): + max_access_key_expiration_seconds: int | None = Field(default=None, alias='MaxAccessKeyExpirationSeconds') + require_trusted_env: bool | None = Field(default=None, alias='RequireTrustedEnv') + +class ApiAccessRule(GeneratedModel): + api_access_rule_id: str | None = Field(default=None, alias='ApiAccessRuleId') + ca_ids: list[str] | None = Field(default=None, alias='CaIds') + cns: list[str] | None = Field(default=None, alias='Cns') + description: str | None = Field(default=None, alias='Description') + ip_ranges: list[str] | None = Field(default=None, alias='IpRanges') + +class ApplicationStickyCookiePolicy(GeneratedModel): + cookie_name: str | None = Field(default=None, alias='CookieName') + policy_name: str | None = Field(default=None, alias='PolicyName') + +class BackendVmHealth(GeneratedModel): + description: str | None = Field(default=None, alias='Description') + state: str | None = Field(default=None, alias='State') + state_reason: str | None = Field(default=None, alias='StateReason') + vm_id: str | None = Field(default=None, alias='VmId') + +class BlockDeviceMappingCreated(GeneratedModel): + bsu: BsuCreated | None = Field(default=None, alias='Bsu') + device_name: str | None = Field(default=None, alias='DeviceName') + +class BlockDeviceMappingImage(GeneratedModel): + bsu: BsuToCreate | None = Field(default=None, alias='Bsu') + device_name: str | None = Field(default=None, alias='DeviceName') + virtual_device_name: str | None = Field(default=None, alias='VirtualDeviceName') + +class BlockDeviceMappingVmCreation(GeneratedModel): + bsu: BsuToCreate | None = Field(default=None, alias='Bsu') + device_name: str | None = Field(default=None, alias='DeviceName') + no_device: str | None = Field(default=None, alias='NoDevice') + virtual_device_name: str | None = Field(default=None, alias='VirtualDeviceName') + +class BlockDeviceMappingVmUpdate(GeneratedModel): + bsu: BsuToUpdateVm | None = Field(default=None, alias='Bsu') + device_name: str | None = Field(default=None, alias='DeviceName') + no_device: str | None = Field(default=None, alias='NoDevice') + virtual_device_name: str | None = Field(default=None, alias='VirtualDeviceName') + +BootMode = Literal['uefi', 'legacy'] + +class BsuCreated(GeneratedModel): + delete_on_vm_deletion: bool | None = Field(default=None, alias='DeleteOnVmDeletion') + link_date: str | None = Field(default=None, alias='LinkDate') + state: str | None = Field(default=None, alias='State') + volume_id: str | None = Field(default=None, alias='VolumeId') + +class BsuToCreate(GeneratedModel): + delete_on_vm_deletion: bool | None = Field(default=None, alias='DeleteOnVmDeletion') + iops: int | None = Field(default=None, alias='Iops') + snapshot_id: str | None = Field(default=None, alias='SnapshotId') + volume_size: int | None = Field(default=None, alias='VolumeSize') + volume_type: str | None = Field(default=None, alias='VolumeType') + +class BsuToUpdateVm(GeneratedModel): + delete_on_vm_deletion: bool | None = Field(default=None, alias='DeleteOnVmDeletion') + volume_id: str | None = Field(default=None, alias='VolumeId') + +class CO2CategoryDistribution(GeneratedModel): + category: str | None = Field(default=None, alias='Category') + value: float | None = Field(default=None, alias='Value') + +class CO2EmissionEntry(GeneratedModel): + account_id: str | None = Field(default=None, alias='AccountId') + category_distribution: list[CO2CategoryDistribution] | None = Field(default=None, alias='CategoryDistribution') + factor_distribution: list[CO2FactorDistribution] | None = Field(default=None, alias='FactorDistribution') + month: str | None = Field(default=None, alias='Month') + paying_account_id: str | None = Field(default=None, alias='PayingAccountId') + value: float | None = Field(default=None, alias='Value') + +class CO2FactorDistribution(GeneratedModel): + factor: str | None = Field(default=None, alias='Factor') + value: float | None = Field(default=None, alias='Value') + +class Ca(GeneratedModel): + ca_fingerprint: str | None = Field(default=None, alias='CaFingerprint') + ca_id: str | None = Field(default=None, alias='CaId') + description: str | None = Field(default=None, alias='Description') + +class Catalog(GeneratedModel): + entries: list[CatalogEntry] | None = Field(default=None, alias='Entries') + +class CatalogEntry(GeneratedModel): + category: str | None = Field(default=None, alias='Category') + flags: str | None = Field(default=None, alias='Flags') + operation: str | None = Field(default=None, alias='Operation') + service: str | None = Field(default=None, alias='Service') + subregion_name: str | None = Field(default=None, alias='SubregionName') + title: str | None = Field(default=None, alias='Title') + type: str | None = Field(default=None, alias='Type') + unit_price: float | None = Field(default=None, alias='UnitPrice') + +class Catalogs(GeneratedModel): + entries: list[CatalogEntry] | None = Field(default=None, alias='Entries') + from_date: str | None = Field(default=None, alias='FromDate') + state: Literal['CURRENT', 'OBSOLETE'] | None = Field(default=None, alias='State') + to_date: str | None = Field(default=None, alias='ToDate') + +class CheckAuthenticationRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + login: str = Field(alias='Login') + password: str = Field(alias='Password') + +class CheckAuthenticationResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class ClientGateway(GeneratedModel): + bgp_asn: int | None = Field(default=None, alias='BgpAsn') + client_gateway_id: str | None = Field(default=None, alias='ClientGatewayId') + connection_type: str | None = Field(default=None, alias='ConnectionType') + public_ip: str | None = Field(default=None, alias='PublicIp') + state: str | None = Field(default=None, alias='State') + tags: list[ResourceTag] | None = Field(default=None, alias='Tags') + +class ConsumptionEntry(GeneratedModel): + account_id: str | None = Field(default=None, alias='AccountId') + category: str | None = Field(default=None, alias='Category') + from_date: str | None = Field(default=None, alias='FromDate') + operation: str | None = Field(default=None, alias='Operation') + paying_account_id: str | None = Field(default=None, alias='PayingAccountId') + price: float | None = Field(default=None, alias='Price') + resource_id: str | None = Field(default=None, alias='ResourceId') + service: str | None = Field(default=None, alias='Service') + subregion_name: str | None = Field(default=None, alias='SubregionName') + title: str | None = Field(default=None, alias='Title') + to_date: str | None = Field(default=None, alias='ToDate') + type: str | None = Field(default=None, alias='Type') + unit_price: float | None = Field(default=None, alias='UnitPrice') + value: float | None = Field(default=None, alias='Value') + +class CreateAccessKeyRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + expiration_date: str | None = Field(default=None, alias='ExpirationDate') + tag: str | None = Field(default=None, alias='Tag') + user_name: str | None = Field(default=None, alias='UserName') + +class CreateAccessKeyResponse(GeneratedModel): + access_key: AccessKeySecretKey | None = Field(default=None, alias='AccessKey') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class CreateAccountRequest(GeneratedModel): + additional_emails: list[str] | None = Field(default=None, alias='AdditionalEmails') + city: str = Field(alias='City') + company_name: str = Field(alias='CompanyName') + country: str = Field(alias='Country') + customer_id: str = Field(alias='CustomerId') + dry_run: bool | None = Field(default=None, alias='DryRun') + email: str = Field(alias='Email') + first_name: str = Field(alias='FirstName') + job_title: str | None = Field(default=None, alias='JobTitle') + last_name: str = Field(alias='LastName') + mobile_number: str | None = Field(default=None, alias='MobileNumber') + phone_number: str | None = Field(default=None, alias='PhoneNumber') + state_province: str | None = Field(default=None, alias='StateProvince') + vat_number: str | None = Field(default=None, alias='VatNumber') + zip_code: str = Field(alias='ZipCode') + +class CreateAccountResponse(GeneratedModel): + account: Account | None = Field(default=None, alias='Account') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class CreateApiAccessRuleRequest(GeneratedModel): + ca_ids: list[str] | None = Field(default=None, alias='CaIds') + cns: list[str] | None = Field(default=None, alias='Cns') + description: str | None = Field(default=None, alias='Description') + dry_run: bool | None = Field(default=None, alias='DryRun') + ip_ranges: list[str] | None = Field(default=None, alias='IpRanges') + +class CreateApiAccessRuleResponse(GeneratedModel): + api_access_rule: ApiAccessRule | None = Field(default=None, alias='ApiAccessRule') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class CreateCaRequest(GeneratedModel): + ca_pem: str = Field(alias='CaPem') + description: str | None = Field(default=None, alias='Description') + dry_run: bool | None = Field(default=None, alias='DryRun') + +class CreateCaResponse(GeneratedModel): + ca: Ca | None = Field(default=None, alias='Ca') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class CreateClientGatewayRequest(GeneratedModel): + bgp_asn: int = Field(alias='BgpAsn') + connection_type: str = Field(alias='ConnectionType') + dry_run: bool | None = Field(default=None, alias='DryRun') + public_ip: str = Field(alias='PublicIp') + +class CreateClientGatewayResponse(GeneratedModel): + client_gateway: ClientGateway | None = Field(default=None, alias='ClientGateway') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class CreateDedicatedGroupRequest(GeneratedModel): + cpu_generation: int = Field(alias='CpuGeneration') + dry_run: bool | None = Field(default=None, alias='DryRun') + name: str = Field(alias='Name') + subregion_name: str = Field(alias='SubregionName') + +class CreateDedicatedGroupResponse(GeneratedModel): + dedicated_group: DedicatedGroup | None = Field(default=None, alias='DedicatedGroup') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class CreateDhcpOptionsRequest(GeneratedModel): + domain_name: str | None = Field(default=None, alias='DomainName') + domain_name_servers: list[str] | None = Field(default=None, alias='DomainNameServers') + dry_run: bool | None = Field(default=None, alias='DryRun') + log_servers: list[str] | None = Field(default=None, alias='LogServers') + ntp_servers: list[str] | None = Field(default=None, alias='NtpServers') + +class CreateDhcpOptionsResponse(GeneratedModel): + dhcp_options_set: DhcpOptionsSet | None = Field(default=None, alias='DhcpOptionsSet') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class CreateDirectLinkInterfaceRequest(GeneratedModel): + direct_link_id: str = Field(alias='DirectLinkId') + direct_link_interface: DirectLinkInterface = Field(alias='DirectLinkInterface') + dry_run: bool | None = Field(default=None, alias='DryRun') + +class CreateDirectLinkInterfaceResponse(GeneratedModel): + direct_link_interface: DirectLinkInterfaces | None = Field(default=None, alias='DirectLinkInterface') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class CreateDirectLinkRequest(GeneratedModel): + bandwidth: str = Field(alias='Bandwidth') + direct_link_name: str = Field(alias='DirectLinkName') + dry_run: bool | None = Field(default=None, alias='DryRun') + location: str = Field(alias='Location') + +class CreateDirectLinkResponse(GeneratedModel): + direct_link: DirectLink | None = Field(default=None, alias='DirectLink') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class CreateFlexibleGpuRequest(GeneratedModel): + delete_on_vm_deletion: bool | None = Field(default=None, alias='DeleteOnVmDeletion') + dry_run: bool | None = Field(default=None, alias='DryRun') + generation: str | None = Field(default=None, alias='Generation') + model_name: str = Field(alias='ModelName') + subregion_name: str = Field(alias='SubregionName') + +class CreateFlexibleGpuResponse(GeneratedModel): + flexible_gpu: FlexibleGpu | None = Field(default=None, alias='FlexibleGpu') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class CreateImageExportTaskRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + image_id: str = Field(alias='ImageId') + osu_export: OsuExportToCreate = Field(alias='OsuExport') + +class CreateImageExportTaskResponse(GeneratedModel): + image_export_task: ImageExportTask | None = Field(default=None, alias='ImageExportTask') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class CreateImageRequest(GeneratedModel): + architecture: str | None = Field(default=None, alias='Architecture') + block_device_mappings: list[BlockDeviceMappingImage] | None = Field(default=None, alias='BlockDeviceMappings') + boot_modes: list[BootMode] | None = Field(default=None, alias='BootModes') + description: str | None = Field(default=None, alias='Description') + dry_run: bool | None = Field(default=None, alias='DryRun') + file_location: str | None = Field(default=None, alias='FileLocation') + image_name: str | None = Field(default=None, alias='ImageName') + no_reboot: bool | None = Field(default=None, alias='NoReboot') + product_codes: list[str] | None = Field(default=None, alias='ProductCodes') + root_device_name: str | None = Field(default=None, alias='RootDeviceName') + source_image_id: str | None = Field(default=None, alias='SourceImageId') + source_region_name: str | None = Field(default=None, alias='SourceRegionName') + tpm_mandatory: bool | None = Field(default=None, alias='TpmMandatory') + vm_id: str | None = Field(default=None, alias='VmId') + +class CreateImageResponse(GeneratedModel): + image: Image | None = Field(default=None, alias='Image') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class CreateInternetServiceRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + +class CreateInternetServiceResponse(GeneratedModel): + internet_service: InternetService | None = Field(default=None, alias='InternetService') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class CreateKeypairRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + keypair_name: str = Field(alias='KeypairName') + public_key: str | None = Field(default=None, alias='PublicKey') + +class CreateKeypairResponse(GeneratedModel): + keypair: KeypairCreated | None = Field(default=None, alias='Keypair') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class CreateListenerRuleRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + listener: LoadBalancerLight = Field(alias='Listener') + listener_rule: ListenerRuleForCreation = Field(alias='ListenerRule') + vm_ids: list[str] = Field(alias='VmIds') + +class CreateListenerRuleResponse(GeneratedModel): + listener_rule: ListenerRule | None = Field(default=None, alias='ListenerRule') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class CreateLoadBalancerListenersRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + listeners: list[ListenerForCreation] = Field(alias='Listeners') + load_balancer_name: str = Field(alias='LoadBalancerName') + +class CreateLoadBalancerListenersResponse(GeneratedModel): + load_balancer: LoadBalancer | None = Field(default=None, alias='LoadBalancer') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class CreateLoadBalancerPolicyRequest(GeneratedModel): + cookie_expiration_period: int | None = Field(default=None, alias='CookieExpirationPeriod') + cookie_name: str | None = Field(default=None, alias='CookieName') + dry_run: bool | None = Field(default=None, alias='DryRun') + load_balancer_name: str = Field(alias='LoadBalancerName') + policy_name: str = Field(alias='PolicyName') + policy_type: str = Field(alias='PolicyType') + +class CreateLoadBalancerPolicyResponse(GeneratedModel): + load_balancer: LoadBalancer | None = Field(default=None, alias='LoadBalancer') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class CreateLoadBalancerRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + listeners: list[ListenerForCreation] = Field(alias='Listeners') + load_balancer_name: str = Field(alias='LoadBalancerName') + load_balancer_type: str | None = Field(default=None, alias='LoadBalancerType') + public_ip: str | None = Field(default=None, alias='PublicIp') + security_groups: list[str] | None = Field(default=None, alias='SecurityGroups') + subnets: list[str] | None = Field(default=None, alias='Subnets') + subregion_names: list[str] | None = Field(default=None, alias='SubregionNames') + tags: list[ResourceTag] | None = Field(default=None, alias='Tags') + +class CreateLoadBalancerResponse(GeneratedModel): + load_balancer: LoadBalancer | None = Field(default=None, alias='LoadBalancer') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class CreateLoadBalancerTagsRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + load_balancer_names: list[str] = Field(alias='LoadBalancerNames') + tags: list[ResourceTag] = Field(alias='Tags') + +class CreateLoadBalancerTagsResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class CreateNatServiceRequest(GeneratedModel): + client_token: str | None = Field(default=None, alias='ClientToken') + dry_run: bool | None = Field(default=None, alias='DryRun') + public_ip_id: str = Field(alias='PublicIpId') + subnet_id: str = Field(alias='SubnetId') + +class CreateNatServiceResponse(GeneratedModel): + nat_service: NatService | None = Field(default=None, alias='NatService') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class CreateNetAccessPointRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + net_id: str = Field(alias='NetId') + route_table_ids: list[str] | None = Field(default=None, alias='RouteTableIds') + service_name: str = Field(alias='ServiceName') + +class CreateNetAccessPointResponse(GeneratedModel): + net_access_point: NetAccessPoint | None = Field(default=None, alias='NetAccessPoint') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class CreateNetPeeringRequest(GeneratedModel): + accepter_net_id: str = Field(alias='AccepterNetId') + accepter_owner_id: str | None = Field(default=None, alias='AccepterOwnerId') + dry_run: bool | None = Field(default=None, alias='DryRun') + source_net_id: str = Field(alias='SourceNetId') + +class CreateNetPeeringResponse(GeneratedModel): + net_peering: NetPeering | None = Field(default=None, alias='NetPeering') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class CreateNetRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + ip_range: str = Field(alias='IpRange') + tenancy: str | None = Field(default=None, alias='Tenancy') + +class CreateNetResponse(GeneratedModel): + net: Net | None = Field(default=None, alias='Net') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class CreateNicRequest(GeneratedModel): + description: str | None = Field(default=None, alias='Description') + dry_run: bool | None = Field(default=None, alias='DryRun') + private_ips: list[PrivateIpLight] | None = Field(default=None, alias='PrivateIps') + security_group_ids: list[str] | None = Field(default=None, alias='SecurityGroupIds') + subnet_id: str = Field(alias='SubnetId') + +class CreateNicResponse(GeneratedModel): + nic: Nic | None = Field(default=None, alias='Nic') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class CreatePolicyRequest(GeneratedModel): + description: str | None = Field(default=None, alias='Description') + document: str = Field(alias='Document') + dry_run: bool | None = Field(default=None, alias='DryRun') + path: str | None = Field(default=None, alias='Path') + policy_name: str = Field(alias='PolicyName') + +class CreatePolicyResponse(GeneratedModel): + policy: Policy | None = Field(default=None, alias='Policy') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class CreatePolicyVersionRequest(GeneratedModel): + document: str = Field(alias='Document') + policy_orn: str = Field(alias='PolicyOrn') + set_as_default: bool | None = Field(default=None, alias='SetAsDefault') + +class CreatePolicyVersionResponse(GeneratedModel): + policy_version: PolicyVersion | None = Field(default=None, alias='PolicyVersion') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class CreateProductTypeRequest(GeneratedModel): + description: str = Field(alias='Description') + dry_run: bool | None = Field(default=None, alias='DryRun') + vendor: str | None = Field(default=None, alias='Vendor') + +class CreateProductTypeResponse(GeneratedModel): + product_type: ProductType | None = Field(default=None, alias='ProductType') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class CreatePublicIpRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + +class CreatePublicIpResponse(GeneratedModel): + public_ip: PublicIp | None = Field(default=None, alias='PublicIp') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class CreateRouteRequest(GeneratedModel): + destination_ip_range: str = Field(alias='DestinationIpRange') + dry_run: bool | None = Field(default=None, alias='DryRun') + gateway_id: str | None = Field(default=None, alias='GatewayId') + nat_service_id: str | None = Field(default=None, alias='NatServiceId') + net_peering_id: str | None = Field(default=None, alias='NetPeeringId') + nic_id: str | None = Field(default=None, alias='NicId') + route_table_id: str = Field(alias='RouteTableId') + vm_id: str | None = Field(default=None, alias='VmId') + +class CreateRouteResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + route_table: RouteTable | None = Field(default=None, alias='RouteTable') + +class CreateRouteTableRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + net_id: str = Field(alias='NetId') + +class CreateRouteTableResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + route_table: RouteTable | None = Field(default=None, alias='RouteTable') + +class CreateSecurityGroupRequest(GeneratedModel): + description: str = Field(alias='Description') + dry_run: bool | None = Field(default=None, alias='DryRun') + net_id: str | None = Field(default=None, alias='NetId') + security_group_name: str = Field(alias='SecurityGroupName') + +class CreateSecurityGroupResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + security_group: SecurityGroup | None = Field(default=None, alias='SecurityGroup') + +class CreateSecurityGroupRuleRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + flow: str = Field(alias='Flow') + from_port_range: int | None = Field(default=None, alias='FromPortRange') + ip_protocol: str | None = Field(default=None, alias='IpProtocol') + ip_range: str | None = Field(default=None, alias='IpRange') + rules: list[SecurityGroupRule] | None = Field(default=None, alias='Rules') + security_group_account_id_to_link: str | None = Field(default=None, alias='SecurityGroupAccountIdToLink') + security_group_id: str = Field(alias='SecurityGroupId') + security_group_name_to_link: str | None = Field(default=None, alias='SecurityGroupNameToLink') + to_port_range: int | None = Field(default=None, alias='ToPortRange') + +class CreateSecurityGroupRuleResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + security_group: SecurityGroup | None = Field(default=None, alias='SecurityGroup') + +class CreateServerCertificateRequest(GeneratedModel): + body: str = Field(alias='Body') + chain: str | None = Field(default=None, alias='Chain') + dry_run: bool | None = Field(default=None, alias='DryRun') + name: str = Field(alias='Name') + path: str | None = Field(default=None, alias='Path') + private_key: str = Field(alias='PrivateKey') + +class CreateServerCertificateResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + server_certificate: ServerCertificate | None = Field(default=None, alias='ServerCertificate') + +class CreateSnapshotExportTaskRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + osu_export: OsuExportToCreate = Field(alias='OsuExport') + snapshot_id: str = Field(alias='SnapshotId') + +class CreateSnapshotExportTaskResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + snapshot_export_task: SnapshotExportTask | None = Field(default=None, alias='SnapshotExportTask') + +class CreateSnapshotRequest(GeneratedModel): + client_token: str | None = Field(default=None, alias='ClientToken') + description: str | None = Field(default=None, alias='Description') + dry_run: bool | None = Field(default=None, alias='DryRun') + file_location: str | None = Field(default=None, alias='FileLocation') + snapshot_size: int | None = Field(default=None, alias='SnapshotSize') + source_region_name: str | None = Field(default=None, alias='SourceRegionName') + source_snapshot_id: str | None = Field(default=None, alias='SourceSnapshotId') + volume_id: str | None = Field(default=None, alias='VolumeId') + +class CreateSnapshotResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + snapshot: Snapshot | None = Field(default=None, alias='Snapshot') + +class CreateSubnetRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + ip_range: str = Field(alias='IpRange') + net_id: str = Field(alias='NetId') + subregion_name: str | None = Field(default=None, alias='SubregionName') + +class CreateSubnetResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + subnet: Subnet | None = Field(default=None, alias='Subnet') + +class CreateTagsRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + resource_ids: list[str] = Field(alias='ResourceIds') + tags: list[ResourceTag] = Field(alias='Tags') + +class CreateTagsResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class CreateUserGroupRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + path: str | None = Field(default=None, alias='Path') + user_group_name: str = Field(alias='UserGroupName') + +class CreateUserGroupResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + user_group: UserGroup | None = Field(default=None, alias='UserGroup') + +class CreateUserRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + path: str | None = Field(default=None, alias='Path') + user_email: str | None = Field(default=None, alias='UserEmail') + user_name: str = Field(alias='UserName') + +class CreateUserResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + user: User | None = Field(default=None, alias='User') + +class CreateVirtualGatewayRequest(GeneratedModel): + connection_type: str = Field(alias='ConnectionType') + dry_run: bool | None = Field(default=None, alias='DryRun') + +class CreateVirtualGatewayResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + virtual_gateway: VirtualGateway | None = Field(default=None, alias='VirtualGateway') + +class CreateVmGroupRequest(GeneratedModel): + description: str | None = Field(default=None, alias='Description') + dry_run: bool | None = Field(default=None, alias='DryRun') + positioning_strategy: Literal['attract', 'no-strategy', 'repulse'] | None = Field(default=None, alias='PositioningStrategy') + security_group_ids: list[str] = Field(alias='SecurityGroupIds') + subnet_id: str = Field(alias='SubnetId') + tags: list[ResourceTag] | None = Field(default=None, alias='Tags') + vm_count: int = Field(alias='VmCount') + vm_group_name: str = Field(alias='VmGroupName') + vm_template_id: str = Field(alias='VmTemplateId') + +class CreateVmGroupResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + vm_group: VmGroup | None = Field(default=None, alias='VmGroup') + +class CreateVmTemplateRequest(GeneratedModel): + cpu_cores: int = Field(alias='CpuCores') + cpu_generation: str = Field(alias='CpuGeneration') + cpu_performance: Literal['medium', 'high', 'highest'] | None = Field(default=None, alias='CpuPerformance') + description: str | None = Field(default=None, alias='Description') + dry_run: bool | None = Field(default=None, alias='DryRun') + image_id: str = Field(alias='ImageId') + keypair_name: str | None = Field(default=None, alias='KeypairName') + ram: int = Field(alias='Ram') + tags: list[ResourceTag] | None = Field(default=None, alias='Tags') + vm_template_name: str = Field(alias='VmTemplateName') + +class CreateVmTemplateResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + vm_template: VmTemplate | None = Field(default=None, alias='VmTemplate') + +class CreateVmsRequest(GeneratedModel): + actions_on_next_boot: ActionsOnNextBoot | None = Field(default=None, alias='ActionsOnNextBoot') + block_device_mappings: list[BlockDeviceMappingVmCreation] | None = Field(default=None, alias='BlockDeviceMappings') + boot_mode: BootMode | None = Field(default=None, alias='BootMode') + boot_on_creation: bool | None = Field(default=None, alias='BootOnCreation') + bsu_optimized: bool | None = Field(default=None, alias='BsuOptimized') + client_token: str | None = Field(default=None, alias='ClientToken') + deletion_protection: bool | None = Field(default=None, alias='DeletionProtection') + dry_run: bool | None = Field(default=None, alias='DryRun') + image_id: str = Field(alias='ImageId') + keypair_name: str | None = Field(default=None, alias='KeypairName') + max_vms_count: int | None = Field(default=None, alias='MaxVmsCount') + min_vms_count: int | None = Field(default=None, alias='MinVmsCount') + nested_virtualization: bool | None = Field(default=None, alias='NestedVirtualization') + nics: list[NicForVmCreation] | None = Field(default=None, alias='Nics') + performance: Literal['medium', 'high', 'highest'] | None = Field(default=None, alias='Performance') + placement: Placement | None = Field(default=None, alias='Placement') + private_ips: list[str] | None = Field(default=None, alias='PrivateIps') + security_group_ids: list[str] | None = Field(default=None, alias='SecurityGroupIds') + security_groups: list[str] | None = Field(default=None, alias='SecurityGroups') + subnet_id: str | None = Field(default=None, alias='SubnetId') + tpm_enabled: bool | None = Field(default=None, alias='TpmEnabled') + user_data: str | None = Field(default=None, alias='UserData') + vm_initiated_shutdown_behavior: str | None = Field(default=None, alias='VmInitiatedShutdownBehavior') + vm_type: str | None = Field(default=None, alias='VmType') + +class CreateVmsResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + vms: list[Vm] | None = Field(default=None, alias='Vms') + +class CreateVolumeRequest(GeneratedModel): + client_token: str | None = Field(default=None, alias='ClientToken') + dry_run: bool | None = Field(default=None, alias='DryRun') + iops: int | None = Field(default=None, alias='Iops') + size: int | None = Field(default=None, alias='Size') + snapshot_id: str | None = Field(default=None, alias='SnapshotId') + subregion_name: str = Field(alias='SubregionName') + volume_type: str | None = Field(default=None, alias='VolumeType') + +class CreateVolumeResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + volume: Volume | None = Field(default=None, alias='Volume') + +class CreateVpnConnectionRequest(GeneratedModel): + client_gateway_id: str = Field(alias='ClientGatewayId') + connection_type: str = Field(alias='ConnectionType') + dry_run: bool | None = Field(default=None, alias='DryRun') + static_routes_only: bool | None = Field(default=None, alias='StaticRoutesOnly') + virtual_gateway_id: str = Field(alias='VirtualGatewayId') + +class CreateVpnConnectionResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + vpn_connection: VpnConnection | None = Field(default=None, alias='VpnConnection') + +class CreateVpnConnectionRouteRequest(GeneratedModel): + destination_ip_range: str = Field(alias='DestinationIpRange') + dry_run: bool | None = Field(default=None, alias='DryRun') + vpn_connection_id: str = Field(alias='VpnConnectionId') + +class CreateVpnConnectionRouteResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class DedicatedGroup(GeneratedModel): + account_id: str | None = Field(default=None, alias='AccountId') + cpu_generation: int | None = Field(default=None, alias='CpuGeneration') + dedicated_group_id: str | None = Field(default=None, alias='DedicatedGroupId') + name: str | None = Field(default=None, alias='Name') + net_ids: list[str] | None = Field(default=None, alias='NetIds') + subregion_name: str | None = Field(default=None, alias='SubregionName') + vm_ids: list[str] | None = Field(default=None, alias='VmIds') + +class DeleteAccessKeyRequest(GeneratedModel): + access_key_id: str = Field(alias='AccessKeyId') + dry_run: bool | None = Field(default=None, alias='DryRun') + user_name: str | None = Field(default=None, alias='UserName') + +class DeleteAccessKeyResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class DeleteApiAccessRuleRequest(GeneratedModel): + api_access_rule_id: str = Field(alias='ApiAccessRuleId') + dry_run: bool | None = Field(default=None, alias='DryRun') + +class DeleteApiAccessRuleResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class DeleteCaRequest(GeneratedModel): + ca_id: str = Field(alias='CaId') + dry_run: bool | None = Field(default=None, alias='DryRun') + +class DeleteCaResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class DeleteClientGatewayRequest(GeneratedModel): + client_gateway_id: str = Field(alias='ClientGatewayId') + dry_run: bool | None = Field(default=None, alias='DryRun') + +class DeleteClientGatewayResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class DeleteDedicatedGroupRequest(GeneratedModel): + dedicated_group_id: str = Field(alias='DedicatedGroupId') + dry_run: bool | None = Field(default=None, alias='DryRun') + force: bool | None = Field(default=None, alias='Force') + +class DeleteDedicatedGroupResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class DeleteDhcpOptionsRequest(GeneratedModel): + dhcp_options_set_id: str = Field(alias='DhcpOptionsSetId') + dry_run: bool | None = Field(default=None, alias='DryRun') + +class DeleteDhcpOptionsResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class DeleteDirectLinkInterfaceRequest(GeneratedModel): + direct_link_interface_id: str = Field(alias='DirectLinkInterfaceId') + dry_run: bool | None = Field(default=None, alias='DryRun') + +class DeleteDirectLinkInterfaceResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class DeleteDirectLinkRequest(GeneratedModel): + direct_link_id: str = Field(alias='DirectLinkId') + dry_run: bool | None = Field(default=None, alias='DryRun') + +class DeleteDirectLinkResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class DeleteExportTaskRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + export_task_id: str = Field(alias='ExportTaskId') + +class DeleteExportTaskResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class DeleteFlexibleGpuRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + flexible_gpu_id: str = Field(alias='FlexibleGpuId') + +class DeleteFlexibleGpuResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class DeleteImageRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + image_id: str = Field(alias='ImageId') + +class DeleteImageResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class DeleteInternetServiceRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + internet_service_id: str = Field(alias='InternetServiceId') + +class DeleteInternetServiceResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class DeleteKeypairRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + keypair_id: str | None = Field(default=None, alias='KeypairId') + keypair_name: str | None = Field(default=None, alias='KeypairName') + +class DeleteKeypairResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class DeleteListenerRuleRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + listener_rule_name: str = Field(alias='ListenerRuleName') + +class DeleteListenerRuleResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class DeleteLoadBalancerListenersRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + load_balancer_name: str = Field(alias='LoadBalancerName') + load_balancer_ports: list[int] = Field(alias='LoadBalancerPorts') + +class DeleteLoadBalancerListenersResponse(GeneratedModel): + load_balancer: LoadBalancer | None = Field(default=None, alias='LoadBalancer') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class DeleteLoadBalancerPolicyRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + load_balancer_name: str = Field(alias='LoadBalancerName') + policy_name: str = Field(alias='PolicyName') + +class DeleteLoadBalancerPolicyResponse(GeneratedModel): + load_balancer: LoadBalancer | None = Field(default=None, alias='LoadBalancer') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class DeleteLoadBalancerRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + load_balancer_name: str = Field(alias='LoadBalancerName') + +class DeleteLoadBalancerResponse(GeneratedModel): + load_balancer: LoadBalancer | None = Field(default=None, alias='LoadBalancer') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class DeleteLoadBalancerTagsRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + load_balancer_names: list[str] = Field(alias='LoadBalancerNames') + tags: list[ResourceLoadBalancerTag] = Field(alias='Tags') + +class DeleteLoadBalancerTagsResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class DeleteNatServiceRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + nat_service_id: str = Field(alias='NatServiceId') + +class DeleteNatServiceResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class DeleteNetAccessPointRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + net_access_point_id: str = Field(alias='NetAccessPointId') + +class DeleteNetAccessPointResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class DeleteNetPeeringRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + net_peering_id: str = Field(alias='NetPeeringId') + +class DeleteNetPeeringResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class DeleteNetRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + net_id: str = Field(alias='NetId') + +class DeleteNetResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class DeleteNicRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + nic_id: str = Field(alias='NicId') + +class DeleteNicResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class DeletePolicyRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + policy_orn: str = Field(alias='PolicyOrn') + +class DeletePolicyResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class DeletePolicyVersionRequest(GeneratedModel): + policy_orn: str = Field(alias='PolicyOrn') + version_id: str = Field(alias='VersionId') + +class DeletePolicyVersionResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class DeleteProductTypeRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + force: bool | None = Field(default=None, alias='Force') + product_type_id: str = Field(alias='ProductTypeId') + +class DeleteProductTypeResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class DeletePublicIpRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + public_ip: str | None = Field(default=None, alias='PublicIp') + public_ip_id: str | None = Field(default=None, alias='PublicIpId') + +class DeletePublicIpResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class DeleteRouteRequest(GeneratedModel): + destination_ip_range: str = Field(alias='DestinationIpRange') + dry_run: bool | None = Field(default=None, alias='DryRun') + route_table_id: str = Field(alias='RouteTableId') + +class DeleteRouteResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + route_table: RouteTable | None = Field(default=None, alias='RouteTable') + +class DeleteRouteTableRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + route_table_id: str = Field(alias='RouteTableId') + +class DeleteRouteTableResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class DeleteSecurityGroupRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + security_group_id: str | None = Field(default=None, alias='SecurityGroupId') + security_group_name: str | None = Field(default=None, alias='SecurityGroupName') + +class DeleteSecurityGroupResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class DeleteSecurityGroupRuleRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + flow: str = Field(alias='Flow') + from_port_range: int | None = Field(default=None, alias='FromPortRange') + ip_protocol: str | None = Field(default=None, alias='IpProtocol') + ip_range: str | None = Field(default=None, alias='IpRange') + rules: list[SecurityGroupRule] | None = Field(default=None, alias='Rules') + security_group_account_id_to_unlink: str | None = Field(default=None, alias='SecurityGroupAccountIdToUnlink') + security_group_id: str = Field(alias='SecurityGroupId') + security_group_name_to_unlink: str | None = Field(default=None, alias='SecurityGroupNameToUnlink') + to_port_range: int | None = Field(default=None, alias='ToPortRange') + +class DeleteSecurityGroupRuleResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + security_group: SecurityGroup | None = Field(default=None, alias='SecurityGroup') + +class DeleteServerCertificateRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + name: str = Field(alias='Name') + +class DeleteServerCertificateResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class DeleteSnapshotRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + snapshot_id: str = Field(alias='SnapshotId') + +class DeleteSnapshotResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class DeleteSubnetRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + subnet_id: str = Field(alias='SubnetId') + +class DeleteSubnetResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class DeleteTagsRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + resource_ids: list[str] = Field(alias='ResourceIds') + tags: list[ResourceTag] = Field(alias='Tags') + +class DeleteTagsResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class DeleteUserGroupPolicyRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + policy_name: str = Field(alias='PolicyName') + user_group_name: str = Field(alias='UserGroupName') + user_group_path: str | None = Field(default=None, alias='UserGroupPath') + +class DeleteUserGroupPolicyResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class DeleteUserGroupRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + force: bool | None = Field(default=None, alias='Force') + path: str | None = Field(default=None, alias='Path') + user_group_name: str = Field(alias='UserGroupName') + +class DeleteUserGroupResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class DeleteUserPolicyRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + policy_name: str = Field(alias='PolicyName') + user_name: str = Field(alias='UserName') + +class DeleteUserPolicyResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class DeleteUserRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + user_name: str = Field(alias='UserName') + +class DeleteUserResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class DeleteVirtualGatewayRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + virtual_gateway_id: str = Field(alias='VirtualGatewayId') + +class DeleteVirtualGatewayResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class DeleteVmGroupRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + vm_group_id: str = Field(alias='VmGroupId') + +class DeleteVmGroupResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class DeleteVmTemplateRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + vm_template_id: str = Field(alias='VmTemplateId') + +class DeleteVmTemplateResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class DeleteVmsRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + vm_ids: list[str] = Field(alias='VmIds') + +class DeleteVmsResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + vms: list[VmState] | None = Field(default=None, alias='Vms') + +class DeleteVolumeRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + volume_id: str = Field(alias='VolumeId') + +class DeleteVolumeResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class DeleteVpnConnectionRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + vpn_connection_id: str = Field(alias='VpnConnectionId') + +class DeleteVpnConnectionResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class DeleteVpnConnectionRouteRequest(GeneratedModel): + destination_ip_range: str = Field(alias='DestinationIpRange') + dry_run: bool | None = Field(default=None, alias='DryRun') + vpn_connection_id: str = Field(alias='VpnConnectionId') + +class DeleteVpnConnectionRouteResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class DeregisterVmsInLoadBalancerRequest(GeneratedModel): + backend_vm_ids: list[str] = Field(alias='BackendVmIds') + dry_run: bool | None = Field(default=None, alias='DryRun') + load_balancer_name: str = Field(alias='LoadBalancerName') + +class DeregisterVmsInLoadBalancerResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class DhcpOptionsSet(GeneratedModel): + default: bool | None = Field(default=None, alias='Default') + dhcp_options_set_id: str | None = Field(default=None, alias='DhcpOptionsSetId') + domain_name: str | None = Field(default=None, alias='DomainName') + domain_name_servers: list[str] | None = Field(default=None, alias='DomainNameServers') + log_servers: list[str] | None = Field(default=None, alias='LogServers') + ntp_servers: list[str] | None = Field(default=None, alias='NtpServers') + tags: list[ResourceTag] | None = Field(default=None, alias='Tags') + +class DirectLink(GeneratedModel): + account_id: str | None = Field(default=None, alias='AccountId') + bandwidth: str | None = Field(default=None, alias='Bandwidth') + direct_link_id: str | None = Field(default=None, alias='DirectLinkId') + direct_link_name: str | None = Field(default=None, alias='DirectLinkName') + location: str | None = Field(default=None, alias='Location') + region_name: str | None = Field(default=None, alias='RegionName') + state: str | None = Field(default=None, alias='State') + +class DirectLinkInterface(GeneratedModel): + bgp_asn: int = Field(alias='BgpAsn') + bgp_key: str | None = Field(default=None, alias='BgpKey') + client_private_ip: str | None = Field(default=None, alias='ClientPrivateIp') + direct_link_interface_name: str = Field(alias='DirectLinkInterfaceName') + outscale_private_ip: str | None = Field(default=None, alias='OutscalePrivateIp') + virtual_gateway_id: str = Field(alias='VirtualGatewayId') + vlan: int = Field(alias='Vlan') + +class DirectLinkInterfaces(GeneratedModel): + account_id: str | None = Field(default=None, alias='AccountId') + bgp_asn: int | None = Field(default=None, alias='BgpAsn') + bgp_key: str | None = Field(default=None, alias='BgpKey') + client_private_ip: str | None = Field(default=None, alias='ClientPrivateIp') + direct_link_id: str | None = Field(default=None, alias='DirectLinkId') + direct_link_interface_id: str | None = Field(default=None, alias='DirectLinkInterfaceId') + direct_link_interface_name: str | None = Field(default=None, alias='DirectLinkInterfaceName') + interface_type: str | None = Field(default=None, alias='InterfaceType') + location: str | None = Field(default=None, alias='Location') + mtu: int | None = Field(default=None, alias='Mtu') + outscale_private_ip: str | None = Field(default=None, alias='OutscalePrivateIp') + state: str | None = Field(default=None, alias='State') + virtual_gateway_id: str | None = Field(default=None, alias='VirtualGatewayId') + vlan: int | None = Field(default=None, alias='Vlan') + +class DisableOutscaleLoginForUsersRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + +class DisableOutscaleLoginForUsersResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class DisableOutscaleLoginPerUsersRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + user_names: list[str] = Field(alias='UserNames') + +class DisableOutscaleLoginPerUsersResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class DisableOutscaleLoginRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + +class DisableOutscaleLoginResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class EnableOutscaleLoginForUsersRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + +class EnableOutscaleLoginForUsersResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class EnableOutscaleLoginPerUsersRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + user_names: list[str] = Field(alias='UserNames') + +class EnableOutscaleLoginPerUsersResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class EnableOutscaleLoginRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + +class EnableOutscaleLoginResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class ErrorResponse(GeneratedModel): + errors: list[Errors] | None = Field(default=None, alias='Errors') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class Errors(GeneratedModel): + code: str | None = Field(default=None, alias='Code') + details: str | None = Field(default=None, alias='Details') + type: str | None = Field(default=None, alias='Type') + +class FiltersAccessKeys(GeneratedModel): + access_key_ids: list[str] | None = Field(default=None, alias='AccessKeyIds') + states: list[str] | None = Field(default=None, alias='States') + +class FiltersApiAccessRule(GeneratedModel): + api_access_rule_ids: list[str] | None = Field(default=None, alias='ApiAccessRuleIds') + ca_ids: list[str] | None = Field(default=None, alias='CaIds') + cns: list[str] | None = Field(default=None, alias='Cns') + descriptions: list[str] | None = Field(default=None, alias='Descriptions') + ip_ranges: list[str] | None = Field(default=None, alias='IpRanges') + +class FiltersApiLog(GeneratedModel): + query_access_keys: list[str] | None = Field(default=None, alias='QueryAccessKeys') + query_api_names: list[str] | None = Field(default=None, alias='QueryApiNames') + query_call_names: list[str] | None = Field(default=None, alias='QueryCallNames') + query_date_after: str | None = Field(default=None, alias='QueryDateAfter') + query_date_before: str | None = Field(default=None, alias='QueryDateBefore') + query_ip_addresses: list[str] | None = Field(default=None, alias='QueryIpAddresses') + query_user_agents: list[str] | None = Field(default=None, alias='QueryUserAgents') + request_ids: list[str] | None = Field(default=None, alias='RequestIds') + response_status_codes: list[int] | None = Field(default=None, alias='ResponseStatusCodes') + +class FiltersCa(GeneratedModel): + ca_fingerprints: list[str] | None = Field(default=None, alias='CaFingerprints') + ca_ids: list[str] | None = Field(default=None, alias='CaIds') + descriptions: list[str] | None = Field(default=None, alias='Descriptions') + +class FiltersCatalogs(GeneratedModel): + current_catalog_only: bool | None = Field(default=None, alias='CurrentCatalogOnly') + from_date: str | None = Field(default=None, alias='FromDate') + to_date: str | None = Field(default=None, alias='ToDate') + +class FiltersClientGateway(GeneratedModel): + bgp_asns: list[int] | None = Field(default=None, alias='BgpAsns') + client_gateway_ids: list[str] | None = Field(default=None, alias='ClientGatewayIds') + connection_types: list[str] | None = Field(default=None, alias='ConnectionTypes') + public_ips: list[str] | None = Field(default=None, alias='PublicIps') + states: list[str] | None = Field(default=None, alias='States') + tag_keys: list[str] | None = Field(default=None, alias='TagKeys') + tag_values: list[str] | None = Field(default=None, alias='TagValues') + tags: list[str] | None = Field(default=None, alias='Tags') + +class FiltersDedicatedGroup(GeneratedModel): + cpu_generations: list[int] | None = Field(default=None, alias='CpuGenerations') + dedicated_group_ids: list[str] | None = Field(default=None, alias='DedicatedGroupIds') + names: list[str] | None = Field(default=None, alias='Names') + subregion_names: list[str] | None = Field(default=None, alias='SubregionNames') + +class FiltersDhcpOptions(GeneratedModel): + default: bool | None = Field(default=None, alias='Default') + dhcp_options_set_ids: list[str] | None = Field(default=None, alias='DhcpOptionsSetIds') + domain_name_servers: list[str] | None = Field(default=None, alias='DomainNameServers') + domain_names: list[str] | None = Field(default=None, alias='DomainNames') + log_servers: list[str] | None = Field(default=None, alias='LogServers') + ntp_servers: list[str] | None = Field(default=None, alias='NtpServers') + tag_keys: list[str] | None = Field(default=None, alias='TagKeys') + tag_values: list[str] | None = Field(default=None, alias='TagValues') + tags: list[str] | None = Field(default=None, alias='Tags') + +class FiltersDirectLink(GeneratedModel): + direct_link_ids: list[str] | None = Field(default=None, alias='DirectLinkIds') + +class FiltersDirectLinkInterface(GeneratedModel): + direct_link_ids: list[str] | None = Field(default=None, alias='DirectLinkIds') + direct_link_interface_ids: list[str] | None = Field(default=None, alias='DirectLinkInterfaceIds') + +class FiltersFlexibleGpu(GeneratedModel): + delete_on_vm_deletion: bool | None = Field(default=None, alias='DeleteOnVmDeletion') + flexible_gpu_ids: list[str] | None = Field(default=None, alias='FlexibleGpuIds') + generations: list[str] | None = Field(default=None, alias='Generations') + model_names: list[str] | None = Field(default=None, alias='ModelNames') + states: list[str] | None = Field(default=None, alias='States') + subregion_names: list[str] | None = Field(default=None, alias='SubregionNames') + tags: list[Tag] | None = Field(default=None, alias='Tags') + vm_ids: list[str] | None = Field(default=None, alias='VmIds') + +class FiltersImage(GeneratedModel): + account_aliases: list[str] | None = Field(default=None, alias='AccountAliases') + account_ids: list[str] | None = Field(default=None, alias='AccountIds') + architectures: list[str] | None = Field(default=None, alias='Architectures') + block_device_mapping_delete_on_vm_deletion: bool | None = Field(default=None, alias='BlockDeviceMappingDeleteOnVmDeletion') + block_device_mapping_device_names: list[str] | None = Field(default=None, alias='BlockDeviceMappingDeviceNames') + block_device_mapping_snapshot_ids: list[str] | None = Field(default=None, alias='BlockDeviceMappingSnapshotIds') + block_device_mapping_volume_sizes: list[int] | None = Field(default=None, alias='BlockDeviceMappingVolumeSizes') + block_device_mapping_volume_types: list[str] | None = Field(default=None, alias='BlockDeviceMappingVolumeTypes') + boot_modes: list[BootMode] | None = Field(default=None, alias='BootModes') + descriptions: list[str] | None = Field(default=None, alias='Descriptions') + file_locations: list[str] | None = Field(default=None, alias='FileLocations') + hypervisors: list[str] | None = Field(default=None, alias='Hypervisors') + image_ids: list[str] | None = Field(default=None, alias='ImageIds') + image_names: list[str] | None = Field(default=None, alias='ImageNames') + permissions_to_launch_account_ids: list[str] | None = Field(default=None, alias='PermissionsToLaunchAccountIds') + permissions_to_launch_global_permission: bool | None = Field(default=None, alias='PermissionsToLaunchGlobalPermission') + product_code_names: list[str] | None = Field(default=None, alias='ProductCodeNames') + product_codes: list[str] | None = Field(default=None, alias='ProductCodes') + root_device_names: list[str] | None = Field(default=None, alias='RootDeviceNames') + root_device_types: list[str] | None = Field(default=None, alias='RootDeviceTypes') + secure_boot: bool | None = Field(default=None, alias='SecureBoot') + states: list[str] | None = Field(default=None, alias='States') + tag_keys: list[str] | None = Field(default=None, alias='TagKeys') + tag_values: list[str] | None = Field(default=None, alias='TagValues') + tags: list[str] | None = Field(default=None, alias='Tags') + tpm_mandatory: bool | None = Field(default=None, alias='TpmMandatory') + virtualization_types: list[str] | None = Field(default=None, alias='VirtualizationTypes') + +class FiltersInternetService(GeneratedModel): + internet_service_ids: list[str] | None = Field(default=None, alias='InternetServiceIds') + link_net_ids: list[str] | None = Field(default=None, alias='LinkNetIds') + link_states: list[str] | None = Field(default=None, alias='LinkStates') + tag_keys: list[str] | None = Field(default=None, alias='TagKeys') + tag_values: list[str] | None = Field(default=None, alias='TagValues') + tags: list[str] | None = Field(default=None, alias='Tags') + +class FiltersKeypair(GeneratedModel): + keypair_fingerprints: list[str] | None = Field(default=None, alias='KeypairFingerprints') + keypair_ids: list[str] | None = Field(default=None, alias='KeypairIds') + keypair_names: list[str] | None = Field(default=None, alias='KeypairNames') + keypair_types: list[str] | None = Field(default=None, alias='KeypairTypes') + tag_keys: list[str] | None = Field(default=None, alias='TagKeys') + tag_values: list[str] | None = Field(default=None, alias='TagValues') + tags: list[str] | None = Field(default=None, alias='Tags') + +class FiltersListenerRule(GeneratedModel): + listener_rule_names: list[str] | None = Field(default=None, alias='ListenerRuleNames') + +class FiltersLoadBalancer(GeneratedModel): + load_balancer_names: list[str] | None = Field(default=None, alias='LoadBalancerNames') + states: list[str] | None = Field(default=None, alias='States') + +class FiltersNatService(GeneratedModel): + client_tokens: list[str] | None = Field(default=None, alias='ClientTokens') + nat_service_ids: list[str] | None = Field(default=None, alias='NatServiceIds') + net_ids: list[str] | None = Field(default=None, alias='NetIds') + states: list[str] | None = Field(default=None, alias='States') + subnet_ids: list[str] | None = Field(default=None, alias='SubnetIds') + tag_keys: list[str] | None = Field(default=None, alias='TagKeys') + tag_values: list[str] | None = Field(default=None, alias='TagValues') + tags: list[str] | None = Field(default=None, alias='Tags') + +class FiltersNet(GeneratedModel): + dhcp_options_set_ids: list[str] | None = Field(default=None, alias='DhcpOptionsSetIds') + ip_ranges: list[str] | None = Field(default=None, alias='IpRanges') + is_default: bool | None = Field(default=None, alias='IsDefault') + net_ids: list[str] | None = Field(default=None, alias='NetIds') + states: list[str] | None = Field(default=None, alias='States') + tag_keys: list[str] | None = Field(default=None, alias='TagKeys') + tag_values: list[str] | None = Field(default=None, alias='TagValues') + tags: list[str] | None = Field(default=None, alias='Tags') + +class FiltersNetAccessPoint(GeneratedModel): + net_access_point_ids: list[str] | None = Field(default=None, alias='NetAccessPointIds') + net_ids: list[str] | None = Field(default=None, alias='NetIds') + service_names: list[str] | None = Field(default=None, alias='ServiceNames') + states: list[str] | None = Field(default=None, alias='States') + tag_keys: list[str] | None = Field(default=None, alias='TagKeys') + tag_values: list[str] | None = Field(default=None, alias='TagValues') + tags: list[str] | None = Field(default=None, alias='Tags') + +class FiltersNetPeering(GeneratedModel): + accepter_net_account_ids: list[str] | None = Field(default=None, alias='AccepterNetAccountIds') + accepter_net_ip_ranges: list[str] | None = Field(default=None, alias='AccepterNetIpRanges') + accepter_net_net_ids: list[str] | None = Field(default=None, alias='AccepterNetNetIds') + expiration_dates: list[str] | None = Field(default=None, alias='ExpirationDates') + net_peering_ids: list[str] | None = Field(default=None, alias='NetPeeringIds') + source_net_account_ids: list[str] | None = Field(default=None, alias='SourceNetAccountIds') + source_net_ip_ranges: list[str] | None = Field(default=None, alias='SourceNetIpRanges') + source_net_net_ids: list[str] | None = Field(default=None, alias='SourceNetNetIds') + state_messages: list[str] | None = Field(default=None, alias='StateMessages') + state_names: list[str] | None = Field(default=None, alias='StateNames') + tag_keys: list[str] | None = Field(default=None, alias='TagKeys') + tag_values: list[str] | None = Field(default=None, alias='TagValues') + tags: list[str] | None = Field(default=None, alias='Tags') + +class FiltersNic(GeneratedModel): + descriptions: list[str] | None = Field(default=None, alias='Descriptions') + is_source_dest_check: bool | None = Field(default=None, alias='IsSourceDestCheck') + link_nic_delete_on_vm_deletion: bool | None = Field(default=None, alias='LinkNicDeleteOnVmDeletion') + link_nic_device_numbers: list[int] | None = Field(default=None, alias='LinkNicDeviceNumbers') + link_nic_link_nic_ids: list[str] | None = Field(default=None, alias='LinkNicLinkNicIds') + link_nic_states: list[str] | None = Field(default=None, alias='LinkNicStates') + link_nic_vm_account_ids: list[str] | None = Field(default=None, alias='LinkNicVmAccountIds') + link_nic_vm_ids: list[str] | None = Field(default=None, alias='LinkNicVmIds') + link_public_ip_account_ids: list[str] | None = Field(default=None, alias='LinkPublicIpAccountIds') + link_public_ip_link_public_ip_ids: list[str] | None = Field(default=None, alias='LinkPublicIpLinkPublicIpIds') + link_public_ip_public_dns_names: list[str] | None = Field(default=None, alias='LinkPublicIpPublicDnsNames') + link_public_ip_public_ip_ids: list[str] | None = Field(default=None, alias='LinkPublicIpPublicIpIds') + link_public_ip_public_ips: list[str] | None = Field(default=None, alias='LinkPublicIpPublicIps') + mac_addresses: list[str] | None = Field(default=None, alias='MacAddresses') + net_ids: list[str] | None = Field(default=None, alias='NetIds') + nic_ids: list[str] | None = Field(default=None, alias='NicIds') + private_dns_names: list[str] | None = Field(default=None, alias='PrivateDnsNames') + private_ips_link_public_ip_account_ids: list[str] | None = Field(default=None, alias='PrivateIpsLinkPublicIpAccountIds') + private_ips_link_public_ip_public_ips: list[str] | None = Field(default=None, alias='PrivateIpsLinkPublicIpPublicIps') + private_ips_primary_ip: bool | None = Field(default=None, alias='PrivateIpsPrimaryIp') + private_ips_private_ips: list[str] | None = Field(default=None, alias='PrivateIpsPrivateIps') + security_group_ids: list[str] | None = Field(default=None, alias='SecurityGroupIds') + security_group_names: list[str] | None = Field(default=None, alias='SecurityGroupNames') + states: list[str] | None = Field(default=None, alias='States') + subnet_ids: list[str] | None = Field(default=None, alias='SubnetIds') + subregion_names: list[str] | None = Field(default=None, alias='SubregionNames') + tag_keys: list[str] | None = Field(default=None, alias='TagKeys') + tag_values: list[str] | None = Field(default=None, alias='TagValues') + tags: list[str] | None = Field(default=None, alias='Tags') + +class FiltersProductType(GeneratedModel): + product_type_ids: list[str] | None = Field(default=None, alias='ProductTypeIds') + +class FiltersPublicIp(GeneratedModel): + link_public_ip_ids: list[str] | None = Field(default=None, alias='LinkPublicIpIds') + nic_account_ids: list[str] | None = Field(default=None, alias='NicAccountIds') + nic_ids: list[str] | None = Field(default=None, alias='NicIds') + placements: list[str] | None = Field(default=None, alias='Placements') + private_ips: list[str] | None = Field(default=None, alias='PrivateIps') + public_ip_ids: list[str] | None = Field(default=None, alias='PublicIpIds') + public_ips: list[str] | None = Field(default=None, alias='PublicIps') + tag_keys: list[str] | None = Field(default=None, alias='TagKeys') + tag_values: list[str] | None = Field(default=None, alias='TagValues') + tags: list[str] | None = Field(default=None, alias='Tags') + vm_ids: list[str] | None = Field(default=None, alias='VmIds') + +class FiltersQuota(GeneratedModel): + collections: list[str] | None = Field(default=None, alias='Collections') + quota_names: list[str] | None = Field(default=None, alias='QuotaNames') + quota_types: list[str] | None = Field(default=None, alias='QuotaTypes') + short_descriptions: list[str] | None = Field(default=None, alias='ShortDescriptions') + +class FiltersReadImageExportTask(GeneratedModel): + image_ids: list[str] | None = Field(default=None, alias='ImageIds') + task_ids: list[str] | None = Field(default=None, alias='TaskIds') + +class FiltersReadVolumeUpdateTask(GeneratedModel): + task_ids: list[str] | None = Field(default=None, alias='TaskIds') + volume_ids: list[str] | None = Field(default=None, alias='VolumeIds') + +class FiltersRouteTable(GeneratedModel): + link_route_table_ids: list[str] | None = Field(default=None, alias='LinkRouteTableIds') + link_route_table_link_route_table_ids: list[str] | None = Field(default=None, alias='LinkRouteTableLinkRouteTableIds') + link_route_table_main: bool | None = Field(default=None, alias='LinkRouteTableMain') + link_subnet_ids: list[str] | None = Field(default=None, alias='LinkSubnetIds') + net_ids: list[str] | None = Field(default=None, alias='NetIds') + route_creation_methods: list[str] | None = Field(default=None, alias='RouteCreationMethods') + route_destination_ip_ranges: list[str] | None = Field(default=None, alias='RouteDestinationIpRanges') + route_destination_service_ids: list[str] | None = Field(default=None, alias='RouteDestinationServiceIds') + route_gateway_ids: list[str] | None = Field(default=None, alias='RouteGatewayIds') + route_nat_service_ids: list[str] | None = Field(default=None, alias='RouteNatServiceIds') + route_net_peering_ids: list[str] | None = Field(default=None, alias='RouteNetPeeringIds') + route_states: list[str] | None = Field(default=None, alias='RouteStates') + route_table_ids: list[str] | None = Field(default=None, alias='RouteTableIds') + route_vm_ids: list[str] | None = Field(default=None, alias='RouteVmIds') + tag_keys: list[str] | None = Field(default=None, alias='TagKeys') + tag_values: list[str] | None = Field(default=None, alias='TagValues') + tags: list[str] | None = Field(default=None, alias='Tags') + +class FiltersSecurityGroup(GeneratedModel): + descriptions: list[str] | None = Field(default=None, alias='Descriptions') + inbound_rule_account_ids: list[str] | None = Field(default=None, alias='InboundRuleAccountIds') + inbound_rule_from_port_ranges: list[int] | None = Field(default=None, alias='InboundRuleFromPortRanges') + inbound_rule_ip_ranges: list[str] | None = Field(default=None, alias='InboundRuleIpRanges') + inbound_rule_protocols: list[str] | None = Field(default=None, alias='InboundRuleProtocols') + inbound_rule_security_group_ids: list[str] | None = Field(default=None, alias='InboundRuleSecurityGroupIds') + inbound_rule_security_group_names: list[str] | None = Field(default=None, alias='InboundRuleSecurityGroupNames') + inbound_rule_to_port_ranges: list[int] | None = Field(default=None, alias='InboundRuleToPortRanges') + net_ids: list[str] | None = Field(default=None, alias='NetIds') + outbound_rule_account_ids: list[str] | None = Field(default=None, alias='OutboundRuleAccountIds') + outbound_rule_from_port_ranges: list[int] | None = Field(default=None, alias='OutboundRuleFromPortRanges') + outbound_rule_ip_ranges: list[str] | None = Field(default=None, alias='OutboundRuleIpRanges') + outbound_rule_protocols: list[str] | None = Field(default=None, alias='OutboundRuleProtocols') + outbound_rule_security_group_ids: list[str] | None = Field(default=None, alias='OutboundRuleSecurityGroupIds') + outbound_rule_security_group_names: list[str] | None = Field(default=None, alias='OutboundRuleSecurityGroupNames') + outbound_rule_to_port_ranges: list[int] | None = Field(default=None, alias='OutboundRuleToPortRanges') + security_group_ids: list[str] | None = Field(default=None, alias='SecurityGroupIds') + security_group_names: list[str] | None = Field(default=None, alias='SecurityGroupNames') + tag_keys: list[str] | None = Field(default=None, alias='TagKeys') + tag_values: list[str] | None = Field(default=None, alias='TagValues') + tags: list[str] | None = Field(default=None, alias='Tags') + +class FiltersServerCertificate(GeneratedModel): + paths: list[str] | None = Field(default=None, alias='Paths') + +class FiltersService(GeneratedModel): + service_ids: list[str] | None = Field(default=None, alias='ServiceIds') + service_names: list[str] | None = Field(default=None, alias='ServiceNames') + +class FiltersSnapshot(GeneratedModel): + account_aliases: list[str] | None = Field(default=None, alias='AccountAliases') + account_ids: list[str] | None = Field(default=None, alias='AccountIds') + client_tokens: list[str] | None = Field(default=None, alias='ClientTokens') + descriptions: list[str] | None = Field(default=None, alias='Descriptions') + from_creation_date: str | None = Field(default=None, alias='FromCreationDate') + permissions_to_create_volume_account_ids: list[str] | None = Field(default=None, alias='PermissionsToCreateVolumeAccountIds') + permissions_to_create_volume_global_permission: bool | None = Field(default=None, alias='PermissionsToCreateVolumeGlobalPermission') + progresses: list[int] | None = Field(default=None, alias='Progresses') + snapshot_ids: list[str] | None = Field(default=None, alias='SnapshotIds') + states: list[str] | None = Field(default=None, alias='States') + tag_keys: list[str] | None = Field(default=None, alias='TagKeys') + tag_values: list[str] | None = Field(default=None, alias='TagValues') + tags: list[str] | None = Field(default=None, alias='Tags') + to_creation_date: str | None = Field(default=None, alias='ToCreationDate') + volume_ids: list[str] | None = Field(default=None, alias='VolumeIds') + volume_sizes: list[int] | None = Field(default=None, alias='VolumeSizes') + +class FiltersSnapshotExportTask(GeneratedModel): + snapshot_ids: list[str] | None = Field(default=None, alias='SnapshotIds') + task_ids: list[str] | None = Field(default=None, alias='TaskIds') + +class FiltersSubnet(GeneratedModel): + available_ips_counts: list[int] | None = Field(default=None, alias='AvailableIpsCounts') + ip_ranges: list[str] | None = Field(default=None, alias='IpRanges') + net_ids: list[str] | None = Field(default=None, alias='NetIds') + states: list[str] | None = Field(default=None, alias='States') + subnet_ids: list[str] | None = Field(default=None, alias='SubnetIds') + subregion_names: list[str] | None = Field(default=None, alias='SubregionNames') + tag_keys: list[str] | None = Field(default=None, alias='TagKeys') + tag_values: list[str] | None = Field(default=None, alias='TagValues') + tags: list[str] | None = Field(default=None, alias='Tags') + +class FiltersSubregion(GeneratedModel): + region_names: list[str] | None = Field(default=None, alias='RegionNames') + states: list[str] | None = Field(default=None, alias='States') + subregion_names: list[str] | None = Field(default=None, alias='SubregionNames') + +class FiltersTag(GeneratedModel): + keys: list[str] | None = Field(default=None, alias='Keys') + resource_ids: list[str] | None = Field(default=None, alias='ResourceIds') + resource_types: list[str] | None = Field(default=None, alias='ResourceTypes') + values: list[str] | None = Field(default=None, alias='Values') + +class FiltersUserGroup(GeneratedModel): + path_prefix: str | None = Field(default=None, alias='PathPrefix') + user_group_ids: list[str] | None = Field(default=None, alias='UserGroupIds') + +class FiltersUsers(GeneratedModel): + user_ids: list[str] | None = Field(default=None, alias='UserIds') + +class FiltersVirtualGateway(GeneratedModel): + connection_types: list[str] | None = Field(default=None, alias='ConnectionTypes') + link_net_ids: list[str] | None = Field(default=None, alias='LinkNetIds') + link_states: list[str] | None = Field(default=None, alias='LinkStates') + states: list[str] | None = Field(default=None, alias='States') + tag_keys: list[str] | None = Field(default=None, alias='TagKeys') + tag_values: list[str] | None = Field(default=None, alias='TagValues') + tags: list[str] | None = Field(default=None, alias='Tags') + virtual_gateway_ids: list[str] | None = Field(default=None, alias='VirtualGatewayIds') + +class FiltersVm(GeneratedModel): + architectures: list[str] | None = Field(default=None, alias='Architectures') + block_device_mapping_delete_on_vm_deletion: bool | None = Field(default=None, alias='BlockDeviceMappingDeleteOnVmDeletion') + block_device_mapping_device_names: list[str] | None = Field(default=None, alias='BlockDeviceMappingDeviceNames') + block_device_mapping_link_dates: list[str] | None = Field(default=None, alias='BlockDeviceMappingLinkDates') + block_device_mapping_states: list[str] | None = Field(default=None, alias='BlockDeviceMappingStates') + block_device_mapping_volume_ids: list[str] | None = Field(default=None, alias='BlockDeviceMappingVolumeIds') + boot_modes: list[BootMode] | None = Field(default=None, alias='BootModes') + client_tokens: list[str] | None = Field(default=None, alias='ClientTokens') + creation_dates: list[str] | None = Field(default=None, alias='CreationDates') + image_ids: list[str] | None = Field(default=None, alias='ImageIds') + is_source_dest_checked: bool | None = Field(default=None, alias='IsSourceDestChecked') + keypair_names: list[str] | None = Field(default=None, alias='KeypairNames') + launch_numbers: list[int] | None = Field(default=None, alias='LaunchNumbers') + lifecycles: list[str] | None = Field(default=None, alias='Lifecycles') + net_ids: list[str] | None = Field(default=None, alias='NetIds') + nic_account_ids: list[str] | None = Field(default=None, alias='NicAccountIds') + nic_descriptions: list[str] | None = Field(default=None, alias='NicDescriptions') + nic_is_source_dest_checked: bool | None = Field(default=None, alias='NicIsSourceDestChecked') + nic_link_nic_delete_on_vm_deletion: bool | None = Field(default=None, alias='NicLinkNicDeleteOnVmDeletion') + nic_link_nic_device_numbers: list[int] | None = Field(default=None, alias='NicLinkNicDeviceNumbers') + nic_link_nic_link_nic_dates: list[str] | None = Field(default=None, alias='NicLinkNicLinkNicDates') + nic_link_nic_link_nic_ids: list[str] | None = Field(default=None, alias='NicLinkNicLinkNicIds') + nic_link_nic_states: list[str] | None = Field(default=None, alias='NicLinkNicStates') + nic_link_nic_vm_account_ids: list[str] | None = Field(default=None, alias='NicLinkNicVmAccountIds') + nic_link_nic_vm_ids: list[str] | None = Field(default=None, alias='NicLinkNicVmIds') + nic_link_public_ip_account_ids: list[str] | None = Field(default=None, alias='NicLinkPublicIpAccountIds') + nic_link_public_ip_link_public_ip_ids: list[str] | None = Field(default=None, alias='NicLinkPublicIpLinkPublicIpIds') + nic_link_public_ip_public_ip_ids: list[str] | None = Field(default=None, alias='NicLinkPublicIpPublicIpIds') + nic_link_public_ip_public_ips: list[str] | None = Field(default=None, alias='NicLinkPublicIpPublicIps') + nic_mac_addresses: list[str] | None = Field(default=None, alias='NicMacAddresses') + nic_net_ids: list[str] | None = Field(default=None, alias='NicNetIds') + nic_nic_ids: list[str] | None = Field(default=None, alias='NicNicIds') + nic_private_ips_link_public_ip_account_ids: list[str] | None = Field(default=None, alias='NicPrivateIpsLinkPublicIpAccountIds') + nic_private_ips_link_public_ip_ids: list[str] | None = Field(default=None, alias='NicPrivateIpsLinkPublicIpIds') + nic_private_ips_primary_ip: bool | None = Field(default=None, alias='NicPrivateIpsPrimaryIp') + nic_private_ips_private_ips: list[str] | None = Field(default=None, alias='NicPrivateIpsPrivateIps') + nic_security_group_ids: list[str] | None = Field(default=None, alias='NicSecurityGroupIds') + nic_security_group_names: list[str] | None = Field(default=None, alias='NicSecurityGroupNames') + nic_states: list[str] | None = Field(default=None, alias='NicStates') + nic_subnet_ids: list[str] | None = Field(default=None, alias='NicSubnetIds') + nic_subregion_names: list[str] | None = Field(default=None, alias='NicSubregionNames') + platforms: list[str] | None = Field(default=None, alias='Platforms') + private_ips: list[str] | None = Field(default=None, alias='PrivateIps') + product_codes: list[str] | None = Field(default=None, alias='ProductCodes') + public_ips: list[str] | None = Field(default=None, alias='PublicIps') + reservation_ids: list[str] | None = Field(default=None, alias='ReservationIds') + root_device_names: list[str] | None = Field(default=None, alias='RootDeviceNames') + root_device_types: list[str] | None = Field(default=None, alias='RootDeviceTypes') + security_group_ids: list[str] | None = Field(default=None, alias='SecurityGroupIds') + security_group_names: list[str] | None = Field(default=None, alias='SecurityGroupNames') + state_reason_codes: list[int] | None = Field(default=None, alias='StateReasonCodes') + state_reason_messages: list[str] | None = Field(default=None, alias='StateReasonMessages') + state_reasons: list[str] | None = Field(default=None, alias='StateReasons') + subnet_ids: list[str] | None = Field(default=None, alias='SubnetIds') + subregion_names: list[str] | None = Field(default=None, alias='SubregionNames') + tag_keys: list[str] | None = Field(default=None, alias='TagKeys') + tag_values: list[str] | None = Field(default=None, alias='TagValues') + tags: list[str] | None = Field(default=None, alias='Tags') + tenancies: list[str] | None = Field(default=None, alias='Tenancies') + tpm_enabled: bool | None = Field(default=None, alias='TpmEnabled') + vm_ids: list[str] | None = Field(default=None, alias='VmIds') + vm_security_group_ids: list[str] | None = Field(default=None, alias='VmSecurityGroupIds') + vm_security_group_names: list[str] | None = Field(default=None, alias='VmSecurityGroupNames') + vm_state_codes: list[int] | None = Field(default=None, alias='VmStateCodes') + vm_state_names: list[str] | None = Field(default=None, alias='VmStateNames') + vm_types: list[str] | None = Field(default=None, alias='VmTypes') + +class FiltersVmGroup(GeneratedModel): + descriptions: list[str] | None = Field(default=None, alias='Descriptions') + security_group_ids: list[str] | None = Field(default=None, alias='SecurityGroupIds') + subnet_ids: list[str] | None = Field(default=None, alias='SubnetIds') + tag_keys: list[str] | None = Field(default=None, alias='TagKeys') + tag_values: list[str] | None = Field(default=None, alias='TagValues') + tags: list[str] | None = Field(default=None, alias='Tags') + vm_counts: list[int] | None = Field(default=None, alias='VmCounts') + vm_group_ids: list[str] | None = Field(default=None, alias='VmGroupIds') + vm_group_names: list[str] | None = Field(default=None, alias='VmGroupNames') + vm_template_ids: list[str] | None = Field(default=None, alias='VmTemplateIds') + +class FiltersVmTemplate(GeneratedModel): + cpu_cores: list[int] | None = Field(default=None, alias='CpuCores') + cpu_generations: list[str] | None = Field(default=None, alias='CpuGenerations') + cpu_performances: list[str] | None = Field(default=None, alias='CpuPerformances') + descriptions: list[str] | None = Field(default=None, alias='Descriptions') + image_ids: list[str] | None = Field(default=None, alias='ImageIds') + keypair_names: list[str] | None = Field(default=None, alias='KeypairNames') + rams: list[int] | None = Field(default=None, alias='Rams') + tag_keys: list[str] | None = Field(default=None, alias='TagKeys') + tag_values: list[str] | None = Field(default=None, alias='TagValues') + tags: list[str] | None = Field(default=None, alias='Tags') + vm_template_ids: list[str] | None = Field(default=None, alias='VmTemplateIds') + vm_template_names: list[str] | None = Field(default=None, alias='VmTemplateNames') + +class FiltersVmType(GeneratedModel): + bsu_optimized: bool | None = Field(default=None, alias='BsuOptimized') + ephemerals_types: list[str] | None = Field(default=None, alias='EphemeralsTypes') + eths: list[int] | None = Field(default=None, alias='Eths') + gpus: list[int] | None = Field(default=None, alias='Gpus') + memory_sizes: list[float] | None = Field(default=None, alias='MemorySizes') + vcore_counts: list[int] | None = Field(default=None, alias='VcoreCounts') + vm_type_names: list[str] | None = Field(default=None, alias='VmTypeNames') + volume_counts: list[int] | None = Field(default=None, alias='VolumeCounts') + volume_sizes: list[int] | None = Field(default=None, alias='VolumeSizes') + +class FiltersVmsState(GeneratedModel): + maintenance_event_codes: list[str] | None = Field(default=None, alias='MaintenanceEventCodes') + maintenance_event_descriptions: list[str] | None = Field(default=None, alias='MaintenanceEventDescriptions') + maintenance_events_not_after: list[str] | None = Field(default=None, alias='MaintenanceEventsNotAfter') + maintenance_events_not_before: list[str] | None = Field(default=None, alias='MaintenanceEventsNotBefore') + subregion_names: list[str] | None = Field(default=None, alias='SubregionNames') + vm_ids: list[str] | None = Field(default=None, alias='VmIds') + vm_states: list[str] | None = Field(default=None, alias='VmStates') + +class FiltersVolume(GeneratedModel): + client_tokens: list[str] | None = Field(default=None, alias='ClientTokens') + creation_dates: list[str] | None = Field(default=None, alias='CreationDates') + link_volume_delete_on_vm_deletion: bool | None = Field(default=None, alias='LinkVolumeDeleteOnVmDeletion') + link_volume_device_names: list[str] | None = Field(default=None, alias='LinkVolumeDeviceNames') + link_volume_link_dates: list[str] | None = Field(default=None, alias='LinkVolumeLinkDates') + link_volume_link_states: list[str] | None = Field(default=None, alias='LinkVolumeLinkStates') + link_volume_vm_ids: list[str] | None = Field(default=None, alias='LinkVolumeVmIds') + snapshot_ids: list[str] | None = Field(default=None, alias='SnapshotIds') + subregion_names: list[str] | None = Field(default=None, alias='SubregionNames') + tag_keys: list[str] | None = Field(default=None, alias='TagKeys') + tag_values: list[str] | None = Field(default=None, alias='TagValues') + tags: list[str] | None = Field(default=None, alias='Tags') + volume_ids: list[str] | None = Field(default=None, alias='VolumeIds') + volume_sizes: list[int] | None = Field(default=None, alias='VolumeSizes') + volume_states: list[str] | None = Field(default=None, alias='VolumeStates') + volume_types: list[str] | None = Field(default=None, alias='VolumeTypes') + +class FiltersVpnConnection(GeneratedModel): + bgp_asns: list[int] | None = Field(default=None, alias='BgpAsns') + client_gateway_ids: list[str] | None = Field(default=None, alias='ClientGatewayIds') + connection_types: list[str] | None = Field(default=None, alias='ConnectionTypes') + route_destination_ip_ranges: list[str] | None = Field(default=None, alias='RouteDestinationIpRanges') + states: list[str] | None = Field(default=None, alias='States') + static_routes_only: bool | None = Field(default=None, alias='StaticRoutesOnly') + tag_keys: list[str] | None = Field(default=None, alias='TagKeys') + tag_values: list[str] | None = Field(default=None, alias='TagValues') + tags: list[str] | None = Field(default=None, alias='Tags') + virtual_gateway_ids: list[str] | None = Field(default=None, alias='VirtualGatewayIds') + vpn_connection_ids: list[str] | None = Field(default=None, alias='VpnConnectionIds') + +class FlexibleGpu(GeneratedModel): + delete_on_vm_deletion: bool | None = Field(default=None, alias='DeleteOnVmDeletion') + flexible_gpu_id: str | None = Field(default=None, alias='FlexibleGpuId') + generation: str | None = Field(default=None, alias='Generation') + model_name: str | None = Field(default=None, alias='ModelName') + state: str | None = Field(default=None, alias='State') + subregion_name: str | None = Field(default=None, alias='SubregionName') + tags: list[Tag] | None = Field(default=None, alias='Tags') + vm_id: str | None = Field(default=None, alias='VmId') + +class FlexibleGpuCatalog(GeneratedModel): + generations: list[str] | None = Field(default=None, alias='Generations') + max_cpu: int | None = Field(default=None, alias='MaxCpu') + max_ram: int | None = Field(default=None, alias='MaxRam') + model_name: str | None = Field(default=None, alias='ModelName') + v_ram: int | None = Field(default=None, alias='VRam') + +class HealthCheck(GeneratedModel): + check_interval: int = Field(alias='CheckInterval') + healthy_threshold: int = Field(alias='HealthyThreshold') + path: str | None = Field(default=None, alias='Path') + port: int = Field(alias='Port') + protocol: str = Field(alias='Protocol') + timeout: int = Field(alias='Timeout') + unhealthy_threshold: int = Field(alias='UnhealthyThreshold') + +class Image(GeneratedModel): + account_alias: str | None = Field(default=None, alias='AccountAlias') + account_id: str | None = Field(default=None, alias='AccountId') + architecture: str | None = Field(default=None, alias='Architecture') + block_device_mappings: list[BlockDeviceMappingImage] | None = Field(default=None, alias='BlockDeviceMappings') + boot_modes: list[BootMode] | None = Field(default=None, alias='BootModes') + creation_date: str | None = Field(default=None, alias='CreationDate') + description: str | None = Field(default=None, alias='Description') + file_location: str | None = Field(default=None, alias='FileLocation') + image_id: str | None = Field(default=None, alias='ImageId') + image_name: str | None = Field(default=None, alias='ImageName') + image_type: str | None = Field(default=None, alias='ImageType') + permissions_to_launch: PermissionsOnResource | None = Field(default=None, alias='PermissionsToLaunch') + product_codes: list[str] | None = Field(default=None, alias='ProductCodes') + root_device_name: str | None = Field(default=None, alias='RootDeviceName') + root_device_type: str | None = Field(default=None, alias='RootDeviceType') + secure_boot: bool | None = Field(default=None, alias='SecureBoot') + state: str | None = Field(default=None, alias='State') + state_comment: StateComment | None = Field(default=None, alias='StateComment') + tags: list[ResourceTag] | None = Field(default=None, alias='Tags') + tpm_mandatory: bool | None = Field(default=None, alias='TpmMandatory') + +class ImageExportTask(GeneratedModel): + comment: str | None = Field(default=None, alias='Comment') + image_id: str | None = Field(default=None, alias='ImageId') + osu_export: OsuExportImageExportTask | None = Field(default=None, alias='OsuExport') + progress: int | None = Field(default=None, alias='Progress') + state: str | None = Field(default=None, alias='State') + tags: list[ResourceTag] | None = Field(default=None, alias='Tags') + task_id: str | None = Field(default=None, alias='TaskId') + +class InlinePolicy(GeneratedModel): + body: str | None = Field(default=None, alias='Body') + name: str | None = Field(default=None, alias='Name') + +class InternetService(GeneratedModel): + internet_service_id: str | None = Field(default=None, alias='InternetServiceId') + net_id: str | None = Field(default=None, alias='NetId') + state: str | None = Field(default=None, alias='State') + tags: list[ResourceTag] | None = Field(default=None, alias='Tags') + +class Keypair(GeneratedModel): + keypair_fingerprint: str | None = Field(default=None, alias='KeypairFingerprint') + keypair_id: str | None = Field(default=None, alias='KeypairId') + keypair_name: str | None = Field(default=None, alias='KeypairName') + keypair_type: str | None = Field(default=None, alias='KeypairType') + tags: list[ResourceTag] | None = Field(default=None, alias='Tags') + +class KeypairCreated(GeneratedModel): + keypair_fingerprint: str | None = Field(default=None, alias='KeypairFingerprint') + keypair_id: str | None = Field(default=None, alias='KeypairId') + keypair_name: str | None = Field(default=None, alias='KeypairName') + keypair_type: str | None = Field(default=None, alias='KeypairType') + private_key: str | None = Field(default=None, alias='PrivateKey') + tags: list[ResourceTag] | None = Field(default=None, alias='Tags') + +class LinkFlexibleGpuRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + flexible_gpu_id: str = Field(alias='FlexibleGpuId') + vm_id: str = Field(alias='VmId') + +class LinkFlexibleGpuResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class LinkInternetServiceRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + internet_service_id: str = Field(alias='InternetServiceId') + net_id: str = Field(alias='NetId') + +class LinkInternetServiceResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class LinkLoadBalancerBackendMachinesRequest(GeneratedModel): + backend_ips: list[str] | None = Field(default=None, alias='BackendIps') + backend_vm_ids: list[str] | None = Field(default=None, alias='BackendVmIds') + dry_run: bool | None = Field(default=None, alias='DryRun') + load_balancer_name: str = Field(alias='LoadBalancerName') + +class LinkLoadBalancerBackendMachinesResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class LinkManagedPolicyToUserGroupRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + policy_orn: str = Field(alias='PolicyOrn') + user_group_name: str = Field(alias='UserGroupName') + +class LinkManagedPolicyToUserGroupResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class LinkNic(GeneratedModel): + delete_on_vm_deletion: bool | None = Field(default=None, alias='DeleteOnVmDeletion') + device_number: int | None = Field(default=None, alias='DeviceNumber') + link_nic_id: str | None = Field(default=None, alias='LinkNicId') + state: str | None = Field(default=None, alias='State') + vm_account_id: str | None = Field(default=None, alias='VmAccountId') + vm_id: str | None = Field(default=None, alias='VmId') + +class LinkNicLight(GeneratedModel): + delete_on_vm_deletion: bool | None = Field(default=None, alias='DeleteOnVmDeletion') + device_number: int | None = Field(default=None, alias='DeviceNumber') + link_nic_id: str | None = Field(default=None, alias='LinkNicId') + state: str | None = Field(default=None, alias='State') + +class LinkNicRequest(GeneratedModel): + device_number: int = Field(alias='DeviceNumber') + dry_run: bool | None = Field(default=None, alias='DryRun') + nic_id: str = Field(alias='NicId') + vm_id: str = Field(alias='VmId') + +class LinkNicResponse(GeneratedModel): + link_nic_id: str | None = Field(default=None, alias='LinkNicId') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class LinkNicToUpdate(GeneratedModel): + delete_on_vm_deletion: bool | None = Field(default=None, alias='DeleteOnVmDeletion') + link_nic_id: str | None = Field(default=None, alias='LinkNicId') + +class LinkPolicyRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + policy_orn: str = Field(alias='PolicyOrn') + user_name: str = Field(alias='UserName') + +class LinkPolicyResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class LinkPrivateIpsRequest(GeneratedModel): + allow_relink: bool | None = Field(default=None, alias='AllowRelink') + dry_run: bool | None = Field(default=None, alias='DryRun') + nic_id: str = Field(alias='NicId') + private_ips: list[str] | None = Field(default=None, alias='PrivateIps') + secondary_private_ip_count: int | None = Field(default=None, alias='SecondaryPrivateIpCount') + +class LinkPrivateIpsResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class LinkPublicIp(GeneratedModel): + link_public_ip_id: str | None = Field(default=None, alias='LinkPublicIpId') + public_dns_name: str | None = Field(default=None, alias='PublicDnsName') + public_ip: str | None = Field(default=None, alias='PublicIp') + public_ip_account_id: str | None = Field(default=None, alias='PublicIpAccountId') + public_ip_id: str | None = Field(default=None, alias='PublicIpId') + +class LinkPublicIpLightForVm(GeneratedModel): + public_dns_name: str | None = Field(default=None, alias='PublicDnsName') + public_ip: str | None = Field(default=None, alias='PublicIp') + public_ip_account_id: str | None = Field(default=None, alias='PublicIpAccountId') + +class LinkPublicIpRequest(GeneratedModel): + allow_relink: bool | None = Field(default=None, alias='AllowRelink') + dry_run: bool | None = Field(default=None, alias='DryRun') + nic_id: str | None = Field(default=None, alias='NicId') + private_ip: str | None = Field(default=None, alias='PrivateIp') + public_ip: str | None = Field(default=None, alias='PublicIp') + public_ip_id: str | None = Field(default=None, alias='PublicIpId') + vm_id: str | None = Field(default=None, alias='VmId') + +class LinkPublicIpResponse(GeneratedModel): + link_public_ip_id: str | None = Field(default=None, alias='LinkPublicIpId') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class LinkRouteTable(GeneratedModel): + link_route_table_id: str | None = Field(default=None, alias='LinkRouteTableId') + main: bool | None = Field(default=None, alias='Main') + net_id: str | None = Field(default=None, alias='NetId') + route_table_id: str | None = Field(default=None, alias='RouteTableId') + subnet_id: str | None = Field(default=None, alias='SubnetId') + +class LinkRouteTableRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + route_table_id: str = Field(alias='RouteTableId') + subnet_id: str = Field(alias='SubnetId') + +class LinkRouteTableResponse(GeneratedModel): + link_route_table_id: str | None = Field(default=None, alias='LinkRouteTableId') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class LinkVirtualGatewayRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + net_id: str = Field(alias='NetId') + virtual_gateway_id: str = Field(alias='VirtualGatewayId') + +class LinkVirtualGatewayResponse(GeneratedModel): + net_to_virtual_gateway_link: NetToVirtualGatewayLink | None = Field(default=None, alias='NetToVirtualGatewayLink') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class LinkVolumeRequest(GeneratedModel): + device_name: str = Field(alias='DeviceName') + dry_run: bool | None = Field(default=None, alias='DryRun') + vm_id: str = Field(alias='VmId') + volume_id: str = Field(alias='VolumeId') + +class LinkVolumeResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class LinkedPolicy(GeneratedModel): + creation_date: str | None = Field(default=None, alias='CreationDate') + last_modification_date: str | None = Field(default=None, alias='LastModificationDate') + orn: str | None = Field(default=None, alias='Orn') + policy_id: str | None = Field(default=None, alias='PolicyId') + policy_name: str | None = Field(default=None, alias='PolicyName') + +class LinkedVolume(GeneratedModel): + delete_on_vm_deletion: bool | None = Field(default=None, alias='DeleteOnVmDeletion') + device_name: str | None = Field(default=None, alias='DeviceName') + state: str | None = Field(default=None, alias='State') + vm_id: str | None = Field(default=None, alias='VmId') + volume_id: str | None = Field(default=None, alias='VolumeId') + +class Listener(GeneratedModel): + backend_port: int | None = Field(default=None, alias='BackendPort') + backend_protocol: str | None = Field(default=None, alias='BackendProtocol') + load_balancer_port: int | None = Field(default=None, alias='LoadBalancerPort') + load_balancer_protocol: str | None = Field(default=None, alias='LoadBalancerProtocol') + policy_names: list[str] | None = Field(default=None, alias='PolicyNames') + server_certificate_id: str | None = Field(default=None, alias='ServerCertificateId') + +class ListenerForCreation(GeneratedModel): + backend_port: int = Field(alias='BackendPort') + backend_protocol: str | None = Field(default=None, alias='BackendProtocol') + load_balancer_port: int = Field(alias='LoadBalancerPort') + load_balancer_protocol: str = Field(alias='LoadBalancerProtocol') + server_certificate_id: str | None = Field(default=None, alias='ServerCertificateId') + +class ListenerRule(GeneratedModel): + action: str | None = Field(default=None, alias='Action') + host_name_pattern: str | None = Field(default=None, alias='HostNamePattern') + listener_id: int | None = Field(default=None, alias='ListenerId') + listener_rule_id: int | None = Field(default=None, alias='ListenerRuleId') + listener_rule_name: str | None = Field(default=None, alias='ListenerRuleName') + path_pattern: str | None = Field(default=None, alias='PathPattern') + priority: int | None = Field(default=None, alias='Priority') + vm_ids: list[str] | None = Field(default=None, alias='VmIds') + +class ListenerRuleForCreation(GeneratedModel): + action: str | None = Field(default=None, alias='Action') + host_name_pattern: str | None = Field(default=None, alias='HostNamePattern') + listener_rule_name: str = Field(alias='ListenerRuleName') + path_pattern: str | None = Field(default=None, alias='PathPattern') + priority: int = Field(alias='Priority') + +class LoadBalancer(GeneratedModel): + access_log: AccessLog | None = Field(default=None, alias='AccessLog') + application_sticky_cookie_policies: list[ApplicationStickyCookiePolicy] | None = Field(default=None, alias='ApplicationStickyCookiePolicies') + backend_ips: list[str] | None = Field(default=None, alias='BackendIps') + backend_vm_ids: list[str] | None = Field(default=None, alias='BackendVmIds') + dns_name: str | None = Field(default=None, alias='DnsName') + health_check: HealthCheck | None = Field(default=None, alias='HealthCheck') + listeners: list[Listener] | None = Field(default=None, alias='Listeners') + load_balancer_name: str | None = Field(default=None, alias='LoadBalancerName') + load_balancer_sticky_cookie_policies: list[LoadBalancerStickyCookiePolicy] | None = Field(default=None, alias='LoadBalancerStickyCookiePolicies') + load_balancer_type: str | None = Field(default=None, alias='LoadBalancerType') + net_id: str | None = Field(default=None, alias='NetId') + public_ip: str | None = Field(default=None, alias='PublicIp') + secured_cookies: bool | None = Field(default=None, alias='SecuredCookies') + security_groups: list[str] | None = Field(default=None, alias='SecurityGroups') + source_security_group: SourceSecurityGroup | None = Field(default=None, alias='SourceSecurityGroup') + state: str | None = Field(default=None, alias='State') + subnets: list[str] | None = Field(default=None, alias='Subnets') + subregion_names: list[str] | None = Field(default=None, alias='SubregionNames') + tags: list[ResourceTag] | None = Field(default=None, alias='Tags') + +class LoadBalancerLight(GeneratedModel): + load_balancer_name: str = Field(alias='LoadBalancerName') + load_balancer_port: int = Field(alias='LoadBalancerPort') + +class LoadBalancerStickyCookiePolicy(GeneratedModel): + cookie_expiration_period: int | None = Field(default=None, alias='CookieExpirationPeriod') + policy_name: str | None = Field(default=None, alias='PolicyName') + +class LoadBalancerTag(GeneratedModel): + key: str | None = Field(default=None, alias='Key') + load_balancer_name: str | None = Field(default=None, alias='LoadBalancerName') + value: str | None = Field(default=None, alias='Value') + +class Location(GeneratedModel): + code: str | None = Field(default=None, alias='Code') + name: str | None = Field(default=None, alias='Name') + +class Log(GeneratedModel): + account_id: str | None = Field(default=None, alias='AccountId') + call_duration: int | None = Field(default=None, alias='CallDuration') + query_access_key: str | None = Field(default=None, alias='QueryAccessKey') + query_api_name: str | None = Field(default=None, alias='QueryApiName') + query_api_version: str | None = Field(default=None, alias='QueryApiVersion') + query_call_name: str | None = Field(default=None, alias='QueryCallName') + query_date: str | None = Field(default=None, alias='QueryDate') + query_header_raw: str | None = Field(default=None, alias='QueryHeaderRaw') + query_header_size: int | None = Field(default=None, alias='QueryHeaderSize') + query_ip_address: str | None = Field(default=None, alias='QueryIpAddress') + query_payload_raw: str | None = Field(default=None, alias='QueryPayloadRaw') + query_payload_size: int | None = Field(default=None, alias='QueryPayloadSize') + query_user_agent: str | None = Field(default=None, alias='QueryUserAgent') + request_id: str | None = Field(default=None, alias='RequestId') + response_size: int | None = Field(default=None, alias='ResponseSize') + response_status_code: int | None = Field(default=None, alias='ResponseStatusCode') + +class MaintenanceEvent(GeneratedModel): + code: str | None = Field(default=None, alias='Code') + description: str | None = Field(default=None, alias='Description') + not_after: str | None = Field(default=None, alias='NotAfter') + not_before: str | None = Field(default=None, alias='NotBefore') + +class MinimalPolicy(GeneratedModel): + id: str | None = Field(default=None, alias='Id') + name: str | None = Field(default=None, alias='Name') + orn: str | None = Field(default=None, alias='Orn') + +class NatService(GeneratedModel): + client_token: str | None = Field(default=None, alias='ClientToken') + nat_service_id: str | None = Field(default=None, alias='NatServiceId') + net_id: str | None = Field(default=None, alias='NetId') + public_ips: list[PublicIpLight] | None = Field(default=None, alias='PublicIps') + state: str | None = Field(default=None, alias='State') + subnet_id: str | None = Field(default=None, alias='SubnetId') + tags: list[ResourceTag] | None = Field(default=None, alias='Tags') + +class Net(GeneratedModel): + dhcp_options_set_id: str | None = Field(default=None, alias='DhcpOptionsSetId') + ip_range: str | None = Field(default=None, alias='IpRange') + net_id: str | None = Field(default=None, alias='NetId') + state: str | None = Field(default=None, alias='State') + tags: list[ResourceTag] | None = Field(default=None, alias='Tags') + tenancy: str | None = Field(default=None, alias='Tenancy') + +class NetAccessPoint(GeneratedModel): + net_access_point_id: str | None = Field(default=None, alias='NetAccessPointId') + net_id: str | None = Field(default=None, alias='NetId') + route_table_ids: list[str] | None = Field(default=None, alias='RouteTableIds') + service_name: str | None = Field(default=None, alias='ServiceName') + state: str | None = Field(default=None, alias='State') + tags: list[ResourceTag] | None = Field(default=None, alias='Tags') + +class NetPeering(GeneratedModel): + accepter_net: AccepterNet | None = Field(default=None, alias='AccepterNet') + expiration_date: str | None = Field(default=None, alias='ExpirationDate') + net_peering_id: str | None = Field(default=None, alias='NetPeeringId') + source_net: SourceNet | None = Field(default=None, alias='SourceNet') + state: NetPeeringState | None = Field(default=None, alias='State') + tags: list[ResourceTag] | None = Field(default=None, alias='Tags') + +class NetPeeringState(GeneratedModel): + message: str | None = Field(default=None, alias='Message') + name: str | None = Field(default=None, alias='Name') + +class NetToVirtualGatewayLink(GeneratedModel): + net_id: str | None = Field(default=None, alias='NetId') + state: str | None = Field(default=None, alias='State') + +class Nic(GeneratedModel): + account_id: str | None = Field(default=None, alias='AccountId') + description: str | None = Field(default=None, alias='Description') + is_source_dest_checked: bool | None = Field(default=None, alias='IsSourceDestChecked') + link_nic: LinkNic | None = Field(default=None, alias='LinkNic') + link_public_ip: LinkPublicIp | None = Field(default=None, alias='LinkPublicIp') + mac_address: str | None = Field(default=None, alias='MacAddress') + net_id: str | None = Field(default=None, alias='NetId') + nic_id: str | None = Field(default=None, alias='NicId') + private_dns_name: str | None = Field(default=None, alias='PrivateDnsName') + private_ips: list[PrivateIp] | None = Field(default=None, alias='PrivateIps') + security_groups: list[SecurityGroupLight] | None = Field(default=None, alias='SecurityGroups') + state: str | None = Field(default=None, alias='State') + subnet_id: str | None = Field(default=None, alias='SubnetId') + subregion_name: str | None = Field(default=None, alias='SubregionName') + tags: list[ResourceTag] | None = Field(default=None, alias='Tags') + +class NicForVmCreation(GeneratedModel): + delete_on_vm_deletion: bool | None = Field(default=None, alias='DeleteOnVmDeletion') + description: str | None = Field(default=None, alias='Description') + device_number: int | None = Field(default=None, alias='DeviceNumber') + nic_id: str | None = Field(default=None, alias='NicId') + private_ips: list[PrivateIpLight] | None = Field(default=None, alias='PrivateIps') + secondary_private_ip_count: int | None = Field(default=None, alias='SecondaryPrivateIpCount') + security_group_ids: list[str] | None = Field(default=None, alias='SecurityGroupIds') + subnet_id: str | None = Field(default=None, alias='SubnetId') + +class NicLight(GeneratedModel): + account_id: str | None = Field(default=None, alias='AccountId') + description: str | None = Field(default=None, alias='Description') + is_source_dest_checked: bool | None = Field(default=None, alias='IsSourceDestChecked') + link_nic: LinkNicLight | None = Field(default=None, alias='LinkNic') + link_public_ip: LinkPublicIpLightForVm | None = Field(default=None, alias='LinkPublicIp') + mac_address: str | None = Field(default=None, alias='MacAddress') + net_id: str | None = Field(default=None, alias='NetId') + nic_id: str | None = Field(default=None, alias='NicId') + private_dns_name: str | None = Field(default=None, alias='PrivateDnsName') + private_ips: list[PrivateIpLightForVm] | None = Field(default=None, alias='PrivateIps') + security_groups: list[SecurityGroupLight] | None = Field(default=None, alias='SecurityGroups') + state: str | None = Field(default=None, alias='State') + subnet_id: str | None = Field(default=None, alias='SubnetId') + +class OsuApiKey(GeneratedModel): + api_key_id: str | None = Field(default=None, alias='ApiKeyId') + secret_key: str | None = Field(default=None, alias='SecretKey') + +class OsuExportImageExportTask(GeneratedModel): + disk_image_format: str = Field(alias='DiskImageFormat') + osu_bucket: str = Field(alias='OsuBucket') + osu_manifest_url: str | None = Field(default=None, alias='OsuManifestUrl') + osu_prefix: str | None = Field(default=None, alias='OsuPrefix') + +class OsuExportSnapshotExportTask(GeneratedModel): + disk_image_format: str = Field(alias='DiskImageFormat') + osu_bucket: str = Field(alias='OsuBucket') + osu_prefix: str | None = Field(default=None, alias='OsuPrefix') + +class OsuExportToCreate(GeneratedModel): + disk_image_format: str = Field(alias='DiskImageFormat') + osu_api_key: OsuApiKey | None = Field(default=None, alias='OsuApiKey') + osu_bucket: str = Field(alias='OsuBucket') + osu_manifest_url: str | None = Field(default=None, alias='OsuManifestUrl') + osu_prefix: str | None = Field(default=None, alias='OsuPrefix') + +class PermissionsOnResource(GeneratedModel): + account_ids: list[str] | None = Field(default=None, alias='AccountIds') + global_permission: bool | None = Field(default=None, alias='GlobalPermission') + +class PermissionsOnResourceCreation(GeneratedModel): + additions: PermissionsOnResource | None = Field(default=None, alias='Additions') + removals: PermissionsOnResource | None = Field(default=None, alias='Removals') + +class Phase1Options(GeneratedModel): + dpd_timeout_action: str | None = Field(default=None, alias='DpdTimeoutAction') + dpd_timeout_seconds: int | None = Field(default=None, alias='DpdTimeoutSeconds') + ike_versions: list[str] | None = Field(default=None, alias='IkeVersions') + phase1_dh_group_numbers: list[int] | None = Field(default=None, alias='Phase1DhGroupNumbers') + phase1_encryption_algorithms: list[str] | None = Field(default=None, alias='Phase1EncryptionAlgorithms') + phase1_integrity_algorithms: list[str] | None = Field(default=None, alias='Phase1IntegrityAlgorithms') + phase1_lifetime_seconds: int | None = Field(default=None, alias='Phase1LifetimeSeconds') + replay_window_size: int | None = Field(default=None, alias='ReplayWindowSize') + startup_action: str | None = Field(default=None, alias='StartupAction') + +class Phase2Options(GeneratedModel): + phase2_dh_group_numbers: list[int] | None = Field(default=None, alias='Phase2DhGroupNumbers') + phase2_encryption_algorithms: list[str] | None = Field(default=None, alias='Phase2EncryptionAlgorithms') + phase2_integrity_algorithms: list[str] | None = Field(default=None, alias='Phase2IntegrityAlgorithms') + phase2_lifetime_seconds: int | None = Field(default=None, alias='Phase2LifetimeSeconds') + pre_shared_key: str | None = Field(default=None, alias='PreSharedKey') + +class Placement(GeneratedModel): + subregion_name: str | None = Field(default=None, alias='SubregionName') + tenancy: str | None = Field(default=None, alias='Tenancy') + +class Policy(GeneratedModel): + creation_date: str | None = Field(default=None, alias='CreationDate') + description: str | None = Field(default=None, alias='Description') + is_linkable: bool | None = Field(default=None, alias='IsLinkable') + last_modification_date: str | None = Field(default=None, alias='LastModificationDate') + orn: str | None = Field(default=None, alias='Orn') + path: str | None = Field(default=None, alias='Path') + policy_default_version_id: str | None = Field(default=None, alias='PolicyDefaultVersionId') + policy_id: str | None = Field(default=None, alias='PolicyId') + policy_name: str | None = Field(default=None, alias='PolicyName') + resources_count: int | None = Field(default=None, alias='ResourcesCount') + +class PolicyEntities(GeneratedModel): + accounts: list[MinimalPolicy] | None = Field(default=None, alias='Accounts') + groups: list[MinimalPolicy] | None = Field(default=None, alias='Groups') + has_more_items: bool | None = Field(default=None, alias='HasMoreItems') + items_count: int | None = Field(default=None, alias='ItemsCount') + max_results_limit: int | None = Field(default=None, alias='MaxResultsLimit') + max_results_truncated: bool | None = Field(default=None, alias='MaxResultsTruncated') + users: list[MinimalPolicy] | None = Field(default=None, alias='Users') + +class PolicyVersion(GeneratedModel): + body: str | None = Field(default=None, alias='Body') + creation_date: str | None = Field(default=None, alias='CreationDate') + default_version: bool | None = Field(default=None, alias='DefaultVersion') + version_id: str | None = Field(default=None, alias='VersionId') + +class PrivateIp(GeneratedModel): + is_primary: bool | None = Field(default=None, alias='IsPrimary') + link_public_ip: LinkPublicIp | None = Field(default=None, alias='LinkPublicIp') + private_dns_name: str | None = Field(default=None, alias='PrivateDnsName') + private_ip: str | None = Field(default=None, alias='PrivateIp') + +class PrivateIpLight(GeneratedModel): + is_primary: bool | None = Field(default=None, alias='IsPrimary') + private_ip: str | None = Field(default=None, alias='PrivateIp') + +class PrivateIpLightForVm(GeneratedModel): + is_primary: bool | None = Field(default=None, alias='IsPrimary') + link_public_ip: LinkPublicIpLightForVm | None = Field(default=None, alias='LinkPublicIp') + private_dns_name: str | None = Field(default=None, alias='PrivateDnsName') + private_ip: str | None = Field(default=None, alias='PrivateIp') + +class ProductType(GeneratedModel): + description: str | None = Field(default=None, alias='Description') + product_type_id: str | None = Field(default=None, alias='ProductTypeId') + vendor: str | None = Field(default=None, alias='Vendor') + +class PublicIp(GeneratedModel): + link_public_ip_id: str | None = Field(default=None, alias='LinkPublicIpId') + nic_account_id: str | None = Field(default=None, alias='NicAccountId') + nic_id: str | None = Field(default=None, alias='NicId') + private_ip: str | None = Field(default=None, alias='PrivateIp') + public_ip: str | None = Field(default=None, alias='PublicIp') + public_ip_id: str | None = Field(default=None, alias='PublicIpId') + tags: list[ResourceTag] | None = Field(default=None, alias='Tags') + vm_id: str | None = Field(default=None, alias='VmId') + +class PublicIpLight(GeneratedModel): + public_ip: str | None = Field(default=None, alias='PublicIp') + public_ip_id: str | None = Field(default=None, alias='PublicIpId') + +class PutUserGroupPolicyRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + policy_document: str = Field(alias='PolicyDocument') + policy_name: str = Field(alias='PolicyName') + user_group_name: str = Field(alias='UserGroupName') + user_group_path: str | None = Field(default=None, alias='UserGroupPath') + +class PutUserGroupPolicyResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class PutUserPolicyRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + policy_document: str = Field(alias='PolicyDocument') + policy_name: str = Field(alias='PolicyName') + user_name: str = Field(alias='UserName') + +class PutUserPolicyResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class Quota(GeneratedModel): + account_id: str | None = Field(default=None, alias='AccountId') + description: str | None = Field(default=None, alias='Description') + max_value: int | None = Field(default=None, alias='MaxValue') + name: str | None = Field(default=None, alias='Name') + quota_collection: str | None = Field(default=None, alias='QuotaCollection') + short_description: str | None = Field(default=None, alias='ShortDescription') + used_value: int | None = Field(default=None, alias='UsedValue') + +class QuotaTypes(GeneratedModel): + quota_type: str | None = Field(default=None, alias='QuotaType') + quotas: list[Quota] | None = Field(default=None, alias='Quotas') + +class ReadAccessKeysRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + filters: FiltersAccessKeys | None = Field(default=None, alias='Filters') + tag: str | None = Field(default=None, alias='Tag') + user_name: str | None = Field(default=None, alias='UserName') + +class ReadAccessKeysResponse(GeneratedModel): + access_keys: list[AccessKey] | None = Field(default=None, alias='AccessKeys') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class ReadAccountsRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + +class ReadAccountsResponse(GeneratedModel): + accounts: list[Account] | None = Field(default=None, alias='Accounts') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class ReadAdminPasswordRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + vm_id: str = Field(alias='VmId') + +class ReadAdminPasswordResponse(GeneratedModel): + admin_password: str | None = Field(default=None, alias='AdminPassword') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + vm_id: str | None = Field(default=None, alias='VmId') + +class ReadApiAccessPolicyRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + +class ReadApiAccessPolicyResponse(GeneratedModel): + api_access_policy: ApiAccessPolicy | None = Field(default=None, alias='ApiAccessPolicy') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class ReadApiAccessRulesRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + filters: FiltersApiAccessRule | None = Field(default=None, alias='Filters') + +class ReadApiAccessRulesResponse(GeneratedModel): + api_access_rules: list[ApiAccessRule] | None = Field(default=None, alias='ApiAccessRules') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class ReadApiLogsRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + filters: FiltersApiLog | None = Field(default=None, alias='Filters') + next_page_token: str | None = Field(default=None, alias='NextPageToken') + results_per_page: int | None = Field(default=None, alias='ResultsPerPage') + with_: With | None = Field(default=None, alias='With') + +class ReadApiLogsResponse(GeneratedModel): + logs: list[Log] | None = Field(default=None, alias='Logs') + next_page_token: str | None = Field(default=None, alias='NextPageToken') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class ReadCO2EmissionAccountRequest(GeneratedModel): + from_month: str = Field(alias='FromMonth') + overall: bool | None = Field(default=None, alias='Overall') + to_month: str = Field(alias='ToMonth') + +class ReadCO2EmissionAccountResponse(GeneratedModel): + co2_emission_entries: list[CO2EmissionEntry] | None = Field(default=None, alias='CO2EmissionEntries') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + unit: str | None = Field(default=None, alias='Unit') + value: float | None = Field(default=None, alias='Value') + +class ReadCasRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + filters: FiltersCa | None = Field(default=None, alias='Filters') + +class ReadCasResponse(GeneratedModel): + cas: list[Ca] | None = Field(default=None, alias='Cas') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class ReadCatalogRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + +class ReadCatalogResponse(GeneratedModel): + catalog: Catalog | None = Field(default=None, alias='Catalog') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class ReadCatalogsRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + filters: FiltersCatalogs | None = Field(default=None, alias='Filters') + +class ReadCatalogsResponse(GeneratedModel): + catalogs: list[Catalogs] | None = Field(default=None, alias='Catalogs') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class ReadClientGatewaysRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + filters: FiltersClientGateway | None = Field(default=None, alias='Filters') + next_page_token: str | None = Field(default=None, alias='NextPageToken') + results_per_page: int | None = Field(default=None, alias='ResultsPerPage') + +class ReadClientGatewaysResponse(GeneratedModel): + client_gateways: list[ClientGateway] | None = Field(default=None, alias='ClientGateways') + next_page_token: str | None = Field(default=None, alias='NextPageToken') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class ReadConsoleOutputRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + vm_id: str = Field(alias='VmId') + +class ReadConsoleOutputResponse(GeneratedModel): + console_output: str | None = Field(default=None, alias='ConsoleOutput') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + vm_id: str | None = Field(default=None, alias='VmId') + +class ReadConsumptionAccountRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + from_date: str = Field(alias='FromDate') + overall: bool | None = Field(default=None, alias='Overall') + show_price: bool | None = Field(default=None, alias='ShowPrice') + show_resource_details: bool | None = Field(default=None, alias='ShowResourceDetails') + to_date: str = Field(alias='ToDate') + +class ReadConsumptionAccountResponse(GeneratedModel): + consumption_entries: list[ConsumptionEntry] | None = Field(default=None, alias='ConsumptionEntries') + currency: str | None = Field(default=None, alias='Currency') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class ReadDedicatedGroupsRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + filters: FiltersDedicatedGroup | None = Field(default=None, alias='Filters') + next_page_token: str | None = Field(default=None, alias='NextPageToken') + results_per_page: int | None = Field(default=None, alias='ResultsPerPage') + +class ReadDedicatedGroupsResponse(GeneratedModel): + dedicated_groups: list[DedicatedGroup] | None = Field(default=None, alias='DedicatedGroups') + next_page_token: str | None = Field(default=None, alias='NextPageToken') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class ReadDhcpOptionsRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + filters: FiltersDhcpOptions | None = Field(default=None, alias='Filters') + next_page_token: str | None = Field(default=None, alias='NextPageToken') + results_per_page: int | None = Field(default=None, alias='ResultsPerPage') + +class ReadDhcpOptionsResponse(GeneratedModel): + dhcp_options_sets: list[DhcpOptionsSet] | None = Field(default=None, alias='DhcpOptionsSets') + next_page_token: str | None = Field(default=None, alias='NextPageToken') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class ReadDirectLinkInterfacesRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + filters: FiltersDirectLinkInterface | None = Field(default=None, alias='Filters') + next_page_token: str | None = Field(default=None, alias='NextPageToken') + results_per_page: int | None = Field(default=None, alias='ResultsPerPage') + +class ReadDirectLinkInterfacesResponse(GeneratedModel): + direct_link_interfaces: list[DirectLinkInterfaces] | None = Field(default=None, alias='DirectLinkInterfaces') + next_page_token: str | None = Field(default=None, alias='NextPageToken') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class ReadDirectLinksRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + filters: FiltersDirectLink | None = Field(default=None, alias='Filters') + next_page_token: str | None = Field(default=None, alias='NextPageToken') + results_per_page: int | None = Field(default=None, alias='ResultsPerPage') + +class ReadDirectLinksResponse(GeneratedModel): + direct_links: list[DirectLink] | None = Field(default=None, alias='DirectLinks') + next_page_token: str | None = Field(default=None, alias='NextPageToken') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class ReadEntitiesLinkedToPolicyRequest(GeneratedModel): + entities_type: list[Literal['ACCOUNT', 'USER', 'GROUP']] | None = Field(default=None, alias='EntitiesType') + first_item: int | None = Field(default=None, alias='FirstItem') + policy_orn: str = Field(alias='PolicyOrn') + results_per_page: int | None = Field(default=None, alias='ResultsPerPage') + +class ReadEntitiesLinkedToPolicyResponse(GeneratedModel): + policy_entities: PolicyEntities | None = Field(default=None, alias='PolicyEntities') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class ReadFlexibleGpuCatalogRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + +class ReadFlexibleGpuCatalogResponse(GeneratedModel): + flexible_gpu_catalog: list[FlexibleGpuCatalog] | None = Field(default=None, alias='FlexibleGpuCatalog') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class ReadFlexibleGpusRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + filters: FiltersFlexibleGpu | None = Field(default=None, alias='Filters') + +class ReadFlexibleGpusResponse(GeneratedModel): + flexible_gpus: list[FlexibleGpu] | None = Field(default=None, alias='FlexibleGpus') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class ReadImageExportTasksRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + filters: FiltersReadImageExportTask | None = Field(default=None, alias='Filters') + next_page_token: str | None = Field(default=None, alias='NextPageToken') + results_per_page: int | None = Field(default=None, alias='ResultsPerPage') + +class ReadImageExportTasksResponse(GeneratedModel): + image_export_tasks: list[ImageExportTask] | None = Field(default=None, alias='ImageExportTasks') + next_page_token: str | None = Field(default=None, alias='NextPageToken') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class ReadImagesRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + filters: FiltersImage | None = Field(default=None, alias='Filters') + next_page_token: str | None = Field(default=None, alias='NextPageToken') + results_per_page: int | None = Field(default=None, alias='ResultsPerPage') + +class ReadImagesResponse(GeneratedModel): + images: list[Image] | None = Field(default=None, alias='Images') + next_page_token: str | None = Field(default=None, alias='NextPageToken') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class ReadInternetServicesRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + filters: FiltersInternetService | None = Field(default=None, alias='Filters') + next_page_token: str | None = Field(default=None, alias='NextPageToken') + results_per_page: int | None = Field(default=None, alias='ResultsPerPage') + +class ReadInternetServicesResponse(GeneratedModel): + internet_services: list[InternetService] | None = Field(default=None, alias='InternetServices') + next_page_token: str | None = Field(default=None, alias='NextPageToken') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class ReadKeypairsRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + filters: FiltersKeypair | None = Field(default=None, alias='Filters') + next_page_token: str | None = Field(default=None, alias='NextPageToken') + results_per_page: int | None = Field(default=None, alias='ResultsPerPage') + +class ReadKeypairsResponse(GeneratedModel): + keypairs: list[Keypair] | None = Field(default=None, alias='Keypairs') + next_page_token: str | None = Field(default=None, alias='NextPageToken') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class ReadLinkedPoliciesFilters(GeneratedModel): + path_prefix: str | None = Field(default=None, alias='PathPrefix') + +class ReadLinkedPoliciesRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + filters: ReadLinkedPoliciesFilters | None = Field(default=None, alias='Filters') + first_item: int | None = Field(default=None, alias='FirstItem') + results_per_page: int | None = Field(default=None, alias='ResultsPerPage') + user_name: str = Field(alias='UserName') + +class ReadLinkedPoliciesResponse(GeneratedModel): + has_more_items: bool | None = Field(default=None, alias='HasMoreItems') + max_results_limit: int | None = Field(default=None, alias='MaxResultsLimit') + max_results_truncated: bool | None = Field(default=None, alias='MaxResultsTruncated') + policies: list[LinkedPolicy] | None = Field(default=None, alias='Policies') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class ReadListenerRulesRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + filters: FiltersListenerRule | None = Field(default=None, alias='Filters') + +class ReadListenerRulesResponse(GeneratedModel): + listener_rules: list[ListenerRule] | None = Field(default=None, alias='ListenerRules') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class ReadLoadBalancerTagsRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + load_balancer_names: list[str] = Field(alias='LoadBalancerNames') + +class ReadLoadBalancerTagsResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + tags: list[LoadBalancerTag] | None = Field(default=None, alias='Tags') + +class ReadLoadBalancersRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + filters: FiltersLoadBalancer | None = Field(default=None, alias='Filters') + +class ReadLoadBalancersResponse(GeneratedModel): + load_balancers: list[LoadBalancer] | None = Field(default=None, alias='LoadBalancers') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class ReadLocationsRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + next_page_token: str | None = Field(default=None, alias='NextPageToken') + results_per_page: int | None = Field(default=None, alias='ResultsPerPage') + +class ReadLocationsResponse(GeneratedModel): + locations: list[Location] | None = Field(default=None, alias='Locations') + next_page_token: str | None = Field(default=None, alias='NextPageToken') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class ReadManagedPoliciesLinkedToUserGroupRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + filters: FiltersUserGroup | None = Field(default=None, alias='Filters') + first_item: int | None = Field(default=None, alias='FirstItem') + results_per_page: int | None = Field(default=None, alias='ResultsPerPage') + user_group_name: str = Field(alias='UserGroupName') + +class ReadManagedPoliciesLinkedToUserGroupResponse(GeneratedModel): + has_more_items: bool | None = Field(default=None, alias='HasMoreItems') + max_results_limit: int | None = Field(default=None, alias='MaxResultsLimit') + max_results_truncated: bool | None = Field(default=None, alias='MaxResultsTruncated') + policies: list[LinkedPolicy] | None = Field(default=None, alias='Policies') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class ReadNatServicesRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + filters: FiltersNatService | None = Field(default=None, alias='Filters') + next_page_token: str | None = Field(default=None, alias='NextPageToken') + results_per_page: int | None = Field(default=None, alias='ResultsPerPage') + +class ReadNatServicesResponse(GeneratedModel): + nat_services: list[NatService] | None = Field(default=None, alias='NatServices') + next_page_token: str | None = Field(default=None, alias='NextPageToken') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class ReadNetAccessPointServicesRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + filters: FiltersService | None = Field(default=None, alias='Filters') + next_page_token: str | None = Field(default=None, alias='NextPageToken') + results_per_page: int | None = Field(default=None, alias='ResultsPerPage') + +class ReadNetAccessPointServicesResponse(GeneratedModel): + next_page_token: str | None = Field(default=None, alias='NextPageToken') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + services: list[Service] | None = Field(default=None, alias='Services') + +class ReadNetAccessPointsRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + filters: FiltersNetAccessPoint | None = Field(default=None, alias='Filters') + next_page_token: str | None = Field(default=None, alias='NextPageToken') + results_per_page: int | None = Field(default=None, alias='ResultsPerPage') + +class ReadNetAccessPointsResponse(GeneratedModel): + net_access_points: list[NetAccessPoint] | None = Field(default=None, alias='NetAccessPoints') + next_page_token: str | None = Field(default=None, alias='NextPageToken') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class ReadNetPeeringsRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + filters: FiltersNetPeering | None = Field(default=None, alias='Filters') + next_page_token: str | None = Field(default=None, alias='NextPageToken') + results_per_page: int | None = Field(default=None, alias='ResultsPerPage') + +class ReadNetPeeringsResponse(GeneratedModel): + net_peerings: list[NetPeering] | None = Field(default=None, alias='NetPeerings') + next_page_token: str | None = Field(default=None, alias='NextPageToken') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class ReadNetsRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + filters: FiltersNet | None = Field(default=None, alias='Filters') + next_page_token: str | None = Field(default=None, alias='NextPageToken') + results_per_page: int | None = Field(default=None, alias='ResultsPerPage') + +class ReadNetsResponse(GeneratedModel): + nets: list[Net] | None = Field(default=None, alias='Nets') + next_page_token: str | None = Field(default=None, alias='NextPageToken') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class ReadNicsRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + filters: FiltersNic | None = Field(default=None, alias='Filters') + next_page_token: str | None = Field(default=None, alias='NextPageToken') + results_per_page: int | None = Field(default=None, alias='ResultsPerPage') + +class ReadNicsResponse(GeneratedModel): + next_page_token: str | None = Field(default=None, alias='NextPageToken') + nics: list[Nic] | None = Field(default=None, alias='Nics') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class ReadPoliciesFilters(GeneratedModel): + only_linked: bool | None = Field(default=None, alias='OnlyLinked') + path_prefix: str | None = Field(default=None, alias='PathPrefix') + scope: Literal['LOCAL', 'OWS'] | None = Field(default=None, alias='Scope') + +class ReadPoliciesRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + filters: ReadPoliciesFilters | None = Field(default=None, alias='Filters') + first_item: int | None = Field(default=None, alias='FirstItem') + results_per_page: int | None = Field(default=None, alias='ResultsPerPage') + +class ReadPoliciesResponse(GeneratedModel): + has_more_items: bool | None = Field(default=None, alias='HasMoreItems') + max_results_limit: int | None = Field(default=None, alias='MaxResultsLimit') + max_results_truncated: bool | None = Field(default=None, alias='MaxResultsTruncated') + policies: list[Policy] | None = Field(default=None, alias='Policies') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class ReadPolicyRequest(GeneratedModel): + policy_orn: str = Field(alias='PolicyOrn') + +class ReadPolicyResponse(GeneratedModel): + policy: Policy | None = Field(default=None, alias='Policy') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class ReadPolicyVersionRequest(GeneratedModel): + policy_orn: str = Field(alias='PolicyOrn') + version_id: str = Field(alias='VersionId') + +class ReadPolicyVersionResponse(GeneratedModel): + policy_version: PolicyVersion | None = Field(default=None, alias='PolicyVersion') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class ReadPolicyVersionsRequest(GeneratedModel): + first_item: int | None = Field(default=None, alias='FirstItem') + policy_orn: str = Field(alias='PolicyOrn') + results_per_page: int | None = Field(default=None, alias='ResultsPerPage') + +class ReadPolicyVersionsResponse(GeneratedModel): + has_more_items: bool | None = Field(default=None, alias='HasMoreItems') + max_results_limit: int | None = Field(default=None, alias='MaxResultsLimit') + policy_versions: list[PolicyVersion] | None = Field(default=None, alias='PolicyVersions') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class ReadProductTypesRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + filters: FiltersProductType | None = Field(default=None, alias='Filters') + next_page_token: str | None = Field(default=None, alias='NextPageToken') + results_per_page: int | None = Field(default=None, alias='ResultsPerPage') + +class ReadProductTypesResponse(GeneratedModel): + next_page_token: str | None = Field(default=None, alias='NextPageToken') + product_types: list[ProductType] | None = Field(default=None, alias='ProductTypes') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class ReadPublicCatalogRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + +class ReadPublicCatalogResponse(GeneratedModel): + catalog: Catalog | None = Field(default=None, alias='Catalog') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class ReadPublicIpRangesRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + next_page_token: str | None = Field(default=None, alias='NextPageToken') + results_per_page: int | None = Field(default=None, alias='ResultsPerPage') + +class ReadPublicIpRangesResponse(GeneratedModel): + next_page_token: str | None = Field(default=None, alias='NextPageToken') + public_ips: list[str] | None = Field(default=None, alias='PublicIps') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class ReadPublicIpsRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + filters: FiltersPublicIp | None = Field(default=None, alias='Filters') + next_page_token: str | None = Field(default=None, alias='NextPageToken') + results_per_page: int | None = Field(default=None, alias='ResultsPerPage') + +class ReadPublicIpsResponse(GeneratedModel): + next_page_token: str | None = Field(default=None, alias='NextPageToken') + public_ips: list[PublicIp] | None = Field(default=None, alias='PublicIps') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class ReadQuotasRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + filters: FiltersQuota | None = Field(default=None, alias='Filters') + next_page_token: str | None = Field(default=None, alias='NextPageToken') + results_per_page: int | None = Field(default=None, alias='ResultsPerPage') + +class ReadQuotasResponse(GeneratedModel): + next_page_token: str | None = Field(default=None, alias='NextPageToken') + quota_types: list[QuotaTypes] | None = Field(default=None, alias='QuotaTypes') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class ReadRegionsRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + +class ReadRegionsResponse(GeneratedModel): + regions: list[Region] | None = Field(default=None, alias='Regions') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class ReadRouteTablesRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + filters: FiltersRouteTable | None = Field(default=None, alias='Filters') + next_page_token: str | None = Field(default=None, alias='NextPageToken') + results_per_page: int | None = Field(default=None, alias='ResultsPerPage') + +class ReadRouteTablesResponse(GeneratedModel): + next_page_token: str | None = Field(default=None, alias='NextPageToken') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + route_tables: list[RouteTable] | None = Field(default=None, alias='RouteTables') + +class ReadSecurityGroupsRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + filters: FiltersSecurityGroup | None = Field(default=None, alias='Filters') + next_page_token: str | None = Field(default=None, alias='NextPageToken') + results_per_page: int | None = Field(default=None, alias='ResultsPerPage') + +class ReadSecurityGroupsResponse(GeneratedModel): + next_page_token: str | None = Field(default=None, alias='NextPageToken') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + security_groups: list[SecurityGroup] | None = Field(default=None, alias='SecurityGroups') + +class ReadServerCertificatesRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + filters: FiltersServerCertificate | None = Field(default=None, alias='Filters') + +class ReadServerCertificatesResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + server_certificates: list[ServerCertificate] | None = Field(default=None, alias='ServerCertificates') + +class ReadSnapshotExportTasksRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + filters: FiltersSnapshotExportTask | None = Field(default=None, alias='Filters') + next_page_token: str | None = Field(default=None, alias='NextPageToken') + results_per_page: int | None = Field(default=None, alias='ResultsPerPage') + +class ReadSnapshotExportTasksResponse(GeneratedModel): + next_page_token: str | None = Field(default=None, alias='NextPageToken') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + snapshot_export_tasks: list[SnapshotExportTask] | None = Field(default=None, alias='SnapshotExportTasks') + +class ReadSnapshotsRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + filters: FiltersSnapshot | None = Field(default=None, alias='Filters') + next_page_token: str | None = Field(default=None, alias='NextPageToken') + results_per_page: int | None = Field(default=None, alias='ResultsPerPage') + +class ReadSnapshotsResponse(GeneratedModel): + next_page_token: str | None = Field(default=None, alias='NextPageToken') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + snapshots: list[Snapshot] | None = Field(default=None, alias='Snapshots') + +class ReadSubnetsRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + filters: FiltersSubnet | None = Field(default=None, alias='Filters') + next_page_token: str | None = Field(default=None, alias='NextPageToken') + results_per_page: int | None = Field(default=None, alias='ResultsPerPage') + +class ReadSubnetsResponse(GeneratedModel): + next_page_token: str | None = Field(default=None, alias='NextPageToken') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + subnets: list[Subnet] | None = Field(default=None, alias='Subnets') + +class ReadSubregionsRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + filters: FiltersSubregion | None = Field(default=None, alias='Filters') + next_page_token: str | None = Field(default=None, alias='NextPageToken') + results_per_page: int | None = Field(default=None, alias='ResultsPerPage') + +class ReadSubregionsResponse(GeneratedModel): + next_page_token: str | None = Field(default=None, alias='NextPageToken') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + subregions: list[Subregion] | None = Field(default=None, alias='Subregions') + +class ReadTagsRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + filters: FiltersTag | None = Field(default=None, alias='Filters') + next_page_token: str | None = Field(default=None, alias='NextPageToken') + results_per_page: int | None = Field(default=None, alias='ResultsPerPage') + +class ReadTagsResponse(GeneratedModel): + next_page_token: str | None = Field(default=None, alias='NextPageToken') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + tags: list[Tag] | None = Field(default=None, alias='Tags') + +class ReadUnitPriceRequest(GeneratedModel): + operation: str = Field(alias='Operation') + service: str = Field(alias='Service') + type: str = Field(alias='Type') + +class ReadUnitPriceResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + unit_price_entry: UnitPriceEntry | None = Field(default=None, alias='UnitPriceEntry') + +class ReadUserGroupPoliciesRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + first_item: int | None = Field(default=None, alias='FirstItem') + results_per_page: int | None = Field(default=None, alias='ResultsPerPage') + user_group_name: str = Field(alias='UserGroupName') + user_group_path: str | None = Field(default=None, alias='UserGroupPath') + +class ReadUserGroupPoliciesResponse(GeneratedModel): + has_more_items: bool | None = Field(default=None, alias='HasMoreItems') + max_results_limit: int | None = Field(default=None, alias='MaxResultsLimit') + max_results_truncated: bool | None = Field(default=None, alias='MaxResultsTruncated') + policies: list[InlinePolicy] | None = Field(default=None, alias='Policies') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class ReadUserGroupPolicyRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + policy_name: str = Field(alias='PolicyName') + user_group_name: str = Field(alias='UserGroupName') + user_group_path: str | None = Field(default=None, alias='UserGroupPath') + +class ReadUserGroupPolicyResponse(GeneratedModel): + policy: InlinePolicy | None = Field(default=None, alias='Policy') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class ReadUserGroupRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + path: str | None = Field(default=None, alias='Path') + user_group_name: str = Field(alias='UserGroupName') + +class ReadUserGroupResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + user_group: UserGroup | None = Field(default=None, alias='UserGroup') + users: list[User] | None = Field(default=None, alias='Users') + +class ReadUserGroupsPerUserRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + user_name: str = Field(alias='UserName') + user_path: str | None = Field(default=None, alias='UserPath') + +class ReadUserGroupsPerUserResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + user_groups: list[UserGroup] | None = Field(default=None, alias='UserGroups') + +class ReadUserGroupsRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + filters: FiltersUserGroup | None = Field(default=None, alias='Filters') + first_item: int | None = Field(default=None, alias='FirstItem') + results_per_page: int | None = Field(default=None, alias='ResultsPerPage') + +class ReadUserGroupsResponse(GeneratedModel): + has_more_items: bool | None = Field(default=None, alias='HasMoreItems') + max_results_limit: int | None = Field(default=None, alias='MaxResultsLimit') + max_results_truncated: bool | None = Field(default=None, alias='MaxResultsTruncated') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + user_groups: list[UserGroup] | None = Field(default=None, alias='UserGroups') + +class ReadUserPoliciesRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + user_name: str = Field(alias='UserName') + +class ReadUserPoliciesResponse(GeneratedModel): + policy_names: list[str] | None = Field(default=None, alias='PolicyNames') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class ReadUserPolicyRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + policy_name: str = Field(alias='PolicyName') + user_name: str = Field(alias='UserName') + +class ReadUserPolicyResponse(GeneratedModel): + policy_document: str | None = Field(default=None, alias='PolicyDocument') + policy_name: str | None = Field(default=None, alias='PolicyName') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + user_name: str | None = Field(default=None, alias='UserName') + +class ReadUsersRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + filters: FiltersUsers | None = Field(default=None, alias='Filters') + first_item: int | None = Field(default=None, alias='FirstItem') + results_per_page: int | None = Field(default=None, alias='ResultsPerPage') + +class ReadUsersResponse(GeneratedModel): + has_more_items: bool | None = Field(default=None, alias='HasMoreItems') + max_results_limit: int | None = Field(default=None, alias='MaxResultsLimit') + max_results_truncated: bool | None = Field(default=None, alias='MaxResultsTruncated') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + users: list[User] | None = Field(default=None, alias='Users') + +class ReadVirtualGatewaysRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + filters: FiltersVirtualGateway | None = Field(default=None, alias='Filters') + next_page_token: str | None = Field(default=None, alias='NextPageToken') + results_per_page: int | None = Field(default=None, alias='ResultsPerPage') + +class ReadVirtualGatewaysResponse(GeneratedModel): + next_page_token: str | None = Field(default=None, alias='NextPageToken') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + virtual_gateways: list[VirtualGateway] | None = Field(default=None, alias='VirtualGateways') + +class ReadVmGroupsRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + filters: FiltersVmGroup | None = Field(default=None, alias='Filters') + +class ReadVmGroupsResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + vm_groups: list[VmGroup] | None = Field(default=None, alias='VmGroups') + +class ReadVmTemplatesRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + filters: FiltersVmTemplate | None = Field(default=None, alias='Filters') + +class ReadVmTemplatesResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + vm_templates: list[VmTemplate] | None = Field(default=None, alias='VmTemplates') + +class ReadVmTypesRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + filters: FiltersVmType | None = Field(default=None, alias='Filters') + next_page_token: str | None = Field(default=None, alias='NextPageToken') + results_per_page: int | None = Field(default=None, alias='ResultsPerPage') + +class ReadVmTypesResponse(GeneratedModel): + next_page_token: str | None = Field(default=None, alias='NextPageToken') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + vm_types: list[VmType] | None = Field(default=None, alias='VmTypes') + +class ReadVmsHealthRequest(GeneratedModel): + backend_vm_ids: list[str] | None = Field(default=None, alias='BackendVmIds') + dry_run: bool | None = Field(default=None, alias='DryRun') + load_balancer_name: str = Field(alias='LoadBalancerName') + +class ReadVmsHealthResponse(GeneratedModel): + backend_vm_health: list[BackendVmHealth] | None = Field(default=None, alias='BackendVmHealth') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class ReadVmsRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + filters: FiltersVm | None = Field(default=None, alias='Filters') + next_page_token: str | None = Field(default=None, alias='NextPageToken') + results_per_page: int | None = Field(default=None, alias='ResultsPerPage') + +class ReadVmsResponse(GeneratedModel): + next_page_token: str | None = Field(default=None, alias='NextPageToken') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + vms: list[Vm] | None = Field(default=None, alias='Vms') + +class ReadVmsStateRequest(GeneratedModel): + all_vms: bool | None = Field(default=None, alias='AllVms') + dry_run: bool | None = Field(default=None, alias='DryRun') + filters: FiltersVmsState | None = Field(default=None, alias='Filters') + next_page_token: str | None = Field(default=None, alias='NextPageToken') + results_per_page: int | None = Field(default=None, alias='ResultsPerPage') + +class ReadVmsStateResponse(GeneratedModel): + next_page_token: str | None = Field(default=None, alias='NextPageToken') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + vm_states: list[VmStates] | None = Field(default=None, alias='VmStates') + +class ReadVolumeUpdateTasksRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + filters: FiltersReadVolumeUpdateTask | None = Field(default=None, alias='Filters') + next_page_token: str | None = Field(default=None, alias='NextPageToken') + results_per_page: int | None = Field(default=None, alias='ResultsPerPage') + +class ReadVolumeUpdateTasksResponse(GeneratedModel): + next_page_token: str | None = Field(default=None, alias='NextPageToken') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + volume_update_tasks: list[VolumeUpdateTask] | None = Field(default=None, alias='VolumeUpdateTasks') + +class ReadVolumesRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + filters: FiltersVolume | None = Field(default=None, alias='Filters') + next_page_token: str | None = Field(default=None, alias='NextPageToken') + results_per_page: int | None = Field(default=None, alias='ResultsPerPage') + +class ReadVolumesResponse(GeneratedModel): + next_page_token: str | None = Field(default=None, alias='NextPageToken') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + volumes: list[Volume] | None = Field(default=None, alias='Volumes') + +class ReadVpnConnectionsRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + filters: FiltersVpnConnection | None = Field(default=None, alias='Filters') + next_page_token: str | None = Field(default=None, alias='NextPageToken') + results_per_page: int | None = Field(default=None, alias='ResultsPerPage') + +class ReadVpnConnectionsResponse(GeneratedModel): + next_page_token: str | None = Field(default=None, alias='NextPageToken') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + vpn_connections: list[VpnConnection] | None = Field(default=None, alias='VpnConnections') + +class RebootVmsRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + vm_ids: list[str] = Field(alias='VmIds') + +class RebootVmsResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class Region(GeneratedModel): + endpoint: str | None = Field(default=None, alias='Endpoint') + region_name: str | None = Field(default=None, alias='RegionName') + +class RegisterVmsInLoadBalancerRequest(GeneratedModel): + backend_vm_ids: list[str] = Field(alias='BackendVmIds') + dry_run: bool | None = Field(default=None, alias='DryRun') + load_balancer_name: str = Field(alias='LoadBalancerName') + +class RegisterVmsInLoadBalancerResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class RejectNetPeeringRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + net_peering_id: str = Field(alias='NetPeeringId') + +class RejectNetPeeringResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class RemoveUserFromUserGroupRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + user_group_name: str = Field(alias='UserGroupName') + user_group_path: str | None = Field(default=None, alias='UserGroupPath') + user_name: str = Field(alias='UserName') + user_path: str | None = Field(default=None, alias='UserPath') + +class RemoveUserFromUserGroupResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class ResourceLoadBalancerTag(GeneratedModel): + key: str = Field(alias='Key') + +class ResourceTag(GeneratedModel): + key: str = Field(alias='Key') + value: str = Field(alias='Value') + +class ResponseContext(GeneratedModel): + request_id: str | None = Field(default=None, alias='RequestId') + +class Route(GeneratedModel): + creation_method: str | None = Field(default=None, alias='CreationMethod') + destination_ip_range: str | None = Field(default=None, alias='DestinationIpRange') + destination_service_id: str | None = Field(default=None, alias='DestinationServiceId') + gateway_id: str | None = Field(default=None, alias='GatewayId') + nat_service_id: str | None = Field(default=None, alias='NatServiceId') + net_access_point_id: str | None = Field(default=None, alias='NetAccessPointId') + net_peering_id: str | None = Field(default=None, alias='NetPeeringId') + nic_id: str | None = Field(default=None, alias='NicId') + state: str | None = Field(default=None, alias='State') + vm_account_id: str | None = Field(default=None, alias='VmAccountId') + vm_id: str | None = Field(default=None, alias='VmId') + +class RouteLight(GeneratedModel): + destination_ip_range: str | None = Field(default=None, alias='DestinationIpRange') + route_type: str | None = Field(default=None, alias='RouteType') + state: str | None = Field(default=None, alias='State') + +class RoutePropagatingVirtualGateway(GeneratedModel): + virtual_gateway_id: str | None = Field(default=None, alias='VirtualGatewayId') + +class RouteTable(GeneratedModel): + link_route_tables: list[LinkRouteTable] | None = Field(default=None, alias='LinkRouteTables') + net_id: str | None = Field(default=None, alias='NetId') + route_propagating_virtual_gateways: list[RoutePropagatingVirtualGateway] | None = Field(default=None, alias='RoutePropagatingVirtualGateways') + route_table_id: str | None = Field(default=None, alias='RouteTableId') + routes: list[Route] | None = Field(default=None, alias='Routes') + tags: list[ResourceTag] | None = Field(default=None, alias='Tags') + +class ScaleDownVmGroupRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + vm_group_id: str = Field(alias='VmGroupId') + vm_subtraction: int = Field(alias='VmSubtraction') + +class ScaleDownVmGroupResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class ScaleUpVmGroupRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + vm_addition: int = Field(alias='VmAddition') + vm_group_id: str = Field(alias='VmGroupId') + +class ScaleUpVmGroupResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +SecureBootAction = Literal['enable', 'disable', 'setup-mode', 'none', 'restore-factory-keys'] + +class SecurityGroup(GeneratedModel): + account_id: str | None = Field(default=None, alias='AccountId') + description: str | None = Field(default=None, alias='Description') + inbound_rules: list[SecurityGroupRule] | None = Field(default=None, alias='InboundRules') + net_id: str | None = Field(default=None, alias='NetId') + outbound_rules: list[SecurityGroupRule] | None = Field(default=None, alias='OutboundRules') + security_group_id: str | None = Field(default=None, alias='SecurityGroupId') + security_group_name: str | None = Field(default=None, alias='SecurityGroupName') + tags: list[ResourceTag] | None = Field(default=None, alias='Tags') + +class SecurityGroupLight(GeneratedModel): + security_group_id: str | None = Field(default=None, alias='SecurityGroupId') + security_group_name: str | None = Field(default=None, alias='SecurityGroupName') + +class SecurityGroupRule(GeneratedModel): + from_port_range: int | None = Field(default=None, alias='FromPortRange') + ip_protocol: str | None = Field(default=None, alias='IpProtocol') + ip_ranges: list[str] | None = Field(default=None, alias='IpRanges') + security_group_rule_id: str | None = Field(default=None, alias='SecurityGroupRuleId') + security_groups_members: list[SecurityGroupsMember] | None = Field(default=None, alias='SecurityGroupsMembers') + service_ids: list[str] | None = Field(default=None, alias='ServiceIds') + to_port_range: int | None = Field(default=None, alias='ToPortRange') + +class SecurityGroupsMember(GeneratedModel): + account_id: str | None = Field(default=None, alias='AccountId') + security_group_id: str | None = Field(default=None, alias='SecurityGroupId') + security_group_name: str | None = Field(default=None, alias='SecurityGroupName') + +class ServerCertificate(GeneratedModel): + expiration_date: str | None = Field(default=None, alias='ExpirationDate') + id: str | None = Field(default=None, alias='Id') + name: str | None = Field(default=None, alias='Name') + orn: str | None = Field(default=None, alias='Orn') + path: str | None = Field(default=None, alias='Path') + upload_date: str | None = Field(default=None, alias='UploadDate') + +class Service(GeneratedModel): + ip_ranges: list[str] | None = Field(default=None, alias='IpRanges') + service_id: str | None = Field(default=None, alias='ServiceId') + service_name: str | None = Field(default=None, alias='ServiceName') + +class SetDefaultPolicyVersionRequest(GeneratedModel): + policy_orn: str = Field(alias='PolicyOrn') + version_id: str = Field(alias='VersionId') + +class SetDefaultPolicyVersionResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class Snapshot(GeneratedModel): + account_alias: str | None = Field(default=None, alias='AccountAlias') + account_id: str | None = Field(default=None, alias='AccountId') + client_token: str | None = Field(default=None, alias='ClientToken') + creation_date: str | None = Field(default=None, alias='CreationDate') + description: str | None = Field(default=None, alias='Description') + permissions_to_create_volume: PermissionsOnResource | None = Field(default=None, alias='PermissionsToCreateVolume') + progress: int | None = Field(default=None, alias='Progress') + snapshot_id: str | None = Field(default=None, alias='SnapshotId') + state: str | None = Field(default=None, alias='State') + tags: list[ResourceTag] | None = Field(default=None, alias='Tags') + volume_id: str | None = Field(default=None, alias='VolumeId') + volume_size: int | None = Field(default=None, alias='VolumeSize') + +class SnapshotExportTask(GeneratedModel): + comment: str | None = Field(default=None, alias='Comment') + osu_export: OsuExportSnapshotExportTask | None = Field(default=None, alias='OsuExport') + progress: int | None = Field(default=None, alias='Progress') + snapshot_id: str | None = Field(default=None, alias='SnapshotId') + state: str | None = Field(default=None, alias='State') + tags: list[ResourceTag] | None = Field(default=None, alias='Tags') + task_id: str | None = Field(default=None, alias='TaskId') + +class SourceNet(GeneratedModel): + account_id: str | None = Field(default=None, alias='AccountId') + ip_range: str | None = Field(default=None, alias='IpRange') + net_id: str | None = Field(default=None, alias='NetId') + +class SourceSecurityGroup(GeneratedModel): + security_group_account_id: str | None = Field(default=None, alias='SecurityGroupAccountId') + security_group_name: str | None = Field(default=None, alias='SecurityGroupName') + +class StartVmsRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + vm_ids: list[str] = Field(alias='VmIds') + +class StartVmsResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + vms: list[VmState] | None = Field(default=None, alias='Vms') + +class StateComment(GeneratedModel): + state_code: str | None = Field(default=None, alias='StateCode') + state_message: str | None = Field(default=None, alias='StateMessage') + +class StopVmsRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + force_stop: bool | None = Field(default=None, alias='ForceStop') + vm_ids: list[str] = Field(alias='VmIds') + +class StopVmsResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + vms: list[VmState] | None = Field(default=None, alias='Vms') + +class Subnet(GeneratedModel): + available_ips_count: int | None = Field(default=None, alias='AvailableIpsCount') + ip_range: str | None = Field(default=None, alias='IpRange') + map_public_ip_on_launch: bool | None = Field(default=None, alias='MapPublicIpOnLaunch') + net_id: str | None = Field(default=None, alias='NetId') + state: str | None = Field(default=None, alias='State') + subnet_id: str | None = Field(default=None, alias='SubnetId') + subregion_name: str | None = Field(default=None, alias='SubregionName') + tags: list[ResourceTag] | None = Field(default=None, alias='Tags') + +class Subregion(GeneratedModel): + location_code: str | None = Field(default=None, alias='LocationCode') + region_name: str | None = Field(default=None, alias='RegionName') + state: str | None = Field(default=None, alias='State') + subregion_name: str | None = Field(default=None, alias='SubregionName') + +class Tag(GeneratedModel): + key: str | None = Field(default=None, alias='Key') + resource_id: str | None = Field(default=None, alias='ResourceId') + resource_type: str | None = Field(default=None, alias='ResourceType') + value: str | None = Field(default=None, alias='Value') + +class UnitPriceEntry(GeneratedModel): + currency: str | None = Field(default=None, alias='Currency') + operation: str | None = Field(default=None, alias='Operation') + service: str | None = Field(default=None, alias='Service') + type: str | None = Field(default=None, alias='Type') + unit: str | None = Field(default=None, alias='Unit') + unit_price: float | None = Field(default=None, alias='UnitPrice') + +class UnlinkFlexibleGpuRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + flexible_gpu_id: str = Field(alias='FlexibleGpuId') + +class UnlinkFlexibleGpuResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class UnlinkInternetServiceRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + internet_service_id: str = Field(alias='InternetServiceId') + net_id: str = Field(alias='NetId') + +class UnlinkInternetServiceResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class UnlinkLoadBalancerBackendMachinesRequest(GeneratedModel): + backend_ips: list[str] | None = Field(default=None, alias='BackendIps') + backend_vm_ids: list[str] | None = Field(default=None, alias='BackendVmIds') + dry_run: bool | None = Field(default=None, alias='DryRun') + load_balancer_name: str = Field(alias='LoadBalancerName') + +class UnlinkLoadBalancerBackendMachinesResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class UnlinkManagedPolicyFromUserGroupRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + policy_orn: str = Field(alias='PolicyOrn') + user_group_name: str = Field(alias='UserGroupName') + +class UnlinkManagedPolicyFromUserGroupResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class UnlinkNicRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + link_nic_id: str = Field(alias='LinkNicId') + +class UnlinkNicResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class UnlinkPolicyRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + policy_orn: str = Field(alias='PolicyOrn') + user_name: str = Field(alias='UserName') + +class UnlinkPolicyResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class UnlinkPrivateIpsRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + nic_id: str = Field(alias='NicId') + private_ips: list[str] = Field(alias='PrivateIps') + +class UnlinkPrivateIpsResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class UnlinkPublicIpRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + link_public_ip_id: str | None = Field(default=None, alias='LinkPublicIpId') + public_ip: str | None = Field(default=None, alias='PublicIp') + +class UnlinkPublicIpResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class UnlinkRouteTableRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + link_route_table_id: str = Field(alias='LinkRouteTableId') + +class UnlinkRouteTableResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class UnlinkVirtualGatewayRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + net_id: str = Field(alias='NetId') + virtual_gateway_id: str = Field(alias='VirtualGatewayId') + +class UnlinkVirtualGatewayResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class UnlinkVolumeRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + force_unlink: bool | None = Field(default=None, alias='ForceUnlink') + volume_id: str = Field(alias='VolumeId') + +class UnlinkVolumeResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class UpdateAccessKeyRequest(GeneratedModel): + access_key_id: str = Field(alias='AccessKeyId') + clear_expiration_date: bool | None = Field(default=None, alias='ClearExpirationDate') + clear_tag: bool | None = Field(default=None, alias='ClearTag') + dry_run: bool | None = Field(default=None, alias='DryRun') + expiration_date: str | None = Field(default=None, alias='ExpirationDate') + state: str | None = Field(default=None, alias='State') + tag: str | None = Field(default=None, alias='Tag') + user_name: str | None = Field(default=None, alias='UserName') + +class UpdateAccessKeyResponse(GeneratedModel): + access_key: AccessKey | None = Field(default=None, alias='AccessKey') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class UpdateAccountRequest(GeneratedModel): + additional_emails: list[str] | None = Field(default=None, alias='AdditionalEmails') + city: str | None = Field(default=None, alias='City') + company_name: str | None = Field(default=None, alias='CompanyName') + country: str | None = Field(default=None, alias='Country') + dry_run: bool | None = Field(default=None, alias='DryRun') + email: str | None = Field(default=None, alias='Email') + first_name: str | None = Field(default=None, alias='FirstName') + job_title: str | None = Field(default=None, alias='JobTitle') + last_name: str | None = Field(default=None, alias='LastName') + mobile_number: str | None = Field(default=None, alias='MobileNumber') + phone_number: str | None = Field(default=None, alias='PhoneNumber') + state_province: str | None = Field(default=None, alias='StateProvince') + vat_number: str | None = Field(default=None, alias='VatNumber') + zip_code: str | None = Field(default=None, alias='ZipCode') + +class UpdateAccountResponse(GeneratedModel): + account: Account | None = Field(default=None, alias='Account') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class UpdateApiAccessPolicyRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + max_access_key_expiration_seconds: int = Field(alias='MaxAccessKeyExpirationSeconds') + require_trusted_env: bool = Field(alias='RequireTrustedEnv') + +class UpdateApiAccessPolicyResponse(GeneratedModel): + api_access_policy: ApiAccessPolicy | None = Field(default=None, alias='ApiAccessPolicy') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class UpdateApiAccessRuleRequest(GeneratedModel): + api_access_rule_id: str = Field(alias='ApiAccessRuleId') + ca_ids: list[str] | None = Field(default=None, alias='CaIds') + cns: list[str] | None = Field(default=None, alias='Cns') + description: str | None = Field(default=None, alias='Description') + dry_run: bool | None = Field(default=None, alias='DryRun') + ip_ranges: list[str] | None = Field(default=None, alias='IpRanges') + +class UpdateApiAccessRuleResponse(GeneratedModel): + api_access_rule: ApiAccessRule | None = Field(default=None, alias='ApiAccessRule') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class UpdateCaRequest(GeneratedModel): + ca_id: str = Field(alias='CaId') + description: str | None = Field(default=None, alias='Description') + dry_run: bool | None = Field(default=None, alias='DryRun') + +class UpdateCaResponse(GeneratedModel): + ca: Ca | None = Field(default=None, alias='Ca') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class UpdateDedicatedGroupRequest(GeneratedModel): + dedicated_group_id: str = Field(alias='DedicatedGroupId') + dry_run: bool | None = Field(default=None, alias='DryRun') + name: str = Field(alias='Name') + +class UpdateDedicatedGroupResponse(GeneratedModel): + dedicated_group: DedicatedGroup | None = Field(default=None, alias='DedicatedGroup') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class UpdateDirectLinkInterfaceRequest(GeneratedModel): + direct_link_interface_id: str = Field(alias='DirectLinkInterfaceId') + dry_run: bool | None = Field(default=None, alias='DryRun') + mtu: Literal[1500] = Field(alias='Mtu') + +class UpdateDirectLinkInterfaceResponse(GeneratedModel): + direct_link_interface: DirectLinkInterfaces | None = Field(default=None, alias='DirectLinkInterface') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class UpdateFlexibleGpuRequest(GeneratedModel): + delete_on_vm_deletion: bool | None = Field(default=None, alias='DeleteOnVmDeletion') + dry_run: bool | None = Field(default=None, alias='DryRun') + flexible_gpu_id: str = Field(alias='FlexibleGpuId') + +class UpdateFlexibleGpuResponse(GeneratedModel): + flexible_gpu: FlexibleGpu | None = Field(default=None, alias='FlexibleGpu') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class UpdateImageRequest(GeneratedModel): + description: str | None = Field(default=None, alias='Description') + dry_run: bool | None = Field(default=None, alias='DryRun') + image_id: str = Field(alias='ImageId') + permissions_to_launch: PermissionsOnResourceCreation | None = Field(default=None, alias='PermissionsToLaunch') + product_codes: list[str] | None = Field(default=None, alias='ProductCodes') + +class UpdateImageResponse(GeneratedModel): + image: Image | None = Field(default=None, alias='Image') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class UpdateListenerRuleRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + host_pattern: str | None = Field(default=None, alias='HostPattern') + listener_rule_name: str = Field(alias='ListenerRuleName') + path_pattern: str | None = Field(default=None, alias='PathPattern') + +class UpdateListenerRuleResponse(GeneratedModel): + listener_rule: ListenerRule | None = Field(default=None, alias='ListenerRule') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class UpdateLoadBalancerRequest(GeneratedModel): + access_log: AccessLog | None = Field(default=None, alias='AccessLog') + dry_run: bool | None = Field(default=None, alias='DryRun') + health_check: HealthCheck | None = Field(default=None, alias='HealthCheck') + load_balancer_name: str = Field(alias='LoadBalancerName') + load_balancer_port: int | None = Field(default=None, alias='LoadBalancerPort') + policy_names: list[str] | None = Field(default=None, alias='PolicyNames') + public_ip: str | None = Field(default=None, alias='PublicIp') + secured_cookies: bool | None = Field(default=None, alias='SecuredCookies') + security_groups: list[str] | None = Field(default=None, alias='SecurityGroups') + server_certificate_id: str | None = Field(default=None, alias='ServerCertificateId') + +class UpdateLoadBalancerResponse(GeneratedModel): + load_balancer: LoadBalancer | None = Field(default=None, alias='LoadBalancer') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class UpdateNetAccessPointRequest(GeneratedModel): + add_route_table_ids: list[str] | None = Field(default=None, alias='AddRouteTableIds') + dry_run: bool | None = Field(default=None, alias='DryRun') + net_access_point_id: str = Field(alias='NetAccessPointId') + remove_route_table_ids: list[str] | None = Field(default=None, alias='RemoveRouteTableIds') + +class UpdateNetAccessPointResponse(GeneratedModel): + net_access_point: NetAccessPoint | None = Field(default=None, alias='NetAccessPoint') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class UpdateNetRequest(GeneratedModel): + dhcp_options_set_id: str = Field(alias='DhcpOptionsSetId') + dry_run: bool | None = Field(default=None, alias='DryRun') + net_id: str = Field(alias='NetId') + +class UpdateNetResponse(GeneratedModel): + net: Net | None = Field(default=None, alias='Net') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class UpdateNicRequest(GeneratedModel): + description: str | None = Field(default=None, alias='Description') + dry_run: bool | None = Field(default=None, alias='DryRun') + link_nic: LinkNicToUpdate | None = Field(default=None, alias='LinkNic') + nic_id: str = Field(alias='NicId') + security_group_ids: list[str] | None = Field(default=None, alias='SecurityGroupIds') + +class UpdateNicResponse(GeneratedModel): + nic: Nic | None = Field(default=None, alias='Nic') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class UpdateRoutePropagationRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + enable: bool = Field(alias='Enable') + route_table_id: str = Field(alias='RouteTableId') + virtual_gateway_id: str = Field(alias='VirtualGatewayId') + +class UpdateRoutePropagationResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + route_table: RouteTable | None = Field(default=None, alias='RouteTable') + +class UpdateRouteRequest(GeneratedModel): + destination_ip_range: str = Field(alias='DestinationIpRange') + dry_run: bool | None = Field(default=None, alias='DryRun') + gateway_id: str | None = Field(default=None, alias='GatewayId') + nat_service_id: str | None = Field(default=None, alias='NatServiceId') + net_peering_id: str | None = Field(default=None, alias='NetPeeringId') + nic_id: str | None = Field(default=None, alias='NicId') + route_table_id: str = Field(alias='RouteTableId') + vm_id: str | None = Field(default=None, alias='VmId') + +class UpdateRouteResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + route_table: RouteTable | None = Field(default=None, alias='RouteTable') + +class UpdateRouteTableLinkRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + link_route_table_id: str = Field(alias='LinkRouteTableId') + route_table_id: str = Field(alias='RouteTableId') + +class UpdateRouteTableLinkResponse(GeneratedModel): + link_route_table_id: str | None = Field(default=None, alias='LinkRouteTableId') + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + +class UpdateServerCertificateRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + name: str = Field(alias='Name') + new_name: str | None = Field(default=None, alias='NewName') + new_path: str | None = Field(default=None, alias='NewPath') + +class UpdateServerCertificateResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + server_certificate: ServerCertificate | None = Field(default=None, alias='ServerCertificate') + +class UpdateSnapshotRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + permissions_to_create_volume: PermissionsOnResourceCreation = Field(alias='PermissionsToCreateVolume') + snapshot_id: str = Field(alias='SnapshotId') + +class UpdateSnapshotResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + snapshot: Snapshot | None = Field(default=None, alias='Snapshot') + +class UpdateSubnetRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + map_public_ip_on_launch: bool = Field(alias='MapPublicIpOnLaunch') + subnet_id: str = Field(alias='SubnetId') + +class UpdateSubnetResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + subnet: Subnet | None = Field(default=None, alias='Subnet') + +class UpdateUserGroupRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + new_path: str | None = Field(default=None, alias='NewPath') + new_user_group_name: str | None = Field(default=None, alias='NewUserGroupName') + path: str | None = Field(default=None, alias='Path') + user_group_name: str = Field(alias='UserGroupName') + +class UpdateUserGroupResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + user_group: UserGroup | None = Field(default=None, alias='UserGroup') + users: list[User] | None = Field(default=None, alias='Users') + +class UpdateUserRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + new_path: str | None = Field(default=None, alias='NewPath') + new_user_email: str | None = Field(default=None, alias='NewUserEmail') + new_user_name: str | None = Field(default=None, alias='NewUserName') + user_name: str = Field(alias='UserName') + +class UpdateUserResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + user: User | None = Field(default=None, alias='User') + +class UpdateVmGroupRequest(GeneratedModel): + description: str | None = Field(default=None, alias='Description') + dry_run: bool | None = Field(default=None, alias='DryRun') + tags: list[ResourceTag] | None = Field(default=None, alias='Tags') + vm_group_id: str = Field(alias='VmGroupId') + vm_group_name: str | None = Field(default=None, alias='VmGroupName') + vm_template_id: str | None = Field(default=None, alias='VmTemplateId') + +class UpdateVmGroupResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + vm_group: VmGroup | None = Field(default=None, alias='VmGroup') + +class UpdateVmRequest(GeneratedModel): + actions_on_next_boot: ActionsOnNextBoot | None = Field(default=None, alias='ActionsOnNextBoot') + block_device_mappings: list[BlockDeviceMappingVmUpdate] | None = Field(default=None, alias='BlockDeviceMappings') + bsu_optimized: bool | None = Field(default=None, alias='BsuOptimized') + deletion_protection: bool | None = Field(default=None, alias='DeletionProtection') + dry_run: bool | None = Field(default=None, alias='DryRun') + is_source_dest_checked: bool | None = Field(default=None, alias='IsSourceDestChecked') + keypair_name: str | None = Field(default=None, alias='KeypairName') + nested_virtualization: bool | None = Field(default=None, alias='NestedVirtualization') + performance: Literal['medium', 'high', 'highest'] | None = Field(default=None, alias='Performance') + security_group_ids: list[str] | None = Field(default=None, alias='SecurityGroupIds') + user_data: str | None = Field(default=None, alias='UserData') + vm_id: str = Field(alias='VmId') + vm_initiated_shutdown_behavior: str | None = Field(default=None, alias='VmInitiatedShutdownBehavior') + vm_type: str | None = Field(default=None, alias='VmType') + +class UpdateVmResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + vm: Vm | None = Field(default=None, alias='Vm') + +class UpdateVmTemplateRequest(GeneratedModel): + description: str | None = Field(default=None, alias='Description') + dry_run: bool | None = Field(default=None, alias='DryRun') + tags: list[ResourceTag] | None = Field(default=None, alias='Tags') + vm_template_id: str = Field(alias='VmTemplateId') + vm_template_name: str | None = Field(default=None, alias='VmTemplateName') + +class UpdateVmTemplateResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + vm_template: VmTemplate | None = Field(default=None, alias='VmTemplate') + +class UpdateVolumeRequest(GeneratedModel): + dry_run: bool | None = Field(default=None, alias='DryRun') + iops: int | None = Field(default=None, alias='Iops') + size: int | None = Field(default=None, alias='Size') + volume_id: str = Field(alias='VolumeId') + volume_type: str | None = Field(default=None, alias='VolumeType') + +class UpdateVolumeResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + volume: Volume | None = Field(default=None, alias='Volume') + +class UpdateVpnConnectionRequest(GeneratedModel): + client_gateway_id: str | None = Field(default=None, alias='ClientGatewayId') + dry_run: bool | None = Field(default=None, alias='DryRun') + virtual_gateway_id: str | None = Field(default=None, alias='VirtualGatewayId') + vpn_connection_id: str = Field(alias='VpnConnectionId') + vpn_options: VpnOptions | None = Field(default=None, alias='VpnOptions') + +class UpdateVpnConnectionResponse(GeneratedModel): + response_context: ResponseContext | None = Field(default=None, alias='ResponseContext') + vpn_connection: VpnConnection | None = Field(default=None, alias='VpnConnection') + +class User(GeneratedModel): + creation_date: str | None = Field(default=None, alias='CreationDate') + last_modification_date: str | None = Field(default=None, alias='LastModificationDate') + outscale_login_allowed: bool | None = Field(default=None, alias='OutscaleLoginAllowed') + path: str | None = Field(default=None, alias='Path') + user_email: str | None = Field(default=None, alias='UserEmail') + user_id: str | None = Field(default=None, alias='UserId') + user_name: str | None = Field(default=None, alias='UserName') + +class UserGroup(GeneratedModel): + creation_date: str | None = Field(default=None, alias='CreationDate') + last_modification_date: str | None = Field(default=None, alias='LastModificationDate') + name: str | None = Field(default=None, alias='Name') + orn: str | None = Field(default=None, alias='Orn') + path: str | None = Field(default=None, alias='Path') + user_group_id: str | None = Field(default=None, alias='UserGroupId') + +class VgwTelemetry(GeneratedModel): + accepted_route_count: int | None = Field(default=None, alias='AcceptedRouteCount') + last_state_change_date: str | None = Field(default=None, alias='LastStateChangeDate') + outside_ip_address: str | None = Field(default=None, alias='OutsideIpAddress') + state: str | None = Field(default=None, alias='State') + state_description: str | None = Field(default=None, alias='StateDescription') + +class VirtualGateway(GeneratedModel): + connection_type: str | None = Field(default=None, alias='ConnectionType') + net_to_virtual_gateway_links: list[NetToVirtualGatewayLink] | None = Field(default=None, alias='NetToVirtualGatewayLinks') + state: str | None = Field(default=None, alias='State') + tags: list[ResourceTag] | None = Field(default=None, alias='Tags') + virtual_gateway_id: str | None = Field(default=None, alias='VirtualGatewayId') + +class Vm(GeneratedModel): + actions_on_next_boot: ActionsOnNextBoot | None = Field(default=None, alias='ActionsOnNextBoot') + architecture: str | None = Field(default=None, alias='Architecture') + block_device_mappings: list[BlockDeviceMappingCreated] | None = Field(default=None, alias='BlockDeviceMappings') + boot_mode: BootMode | None = Field(default=None, alias='BootMode') + bsu_optimized: bool | None = Field(default=None, alias='BsuOptimized') + client_token: str | None = Field(default=None, alias='ClientToken') + creation_date: str | None = Field(default=None, alias='CreationDate') + deletion_protection: bool | None = Field(default=None, alias='DeletionProtection') + hypervisor: str | None = Field(default=None, alias='Hypervisor') + image_id: str | None = Field(default=None, alias='ImageId') + is_source_dest_checked: bool | None = Field(default=None, alias='IsSourceDestChecked') + keypair_name: str | None = Field(default=None, alias='KeypairName') + launch_number: int | None = Field(default=None, alias='LaunchNumber') + nested_virtualization: bool | None = Field(default=None, alias='NestedVirtualization') + net_id: str | None = Field(default=None, alias='NetId') + nics: list[NicLight] | None = Field(default=None, alias='Nics') + os_family: str | None = Field(default=None, alias='OsFamily') + performance: str | None = Field(default=None, alias='Performance') + placement: Placement | None = Field(default=None, alias='Placement') + private_dns_name: str | None = Field(default=None, alias='PrivateDnsName') + private_ip: str | None = Field(default=None, alias='PrivateIp') + product_codes: list[str] | None = Field(default=None, alias='ProductCodes') + public_dns_name: str | None = Field(default=None, alias='PublicDnsName') + public_ip: str | None = Field(default=None, alias='PublicIp') + reservation_id: str | None = Field(default=None, alias='ReservationId') + root_device_name: str | None = Field(default=None, alias='RootDeviceName') + root_device_type: str | None = Field(default=None, alias='RootDeviceType') + security_groups: list[SecurityGroupLight] | None = Field(default=None, alias='SecurityGroups') + state: str | None = Field(default=None, alias='State') + state_reason: str | None = Field(default=None, alias='StateReason') + subnet_id: str | None = Field(default=None, alias='SubnetId') + tags: list[ResourceTag] | None = Field(default=None, alias='Tags') + tpm_enabled: bool | None = Field(default=None, alias='TpmEnabled') + user_data: str | None = Field(default=None, alias='UserData') + vm_id: str | None = Field(default=None, alias='VmId') + vm_initiated_shutdown_behavior: str | None = Field(default=None, alias='VmInitiatedShutdownBehavior') + vm_type: str | None = Field(default=None, alias='VmType') + +class VmGroup(GeneratedModel): + creation_date: str | None = Field(default=None, alias='CreationDate') + description: str | None = Field(default=None, alias='Description') + positioning_strategy: Literal['attract', 'no-strategy', 'repulse'] | None = Field(default=None, alias='PositioningStrategy') + security_group_ids: list[str] | None = Field(default=None, alias='SecurityGroupIds') + state: Literal['available', 'deleted', 'deleting', 'pending', 'scaling down', 'scaling up'] | None = Field(default=None, alias='State') + subnet_id: str | None = Field(default=None, alias='SubnetId') + tags: list[ResourceTag] | None = Field(default=None, alias='Tags') + vm_count: int | None = Field(default=None, alias='VmCount') + vm_group_id: str | None = Field(default=None, alias='VmGroupId') + vm_group_name: str | None = Field(default=None, alias='VmGroupName') + vm_ids: list[str] | None = Field(default=None, alias='VmIds') + vm_template_id: str | None = Field(default=None, alias='VmTemplateId') + +class VmState(GeneratedModel): + current_state: str | None = Field(default=None, alias='CurrentState') + previous_state: str | None = Field(default=None, alias='PreviousState') + vm_id: str | None = Field(default=None, alias='VmId') + +class VmStates(GeneratedModel): + maintenance_events: list[MaintenanceEvent] | None = Field(default=None, alias='MaintenanceEvents') + subregion_name: str | None = Field(default=None, alias='SubregionName') + vm_id: str | None = Field(default=None, alias='VmId') + vm_state: str | None = Field(default=None, alias='VmState') + +class VmTemplate(GeneratedModel): + cpu_cores: int = Field(alias='CpuCores') + cpu_generation: str = Field(alias='CpuGeneration') + cpu_performance: Literal['medium', 'high', 'highest'] | None = Field(default=None, alias='CpuPerformance') + creation_date: str | None = Field(default=None, alias='CreationDate') + description: str | None = Field(default=None, alias='Description') + image_id: str = Field(alias='ImageId') + keypair_name: str | None = Field(default=None, alias='KeypairName') + ram: int = Field(alias='Ram') + tags: list[ResourceTag] | None = Field(default=None, alias='Tags') + vm_template_id: str = Field(alias='VmTemplateId') + vm_template_name: str = Field(alias='VmTemplateName') + +class VmType(GeneratedModel): + bsu_optimized: bool | None = Field(default=None, alias='BsuOptimized') + ephemerals_type: str | None = Field(default=None, alias='EphemeralsType') + eth: int | None = Field(default=None, alias='Eth') + gpu: int | None = Field(default=None, alias='Gpu') + max_private_ips: int | None = Field(default=None, alias='MaxPrivateIps') + memory_size: float | None = Field(default=None, alias='MemorySize') + vcore_count: int | None = Field(default=None, alias='VcoreCount') + vm_type_name: str | None = Field(default=None, alias='VmTypeName') + volume_count: int | None = Field(default=None, alias='VolumeCount') + volume_size: int | None = Field(default=None, alias='VolumeSize') + +class Volume(GeneratedModel): + client_token: str | None = Field(default=None, alias='ClientToken') + creation_date: str | None = Field(default=None, alias='CreationDate') + iops: int | None = Field(default=None, alias='Iops') + linked_volumes: list[LinkedVolume] | None = Field(default=None, alias='LinkedVolumes') + size: int | None = Field(default=None, alias='Size') + snapshot_id: str | None = Field(default=None, alias='SnapshotId') + state: str | None = Field(default=None, alias='State') + subregion_name: str | None = Field(default=None, alias='SubregionName') + tags: list[ResourceTag] | None = Field(default=None, alias='Tags') + task_id: str | None = Field(default=None, alias='TaskId') + volume_id: str | None = Field(default=None, alias='VolumeId') + volume_type: str | None = Field(default=None, alias='VolumeType') + +class VolumeUpdate(GeneratedModel): + origin: VolumeUpdateParameters | None = Field(default=None, alias='Origin') + target: VolumeUpdateParameters | None = Field(default=None, alias='Target') + +class VolumeUpdateParameters(GeneratedModel): + iops: int | None = Field(alias='Iops') + size: int = Field(alias='Size') + volume_type: str = Field(alias='VolumeType') + +class VolumeUpdateTask(GeneratedModel): + comment: str | None = Field(default=None, alias='Comment') + completion_date: str | None = Field(default=None, alias='CompletionDate') + progress: int | None = Field(default=None, alias='Progress') + start_date: str | None = Field(default=None, alias='StartDate') + state: str | None = Field(default=None, alias='State') + tags: list[ResourceTag] | None = Field(default=None, alias='Tags') + task_id: str | None = Field(default=None, alias='TaskId') + volume_id: str | None = Field(default=None, alias='VolumeId') + volume_update: VolumeUpdate | None = Field(default=None, alias='VolumeUpdate') + +class VpnConnection(GeneratedModel): + client_gateway_configuration: str | None = Field(default=None, alias='ClientGatewayConfiguration') + client_gateway_id: str | None = Field(default=None, alias='ClientGatewayId') + connection_type: str | None = Field(default=None, alias='ConnectionType') + routes: list[RouteLight] | None = Field(default=None, alias='Routes') + state: str | None = Field(default=None, alias='State') + static_routes_only: bool | None = Field(default=None, alias='StaticRoutesOnly') + tags: list[ResourceTag] | None = Field(default=None, alias='Tags') + vgw_telemetries: list[VgwTelemetry] | None = Field(default=None, alias='VgwTelemetries') + virtual_gateway_id: str | None = Field(default=None, alias='VirtualGatewayId') + vpn_connection_id: str | None = Field(default=None, alias='VpnConnectionId') + vpn_options: VpnOptions | None = Field(default=None, alias='VpnOptions') + +class VpnOptions(GeneratedModel): + phase1_options: Phase1Options | None = Field(default=None, alias='Phase1Options') + phase2_options: Phase2Options | None = Field(default=None, alias='Phase2Options') + tunnel_inside_ip_range: str | None = Field(default=None, alias='TunnelInsideIpRange') + +class With(GeneratedModel): + account_id: bool | None = Field(default=None, alias='AccountId') + call_duration: bool | None = Field(default=None, alias='CallDuration') + query_access_key: bool | None = Field(default=None, alias='QueryAccessKey') + query_api_name: bool | None = Field(default=None, alias='QueryApiName') + query_api_version: bool | None = Field(default=None, alias='QueryApiVersion') + query_call_name: bool | None = Field(default=None, alias='QueryCallName') + query_date: bool | None = Field(default=None, alias='QueryDate') + query_header_raw: bool | None = Field(default=None, alias='QueryHeaderRaw') + query_header_size: bool | None = Field(default=None, alias='QueryHeaderSize') + query_ip_address: bool | None = Field(default=None, alias='QueryIpAddress') + query_payload_raw: bool | None = Field(default=None, alias='QueryPayloadRaw') + query_payload_size: bool | None = Field(default=None, alias='QueryPayloadSize') + query_user_agent: bool | None = Field(default=None, alias='QueryUserAgent') + request_id: bool | None = Field(default=None, alias='RequestId') + response_size: bool | None = Field(default=None, alias='ResponseSize') + response_status_code: bool | None = Field(default=None, alias='ResponseStatusCode') From feca815c38baef855ca12394fe494471b559fa6c Mon Sep 17 00:00:00 2001 From: Yash Gaykar Date: Tue, 26 May 2026 13:51:39 +0530 Subject: [PATCH 11/26] :fire: chore: remove unnecessary error codes file --- MANIFEST.in | 1 - osc_sdk_python/resources/gateway_errors.yaml | 1220 ------------------ 2 files changed, 1221 deletions(-) delete mode 100644 osc_sdk_python/resources/gateway_errors.yaml diff --git a/MANIFEST.in b/MANIFEST.in index 953094b..22f9f2e 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,3 +1,2 @@ recursive-include osc_sdk_python/resources *.yaml -include osc_sdk_python/resources/gateway_errors.yaml include osc_sdk_python/VERSION diff --git a/osc_sdk_python/resources/gateway_errors.yaml b/osc_sdk_python/resources/gateway_errors.yaml deleted file mode 100644 index 8072a44..0000000 --- a/osc_sdk_python/resources/gateway_errors.yaml +++ /dev/null @@ -1,1220 +0,0 @@ -4000: - Description: '' - Name: access-keys-not-found - Type: InvalidParameterValue -4001: - Description: '' - Name: architecture-mismatch - Type: InvalidParameterValue -4002: - Description: '' - Name: bucket-not-found - Type: InvalidParameterValue -4003: - Description: '' - Name: device-name-not-associated - Type: InvalidParameterValue -4004: - Description: '' - Name: empty-target - Type: InvalidParameterValue -4005: - Description: '' - Name: enable-access-log-not-found - Type: InvalidParameterValue -4006: - Description: '' - Name: gateway-does-not-exist - Type: InvalidParameterValue -4007: - Description: '' - Name: instance-invalid-tenancy - Type: InvalidParameterValue -4008: - Description: '' - Name: invalid-affinity-target - Type: InvalidParameterValue -4009: - Description: '' - Name: invalid-asn - Type: InvalidParameterValue -4010: - Description: '' - Name: invalid-asn-range - Type: InvalidParameterValue -4011: - Description: '' - Name: invalid-bdm - Type: InvalidParameterValue -4012: - Description: '' - Name: invalid-billing-value - Type: InvalidParameterValue -4013: - Description: '' - Name: invalid-block - Type: InvalidParameterValue -4014: - Description: '' - Name: invalid-block-size - Type: InvalidParameterValue -4015: - Description: '' - Name: invalid-cidr-size - Type: InvalidParameterValue -4016: - Description: '' - Name: invalid-class-name - Type: InvalidParameterValue -4017: - Description: '' - Name: invalid-configuration - Type: InvalidParameterValue -4018: - Description: '' - Name: invalid-count - Type: InvalidParameterValue -4019: - Description: '' - Name: invalid-device-name - Type: InvalidParameterValue -4020: - Description: '' - Name: invalid-email-address - Type: InvalidParameterValue -4021: - Description: '' - Name: invalid-end-port - Type: InvalidParameterValue -4022: - Description: '' - Name: invalid-field-value - Type: InvalidParameterValue -4023: - Description: '' - Name: invalid-filter - Type: InvalidParameterValue -4024: - Description: '' - Name: invalid-host-pattern - Type: InvalidParameterValue -4025: - Description: '' - Name: invalid-id - Type: InvalidParameterValue -4026: - Description: '' - Name: invalid-image-name - Type: InvalidParameterValue -4027: - Description: '' - Name: invalid-import-path - Type: InvalidParameterValue -4028: - Description: '' - Name: invalid-instance-port - Type: InvalidParameterValue -4029: - Description: '' - Name: invalid-iops - Type: InvalidParameterValue -4030: - Description: '' - Name: invalid-ip-address - Type: InvalidParameterValue -4031: - Description: '' - Name: invalid-isolation-mode - Type: InvalidParameterValue -4032: - Description: '' - Name: invalid-key - Type: InvalidParameterValue -4033: - Description: '' - Name: invalid-key-size - Type: InvalidParameterValue -4034: - Description: '' - Name: invalid-keypair-index - Type: InvalidParameterValue -4035: - Description: '' - Name: invalid-keypair-name - Type: InvalidParameterValue -4036: - Description: '' - Name: invalid-lb-name - Type: InvalidParameterValue -4037: - Description: '' - Name: invalid-lb-port - Type: InvalidParameterValue -4038: - Description: '' - Name: invalid-lifecycle - Type: InvalidParameterValue -4039: - Description: '' - Name: invalid-lifecycle-role - Type: InvalidParameterValue -4040: - Description: '' - Name: invalid-manifest - Type: InvalidParameterValue -4041: - Description: '' - Name: invalid-manifest-format - Type: InvalidParameterValue -4042: - Description: '' - Name: invalid-method-name - Type: InvalidParameterValue -4043: - Description: '' - Name: invalid-name - Type: InvalidParameterValue -4044: - Description: '' - Name: invalid-notification - Type: InvalidParameterValue -4045: - Description: '' - Name: invalid-parameter - Type: InvalidParameterValue -4046: - Description: '' - Name: invalid-parameter-set - Type: InvalidParameterValue -4047: - Description: '' - Name: invalid-parameter-value - Type: InvalidParameterValue -4048: - Description: '' - Name: invalid-password - Type: InvalidParameterValue -4049: - Description: '' - Name: invalid-path-pattern - Type: InvalidParameterValue -4050: - Description: '' - Name: invalid-permission-format - Type: InvalidParameterValue -4051: - Description: '' - Name: invalid-port-specification - Type: InvalidParameterValue -4052: - Description: '' - Name: invalid-profile - Type: InvalidParameterValue -4053: - Description: '' - Name: invalid-protocol - Type: InvalidParameterValue -4054: - Description: '' - Name: invalid-protocol-layer - Type: InvalidParameterValue -4055: - Description: '' - Name: invalid-quorum - Type: InvalidParameterValue -4056: - Description: '' - Name: invalid-range - Type: InvalidParameterValue -4057: - Description: '' - Name: invalid-root-mapping - Type: InvalidParameterValue -4058: - Description: '' - Name: invalid-rule-action - Type: InvalidParameterValue -4059: - Description: '' - Name: invalid-rule-name - Type: InvalidParameterValue -4060: - Description: '' - Name: invalid-scheme - Type: InvalidParameterValue -4061: - Description: '' - Name: invalid-snapshot-id - Type: InvalidParameterValue -4062: - Description: '' - Name: invalid-source - Type: InvalidParameterValue -4063: - Description: '' - Name: invalid-start-ip - Type: InvalidParameterValue -4064: - Description: '' - Name: invalid-start-port - Type: InvalidParameterValue -4065: - Description: '' - Name: invalid-sticky-policy-cookie_name - Type: InvalidParameterValue -4066: - Description: '' - Name: invalid-sticky-policy-expiration - Type: InvalidParameterValue -4067: - Description: '' - Name: invalid-sticky-policy-name - Type: InvalidParameterValue -4068: - Description: '' - Name: invalid-stop-ip - Type: InvalidParameterValue -4069: - Description: '' - Name: invalid-tag-key - Type: InvalidParameterValue -4070: - Description: '' - Name: invalid-tag-value - Type: InvalidParameterValue -4071: - Description: '' - Name: invalid-tag-value-length - Type: InvalidParameterValue -4072: - Description: '' - Name: invalid-target - Type: InvalidParameterValue -4073: - Description: '' - Name: invalid-type - Type: InvalidParameterValue -4074: - Description: '' - Name: invalid-url - Type: InvalidParameterValue -4075: - Description: '' - Name: invalid-url-format - Type: InvalidParameterValue -4076: - Description: '' - Name: invalid-virtual-name - Type: InvalidParameterValue -4077: - Description: '' - Name: invalid-volume-device-name-association - Type: InvalidParameterValue -4078: - Description: '' - Name: invalid-volume-size - Type: InvalidParameterValue -4079: - Description: '' - Name: invalid-vpn-propagation - Type: InvalidParameterValue -4080: - Description: '' - Name: invalid-vpn-type - Type: InvalidParameterValue -4081: - Description: '' - Name: invalid-zone - Type: InvalidParameterValue -4082: - Description: '' - Name: invalid-zone-owner - Type: InvalidParameterValue -4083: - Description: '' - Name: InvalidKeyPair - Type: InvalidParameterValue -4084: - Description: '' - Name: load-balancer-attribute-not-found - Type: InvalidParameterValue -4085: - Description: '' - Name: multiple-sticky-policies-forbidden - Type: InvalidParameterValue -4086: - Description: '' - Name: network-mismatch - Type: InvalidParameterValue -4087: - Description: '' - Name: not-windows-instance - Type: InvalidParameterValue -4088: - Description: '' - Name: osu-connection-error - Type: InvalidParameterValue -4089: - Description: '' - Name: overlapping-timespan - Type: InvalidParameterValue -4091: - Description: '' - Name: token-mismatch - Type: InvalidParameterValue -4093: - Description: '' - Name: undefined-forwarding - Type: InvalidParameterValue -4094: - Description: '' - Name: unknown-export-version - Type: InvalidParameterValue -4095: - Description: '' - Name: validation-error - Type: InvalidParameterValue -4097: - Description: '' - Name: wrong-certificate-orn - Type: InvalidParameterValue -4099: - Description: '' - Name: wrong-emit-interval - Type: InvalidParameterValue -4100: - Description: '' - Name: wrong-event-type - Type: InvalidParameterValue -4101: - Description: '' - Name: wrong-prefix - Type: InvalidParameterValue -4102: - Description: '' - Name: wrong-protocol-for-ssl - Type: InvalidParameterValue -4103: - Description: '' - Name: wrong-resource-type - Type: InvalidParameterValue -4104: - Description: '' - Name: invalid-id-prefix - Type: InvalidParameterValue -4105: - Description: '' - Name: malformed-id - Type: InvalidParameterValue -4106: - Description: '' - Name: invalid-parameter-value-length - Type: InvalidParameterValue -4108: - Description: '' - Name: invalid-parameter-type - Type: InvalidParameterValue -4109: - Description: '' - Name: invalid-interval-type - Type: InvalidParameterValue -4111: - Description: '' - Name: invalid-parameters-value - Type: InvalidParameterValue -5000: - Description: '' - Name: device-not-in-cluster - Type: InvalidResource -5001: - Description: '' - Name: gateway-does-not-exist - Type: InvalidResource -5002: - Description: '' - Name: ghostly-vm - Type: InvalidResource -5003: - Description: '' - Name: invalid-instance - Type: InvalidResource -5004: - Description: '' - Name: invalid-vpc - Type: InvalidResource -5005: - Description: '' - Name: no-az-for-user - Type: InvalidResource -5006: - Description: '' - Name: no-pz-available - Type: InvalidResource -5007: - Description: '' - Name: no-such-attachment - Type: InvalidResource -5008: - Description: '' - Name: no-such-authorization - Type: InvalidResource -5009: - Description: '' - Name: no-such-az - Type: InvalidResource -5010: - Description: '' - Name: no-such-azmapping - Type: InvalidResource -5011: - Description: '' - Name: no-such-call - Type: InvalidResource -5012: - Description: '' - Name: no-such-certificate - Type: InvalidResource -5013: - Description: '' - Name: no-such-cluster - Type: InvalidResource -5014: - Description: '' - Name: no-such-configuration - Type: InvalidResource -5015: - Description: '' - Name: no-such-customer-gateway - Type: InvalidResource -5016: - Description: '' - Name: no-such-data-file - Type: InvalidResource -5017: - Description: '' - Name: no-such-device - Type: InvalidResource -5018: - Description: '' - Name: no-such-dhcpoptions - Type: InvalidResource -5019: - Description: '' - Name: no-such-gateway - Type: InvalidResource -5020: - Description: '' - Name: no-such-group - Type: InvalidResource -5021: - Description: '' - Name: no-such-group-in-public-cloud - Type: InvalidResource -5022: - Description: '' - Name: no-such-group-in-vpc - Type: InvalidResource -5023: - Description: '' - Name: no-such-image - Type: InvalidResource -5024: - Description: '' - Name: no-such-instance-type - Type: InvalidResource -5025: - Description: '' - Name: no-such-ip - Type: InvalidResource -5026: - Description: '' - Name: no-such-ip-association - Type: InvalidResource -5027: - Description: '' - Name: no-such-key - Type: InvalidResource -5028: - Description: '' - Name: no-such-listener - Type: InvalidResource -5029: - Description: '' - Name: no-such-listener-rule - Type: InvalidResource -5030: - Description: '' - Name: no-such-load-balancer - Type: InvalidResource -5031: - Description: '' - Name: no-such-manifest - Type: InvalidResource -5032: - Description: '' - Name: no-such-nat-gateway - Type: InvalidResource -5033: - Description: '' - Name: no-such-network - Type: InvalidResource -5034: - Description: '' - Name: no-such-network-endpoint - Type: InvalidResource -5035: - Description: '' - Name: no-such-networklink - Type: InvalidResource -5036: - Description: '' - Name: no-such-nic - Type: InvalidResource -5037: - Description: '' - Name: no-such-object - Type: InvalidResource -5038: - Description: '' - Name: no-such-operation - Type: InvalidResource -5039: - Description: '' - Name: no-such-pending-call - Type: InvalidResource -5040: - Description: '' - Name: no-such-prefix-list - Type: InvalidResource -5041: - Description: '' - Name: no-such-pz - Type: InvalidResource -5042: - Description: '' - Name: no-such-quota - Type: InvalidResource -5043: - Description: '' - Name: no-such-region - Type: InvalidResource -5044: - Description: '' - Name: no-such-resource - Type: InvalidResource -5045: - Description: '' - Name: no-such-route - Type: InvalidResource -5046: - Description: '' - Name: no-such-route-table - Type: InvalidResource -5047: - Description: '' - Name: no-such-rtb-assoc - Type: InvalidResource -5048: - Description: '' - Name: no-such-server - Type: InvalidResource -5049: - Description: '' - Name: no-such-server-group - Type: InvalidResource -5050: - Description: '' - Name: no-such-servergroup - Type: InvalidResource -5051: - Description: '' - Name: no-such-shard - Type: InvalidResource -5052: - Description: '' - Name: no-such-site - Type: InvalidResource -5053: - Description: '' - Name: no-such-slot - Type: InvalidResource -5054: - Description: '' - Name: no-such-snapshot - Type: InvalidResource -5055: - Description: '' - Name: no-such-static-route - Type: InvalidResource -5056: - Description: '' - Name: no-such-sticky-policy - Type: InvalidResource -5057: - Description: '' - Name: no-such-subnet - Type: InvalidResource -5058: - Description: '' - Name: no-such-task - Type: InvalidResource -5059: - Description: '' - Name: no-such-type - Type: InvalidResource -5060: - Description: '' - Name: no-such-user-group - Type: InvalidResource -5061: - Description: '' - Name: no-such-vlan-pool - Type: InvalidResource -5062: - Description: '' - Name: no-such-vlan-range - Type: InvalidResource -5063: - Description: '' - Name: no-such-vm - Type: InvalidResource -5064: - Description: '' - Name: no-such-volume - Type: InvalidResource -5065: - Description: '' - Name: no-such-vpc - Type: InvalidResource -5066: - Description: '' - Name: no-such-vpn-attachment - Type: InvalidResource -5067: - Description: '' - Name: no-such-vpn-connection - Type: InvalidResource -5068: - Description: '' - Name: no-such-vpn-gateway - Type: InvalidResource -5069: - Description: '' - Name: zero-candidate - Type: InvalidResource -5070: - Description: '' - Name: wrong-ssl-certificate - Type: InvalidResource -5071: - Description: '' - Name: no-such-keypair - Type: InvalidResource -5072: - Description: '' - Name: no-such-connection - Type: InvalidResource -5073: - Description: '' - Name: no-such-interface - Type: InvalidResource -5074: - Description: '' - Name: no-such-gpu-reservation - Type: InvalidResource -5075: - Description: '' - Name: no-such-user - Type: InvalidResource -6000: - Description: '' - Name: invalid-cg-state - Type: InvalidState -6001: - Description: '' - Name: invalid-image-state - Type: InvalidState -6002: - Description: '' - Name: invalid-router-state - Type: InvalidState -6003: - Description: '' - Name: invalid-state - Type: InvalidState -6004: - Description: '' - Name: invalid-state-transition (can be match with invalid-state ?) - Type: InvalidState -6005: - Description: '' - Name: invalid-subnet-state - Type: InvalidState -6006: - Description: '' - Name: invalid-vm-state - Type: InvalidState -6007: - Description: '' - Name: invalid-volume-state - Type: InvalidState -6008: - Description: '' - Name: invalid-vpg-state - Type: InvalidState -6009: - Description: '' - Name: invalid-vpn-connection-state - Type: InvalidState -9000: - Description: '' - Name: 'already-exist ' - Type: ResourceConflict -9001: - Description: '' - Name: ambiguous-ip - Type: ResourceConflict -9002: - Description: '' - Name: busy - Type: ResourceConflict -9003: - Description: '' - Name: device-conflict - Type: ResourceConflict -9004: - Description: '' - Name: device-in-use - Type: ResourceConflict -9005: - Description: '' - Name: duplicate-cidr - Type: ResourceConflict -9006: - Description: '' - Name: duplicate-connection - Type: ResourceConflict -9007: - Description: '' - Name: duplicate-email-address - Type: ResourceConflict -9008: - Description: '' - Name: duplicate-group - Type: ResourceConflict -9009: - Description: '' - Name: duplicate-id - Type: ResourceConflict -9010: - Description: '' - Name: duplicate-interface - Type: ResourceConflict -9011: - Description: '' - Name: duplicate-key - Type: ResourceConflict -9012: - Description: '' - Name: duplicate-listener - Type: ResourceConflict -9013: - Description: '' - Name: duplicate-loadbalancer-name - Type: ResourceConflict -9014: - Description: '' - Name: duplicate-mount-point - Type: ResourceConflict -9015: - Description: '' - Name: duplicate-name - Type: ResourceConflict -9016: - Description: '' - Name: duplicate-port - Type: ResourceConflict -9017: - Description: '' - Name: duplicate-prefix-list - Type: ResourceConflict -9018: - Description: '' - Name: duplicate-product - Type: ResourceConflict -9019: - Description: '' - Name: duplicate-router - Type: ResourceConflict -9020: - Description: '' - Name: duplicate-shard - Type: ResourceConflict -9021: - Description: '' - Name: duplicate-sticky-policy-name - Type: ResourceConflict -9022: - Description: '' - Name: duplicate-username - Type: ResourceConflict -9023: - Description: '' - Name: duplicate-vlan - Type: ResourceConflict -9024: - Description: '' - Name: gateway-is-already-attached - Type: ResourceConflict -9025: - Description: '' - Name: gateway-is-already-attached - Type: ResourceConflict -9026: - Description: '' - Name: gateway-is-not-attached - Type: ResourceConflict -9027: - Description: '' - Name: gateway-not-attached - Type: ResourceConflict -9028: - Description: '' - Name: group-already-exists - Type: ResourceConflict -9030: - Description: '' - Name: invalid-vpn-connection - Type: ResourceConflict -9031: - Description: '' - Name: locked-address - Type: ResourceConflict -9033: - Description: '' - Name: not-migrating - Type: ResourceConflict -9034: - Description: '' - Name: multiple-app-sticky-policies-forbidden - Type: ResourceConflict -9035: - Description: '' - Name: multiple-lb-sticky-policies-forbidden - Type: ResourceConflict -9036: - Description: '' - Name: multiple-sticky-policies-forbidden - Type: ResourceConflict -9037: - Description: '' - Name: nat-gateway-already-exists - Type: ResourceConflict -9038: - Description: '' - Name: network-endpoint-already-exists - Type: ResourceConflict -9039: - Description: '' - Name: never-started - Type: ResourceConflict -9041: - Description: '' - Name: no-generated-password - Type: ResourceConflict -9042: - Description: '' - Name: no-keypair-associated - Type: ResourceConflict -9043: - Description: '' - Name: no-vpn-network - Type: ResourceConflict -9044: - Description: '' - Name: not-in-vpc-block - Type: ResourceConflict -9045: - Description: '' - Name: not-public-subnet - Type: ResourceConflict -9046: - Description: '' - Name: password-already-set - Type: ResourceConflict -9047: - Description: '' - Name: priority-already-in-use - Type: ResourceConflict -9048: - Description: '' - Name: pz-already-mapped - Type: ResourceConflict -9049: - Description: '' - Name: pz-not-enabled - Type: ResourceConflict -9050: - Description: '' - Name: reserved-block - Type: ResourceConflict -9051: - Description: '' - Name: reserved-group - Type: ResourceConflict -9052: - Description: '' - Name: route-already-exists - Type: ResourceConflict -9053: - Description: '' - Name: route-does-not-exist - Type: ResourceConflict -9054: - Description: '' - Name: rule-name-already-in-use - Type: ResourceConflict -9055: - Description: '' - Name: sticky-policy-enabled-with-listeners - Type: ResourceConflict -9056: - Description: '' - Name: sticky-policy-only-with-http-https - Type: ResourceConflict -9057: - Description: '' - Name: subnet-already-in-use - Type: ResourceConflict -9058: - Description: '' - Name: subnet-conflict - Type: ResourceConflict -9059: - Description: '' - Name: subnet-is-associated - Type: ResourceConflict -9060: - Description: '' - Name: 'tag-already-exist ' - Type: ResourceConflict -9061: - Description: '' - Name: vm-already-streaming - Type: ResourceConflict -9062: - Description: '' - Name: vm-not-in-vpc - Type: ResourceConflict -9063: - Description: '' - Name: volume-not-in-use - Type: ResourceConflict -9064: - Description: '' - Name: volume-not-streamable - Type: ResourceConflict -9065: - Description: '' - Name: vpc-already-attached - Type: ResourceConflict -9066: - Description: '' - Name: vpc-is-associated - Type: ResourceConflict -9067: - Description: '' - Name: vpc-peering-connection-already-exists - Type: ResourceConflict -9068: - Description: '' - Name: vpn-connection-is-not-static - Type: ResourceConflict -9069: - Description: '' - Name: vpnc-conflict - Type: ResourceConflict -9070: - Description: '' - Name: zone-already-exist - Type: ResourceConflict -9071: - Description: '' - Name: zone-mismatch - Type: ResourceConflict -9072: - Description: '' - Name: vm-specs-mismatch - Type: ResourceConflict -10003: - Description: '' - Name: migration-ports-exhausted - Type: TooManyResources (QuotaExceded) -10004: - Description: '' - Name: resolution-has-too-many-sgs - Type: TooManyResources (QuotaExceded) -10005: - Description: '' - Name: too-many-accesskeys - Type: TooManyResources (QuotaExceded) -10006: - Description: '' - Name: too-many-accounts-created - Type: TooManyResources (QuotaExceded) -10007: - Description: '' - Name: too-many-certificate - Type: TooManyResources (QuotaExceded) -10008: - Description: '' - Name: too-many-concurrent-snapshots - Type: TooManyResources (QuotaExceded) -10009: - Description: '' - Name: too-many-cookie-param-set - Type: TooManyResources (QuotaExceded) -10010: - Description: '' - Name: too-many-instances - Type: TooManyResources (QuotaExceded) -10011: - Description: '' - Name: too-many-ips - Type: TooManyResources (QuotaExceded) -10012: - Description: '' - Name: too-many-listener-rules - Type: TooManyResources (QuotaExceded) -10013: - Description: '' - Name: too-many-listeners - Type: TooManyResources (QuotaExceded) -10014: - Description: '' - Name: too-many-load-balancers - Type: TooManyResources (QuotaExceded) -10015: - Description: '' - Name: too-many-network-interfaces - Type: TooManyResources (QuotaExceded) -10016: - Description: '' - Name: too-many-pz - Type: TooManyResources (QuotaExceded) -10017: - Description: '' - Name: too-many-sg-rules - Type: TooManyResources (QuotaExceded) -10018: - Description: '' - Name: too-many-volumes - Type: TooManyResources (QuotaExceded) -10019: - Description: '' - Name: too-much-pz - Type: TooManyResources (QuotaExceded) -10020: - Description: '' - Name: vpn-gateway-attachment-limit-reached - Type: TooManyResources (QuotaExceded) -10021: - Description: '' - Name: too-many-private-ips - Type: TooManyResources (QuotaExceded) -10022: - Description: '' - Name: too-many-vpcs - Type: TooManyResources (QuotaExceded) -10023: - Description: '' - Name: too-many-igws - Type: TooManyResources (QuotaExceded) -10024: - Description: '' - Name: too-much-volume-size - Type: TooManyResources (QuotaExceded) -10025: - Description: '' - Name: too-many-iops - Type: TooManyResources (QuotaExceded) -10026: - Description: '' - Name: too-many-snapshots - Type: TooManyResources (QuotaExceded) -10027: - Description: '' - Name: too-many-cgws - Type: TooManyResources (QuotaExceded) -10028: - Description: '' - Name: too-many-connections - Type: TooManyResources (QuotaExceded) -10029: - Description: '' - Name: too-many-cores - Type: TooManyResources (QuotaExceded) -10030: - Description: '' - Name: too-many-gpu - Type: TooManyResources (QuotaExceded) -10031: - Description: '' - Name: too-many-interfaces - Type: TooManyResources (QuotaExceded) -10032: - Description: '' - Name: too-many-nat-gateways - Type: TooManyResources (QuotaExceded) -10033: - Description: '' - Name: too-many-network-endpoints - Type: TooManyResources (QuotaExceded) -10034: - Description: '' - Name: too-many-networklink-requests - Type: TooManyResources (QuotaExceded) -10035: - Description: '' - Name: too-many-networklinks - Type: TooManyResources (QuotaExceded) -10036: - Description: '' - Name: too-many-nic-sgs - Type: TooManyResources (QuotaExceded) -10037: - Description: '' - Name: too-many-rtbs - Type: TooManyResources (QuotaExceded) -10038: - Description: '' - Name: too-many-sgs - Type: TooManyResources (QuotaExceded) -10040: - Description: '' - Name: too-many-static-routes - Type: TooManyResources (QuotaExceded) -10041: - Description: '' - Name: too-many-tags - Type: TooManyResources (QuotaExceded) -10042: - Description: '' - Name: too-much-memory - Type: TooManyResources (QuotaExceded) -10043: - Description: '' - Name: too-many-bgp-routes - Type: TooManyResources (QuotaExceded) -10044: - Description: '' - Name: too-many-bypass-group - Type: TooManyResources (QuotaExceded) -10045: - Description: '' - Name: too-much-bypass-group-size - Type: TooManyResources (QuotaExceded) -10046: - Description: '' - Name: too-many-gpu-reservations - Type: TooManyResources (QuotaExceded) From 7d59e49441c5998609126612fa02ffd566a31ca0 Mon Sep 17 00:00:00 2001 From: Yash Gaykar Date: Tue, 26 May 2026 13:52:25 +0530 Subject: [PATCH 12/26] :sparkles: feat: Update Gateway/Client to support multi service async clients --- osc_sdk_python/outscale_gateway.py | 45 +++++++++++++++--------------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/osc_sdk_python/outscale_gateway.py b/osc_sdk_python/outscale_gateway.py index d55b26c..5072623 100644 --- a/osc_sdk_python/outscale_gateway.py +++ b/osc_sdk_python/outscale_gateway.py @@ -3,12 +3,21 @@ from .runtime.async_.call import AsyncCall from .runtime.sync.call import Call from .runtime.request import RequestSpec + +# Bootstrap logic for generated mixins. +# This allows the SDK to load even if specific service code isn't generated yet. try: from .generated.oks import AsyncOksTypedMixin except (ImportError, ModuleNotFoundError): - # This allows the generator to run even if the generated code is missing - class AsyncOksTypedMixin: - pass + class AsyncOksTypedMixin: pass + +try: + from .generated.osc import AsyncOscTypedMixin +except (ImportError, ModuleNotFoundError): + class AsyncOscTypedMixin: pass + +# Replicate this pattern here for future services (e.g., EIM, FCU) +# if they are generated into separate mixins. from .limiter import RateLimiter import ruamel.yaml @@ -34,6 +43,8 @@ class AsyncOksTypedMixin: RESOURCE_DIR = os.path.join(os.path.dirname(__file__), "resources") OSC_SPEC = os.path.join(RESOURCE_DIR, "osc/api.yaml") OKS_SPEC = os.path.join(RESOURCE_DIR, "oks/api.yaml") +# Replicate this pattern here for future services (e.g., EIM, FCU) +# if they are generated into separate mixins. class ActionNotExists(NotImplementedError): @@ -85,7 +96,6 @@ class OpenAPIActionAPI: def __init__(self, spec, service="api", **kwargs): self.service = service self._load_gateway_structure(spec) - self._load_errors() self.log = Logger() self.limiter = RateLimiter(DEFAULT_LIMITER_WINDOW, DEFAULT_LIMITER_MAX_REQUESTS) self.call = Call( @@ -169,13 +179,6 @@ def _convert(self, input_file): def _load_gateway_structure(self, spec): self.gateway_structure = self._convert(spec) - def _load_errors(self): - dir_path = os.path.join(os.path.dirname(__file__)) - yaml_file = os.path.abspath("{}/resources/gateway_errors.yaml".format(dir_path)) - with open(yaml_file, "r") as yam: - yaml = ruamel.yaml.YAML(typ="safe") - self.gateway_errors = yaml.load(yam.read()) - def _check_parameters_type(self, action_structure, input_structure): for i_param, i_value in input_structure.items(): if ( @@ -272,7 +275,6 @@ class AsyncOpenAPIActionAPI(OpenAPIActionAPI): def __init__(self, spec, service="api", **kwargs): self.service = service self._load_gateway_structure(spec) - self._load_errors() self.log = Logger() self.limiter = RateLimiter(DEFAULT_LIMITER_WINDOW, DEFAULT_LIMITER_MAX_REQUESTS) self.call = AsyncCall( @@ -314,7 +316,6 @@ class OpenAPIPathAPI: def __init__(self, spec, service, **kwargs): self.service = service self.operations = self._load_operations(spec) - self._load_errors() self.log = Logger() self.limiter = RateLimiter(DEFAULT_LIMITER_WINDOW, DEFAULT_LIMITER_MAX_REQUESTS) self.call = Call(logger=self.log, limiter=self.limiter, **kwargs) @@ -344,13 +345,6 @@ def _load_operations(self, spec): } return operations - def _load_errors(self): - dir_path = os.path.join(os.path.dirname(__file__)) - yaml_file = os.path.abspath("{}/resources/gateway_errors.yaml".format(dir_path)) - with open(yaml_file, "r") as yam: - yaml = ruamel.yaml.YAML(typ="safe") - self.gateway_errors = yaml.load(yam.read()) - def _build_request(self, operation_name, kwargs): if operation_name not in self.operations: raise ActionNotExists( @@ -423,7 +417,6 @@ class AsyncOpenAPIPathAPI(OpenAPIPathAPI): def __init__(self, spec, service, **kwargs): self.service = service self.operations = self._load_operations(spec) - self._load_errors() self.log = Logger() self.limiter = RateLimiter(DEFAULT_LIMITER_WINDOW, DEFAULT_LIMITER_MAX_REQUESTS) self.call = AsyncCall(logger=self.log, limiter=self.limiter, **kwargs) @@ -456,7 +449,7 @@ def __init__(self, **kwargs): super().__init__(OSC_SPEC, service="api", **kwargs) -class AsyncOutscaleGateway(AsyncOpenAPIActionAPI): +class AsyncOutscaleGateway(AsyncOscTypedMixin, AsyncOpenAPIActionAPI): def __init__(self, **kwargs): super().__init__(OSC_SPEC, service="api", **kwargs) @@ -471,10 +464,16 @@ def __init__(self, **kwargs): super().__init__(OKS_SPEC, service="oks", **kwargs) +# Replicate this pattern here for future services (e.g., EIM, FCU) +# if they are generated into separate mixins. + + class Client: def __init__(self, **kwargs): self.osc = OutscaleGateway(**kwargs) self.oks = OksGateway(**kwargs) + # Replicate this pattern here for future services (e.g., EIM, FCU) + # if they are generated into separate mixins. def close(self): self.osc.close() @@ -491,6 +490,8 @@ class AsyncClient: def __init__(self, **kwargs): self.osc = AsyncOutscaleGateway(**kwargs) self.oks = AsyncOksGateway(**kwargs) + # Replicate this pattern here for future services (e.g., EIM, FCU) + # if they are generated into separate mixins. async def close(self): await self.osc.close() From 22a96e850907baab6e275bfd7883b1d39c20974e Mon Sep 17 00:00:00 2001 From: Yash Gaykar Date: Tue, 26 May 2026 13:55:30 +0530 Subject: [PATCH 13/26] :white_check_mark: test: Update osc sync tests using new client --- tests/sync/__init__.py | 1 + tests/sync/osc/__init__.py | 1 + tests/sync/{ => osc}/test_eim_user.py | 12 ++++--- tests/sync/{ => osc}/test_exceptions.py | 10 +++--- tests/sync/{ => osc}/test_exceptions_500.py | 14 +++++--- tests/sync/{ => osc}/test_keypair.py | 10 +++--- tests/sync/{ => osc}/test_limiter.py | 0 .../{ => osc}/test_load_balancer_backend.py | 28 ++++++++------- tests/sync/osc/test_log.py | 36 +++++++++++++++++++ tests/sync/{ => osc}/test_manual_aksk.py | 10 +++--- tests/sync/osc/test_net.py | 21 +++++++++++ tests/sync/{ => osc}/test_net_subnet.py | 22 ++++++------ tests/sync/{ => osc}/test_password.py | 10 +++--- tests/sync/{ => osc}/test_problems.py | 0 tests/sync/{ => osc}/test_retry.py | 0 tests/sync/{ => osc}/test_security_group.py | 16 +++++---- tests/sync/{ => osc}/test_snapshot.py | 24 +++++++------ tests/sync/{ => osc}/test_vm.py | 14 ++++---- tests/sync/osc/test_volume.py | 15 ++++++++ tests/sync/test_log.py | 36 ------------------- tests/sync/test_net.py | 21 ----------- tests/sync/test_volume.py | 15 -------- 22 files changed, 167 insertions(+), 149 deletions(-) create mode 100644 tests/sync/__init__.py create mode 100644 tests/sync/osc/__init__.py rename tests/sync/{ => osc}/test_eim_user.py (80%) rename tests/sync/{ => osc}/test_exceptions.py (50%) rename tests/sync/{ => osc}/test_exceptions_500.py (88%) rename tests/sync/{ => osc}/test_keypair.py (76%) rename tests/sync/{ => osc}/test_limiter.py (100%) rename tests/sync/{ => osc}/test_load_balancer_backend.py (85%) create mode 100644 tests/sync/osc/test_log.py rename tests/sync/{ => osc}/test_manual_aksk.py (67%) create mode 100644 tests/sync/osc/test_net.py rename tests/sync/{ => osc}/test_net_subnet.py (71%) rename tests/sync/{ => osc}/test_password.py (75%) rename tests/sync/{ => osc}/test_problems.py (100%) rename tests/sync/{ => osc}/test_retry.py (100%) rename tests/sync/{ => osc}/test_security_group.py (86%) rename tests/sync/{ => osc}/test_snapshot.py (80%) rename tests/sync/{ => osc}/test_vm.py (52%) create mode 100644 tests/sync/osc/test_volume.py delete mode 100644 tests/sync/test_log.py delete mode 100644 tests/sync/test_net.py delete mode 100644 tests/sync/test_volume.py diff --git a/tests/sync/__init__.py b/tests/sync/__init__.py new file mode 100644 index 0000000..3051e06 --- /dev/null +++ b/tests/sync/__init__.py @@ -0,0 +1 @@ +"""Synchronous tests.""" diff --git a/tests/sync/osc/__init__.py b/tests/sync/osc/__init__.py new file mode 100644 index 0000000..fd72aba --- /dev/null +++ b/tests/sync/osc/__init__.py @@ -0,0 +1 @@ +"""Synchronous OSC tests.""" diff --git a/tests/sync/test_eim_user.py b/tests/sync/osc/test_eim_user.py similarity index 80% rename from tests/sync/test_eim_user.py rename to tests/sync/osc/test_eim_user.py index 10b8cb6..fdf6cb1 100644 --- a/tests/sync/test_eim_user.py +++ b/tests/sync/osc/test_eim_user.py @@ -2,19 +2,20 @@ import unittest sys.path.append("..") -from osc_sdk_python import Gateway +from osc_sdk_python import Client from tests.integration_utils import get_tagged_name, log_test_step class TestEimUser(unittest.TestCase): def test_eim_user_lifecycle(self): - gw = Gateway() + client = Client() + osc = client.osc user_name = get_tagged_name("osc-sdk-python-user") user_email = "{}@example.com".format(user_name) user_id = None try: log_test_step("Creating EIM user {}".format(user_name)) - response = gw.CreateUser(Path="/", UserEmail=user_email, UserName=user_name) + response = osc.CreateUser(Path="/", UserEmail=user_email, UserName=user_name) user = response.get("User") self.assertIsInstance(user, dict) user_id = user.get("UserId") @@ -25,7 +26,7 @@ def test_eim_user_lifecycle(self): self.assertEqual(user.get("Path"), "/") log_test_step("Reading EIM user {}".format(user_id)) - read_response = gw.ReadUsers(Filters={"UserIds": [user_id]}) + read_response = osc.ReadUsers(Filters={"UserIds": [user_id]}) users = read_response.get("Users") self.assertIsInstance(users, list) self.assertEqual(len(users), 1) @@ -35,7 +36,8 @@ def test_eim_user_lifecycle(self): finally: if user_id: log_test_step("Deleting EIM user {}".format(user_name)) - gw.DeleteUser(UserName=user_name) + osc.DeleteUser(UserName=user_name) + client.close() if __name__ == "__main__": diff --git a/tests/sync/test_exceptions.py b/tests/sync/osc/test_exceptions.py similarity index 50% rename from tests/sync/test_exceptions.py rename to tests/sync/osc/test_exceptions.py index 3832812..2d38faf 100644 --- a/tests/sync/test_exceptions.py +++ b/tests/sync/osc/test_exceptions.py @@ -2,16 +2,16 @@ import sys sys.path.append("..") -from osc_sdk_python import Gateway +from osc_sdk_python import Client from requests.exceptions import HTTPError class TestExcept(unittest.TestCase): def test_listing(self): - gw = Gateway() - # a is not a valide argument - with self.assertRaises(HTTPError): - gw.ReadVms(Filters="a") + with Client() as client: + # a is not a valide argument + with self.assertRaises(HTTPError): + client.osc.ReadVms(Filters="a") if __name__ == "__main__": diff --git a/tests/sync/test_exceptions_500.py b/tests/sync/osc/test_exceptions_500.py similarity index 88% rename from tests/sync/test_exceptions_500.py rename to tests/sync/osc/test_exceptions_500.py index 15bf47b..20735e3 100644 --- a/tests/sync/test_exceptions_500.py +++ b/tests/sync/osc/test_exceptions_500.py @@ -7,7 +7,7 @@ import time sys.path.append("..") -from osc_sdk_python import Gateway +from osc_sdk_python import Client from requests.exceptions import RetryError from requests import HTTPError import copy @@ -60,16 +60,20 @@ def tearDownClass(cls): def test_server_error(self): os.environ["OSC_ENDPOINT_API"] = "http://127.0.0.1:8000" - gw = Gateway() + client = Client() + osc = client.osc # a is not a valide argument with self.assertRaises(RetryError): - gw.ReadVms() + osc.ReadVms() os.environ.pop("OSC_ENDPOINT_API", None) os.environ["OSC_ENDPOINT_API"] = "http://127.0.0.1:8000" - gw = Gateway() + client.close() + client = Client() + osc = client.osc # a is not a valide argument with self.assertRaises(HTTPError): - gw.ReadVms() + osc.ReadVms() + client.close() if __name__ == "__main__": diff --git a/tests/sync/test_keypair.py b/tests/sync/osc/test_keypair.py similarity index 76% rename from tests/sync/test_keypair.py rename to tests/sync/osc/test_keypair.py index d239add..1cc6407 100644 --- a/tests/sync/test_keypair.py +++ b/tests/sync/osc/test_keypair.py @@ -2,18 +2,19 @@ import unittest sys.path.append("..") -from osc_sdk_python import Gateway +from osc_sdk_python import Client from tests.integration_utils import get_tagged_name, log_test_step class TestKeypair(unittest.TestCase): def test_keypair_lifecycle(self): - gw = Gateway() + client = Client() + osc = client.osc keypair_name = get_tagged_name("osc-sdk-python-keypair") keypair_id = None try: log_test_step("Creating keypair {}".format(keypair_name)) - response = gw.CreateKeypair(KeypairName=keypair_name) + response = osc.CreateKeypair(KeypairName=keypair_name) keypair = response.get("Keypair") self.assertIsInstance(keypair, dict) keypair_id = keypair.get("KeypairId") @@ -22,7 +23,8 @@ def test_keypair_lifecycle(self): finally: if keypair_id: log_test_step("Deleting keypair {}".format(keypair_id)) - gw.DeleteKeypair(KeypairId=keypair_id) + osc.DeleteKeypair(KeypairId=keypair_id) + client.close() if __name__ == "__main__": diff --git a/tests/sync/test_limiter.py b/tests/sync/osc/test_limiter.py similarity index 100% rename from tests/sync/test_limiter.py rename to tests/sync/osc/test_limiter.py diff --git a/tests/sync/test_load_balancer_backend.py b/tests/sync/osc/test_load_balancer_backend.py similarity index 85% rename from tests/sync/test_load_balancer_backend.py rename to tests/sync/osc/test_load_balancer_backend.py index 4f0bf6a..f23707a 100644 --- a/tests/sync/test_load_balancer_backend.py +++ b/tests/sync/osc/test_load_balancer_backend.py @@ -3,7 +3,7 @@ import unittest sys.path.append("..") -from osc_sdk_python import Gateway +from osc_sdk_python import Client from tests.integration_utils import ( build_name_tag_request, get_first_subregion_name, @@ -17,16 +17,17 @@ class TestLoadBalancerBackend(unittest.TestCase): def test_load_balancer_backend_lifecycle(self): - gw = Gateway() - subregion_name = get_first_subregion_name(gw) - image_id = get_latest_public_ubuntu_image_id(gw) + client = Client() + osc = client.osc + subregion_name = get_first_subregion_name(osc) + image_id = get_latest_public_ubuntu_image_id(osc) log_test_step("Using subregion {} and image {}".format(subregion_name, image_id)) vm_id = None load_balancer_name = get_tagged_name("osc-sdk-python-lb") load_balancer_created = False try: log_test_step("Creating backend VM") - vm_response = gw.CreateVms( + vm_response = osc.CreateVms( ImageId=image_id, MinVmsCount=1, MaxVmsCount=1, @@ -41,11 +42,11 @@ def test_load_balancer_backend_lifecycle(self): self.assertTrue(vm_id) log_test_step("Created backend VM {}".format(vm_id)) - gw.CreateTags(**build_name_tag_request(vm_id)) + osc.CreateTags(**build_name_tag_request(vm_id)) log_test_step("Tagged backend VM {}".format(vm_id)) for _ in range(36): - vm = read_single_resource(gw, "ReadVms", "Vms", "VmIds", vm_id) + vm = read_single_resource(osc, "ReadVms", "Vms", "VmIds", vm_id) log_test_step("VM {} state={}".format(vm_id, vm.get("State"))) if vm.get("State") == "running": break @@ -54,7 +55,7 @@ def test_load_balancer_backend_lifecycle(self): time.sleep(10) log_test_step("Creating load balancer {}".format(load_balancer_name)) - load_balancer_response = gw.CreateLoadBalancer( + load_balancer_response = osc.CreateLoadBalancer( LoadBalancerName=load_balancer_name, Listeners=[ { @@ -71,12 +72,12 @@ def test_load_balancer_backend_lifecycle(self): load_balancer_created = True log_test_step("Linking backend VM {} to {}".format(vm_id, load_balancer_name)) - gw.LinkLoadBalancerBackendMachines( + osc.LinkLoadBalancerBackendMachines( LoadBalancerName=load_balancer_name, BackendVmIds=[vm_id] ) log_test_step("Reading load balancer {}".format(load_balancer_name)) - read_balancers = gw.ReadLoadBalancers( + read_balancers = osc.ReadLoadBalancers( Filters={"LoadBalancerNames": [load_balancer_name]} ) balancers = read_balancers.get("LoadBalancers") @@ -86,7 +87,7 @@ def test_load_balancer_backend_lifecycle(self): health = None for _ in range(18): - health = gw.ReadVmsHealth( + health = osc.ReadVmsHealth( LoadBalancerName=load_balancer_name, BackendVmIds=[vm_id] ) entry_count = len(health.get("BackendVmHealth", []) or []) @@ -113,11 +114,12 @@ def test_load_balancer_backend_lifecycle(self): finally: if load_balancer_created: log_test_step("Deleting load balancer {}".format(load_balancer_name)) - gw.DeleteLoadBalancer(LoadBalancerName=load_balancer_name) + osc.DeleteLoadBalancer(LoadBalancerName=load_balancer_name) if vm_id: time.sleep(1) log_test_step("Deleting backend VM {}".format(vm_id)) - gw.DeleteVms(VmIds=[vm_id]) + osc.DeleteVms(VmIds=[vm_id]) + client.close() if __name__ == "__main__": diff --git a/tests/sync/osc/test_log.py b/tests/sync/osc/test_log.py new file mode 100644 index 0000000..8a768dc --- /dev/null +++ b/tests/sync/osc/test_log.py @@ -0,0 +1,36 @@ +import unittest +import sys + +sys.path.append("..") +from osc_sdk_python import Client, LOG_MEMORY, LOG_KEEP_ONLY_LAST_REQ + + +class TestLog(unittest.TestCase): + def test_listing(self): + with Client() as client: + client.osc.log.config(type=LOG_MEMORY, what=LOG_KEEP_ONLY_LAST_REQ) + client.osc.ReadVms() + self.assertEqual( + client.osc.log.str(), + """uri: /api/v1/ReadVms +payload: +{}""", + ) + + client.osc.ReadVms(Filters={"TagKeys": ["test"]}) + self.assertEqual( + client.osc.log.str(), + """uri: /api/v1/ReadVms +payload: +{ + "Filters": { + "TagKeys": [ + "test" + ] + } +}""", + ) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/sync/test_manual_aksk.py b/tests/sync/osc/test_manual_aksk.py similarity index 67% rename from tests/sync/test_manual_aksk.py rename to tests/sync/osc/test_manual_aksk.py index d148a14..71db2a2 100644 --- a/tests/sync/test_manual_aksk.py +++ b/tests/sync/osc/test_manual_aksk.py @@ -3,7 +3,7 @@ import os sys.path.append("..") -from osc_sdk_python import Gateway +from osc_sdk_python import Client import copy @@ -22,10 +22,10 @@ def test_manual_ak_sk(self): sk = os.environ.pop("OSC_SECRET_KEY", None) self.assertIsNotNone(ak) self.assertIsNotNone(sk) - gw = Gateway(access_key=ak, secret_key=sk) - volumes = gw.ReadVolumes() - self.assertIsInstance(volumes, dict) - self.assertIsInstance(volumes.get("Volumes"), list) + with Client(access_key=ak, secret_key=sk) as client: + volumes = client.osc.ReadVolumes() + self.assertIsInstance(volumes, dict) + self.assertIsInstance(volumes.get("Volumes"), list) if __name__ == "__main__": diff --git a/tests/sync/osc/test_net.py b/tests/sync/osc/test_net.py new file mode 100644 index 0000000..1ae84bb --- /dev/null +++ b/tests/sync/osc/test_net.py @@ -0,0 +1,21 @@ +import unittest +import sys +import requests + +sys.path.append("..") +from osc_sdk_python import Client + + +class TestNet(unittest.TestCase): + def test_creation_error(self): + with Client() as client: + with self.assertRaises(requests.exceptions.HTTPError) as cm: + client.osc.CreateNet(IpRange="142.42.42.42/32") + + e = cm.exception + errors = e.response.json().get("Errors") + self.assertIsNotNone(errors) + self.assertIsInstance(errors, list) + for error in errors: + code = error.get("Code") + self.assertEqual(code, "9050") diff --git a/tests/sync/test_net_subnet.py b/tests/sync/osc/test_net_subnet.py similarity index 71% rename from tests/sync/test_net_subnet.py rename to tests/sync/osc/test_net_subnet.py index 69e2352..6c49441 100644 --- a/tests/sync/test_net_subnet.py +++ b/tests/sync/osc/test_net_subnet.py @@ -3,7 +3,7 @@ import unittest sys.path.append("..") -from osc_sdk_python import Gateway +from osc_sdk_python import Client from tests.integration_utils import ( build_name_tag_request, log_test_step, @@ -13,34 +13,35 @@ class TestNetAndSubnet(unittest.TestCase): def test_net_and_subnet_lifecycle(self): - gw = Gateway() + client = Client() + osc = client.osc net_id = None subnet_id = None try: log_test_step("Creating net 10.0.0.0/16") - net_response = gw.CreateNet(IpRange="10.0.0.0/16") + net_response = osc.CreateNet(IpRange="10.0.0.0/16") net = net_response.get("Net") self.assertIsInstance(net, dict) net_id = net.get("NetId") self.assertTrue(net_id) log_test_step("Created net {}".format(net_id)) - gw.CreateTags(**build_name_tag_request(net_id)) + osc.CreateTags(**build_name_tag_request(net_id)) time.sleep(2) log_test_step("Creating subnet 10.0.1.0/24 in {}".format(net_id)) - subnet_response = gw.CreateSubnet(NetId=net_id, IpRange="10.0.1.0/24") + subnet_response = osc.CreateSubnet(NetId=net_id, IpRange="10.0.1.0/24") subnet = subnet_response.get("Subnet") self.assertIsInstance(subnet, dict) subnet_id = subnet.get("SubnetId") self.assertTrue(subnet_id) log_test_step("Created subnet {}".format(subnet_id)) - gw.CreateTags(**build_name_tag_request(subnet_id)) + osc.CreateTags(**build_name_tag_request(subnet_id)) time.sleep(2) log_test_step("Reading subnet {}".format(subnet_id)) - subnet = read_single_resource(gw, "ReadSubnets", "Subnets", "SubnetIds", subnet_id) + subnet = read_single_resource(osc, "ReadSubnets", "Subnets", "SubnetIds", subnet_id) self.assertEqual(subnet.get("SubnetId"), subnet_id) self.assertTrue( any(tag.get("Key") == "Name" for tag in subnet.get("Tags", [])), @@ -48,15 +49,16 @@ def test_net_and_subnet_lifecycle(self): ) log_test_step("Updating subnet {}".format(subnet_id)) - updated = gw.UpdateSubnet(SubnetId=subnet_id, MapPublicIpOnLaunch=False) + updated = osc.UpdateSubnet(SubnetId=subnet_id, MapPublicIpOnLaunch=False) self.assertIsInstance(updated.get("Subnet"), dict) finally: if subnet_id: log_test_step("Deleting subnet {}".format(subnet_id)) - gw.DeleteSubnet(SubnetId=subnet_id) + osc.DeleteSubnet(SubnetId=subnet_id) if net_id: log_test_step("Deleting net {}".format(net_id)) - gw.DeleteNet(NetId=net_id) + osc.DeleteNet(NetId=net_id) + client.close() if __name__ == "__main__": diff --git a/tests/sync/test_password.py b/tests/sync/osc/test_password.py similarity index 75% rename from tests/sync/test_password.py rename to tests/sync/osc/test_password.py index e67457b..1f06602 100644 --- a/tests/sync/test_password.py +++ b/tests/sync/osc/test_password.py @@ -3,7 +3,7 @@ import os sys.path.append("..") -from osc_sdk_python import Gateway +from osc_sdk_python import Client import copy @@ -28,10 +28,10 @@ def test_login(self): password = os.getenv("OSC_TEST_PASSWORD") self.assertIsNotNone(email, None) self.assertIsNotNone(password, None) - gw = Gateway(email=email, password=password) - keys = gw.ReadAccessKeys() - self.assertIsInstance(keys, dict) - self.assertIsInstance(keys.get("AccessKeys"), list) + with Client(email=email, password=password) as client: + keys = client.osc.ReadAccessKeys() + self.assertIsInstance(keys, dict) + self.assertIsInstance(keys.get("AccessKeys"), list) if __name__ == "__main__": diff --git a/tests/sync/test_problems.py b/tests/sync/osc/test_problems.py similarity index 100% rename from tests/sync/test_problems.py rename to tests/sync/osc/test_problems.py diff --git a/tests/sync/test_retry.py b/tests/sync/osc/test_retry.py similarity index 100% rename from tests/sync/test_retry.py rename to tests/sync/osc/test_retry.py diff --git a/tests/sync/test_security_group.py b/tests/sync/osc/test_security_group.py similarity index 86% rename from tests/sync/test_security_group.py rename to tests/sync/osc/test_security_group.py index ce4811c..87b790b 100644 --- a/tests/sync/test_security_group.py +++ b/tests/sync/osc/test_security_group.py @@ -2,19 +2,20 @@ import unittest sys.path.append("..") -from osc_sdk_python import Gateway +from osc_sdk_python import Client from tests.integration_utils import get_tagged_name, log_test_step class TestSecurityGroup(unittest.TestCase): def test_security_group_lifecycle(self): - gw = Gateway() + client = Client() + osc = client.osc security_group_id = None tcp = "tcp" ip_range = "0.0.0.0/0" try: log_test_step("Creating security group") - response = gw.CreateSecurityGroup( + response = osc.CreateSecurityGroup( SecurityGroupName=get_tagged_name("osc-sdk-python-sg"), Description="Test security group lifecycle", ) @@ -25,7 +26,7 @@ def test_security_group_lifecycle(self): log_test_step("Created security group {}".format(security_group_id)) log_test_step("Creating inbound SSH rule on {}".format(security_group_id)) - rule_response = gw.CreateSecurityGroupRule( + rule_response = osc.CreateSecurityGroupRule( SecurityGroupId=security_group_id, Flow="Inbound", IpProtocol=tcp, @@ -36,7 +37,7 @@ def test_security_group_lifecycle(self): self.assertIsInstance(rule_response.get("SecurityGroup"), dict) log_test_step("Reading security group {}".format(security_group_id)) - read_response = gw.ReadSecurityGroups( + read_response = osc.ReadSecurityGroups( Filters={"SecurityGroupIds": [security_group_id]} ) security_groups = read_response.get("SecurityGroups") @@ -56,7 +57,7 @@ def test_security_group_lifecycle(self): ) log_test_step("Deleting inbound SSH rule on {}".format(security_group_id)) - gw.DeleteSecurityGroupRule( + osc.DeleteSecurityGroupRule( SecurityGroupId=security_group_id, Flow="Inbound", IpProtocol=tcp, @@ -67,7 +68,8 @@ def test_security_group_lifecycle(self): finally: if security_group_id: log_test_step("Deleting security group {}".format(security_group_id)) - gw.DeleteSecurityGroup(SecurityGroupId=security_group_id) + osc.DeleteSecurityGroup(SecurityGroupId=security_group_id) + client.close() if __name__ == "__main__": diff --git a/tests/sync/test_snapshot.py b/tests/sync/osc/test_snapshot.py similarity index 80% rename from tests/sync/test_snapshot.py rename to tests/sync/osc/test_snapshot.py index 151f692..9835b9c 100644 --- a/tests/sync/test_snapshot.py +++ b/tests/sync/osc/test_snapshot.py @@ -3,7 +3,7 @@ import unittest sys.path.append("..") -from osc_sdk_python import Gateway +from osc_sdk_python import Client from tests.integration_utils import ( build_name_tag_request, get_first_subregion_name, @@ -15,26 +15,27 @@ class TestSnapshot(unittest.TestCase): def test_snapshot_lifecycle(self): - gw = Gateway() - subregion_name = get_first_subregion_name(gw) + client = Client() + osc = client.osc + subregion_name = get_first_subregion_name(osc) log_test_step("Using subregion {}".format(subregion_name)) volume_id = None snapshot_id = None description = get_tagged_name("osc-sdk-python-snapshot") try: log_test_step("Creating source volume") - volume_response = gw.CreateVolume(Size=10, SubregionName=subregion_name) + volume_response = osc.CreateVolume(Size=10, SubregionName=subregion_name) volume = volume_response.get("Volume") self.assertIsInstance(volume, dict) volume_id = volume.get("VolumeId") self.assertTrue(volume_id) log_test_step("Created volume {}".format(volume_id)) - gw.CreateTags(**build_name_tag_request(volume_id)) + osc.CreateTags(**build_name_tag_request(volume_id)) log_test_step("Tagged volume {}".format(volume_id)) for _ in range(30): - volume = read_single_resource(gw, "ReadVolumes", "Volumes", "VolumeIds", volume_id) + volume = read_single_resource(osc, "ReadVolumes", "Volumes", "VolumeIds", volume_id) log_test_step("Volume {} state={}".format(volume_id, volume.get("State"))) if volume.get("State") == "available": break @@ -47,20 +48,20 @@ def test_snapshot_lifecycle(self): time.sleep(10) log_test_step("Creating snapshot from volume {}".format(volume_id)) - snapshot_response = gw.CreateSnapshot(Description=description, VolumeId=volume_id) + snapshot_response = osc.CreateSnapshot(Description=description, VolumeId=volume_id) snapshot = snapshot_response.get("Snapshot") self.assertIsInstance(snapshot, dict) snapshot_id = snapshot.get("SnapshotId") self.assertTrue(snapshot_id) log_test_step("Created snapshot {}".format(snapshot_id)) - gw.CreateTags(**build_name_tag_request(snapshot_id)) + osc.CreateTags(**build_name_tag_request(snapshot_id)) log_test_step("Tagged snapshot {}".format(snapshot_id)) snapshot = None for _ in range(60): snapshot = read_single_resource( - gw, "ReadSnapshots", "Snapshots", "SnapshotIds", snapshot_id + osc, "ReadSnapshots", "Snapshots", "SnapshotIds", snapshot_id ) log_test_step("Snapshot {} state={}".format(snapshot_id, snapshot.get("State"))) if snapshot.get("State") == "completed": @@ -86,11 +87,12 @@ def test_snapshot_lifecycle(self): finally: if snapshot_id: log_test_step("Deleting snapshot {}".format(snapshot_id)) - gw.DeleteSnapshot(SnapshotId=snapshot_id) + osc.DeleteSnapshot(SnapshotId=snapshot_id) if volume_id: time.sleep(1) log_test_step("Deleting volume {}".format(volume_id)) - gw.DeleteVolume(VolumeId=volume_id) + osc.DeleteVolume(VolumeId=volume_id) + client.close() if __name__ == "__main__": diff --git a/tests/sync/test_vm.py b/tests/sync/osc/test_vm.py similarity index 52% rename from tests/sync/test_vm.py rename to tests/sync/osc/test_vm.py index 98b3dd3..05cd1e7 100644 --- a/tests/sync/test_vm.py +++ b/tests/sync/osc/test_vm.py @@ -2,18 +2,18 @@ import sys sys.path.append("..") -from osc_sdk_python import Gateway +from osc_sdk_python import Client class TestVm(unittest.TestCase): def test_listing(self): - gw = Gateway() - vms = gw.ReadVms() - self.assertEqual(type(vms), dict) - self.assertEqual(type(vms.get("Vms")), list) + with Client() as client: + vms = client.osc.ReadVms() + self.assertEqual(type(vms), dict) + self.assertEqual(type(vms.get("Vms")), list) def test_listing_with_context_manager(self): - with Gateway() as gw: - vms = gw.ReadVms() + with Client() as client: + vms = client.osc.ReadVms() self.assertEqual(type(vms), dict) self.assertEqual(type(vms.get("Vms")), list) diff --git a/tests/sync/osc/test_volume.py b/tests/sync/osc/test_volume.py new file mode 100644 index 0000000..588067e --- /dev/null +++ b/tests/sync/osc/test_volume.py @@ -0,0 +1,15 @@ +import unittest +import sys + +sys.path.append("..") +from osc_sdk_python import Client + +class TestVolume(unittest.TestCase): + def test_listing(self): + with Client() as client: + volumes = client.osc.ReadVolumes() + self.assertEqual(type(volumes), dict) + self.assertEqual(type(volumes.get("Volumes")), list) + +if __name__ == "__main__": + unittest.main() diff --git a/tests/sync/test_log.py b/tests/sync/test_log.py deleted file mode 100644 index 901d012..0000000 --- a/tests/sync/test_log.py +++ /dev/null @@ -1,36 +0,0 @@ -import unittest -import sys - -sys.path.append("..") -from osc_sdk_python import Gateway, LOG_MEMORY, LOG_KEEP_ONLY_LAST_REQ - - -class TestLog(unittest.TestCase): - def test_listing(self): - gw = Gateway() - gw.log.config(type=LOG_MEMORY, what=LOG_KEEP_ONLY_LAST_REQ) - gw.ReadVms() - self.assertEqual( - gw.log.str(), - """uri: /api/v1/ReadVms -payload: -{}""", - ) - - gw.ReadVms(Filters={"TagKeys": ["test"]}) - self.assertEqual( - gw.log.str(), - """uri: /api/v1/ReadVms -payload: -{ - "Filters": { - "TagKeys": [ - "test" - ] - } -}""", - ) - - -if __name__ == "__main__": - unittest.main() diff --git a/tests/sync/test_net.py b/tests/sync/test_net.py deleted file mode 100644 index 8055c6f..0000000 --- a/tests/sync/test_net.py +++ /dev/null @@ -1,21 +0,0 @@ -import unittest -import sys -import requests - -sys.path.append("..") -from osc_sdk_python import Gateway - - -class TestNet(unittest.TestCase): - def test_creation_error(self): - gw = Gateway() - with self.assertRaises(requests.exceptions.HTTPError) as cm: - gw.CreateNet(IpRange="142.42.42.42/32") - - e = cm.exception - errors = e.response.json().get("Errors") - self.assertIsNotNone(errors) - self.assertIsInstance(errors, list) - for error in errors: - code = error.get("Code") - self.assertEqual(code, "9050") diff --git a/tests/sync/test_volume.py b/tests/sync/test_volume.py deleted file mode 100644 index dbc3dd9..0000000 --- a/tests/sync/test_volume.py +++ /dev/null @@ -1,15 +0,0 @@ -import unittest -import sys - -sys.path.append("..") -from osc_sdk_python import Gateway - -class TestVolume(unittest.TestCase): - def test_listing(self): - gw = Gateway() - volumes = gw.ReadVolumes() - self.assertEqual(type(volumes), dict) - self.assertEqual(type(volumes.get("Volumes")), list) - -if __name__ == "__main__": - unittest.main() From aaa0da850dfc426d26bf5552003755f0cce923fc Mon Sep 17 00:00:00 2001 From: Yash Gaykar Date: Tue, 26 May 2026 13:56:44 +0530 Subject: [PATCH 14/26] :white_check_mark: test: Add a test for sync oks(project lifecycle) --- tests/sync/oks/__init__.py | 1 + tests/sync/oks/test_oks_project.py | 103 +++++++++++++++++++++++++++++ 2 files changed, 104 insertions(+) create mode 100644 tests/sync/oks/__init__.py create mode 100644 tests/sync/oks/test_oks_project.py diff --git a/tests/sync/oks/__init__.py b/tests/sync/oks/__init__.py new file mode 100644 index 0000000..df972c3 --- /dev/null +++ b/tests/sync/oks/__init__.py @@ -0,0 +1 @@ +"""Synchronous OKS tests.""" diff --git a/tests/sync/oks/test_oks_project.py b/tests/sync/oks/test_oks_project.py new file mode 100644 index 0000000..52b7a06 --- /dev/null +++ b/tests/sync/oks/test_oks_project.py @@ -0,0 +1,103 @@ +import time +import unittest + +import requests + +from osc_sdk_python import Client +from tests.integration_utils import get_tagged_name, log_test_step + + +PROJECT_READY_STATUS = "ready" + + +def wait_project_ready(client, project_id): + for _ in range(36): + response = client.oks.GetProject(project_id=project_id) + project = response.get("Project") + status = project.get("status") + log_test_step("OKS project {} status={}".format(project_id, status)) + if status == PROJECT_READY_STATUS: + return project + time.sleep(10) + + raise AssertionError("OKS project {} did not become ready".format(project_id)) + + +def delete_project_when_ready(client, project_id): + for _ in range(36): + try: + delete_response = client.oks.DeleteProject(project_id=project_id) + log_test_step("Deleted OKS project {}".format(project_id)) + return delete_response + except requests.HTTPError as err: + if err.response is None or err.response.status_code != 503: + raise + log_test_step( + "OKS project {} is not ready for deletion yet".format(project_id) + ) + time.sleep(10) + + raise AssertionError("OKS project {} could not be deleted".format(project_id)) + + +class TestOksProject(unittest.TestCase): + def test_project_lifecycle(self): + with Client() as client: + project_id = None + project_name = get_tagged_name("osc-sdk-python-oks-project") + updated_description = "Updated OKS project lifecycle test" + + try: + log_test_step("Reading OKS project template") + template_response = client.oks.GetProjectTemplate() + project_input = template_response.get("Template") + self.assertIsInstance(project_input, dict) + project_input.update( + { + "name": project_name, + "description": "OKS project lifecycle test", + "tags": {"Name": project_name}, + } + ) + + log_test_step("Creating OKS project {}".format(project_name)) + create_response = client.oks.CreateProject(body=project_input) + project = create_response.get("Project") + self.assertIsInstance(project, dict) + project_id = project.get("id") + self.assertTrue(project_id) + self.assertEqual(project.get("name"), project_name) + log_test_step("Created OKS project {}".format(project_id)) + + log_test_step("Reading OKS project {}".format(project_id)) + get_response = client.oks.GetProject(project_id=project_id) + read_project = get_response.get("Project") + self.assertIsInstance(read_project, dict) + self.assertEqual(read_project.get("id"), project_id) + self.assertEqual(read_project.get("name"), project_name) + + read_project = wait_project_ready(client, project_id) + self.assertEqual(read_project.get("id"), project_id) + self.assertEqual(read_project.get("name"), project_name) + + log_test_step("Updating OKS project {}".format(project_id)) + update_response = client.oks.UpdateProject( + project_id=project_id, + body={ + "description": updated_description, + "tags": {"Name": project_name, "Updated": "true"}, + }, + ) + updated_project = update_response.get("Project") + self.assertIsInstance(updated_project, dict) + self.assertEqual(updated_project.get("id"), project_id) + self.assertEqual(updated_project.get("name"), project_name) + self.assertEqual(updated_project.get("description"), updated_description) + finally: + if project_id: + log_test_step("Deleting OKS project {}".format(project_id)) + delete_project_when_ready(client, project_id) + + +if __name__ == "__main__": + unittest.main() From f1208e6e894a856a48117500ec0bd89a278f09ff Mon Sep 17 00:00:00 2001 From: Yash Gaykar Date: Tue, 26 May 2026 13:57:33 +0530 Subject: [PATCH 15/26] :white_check_mark: test: Add a test for async oks(project lifecycle) --- tests/async_/oks/__init__.py | 1 + tests/async_/oks/test_async_oks_project.py | 138 +++++++++++++++++++++ 2 files changed, 139 insertions(+) create mode 100644 tests/async_/oks/__init__.py create mode 100644 tests/async_/oks/test_async_oks_project.py diff --git a/tests/async_/oks/__init__.py b/tests/async_/oks/__init__.py new file mode 100644 index 0000000..277dc23 --- /dev/null +++ b/tests/async_/oks/__init__.py @@ -0,0 +1 @@ +"""Async OKS tests.""" diff --git a/tests/async_/oks/test_async_oks_project.py b/tests/async_/oks/test_async_oks_project.py new file mode 100644 index 0000000..d73a65e --- /dev/null +++ b/tests/async_/oks/test_async_oks_project.py @@ -0,0 +1,138 @@ +import asyncio +import unittest + +import httpx + +from osc_sdk_python import AsyncClient +from osc_sdk_python.generated.oks import ( + CreateProjectRequest, + DeleteProjectRequest, + DetailResponse, + GetProjectRequest, + GetProjectTemplateRequest, + Project, + ProjectInput, + ProjectResponse, + ProjectUpdate, + TemplateResponse_ProjectInput, + UpdateProjectRequest, +) +from tests.integration_utils import get_tagged_name, log_test_step + + +PROJECT_READY_STATUS = "ready" + + +async def wait_project_ready(client, project_id): + for _ in range(36): + response = await client.oks.get_project(GetProjectRequest(project_id=project_id)) + project = response.project + log_test_step( + "OKS project {} status={} (async)".format(project_id, project.status) + ) + if project.status == PROJECT_READY_STATUS: + return project + await asyncio.sleep(10) + + raise AssertionError("OKS project {} did not become ready".format(project_id)) + + +async def delete_project_when_ready(client, project_id): + for _ in range(36): + try: + delete_response = await client.oks.delete_project( + DeleteProjectRequest(project_id=project_id) + ) + log_test_step("Deleted OKS project {} (async)".format(project_id)) + return delete_response + except httpx.HTTPStatusError as err: + if err.response is None or err.response.status_code != 503: + raise + log_test_step( + "OKS project {} is not ready for deletion yet (async)".format( + project_id + ) + ) + await asyncio.sleep(10) + + raise AssertionError("OKS project {} could not be deleted".format(project_id)) + + +class TestAsyncOksProject(unittest.TestCase): + def test_project_lifecycle(self): + async def run(): + async with AsyncClient() as client: + project_id = None + project_name = get_tagged_name("osc-sdk-python-oks-project") + updated_description = "Updated OKS project lifecycle test" + + try: + log_test_step("Reading OKS project template (async)") + template_response = await client.oks.get_project_template( + GetProjectTemplateRequest() + ) + self.assertIsInstance(template_response, TemplateResponse_ProjectInput) + project_input = template_response.template.model_copy( + update={ + "name": project_name, + "description": "OKS project lifecycle test", + "tags": {"Name": project_name}, + } + ) + self.assertIsInstance(project_input, ProjectInput) + + log_test_step("Creating OKS project {} (async)".format(project_name)) + create_response = await client.oks.create_project( + CreateProjectRequest(body=project_input) + ) + self.assertIsInstance(create_response, ProjectResponse) + project = create_response.project + self.assertIsInstance(project, Project) + project_id = project.id + self.assertTrue(project_id) + self.assertEqual(project.name, project_name) + log_test_step("Created OKS project {} (async)".format(project_id)) + + log_test_step("Reading OKS project {} (async)".format(project_id)) + get_response = await client.oks.get_project( + GetProjectRequest(project_id=project_id) + ) + self.assertIsInstance(get_response, ProjectResponse) + read_project = get_response.project + self.assertIsInstance(read_project, Project) + self.assertEqual(read_project.id, project_id) + self.assertEqual(read_project.name, project_name) + + read_project = await wait_project_ready(client, project_id) + self.assertEqual(read_project.id, project_id) + self.assertEqual(read_project.name, project_name) + + log_test_step("Updating OKS project {} (async)".format(project_id)) + update_response = await client.oks.update_project( + UpdateProjectRequest( + project_id=project_id, + body=ProjectUpdate( + description=updated_description, + tags={"Name": project_name, "Updated": "true"}, + ), + ) + ) + self.assertIsInstance(update_response, ProjectResponse) + updated_project = update_response.project + self.assertIsInstance(updated_project, Project) + self.assertEqual(updated_project.id, project_id) + self.assertEqual(updated_project.name, project_name) + self.assertEqual(updated_project.description, updated_description) + finally: + if project_id: + log_test_step("Deleting OKS project {} (async)".format(project_id)) + delete_response = await delete_project_when_ready( + client, project_id + ) + self.assertIsInstance(delete_response, DetailResponse) + + asyncio.run(run()) + + +if __name__ == "__main__": + unittest.main() From 95df31d7b533df1adb2bb4b33e1bc23fa343275f Mon Sep 17 00:00:00 2001 From: Yash Gaykar Date: Tue, 26 May 2026 13:59:32 +0530 Subject: [PATCH 16/26] :white_check_mark: test: Add a tests for usage of osc using async client --- tests/async_/__init__.py | 1 + tests/async_/osc/__init__.py | 1 + tests/async_/osc/async_integration_utils.py | 70 +++++ tests/async_/osc/test_async_eim_user.py | 65 +++++ tests/async_/osc/test_async_exceptions.py | 21 ++ tests/async_/osc/test_async_exceptions_500.py | 71 +++++ tests/async_/osc/test_async_keypair.py | 42 +++ tests/async_/osc/test_async_limiter.py | 66 +++++ .../osc/test_async_load_balancer_backend.py | 214 ++++++++++++++ tests/async_/osc/test_async_log.py | 43 +++ tests/async_/osc/test_async_manual_aksk.py | 38 +++ tests/async_/osc/test_async_net.py | 29 ++ tests/async_/osc/test_async_net_subnet.py | 99 +++++++ tests/async_/osc/test_async_password.py | 48 +++ tests/async_/osc/test_async_retry.py | 276 ++++++++++++++++++ tests/async_/osc/test_async_security_group.py | 121 ++++++++ tests/async_/osc/test_async_snapshot.py | 149 ++++++++++ tests/async_/osc/test_async_vm.py | 37 +++ tests/async_/osc/test_async_volume.py | 23 ++ tests/async_/test_async_gateway.py | 49 ---- tests/async_/test_async_oks.py | 29 -- tests/async_/test_async_retry.py | 57 ---- tests/async_/test_async_security_group.py | 78 ----- tests/async_/test_async_typed_oks.py | 24 -- tests/async_/test_async_vm.py | 34 --- 25 files changed, 1414 insertions(+), 271 deletions(-) create mode 100644 tests/async_/__init__.py create mode 100644 tests/async_/osc/__init__.py create mode 100644 tests/async_/osc/async_integration_utils.py create mode 100644 tests/async_/osc/test_async_eim_user.py create mode 100644 tests/async_/osc/test_async_exceptions.py create mode 100644 tests/async_/osc/test_async_exceptions_500.py create mode 100644 tests/async_/osc/test_async_keypair.py create mode 100644 tests/async_/osc/test_async_limiter.py create mode 100644 tests/async_/osc/test_async_load_balancer_backend.py create mode 100644 tests/async_/osc/test_async_log.py create mode 100644 tests/async_/osc/test_async_manual_aksk.py create mode 100644 tests/async_/osc/test_async_net.py create mode 100644 tests/async_/osc/test_async_net_subnet.py create mode 100644 tests/async_/osc/test_async_password.py create mode 100644 tests/async_/osc/test_async_retry.py create mode 100644 tests/async_/osc/test_async_security_group.py create mode 100644 tests/async_/osc/test_async_snapshot.py create mode 100644 tests/async_/osc/test_async_vm.py create mode 100644 tests/async_/osc/test_async_volume.py delete mode 100644 tests/async_/test_async_gateway.py delete mode 100644 tests/async_/test_async_oks.py delete mode 100644 tests/async_/test_async_retry.py delete mode 100644 tests/async_/test_async_security_group.py delete mode 100644 tests/async_/test_async_typed_oks.py delete mode 100644 tests/async_/test_async_vm.py diff --git a/tests/async_/__init__.py b/tests/async_/__init__.py new file mode 100644 index 0000000..32fbaf2 --- /dev/null +++ b/tests/async_/__init__.py @@ -0,0 +1 @@ +"""Async test package.""" diff --git a/tests/async_/osc/__init__.py b/tests/async_/osc/__init__.py new file mode 100644 index 0000000..eb4f5ac --- /dev/null +++ b/tests/async_/osc/__init__.py @@ -0,0 +1 @@ +"""Async OSC tests.""" diff --git a/tests/async_/osc/async_integration_utils.py b/tests/async_/osc/async_integration_utils.py new file mode 100644 index 0000000..4dee449 --- /dev/null +++ b/tests/async_/osc/async_integration_utils.py @@ -0,0 +1,70 @@ +from osc_sdk_python.generated.osc import ( + CreateTagsRequest, + ReadImagesRequest, + ReadSubregionsRequest, +) +from tests.integration_utils import ( + build_name_tag_request, + get_first_item, + get_linux_http_user_data, + get_tagged_name, + log_test_step, +) + + +async def get_first_subregion_name(client): + subregions = await client.osc.read_subregions(ReadSubregionsRequest()) + subregion = get_first_item(subregions.subregions, "No subregions returned") + if not subregion.subregion_name: + raise AssertionError("SubregionName is missing") + return subregion.subregion_name + + +async def get_latest_public_ubuntu_image_id(client): + images = await client.osc.read_images( + ReadImagesRequest( + filters={ + "AccountAliases": ["Outscale"], + "ImageNames": ["Ubuntu*"], + "PermissionsToLaunchGlobalPermission": True, + "States": ["available"], + }, + results_per_page=10, + ) + ) + image = get_first_item( + sorted(images.images or [], key=lambda item: item.creation_date or "", reverse=True), + "No public Ubuntu image returned", + ) + if not image.image_id: + raise AssertionError("ImageId is missing") + return image.image_id + + +async def read_single_resource(client, method_name, request_cls, key, resource_id_key, resource_id): + response = await getattr(client.osc, method_name)( + request_cls(filters={resource_id_key: [resource_id]}) + ) + items = getattr(response, key) + if not items or len(items) != 1: + raise AssertionError( + "{} did not return exactly one resource for {}".format( + method_name, resource_id + ) + ) + return items[0] + + +def build_name_tag_typed_request(resource_id): + return CreateTagsRequest(**build_name_tag_request(resource_id)) + + +__all__ = [ + "build_name_tag_typed_request", + "get_first_subregion_name", + "get_latest_public_ubuntu_image_id", + "get_linux_http_user_data", + "get_tagged_name", + "log_test_step", + "read_single_resource", +] diff --git a/tests/async_/osc/test_async_eim_user.py b/tests/async_/osc/test_async_eim_user.py new file mode 100644 index 0000000..d25fe44 --- /dev/null +++ b/tests/async_/osc/test_async_eim_user.py @@ -0,0 +1,65 @@ +import asyncio +import unittest + +from osc_sdk_python import AsyncClient +from osc_sdk_python.generated.osc import ( + CreateUserResponse, + CreateUserRequest, + DeleteUserRequest, + ReadUsersResponse, + ReadUsersRequest, + User, +) +from tests.async_.osc.async_integration_utils import get_tagged_name, log_test_step + + +class TestAsyncEimUser(unittest.TestCase): + def test_eim_user_lifecycle(self): + async def run(): + async with AsyncClient() as client: + user_name = get_tagged_name("osc-sdk-python-user-async") + user_email = "{}@example.com".format(user_name) + user_id = None + try: + log_test_step("Creating EIM user {} (async)".format(user_name)) + response = await client.osc.create_user( + CreateUserRequest( + path="/", + user_email=user_email, + user_name=user_name, + ) + ) + self.assertIsInstance(response, CreateUserResponse) + user = response.user + self.assertIsInstance(user, User) + user_id = user.user_id + self.assertTrue(user_id) + log_test_step("Created EIM user {} (async)".format(user_id)) + self.assertEqual(user.user_name, user_name) + self.assertEqual(user.user_email, user_email) + self.assertEqual(user.path, "/") + + log_test_step("Reading EIM user {} (async)".format(user_id)) + read_response = await client.osc.read_users( + ReadUsersRequest(filters={"UserIds": [user_id]}) + ) + self.assertIsInstance(read_response, ReadUsersResponse) + users = read_response.users + self.assertIsInstance(users, list) + self.assertEqual(len(users), 1) + self.assertIsInstance(users[0], User) + self.assertEqual(users[0].user_id, user_id) + self.assertEqual(users[0].user_name, user_name) + self.assertEqual(users[0].user_email, user_email) + finally: + if user_id: + log_test_step("Deleting EIM user {} (async)".format(user_name)) + await client.osc.delete_user( + DeleteUserRequest(user_name=user_name) + ) + + asyncio.run(run()) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/async_/osc/test_async_exceptions.py b/tests/async_/osc/test_async_exceptions.py new file mode 100644 index 0000000..78fb7a3 --- /dev/null +++ b/tests/async_/osc/test_async_exceptions.py @@ -0,0 +1,21 @@ +import asyncio +import unittest + +from pydantic import ValidationError + +from osc_sdk_python import AsyncClient +from osc_sdk_python.generated.osc import ReadVmsRequest + + +class TestAsyncExcept(unittest.TestCase): + def test_listing(self): + async def run(): + async with AsyncClient() as client: + with self.assertRaises(ValidationError): + await client.osc.read_vms(ReadVmsRequest(filters="a")) + + asyncio.run(run()) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/async_/osc/test_async_exceptions_500.py b/tests/async_/osc/test_async_exceptions_500.py new file mode 100644 index 0000000..837dc8e --- /dev/null +++ b/tests/async_/osc/test_async_exceptions_500.py @@ -0,0 +1,71 @@ +import asyncio +import copy +import os +import sys +import threading +import time +import unittest +from http.server import BaseHTTPRequestHandler +from socketserver import TCPServer + +import httpx + +from osc_sdk_python import AsyncClient +from osc_sdk_python.generated.osc import ReadVmsRequest + + +class EnvironManager: + def __enter__(self): + self.env = copy.deepcopy(os.environ) + + def __exit__(self, *args): + os.environ = self.env + + +class Send500(BaseHTTPRequestHandler): + def do_POST(self): + self.send_response(500) + self.send_header("Content-type", "application/json") + self.send_header("x-amz-requestid", "00000001") + self.end_headers() + self.wfile.write( + b'{"error": "Internal Server Error", "message": "test", "__type": 9}' + ) + + +@unittest.skip("this test is flaky") +class TestAsyncServerError(unittest.TestCase): + @classmethod + def setUpClass(cls): + cls.server = None + cls.thread = None + + def start_server(): + with TCPServer(("localhost", 8000), Send500) as httpd: + cls.server = httpd + httpd.serve_forever() + + cls.thread = threading.Thread(target=start_server) + cls.thread.daemon = True + cls.thread.start() + time.sleep(1) + + @classmethod + def tearDownClass(cls): + if cls.server: + cls.server.shutdown() + cls.thread.join() + + def test_server_error(self): + async def run(): + with EnvironManager(): + os.environ["OSC_ENDPOINT_API"] = "http://127.0.0.1:8000" + async with AsyncClient() as client: + with self.assertRaises(httpx.HTTPStatusError): + await client.osc.read_vms(ReadVmsRequest()) + + asyncio.run(run()) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/async_/osc/test_async_keypair.py b/tests/async_/osc/test_async_keypair.py new file mode 100644 index 0000000..948b588 --- /dev/null +++ b/tests/async_/osc/test_async_keypair.py @@ -0,0 +1,42 @@ +import asyncio +import unittest + +from osc_sdk_python import AsyncClient +from osc_sdk_python.generated.osc import ( + CreateKeypairRequest, + CreateKeypairResponse, + DeleteKeypairRequest, + KeypairCreated, +) +from tests.async_.osc.async_integration_utils import get_tagged_name, log_test_step + + +class TestAsyncKeypair(unittest.TestCase): + def test_keypair_lifecycle(self): + async def run(): + async with AsyncClient() as client: + keypair_name = get_tagged_name("osc-sdk-python-keypair-async") + keypair_id = None + try: + log_test_step("Creating keypair {} (async)".format(keypair_name)) + response = await client.osc.create_keypair( + CreateKeypairRequest(keypair_name=keypair_name) + ) + self.assertIsInstance(response, CreateKeypairResponse) + keypair = response.keypair + self.assertIsInstance(keypair, KeypairCreated) + keypair_id = keypair.keypair_id + self.assertTrue(keypair_id) + log_test_step("Created keypair {} (async)".format(keypair_id)) + finally: + if keypair_id: + log_test_step("Deleting keypair {} (async)".format(keypair_id)) + await client.osc.delete_keypair( + DeleteKeypairRequest(keypair_id=keypair_id) + ) + + asyncio.run(run()) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/async_/osc/test_async_limiter.py b/tests/async_/osc/test_async_limiter.py new file mode 100644 index 0000000..1281035 --- /dev/null +++ b/tests/async_/osc/test_async_limiter.py @@ -0,0 +1,66 @@ +import asyncio +import datetime + +from osc_sdk_python import RateLimiter + +i = 0 + + +def test_async_fast(monkeypatch): + async def run(): + with monkeypatch.context() as m: + was_called = [] + + async def mock_sleep(t): + was_called.append(t) + assert t > 0 + + class MockDateTimeFast(datetime.datetime): + @classmethod + def now(cls, tz=None): + global i + i += 1 + return cls(2022, 1, 1, microsecond=i, tzinfo=tz) + + m.setattr("asyncio.sleep", mock_sleep) + + rl = RateLimiter( + datetime.timedelta(seconds=1), 5, datetime_cls=MockDateTimeFast + ) + for _ in range(10): + await rl.async_acquire() + + assert len(rl.requests) > 5 + assert len(was_called) > 0 + + asyncio.run(run()) + + +def test_async_slow(monkeypatch): + async def run(): + with monkeypatch.context() as m: + was_called = [] + + async def mock_sleep(t): + was_called.append(t) + assert t > 0 + + class MockDateTimeSlow(datetime.datetime): + @classmethod + def now(cls, tz=None): + global i + i += 1 + return cls(2022 + i, 1, 1, tzinfo=tz) + + m.setattr("asyncio.sleep", mock_sleep) + + rl = RateLimiter( + datetime.timedelta(seconds=1), 5, datetime_cls=MockDateTimeSlow + ) + for _ in range(10): + await rl.async_acquire() + + assert len(rl.requests) <= 1 + assert len(was_called) == 0 + + asyncio.run(run()) diff --git a/tests/async_/osc/test_async_load_balancer_backend.py b/tests/async_/osc/test_async_load_balancer_backend.py new file mode 100644 index 0000000..cf7648a --- /dev/null +++ b/tests/async_/osc/test_async_load_balancer_backend.py @@ -0,0 +1,214 @@ +import asyncio +import unittest + +from osc_sdk_python import AsyncClient +from osc_sdk_python.generated.osc import ( + BackendVmHealth, + CreateLoadBalancerRequest, + CreateLoadBalancerResponse, + CreateVmsRequest, + CreateVmsResponse, + DeleteLoadBalancerRequest, + DeleteVmsRequest, + LinkLoadBalancerBackendMachinesRequest, + LoadBalancer, + ReadLoadBalancersRequest, + ReadLoadBalancersResponse, + ReadVmsHealthRequest, + ReadVmsHealthResponse, + ReadVmsRequest, + Vm, +) +from tests.async_.osc.async_integration_utils import ( + build_name_tag_typed_request, + get_first_subregion_name, + get_latest_public_ubuntu_image_id, + get_linux_http_user_data, + get_tagged_name, + log_test_step, + read_single_resource, +) + + +class TestAsyncLoadBalancerBackend(unittest.TestCase): + def test_load_balancer_backend_lifecycle(self): + async def run(): + async with AsyncClient() as client: + subregion_name = await get_first_subregion_name(client) + image_id = await get_latest_public_ubuntu_image_id(client) + log_test_step( + "Using subregion {} and image {} (async)".format( + subregion_name, image_id + ) + ) + vm_id = None + load_balancer_name = get_tagged_name("osc-sdk-python-lb") + load_balancer_created = False + try: + log_test_step("Creating backend VM (async)") + vm_response = await client.osc.create_vms( + CreateVmsRequest( + image_id=image_id, + min_vms_count=1, + max_vms_count=1, + placement={ + "SubregionName": subregion_name, + "Tenancy": "default", + }, + user_data=get_linux_http_user_data(), + vm_type="tinav6.c1r1p2", + ) + ) + self.assertIsInstance(vm_response, CreateVmsResponse) + vms = vm_response.vms + self.assertIsInstance(vms, list) + self.assertEqual(len(vms), 1) + self.assertIsInstance(vms[0], Vm) + vm_id = vms[0].vm_id + self.assertTrue(vm_id) + log_test_step("Created backend VM {} (async)".format(vm_id)) + + await client.osc.create_tags(build_name_tag_typed_request(vm_id)) + log_test_step("Tagged backend VM {} (async)".format(vm_id)) + + for _ in range(36): + vm = await read_single_resource( + client, + "read_vms", + ReadVmsRequest, + "vms", + "VmIds", + vm_id, + ) + self.assertIsInstance(vm, Vm) + log_test_step( + "VM {} state={} (async)".format(vm_id, vm.state) + ) + if vm.state == "running": + break + if vm.state in ("stopped", "terminated", "shutting-down"): + self.fail( + "VM {} entered unexpected state {}".format( + vm_id, vm.state + ) + ) + await asyncio.sleep(10) + + log_test_step("Creating load balancer {} (async)".format(load_balancer_name)) + load_balancer_response = await client.osc.create_load_balancer( + CreateLoadBalancerRequest( + load_balancer_name=load_balancer_name, + listeners=[ + { + "BackendPort": 80, + "LoadBalancerPort": 80, + "LoadBalancerProtocol": "TCP", + "BackendProtocol": "TCP", + } + ], + subregion_names=[subregion_name], + tags=[ + { + "Key": "Name", + "Value": get_tagged_name( + "osc-sdk-python-lb-tag-async" + ), + } + ], + ) + ) + self.assertIsInstance( + load_balancer_response, CreateLoadBalancerResponse + ) + self.assertIsInstance( + load_balancer_response.load_balancer, LoadBalancer + ) + load_balancer_created = True + + log_test_step( + "Linking backend VM {} to {} (async)".format( + vm_id, load_balancer_name + ) + ) + await client.osc.link_load_balancer_backend_machines( + LinkLoadBalancerBackendMachinesRequest( + load_balancer_name=load_balancer_name, + backend_vm_ids=[vm_id], + ) + ) + + log_test_step( + "Reading load balancer {} (async)".format(load_balancer_name) + ) + read_balancers = await client.osc.read_load_balancers( + ReadLoadBalancersRequest( + filters={"LoadBalancerNames": [load_balancer_name]} + ) + ) + self.assertIsInstance(read_balancers, ReadLoadBalancersResponse) + balancers = read_balancers.load_balancers + self.assertIsInstance(balancers, list) + self.assertEqual(len(balancers), 1) + self.assertIsInstance(balancers[0], LoadBalancer) + self.assertIn(vm_id, balancers[0].backend_vm_ids or []) + + health = None + for _ in range(18): + health = await client.osc.read_vms_health( + ReadVmsHealthRequest( + load_balancer_name=load_balancer_name, + backend_vm_ids=[vm_id], + ) + ) + self.assertIsInstance(health, ReadVmsHealthResponse) + entry_count = len(health.backend_vm_health or []) + if health.backend_vm_health: + self.assertIsInstance( + health.backend_vm_health[0], BackendVmHealth + ) + log_test_step( + "Backend health entries for {}: {} (async)".format( + load_balancer_name, entry_count + ) + ) + if any( + entry.vm_id == vm_id + for entry in health.backend_vm_health or [] + ): + break + await asyncio.sleep(10) + + self.assertIsNotNone(health) + self.assertTrue( + any( + entry.vm_id == vm_id + for entry in health.backend_vm_health or [] + ) + ) + log_test_step( + "Backend VM {} is registered in {} (async)".format( + vm_id, load_balancer_name + ) + ) + finally: + if load_balancer_created: + log_test_step( + "Deleting load balancer {} (async)".format( + load_balancer_name + ) + ) + await client.osc.delete_load_balancer( + DeleteLoadBalancerRequest( + load_balancer_name=load_balancer_name + ) + ) + if vm_id: + await asyncio.sleep(1) + log_test_step("Deleting backend VM {} (async)".format(vm_id)) + await client.osc.delete_vms(DeleteVmsRequest(vm_ids=[vm_id])) + + asyncio.run(run()) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/async_/osc/test_async_log.py b/tests/async_/osc/test_async_log.py new file mode 100644 index 0000000..8750c85 --- /dev/null +++ b/tests/async_/osc/test_async_log.py @@ -0,0 +1,43 @@ +import asyncio +import unittest + +from osc_sdk_python import AsyncClient, LOG_KEEP_ONLY_LAST_REQ, LOG_MEMORY +from osc_sdk_python.generated.osc import ReadVmsRequest, ReadVmsResponse + + +class TestAsyncLog(unittest.TestCase): + def test_listing(self): + async def run(): + async with AsyncClient() as client: + client.osc.log.config(type=LOG_MEMORY, what=LOG_KEEP_ONLY_LAST_REQ) + vms = await client.osc.read_vms(ReadVmsRequest()) + self.assertIsInstance(vms, ReadVmsResponse) + self.assertEqual( + client.osc.log.str(), + """uri: /api/v1/ReadVms +payload: +{}""", + ) + + vms = await client.osc.read_vms( + ReadVmsRequest(filters={"TagKeys": ["test"]}) + ) + self.assertIsInstance(vms, ReadVmsResponse) + self.assertEqual( + client.osc.log.str(), + """uri: /api/v1/ReadVms +payload: +{ + "Filters": { + "TagKeys": [ + "test" + ] + } +}""", + ) + + asyncio.run(run()) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/async_/osc/test_async_manual_aksk.py b/tests/async_/osc/test_async_manual_aksk.py new file mode 100644 index 0000000..95e06cd --- /dev/null +++ b/tests/async_/osc/test_async_manual_aksk.py @@ -0,0 +1,38 @@ +import asyncio +import copy +import os +import unittest + +from osc_sdk_python import AsyncClient +from osc_sdk_python.generated.osc import ReadVolumesRequest, ReadVolumesResponse, Volume + + +class EnvironManager: + def __enter__(self): + self.env = copy.deepcopy(os.environ) + + def __exit__(self, *args): + os.environ = self.env + + +class TestAsyncLoginManualAkSk(unittest.TestCase): + def test_manual_ak_sk(self): + async def run(): + with EnvironManager(): + ak = os.environ.pop("OSC_ACCESS_KEY", None) + sk = os.environ.pop("OSC_SECRET_KEY", None) + self.assertIsNotNone(ak) + self.assertIsNotNone(sk) + async with AsyncClient(access_key=ak, secret_key=sk) as client: + volumes = await client.osc.read_volumes(ReadVolumesRequest()) + + self.assertIsInstance(volumes, ReadVolumesResponse) + self.assertIsInstance(volumes.volumes, list) + if volumes.volumes: + self.assertIsInstance(volumes.volumes[0], Volume) + + asyncio.run(run()) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/async_/osc/test_async_net.py b/tests/async_/osc/test_async_net.py new file mode 100644 index 0000000..f49358d --- /dev/null +++ b/tests/async_/osc/test_async_net.py @@ -0,0 +1,29 @@ +import asyncio +import unittest + +import httpx + +from osc_sdk_python import AsyncClient +from osc_sdk_python.generated.osc import CreateNetRequest + + +class TestAsyncNet(unittest.TestCase): + def test_creation_error(self): + async def run(): + async with AsyncClient() as client: + with self.assertRaises(httpx.HTTPStatusError) as cm: + await client.osc.create_net( + CreateNetRequest(ip_range="142.42.42.42/32") + ) + + errors = cm.exception.response.json().get("Errors") + self.assertIsNotNone(errors) + self.assertIsInstance(errors, list) + for error in errors: + self.assertEqual(error.get("Code"), "9050") + + asyncio.run(run()) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/async_/osc/test_async_net_subnet.py b/tests/async_/osc/test_async_net_subnet.py new file mode 100644 index 0000000..ff068c8 --- /dev/null +++ b/tests/async_/osc/test_async_net_subnet.py @@ -0,0 +1,99 @@ +import asyncio +import unittest + +from osc_sdk_python import AsyncClient +from osc_sdk_python.generated.osc import ( + CreateNetRequest, + CreateNetResponse, + CreateSubnetRequest, + CreateSubnetResponse, + DeleteNetRequest, + DeleteSubnetRequest, + Net, + ReadSubnetsRequest, + Subnet, + UpdateSubnetRequest, + UpdateSubnetResponse, +) +from tests.async_.osc.async_integration_utils import ( + build_name_tag_typed_request, + log_test_step, + read_single_resource, +) + + +class TestAsyncNetAndSubnet(unittest.TestCase): + def test_net_and_subnet_lifecycle(self): + async def run(): + async with AsyncClient() as client: + net_id = None + subnet_id = None + try: + log_test_step("Creating net 10.0.0.0/16 (async)") + net_response = await client.osc.create_net( + CreateNetRequest(ip_range="10.0.0.0/16") + ) + self.assertIsInstance(net_response, CreateNetResponse) + net = net_response.net + self.assertIsInstance(net, Net) + net_id = net.net_id + self.assertTrue(net_id) + log_test_step("Created net {} (async)".format(net_id)) + + await client.osc.create_tags(build_name_tag_typed_request(net_id)) + await asyncio.sleep(2) + + log_test_step("Creating subnet 10.0.1.0/24 in {} (async)".format(net_id)) + subnet_response = await client.osc.create_subnet( + CreateSubnetRequest(net_id=net_id, ip_range="10.0.1.0/24") + ) + self.assertIsInstance(subnet_response, CreateSubnetResponse) + subnet = subnet_response.subnet + self.assertIsInstance(subnet, Subnet) + subnet_id = subnet.subnet_id + self.assertTrue(subnet_id) + log_test_step("Created subnet {} (async)".format(subnet_id)) + + await client.osc.create_tags(build_name_tag_typed_request(subnet_id)) + await asyncio.sleep(2) + + log_test_step("Reading subnet {} (async)".format(subnet_id)) + subnet = await read_single_resource( + client, + "read_subnets", + ReadSubnetsRequest, + "subnets", + "SubnetIds", + subnet_id, + ) + self.assertIsInstance(subnet, Subnet) + self.assertEqual(subnet.subnet_id, subnet_id) + self.assertTrue( + any(tag.key == "Name" for tag in subnet.tags or []), + "expected a Name tag on the subnet", + ) + + log_test_step("Updating subnet {} (async)".format(subnet_id)) + updated = await client.osc.update_subnet( + UpdateSubnetRequest( + subnet_id=subnet_id, + map_public_ip_on_launch=False, + ) + ) + self.assertIsInstance(updated, UpdateSubnetResponse) + self.assertIsInstance(updated.subnet, Subnet) + finally: + if subnet_id: + log_test_step("Deleting subnet {} (async)".format(subnet_id)) + await client.osc.delete_subnet( + DeleteSubnetRequest(subnet_id=subnet_id) + ) + if net_id: + log_test_step("Deleting net {} (async)".format(net_id)) + await client.osc.delete_net(DeleteNetRequest(net_id=net_id)) + + asyncio.run(run()) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/async_/osc/test_async_password.py b/tests/async_/osc/test_async_password.py new file mode 100644 index 0000000..e87f685 --- /dev/null +++ b/tests/async_/osc/test_async_password.py @@ -0,0 +1,48 @@ +import asyncio +import copy +import os +import unittest + +from osc_sdk_python import AsyncClient +from osc_sdk_python.generated.osc import ( + AccessKey, + ReadAccessKeysRequest, + ReadAccessKeysResponse, +) + + +class EnvironManager: + def __enter__(self): + self.env = copy.deepcopy(os.environ) + + def __exit__(self, *args): + os.environ = self.env + + +class TestAsyncLoginPassword(unittest.TestCase): + @unittest.skipIf( + not (os.environ.get("OSC_TEST_LOGIN") and os.environ.get("OSC_TEST_PASSWORD")), + "login/password credentials are not available", + ) + def test_login(self): + async def run(): + with EnvironManager(): + os.environ.pop("OSC_ACCESS_KEY", None) + os.environ.pop("OSC_SECRET_KEY", None) + email = os.getenv("OSC_TEST_LOGIN") + password = os.getenv("OSC_TEST_PASSWORD") + self.assertIsNotNone(email) + self.assertIsNotNone(password) + async with AsyncClient(email=email, password=password) as client: + keys = await client.osc.read_access_keys(ReadAccessKeysRequest()) + + self.assertIsInstance(keys, ReadAccessKeysResponse) + self.assertIsInstance(keys.access_keys, list) + if keys.access_keys: + self.assertIsInstance(keys.access_keys[0], AccessKey) + + asyncio.run(run()) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/async_/osc/test_async_retry.py b/tests/async_/osc/test_async_retry.py new file mode 100644 index 0000000..f05c206 --- /dev/null +++ b/tests/async_/osc/test_async_retry.py @@ -0,0 +1,276 @@ +import asyncio +from unittest.mock import Mock, patch + +import httpx +import pytest + +from osc_sdk_python.runtime.async_.retry import AsyncRetry + + +class RecordingAsyncClient: + def __init__(self, responses=None, exception=None): + self.calls = [] + self.responses = list(responses or []) + self.exception = exception + + async def request(self, method, url, **kwargs): + self.calls.append((method, url, kwargs)) + if self.exception is not None: + raise self.exception + return self.responses.pop(0) + + +class TestAsyncRetry: + def setup_method(self): + self.method = "POST" + self.url = "https://api.test-region.outscale.com/" + self.base_kwargs = {"timeout": 30} + + def build_response(self, status_code, reason="OK", content_type="application/json"): + return httpx.Response( + status_code, + headers={"content-type": content_type}, + json={"Errors": []}, + request=httpx.Request(self.method, self.url), + extensions={"reason_phrase": reason.encode()}, + ) + + def build_response_success(self): + return self.build_response(200) + + def test_execute_once_success(self): + async def run(): + response = self.build_response_success() + client = RecordingAsyncClient([response]) + + retry = AsyncRetry(client, self.method, self.url, **self.base_kwargs) + result = await retry.execute_once() + + assert result is response + assert client.calls == [(self.method, self.url, self.base_kwargs)] + + asyncio.run(run()) + + def test_should_retry_with_4xx_error(self): + retry = AsyncRetry(Mock(), self.method, self.url, **self.base_kwargs) + exception = httpx.HTTPStatusError( + "bad request", + request=httpx.Request(self.method, self.url), + response=self.build_response(400), + ) + + assert not retry.should_retry(exception) + + def test_should_retry_with_429_error(self): + retry = AsyncRetry(Mock(), self.method, self.url, **self.base_kwargs) + exception = httpx.HTTPStatusError( + "too many requests", + request=httpx.Request(self.method, self.url), + response=self.build_response(429), + ) + + assert retry.should_retry(exception) + + def test_should_retry_with_5xx_error_under_limit(self): + retry = AsyncRetry(Mock(), self.method, self.url, **self.base_kwargs) + exception = httpx.HTTPStatusError( + "server error", + request=httpx.Request(self.method, self.url), + response=self.build_response(500), + ) + + assert retry.should_retry(exception) + + def test_should_retry_with_no_response(self): + retry = AsyncRetry(Mock(), self.method, self.url, **self.base_kwargs) + exception = httpx.ConnectError( + "connection failed", + request=httpx.Request(self.method, self.url), + ) + + assert retry.should_retry(exception) + + def test_should_retry_at_max_retries(self): + retry = AsyncRetry( + Mock(), + self.method, + self.url, + attempt=3, + **self.base_kwargs, + ) + exception = httpx.ConnectError( + "connection failed", + request=httpx.Request(self.method, self.url), + ) + + assert not retry.should_retry(exception) + + def test_should_not_retry_too_many_redirects(self): + retry = AsyncRetry(Mock(), self.method, self.url, **self.base_kwargs) + exception = httpx.TooManyRedirects( + "too many redirects", + request=httpx.Request(self.method, self.url), + ) + + assert not retry.should_retry(exception) + + @patch("random.uniform") + def test_get_backoff_time(self, mock_random): + mock_random.return_value = 1.5 + retry = AsyncRetry( + Mock(), + self.method, + self.url, + attempt=2, + **self.base_kwargs, + ) + + assert retry.get_backoff_time() == 5.5 + + @patch("random.uniform") + def test_get_backoff_time_with_max(self, mock_random): + mock_random.return_value = 5.0 + retry = AsyncRetry( + Mock(), + self.method, + self.url, + attempt=10, + backoff_factor=2.0, + backoff_max=10.0, + **self.base_kwargs, + ) + + assert retry.get_backoff_time() == 10.0 + + def test_execute_success_no_retry(self): + async def run(): + response = self.build_response_success() + client = RecordingAsyncClient([response]) + retry = AsyncRetry(client, self.method, self.url, **self.base_kwargs) + + result = await retry.execute() + + assert result is response + assert len(client.calls) == 1 + + asyncio.run(run()) + + @patch("asyncio.sleep") + @patch("random.uniform") + def test_execute_with_retry_success(self, mock_random, mock_sleep): + async def run(): + mock_random.return_value = 1.0 + mock_sleep.return_value = None + client = RecordingAsyncClient( + [ + self.build_response(500, "Internal Server Error"), + self.build_response_success(), + ] + ) + retry = AsyncRetry(client, self.method, self.url, **self.base_kwargs) + + result = await retry.execute() + + assert result.status_code == 200 + assert len(client.calls) == 2 + mock_sleep.assert_called_once() + + asyncio.run(run()) + + def test_execute_with_4xx_error_no_retry(self): + async def run(): + client = RecordingAsyncClient([self.build_response(400, "Bad Request")]) + retry = AsyncRetry(client, self.method, self.url, **self.base_kwargs) + + with pytest.raises(httpx.HTTPStatusError): + await retry.execute() + + assert len(client.calls) == 1 + + asyncio.run(run()) + + @patch("asyncio.sleep") + @patch("random.uniform") + def test_execute_with_429_error_retry(self, mock_random, mock_sleep): + async def run(): + mock_random.return_value = 1.0 + mock_sleep.return_value = None + client = RecordingAsyncClient( + [self.build_response(429, "Too Many Requests") for _ in range(3)] + ) + retry = AsyncRetry( + client, + self.method, + self.url, + max_retries=2, + **self.base_kwargs, + ) + + with pytest.raises(httpx.HTTPStatusError): + await retry.execute() + + assert len(client.calls) == 3 + assert mock_sleep.call_count == 2 + + asyncio.run(run()) + + @patch("asyncio.sleep") + @patch("random.uniform") + def test_execute_with_500_error_retry_wrong_content_type( + self, mock_random, mock_sleep + ): + async def run(): + mock_random.return_value = 1.0 + mock_sleep.return_value = None + client = RecordingAsyncClient( + [ + self.build_response( + 500, + "Internal Server Error", + content_type="text/plain", + ) + for _ in range(3) + ] + ) + retry = AsyncRetry( + client, + self.method, + self.url, + max_retries=2, + **self.base_kwargs, + ) + + with pytest.raises(httpx.HTTPStatusError): + await retry.execute() + + assert len(client.calls) == 3 + assert mock_sleep.call_count == 2 + + asyncio.run(run()) + + @patch("asyncio.sleep") + @patch("random.uniform") + def test_execute_max_retries_exceeded(self, mock_random, mock_sleep): + async def run(): + mock_random.return_value = 1.0 + mock_sleep.return_value = None + exception = httpx.ConnectError( + "connection failed", + request=httpx.Request(self.method, self.url), + ) + client = RecordingAsyncClient(exception=exception) + retry = AsyncRetry( + client, + self.method, + self.url, + max_retries=2, + **self.base_kwargs, + ) + + with pytest.raises(httpx.ConnectError): + await retry.execute() + + assert len(client.calls) == 3 + assert mock_sleep.call_count == 2 + + asyncio.run(run()) diff --git a/tests/async_/osc/test_async_security_group.py b/tests/async_/osc/test_async_security_group.py new file mode 100644 index 0000000..2b99adb --- /dev/null +++ b/tests/async_/osc/test_async_security_group.py @@ -0,0 +1,121 @@ +import asyncio +import unittest + +from osc_sdk_python import AsyncClient +from osc_sdk_python.generated.osc import ( + CreateSecurityGroupRequest, + CreateSecurityGroupResponse, + CreateSecurityGroupRuleRequest, + CreateSecurityGroupRuleResponse, + DeleteSecurityGroupRequest, + DeleteSecurityGroupRuleRequest, + ReadSecurityGroupsRequest, + ReadSecurityGroupsResponse, + SecurityGroup, +) +from tests.async_.osc.async_integration_utils import get_tagged_name, log_test_step + + +class TestAsyncSecurityGroup(unittest.TestCase): + def test_security_group_lifecycle(self): + async def run(): + async with AsyncClient() as client: + security_group_id = None + tcp = "tcp" + ip_range = "0.0.0.0/0" + try: + log_test_step("Creating security group (async)") + response = await client.osc.create_security_group( + CreateSecurityGroupRequest( + security_group_name=get_tagged_name( + "osc-sdk-python-sg-async" + ), + description="Test security group lifecycle async", + ) + ) + self.assertIsInstance(response, CreateSecurityGroupResponse) + security_group = response.security_group + self.assertIsInstance(security_group, SecurityGroup) + security_group_id = security_group.security_group_id + self.assertTrue(security_group_id) + log_test_step( + "Created security group {} (async)".format(security_group_id) + ) + + log_test_step( + "Creating inbound SSH rule on {} (async)".format( + security_group_id + ) + ) + rule_response = await client.osc.create_security_group_rule( + CreateSecurityGroupRuleRequest( + security_group_id=security_group_id, + flow="Inbound", + ip_protocol=tcp, + from_port_range=22, + to_port_range=22, + ip_range=ip_range, + ) + ) + self.assertIsInstance(rule_response, CreateSecurityGroupRuleResponse) + self.assertIsInstance(rule_response.security_group, SecurityGroup) + + log_test_step( + "Reading security group {} (async)".format(security_group_id) + ) + read_response = await client.osc.read_security_groups( + ReadSecurityGroupsRequest( + filters={"SecurityGroupIds": [security_group_id]} + ) + ) + self.assertIsInstance(read_response, ReadSecurityGroupsResponse) + security_groups = read_response.security_groups + self.assertIsInstance(security_groups, list) + self.assertEqual(len(security_groups), 1) + self.assertIsInstance(security_groups[0], SecurityGroup) + + rules = security_groups[0].inbound_rules or [] + self.assertTrue( + any( + rule.from_port_range == 22 + and rule.to_port_range == 22 + and rule.ip_protocol == tcp + and ip_range in (rule.ip_ranges or []) + for rule in rules + ), + "expected SSH inbound rule on the security group", + ) + + log_test_step( + "Deleting inbound SSH rule on {} (async)".format( + security_group_id + ) + ) + await client.osc.delete_security_group_rule( + DeleteSecurityGroupRuleRequest( + security_group_id=security_group_id, + flow="Inbound", + ip_protocol=tcp, + from_port_range=22, + to_port_range=22, + ip_range=ip_range, + ) + ) + finally: + if security_group_id: + log_test_step( + "Deleting security group {} (async)".format( + security_group_id + ) + ) + await client.osc.delete_security_group( + DeleteSecurityGroupRequest( + security_group_id=security_group_id + ) + ) + + asyncio.run(run()) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/async_/osc/test_async_snapshot.py b/tests/async_/osc/test_async_snapshot.py new file mode 100644 index 0000000..d5e634c --- /dev/null +++ b/tests/async_/osc/test_async_snapshot.py @@ -0,0 +1,149 @@ +import asyncio +import unittest + +from osc_sdk_python import AsyncClient +from osc_sdk_python.generated.osc import ( + CreateSnapshotRequest, + CreateSnapshotResponse, + CreateVolumeRequest, + CreateVolumeResponse, + DeleteSnapshotRequest, + DeleteVolumeRequest, + ReadSnapshotsRequest, + ReadVolumesRequest, + Snapshot, + Volume, +) +from tests.async_.osc.async_integration_utils import ( + build_name_tag_typed_request, + get_first_subregion_name, + get_tagged_name, + log_test_step, + read_single_resource, +) + + +class TestAsyncSnapshot(unittest.TestCase): + def test_snapshot_lifecycle(self): + async def run(): + async with AsyncClient() as client: + subregion_name = await get_first_subregion_name(client) + log_test_step("Using subregion {} (async)".format(subregion_name)) + volume_id = None + snapshot_id = None + description = get_tagged_name("osc-sdk-python-snapshot-async") + try: + log_test_step("Creating source volume (async)") + volume_response = await client.osc.create_volume( + CreateVolumeRequest(size=10, subregion_name=subregion_name) + ) + self.assertIsInstance(volume_response, CreateVolumeResponse) + volume = volume_response.volume + self.assertIsInstance(volume, Volume) + volume_id = volume.volume_id + self.assertTrue(volume_id) + log_test_step("Created volume {} (async)".format(volume_id)) + + await client.osc.create_tags(build_name_tag_typed_request(volume_id)) + log_test_step("Tagged volume {} (async)".format(volume_id)) + + for _ in range(30): + volume = await read_single_resource( + client, + "read_volumes", + ReadVolumesRequest, + "volumes", + "VolumeIds", + volume_id, + ) + self.assertIsInstance(volume, Volume) + log_test_step( + "Volume {} state={} (async)".format( + volume_id, volume.state + ) + ) + if volume.state == "available": + break + if volume.state == "error": + self.fail( + "Volume {} entered unexpected state {}".format( + volume_id, volume.state + ) + ) + await asyncio.sleep(10) + + log_test_step( + "Creating snapshot from volume {} (async)".format(volume_id) + ) + snapshot_response = await client.osc.create_snapshot( + CreateSnapshotRequest( + description=description, + volume_id=volume_id, + ) + ) + self.assertIsInstance(snapshot_response, CreateSnapshotResponse) + snapshot = snapshot_response.snapshot + self.assertIsInstance(snapshot, Snapshot) + snapshot_id = snapshot.snapshot_id + self.assertTrue(snapshot_id) + log_test_step("Created snapshot {} (async)".format(snapshot_id)) + + await client.osc.create_tags(build_name_tag_typed_request(snapshot_id)) + log_test_step("Tagged snapshot {} (async)".format(snapshot_id)) + + snapshot = None + for _ in range(60): + snapshot = await read_single_resource( + client, + "read_snapshots", + ReadSnapshotsRequest, + "snapshots", + "SnapshotIds", + snapshot_id, + ) + self.assertIsInstance(snapshot, Snapshot) + log_test_step( + "Snapshot {} state={} (async)".format( + snapshot_id, snapshot.state + ) + ) + if snapshot.state == "completed": + break + if snapshot.state == "error": + self.fail( + "Snapshot {} entered unexpected state {}".format( + snapshot_id, snapshot.state + ) + ) + await asyncio.sleep(10) + + self.assertIsNotNone(snapshot) + self.assertIsInstance(snapshot, Snapshot) + self.assertEqual(snapshot.snapshot_id, snapshot_id) + self.assertEqual(snapshot.volume_id, volume_id) + self.assertEqual(snapshot.description, description) + self.assertTrue( + any(tag.key == "Name" for tag in snapshot.tags or []), + "expected a Name tag on the snapshot", + ) + log_test_step( + "Snapshot {} is completed (async)".format(snapshot_id) + ) + finally: + if snapshot_id: + log_test_step("Deleting snapshot {} (async)".format(snapshot_id)) + await client.osc.delete_snapshot( + DeleteSnapshotRequest(snapshot_id=snapshot_id) + ) + if volume_id: + await asyncio.sleep(1) + log_test_step("Deleting volume {} (async)".format(volume_id)) + await client.osc.delete_volume( + DeleteVolumeRequest(volume_id=volume_id) + ) + + asyncio.run(run()) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/async_/osc/test_async_vm.py b/tests/async_/osc/test_async_vm.py new file mode 100644 index 0000000..e548b89 --- /dev/null +++ b/tests/async_/osc/test_async_vm.py @@ -0,0 +1,37 @@ +import asyncio +import unittest + +from osc_sdk_python import AsyncClient +from osc_sdk_python.generated.osc import ReadVmsRequest, ReadVmsResponse, Vm + + +class TestAsyncVm(unittest.TestCase): + def test_listing(self): + async def run(): + client = AsyncClient() + try: + vms = await client.osc.read_vms(ReadVmsRequest()) + finally: + await client.close() + + self.assertIsInstance(vms.vms, list) + self.assertIsInstance(vms, ReadVmsResponse) + if vms.vms: + self.assertIsInstance(vms.vms[0], Vm) + + asyncio.run(run()) + + def test_listing_with_context_manager(self): + async def run(): + async with AsyncClient() as client: + vms = await client.osc.read_vms(ReadVmsRequest()) + self.assertIsInstance(vms, ReadVmsResponse) + self.assertIsInstance(vms.vms, list) + if vms.vms: + self.assertIsInstance(vms.vms[0], Vm) + + asyncio.run(run()) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/async_/osc/test_async_volume.py b/tests/async_/osc/test_async_volume.py new file mode 100644 index 0000000..7f8d8ec --- /dev/null +++ b/tests/async_/osc/test_async_volume.py @@ -0,0 +1,23 @@ +import asyncio +import unittest + +from osc_sdk_python import AsyncClient +from osc_sdk_python.generated.osc import ReadVolumesRequest, ReadVolumesResponse, Volume + + +class TestAsyncVolume(unittest.TestCase): + def test_listing(self): + async def run(): + async with AsyncClient() as client: + volumes = await client.osc.read_volumes(ReadVolumesRequest()) + + self.assertIsInstance(volumes, ReadVolumesResponse) + self.assertIsInstance(volumes.volumes, list) + if volumes.volumes: + self.assertIsInstance(volumes.volumes[0], Volume) + + asyncio.run(run()) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/async_/test_async_gateway.py b/tests/async_/test_async_gateway.py deleted file mode 100644 index 0fd10c9..0000000 --- a/tests/async_/test_async_gateway.py +++ /dev/null @@ -1,49 +0,0 @@ -import asyncio -import json - -import httpx - -from osc_sdk_python import AsyncGateway, LOG_KEEP_ONLY_LAST_REQ, LOG_MEMORY - - -def test_async_gateway_listing_and_log(): - requests = [] - - def handler(request): - requests.append(request) - return httpx.Response(200, json={"Vms": []}, request=request) - - async def run(): - gw = AsyncGateway(access_key="ak", secret_key="sk") - await gw.call.client.aclose() - gw.call.client = httpx.AsyncClient( - transport=httpx.MockTransport(handler), - trust_env=False, - ) - gw.log.config(type=LOG_MEMORY, what=LOG_KEEP_ONLY_LAST_REQ) - - try: - vms = await gw.ReadVms() - finally: - await gw.close() - - assert vms == {"Vms": []} - assert len(requests) == 1 - assert requests[0].method == "POST" - assert str(requests[0].url) == "https://api.eu-west-2.outscale.com/api/v1/ReadVms" - assert json.loads(requests[0].content.decode("utf-8")) == {} - assert gw.log.str() == """uri: /api/v1/ReadVms -payload: -{}""" - - asyncio.run(run()) - - -def test_async_gateway_context_manager_closes_client(): - async def run(): - async with AsyncGateway(access_key="ak", secret_key="sk") as gw: - assert not gw.call.client.is_closed - - assert gw.call.client.is_closed - - asyncio.run(run()) diff --git a/tests/async_/test_async_oks.py b/tests/async_/test_async_oks.py deleted file mode 100644 index 9f74867..0000000 --- a/tests/async_/test_async_oks.py +++ /dev/null @@ -1,29 +0,0 @@ -import asyncio -import unittest - -from osc_sdk_python import AsyncClient - - -class TestAsyncOks(unittest.TestCase): - def test_list_projects(self): - async def run(): - async with AsyncClient() as client: - projects = await client.oks.ListProjects() - - self.assertEqual(type(projects), dict) - self.assertEqual(type(projects.get("Projects")), list) - - asyncio.run(run()) - - def test_kubernetes_versions(self): - async def run(): - async with AsyncClient() as client: - versions = await client.oks.GetKubernetesVersions() - - self.assertEqual(type(versions), dict) - self.assertEqual(type(versions.get("Versions")), list) - - asyncio.run(run()) - -if __name__ == "__main__": - unittest.main() diff --git a/tests/async_/test_async_retry.py b/tests/async_/test_async_retry.py deleted file mode 100644 index ad82905..0000000 --- a/tests/async_/test_async_retry.py +++ /dev/null @@ -1,57 +0,0 @@ -import asyncio - -import httpx -import pytest - -from osc_sdk_python.runtime.async_.retry import AsyncRetry - - -def test_async_retry_success_no_retry(): - calls = [] - - def handler(request): - calls.append(request) - return httpx.Response(200, json={"ok": True}, request=request) - - async def run(): - async with httpx.AsyncClient( - transport=httpx.MockTransport(handler), - trust_env=False, - ) as client: - retry = AsyncRetry(client, "POST", "https://example.test") - result = await retry.execute() - - assert result.json() == {"ok": True} - assert len(calls) == 1 - - asyncio.run(run()) - - -def test_async_retry_retries_429(monkeypatch): - calls = [] - - def handler(request): - calls.append(request) - return httpx.Response(429, json={"Errors": []}, request=request) - - async def fake_sleep(_): - return None - - async def run(): - monkeypatch.setattr("asyncio.sleep", fake_sleep) - async with httpx.AsyncClient( - transport=httpx.MockTransport(handler), - trust_env=False, - ) as client: - retry = AsyncRetry( - client, - "POST", - "https://example.test", - max_retries=2, - ) - with pytest.raises(httpx.HTTPStatusError): - await retry.execute() - - assert len(calls) == 3 - - asyncio.run(run()) diff --git a/tests/async_/test_async_security_group.py b/tests/async_/test_async_security_group.py deleted file mode 100644 index 186ab6b..0000000 --- a/tests/async_/test_async_security_group.py +++ /dev/null @@ -1,78 +0,0 @@ -import asyncio -import sys -import unittest - -sys.path.append("..") -from osc_sdk_python import AsyncClient -from tests.integration_utils import get_tagged_name, log_test_step - - -class TestAsyncSecurityGroup(unittest.TestCase): - def test_security_group_lifecycle(self): - async def run(): - async with AsyncClient() as client: - security_group_id = None - tcp = "tcp" - ip_range = "0.0.0.0/0" - try: - log_test_step("Creating security group (async)") - response = await client.osc.CreateSecurityGroup( - SecurityGroupName=get_tagged_name("osc-sdk-python-sg-async"), - Description="Test security group lifecycle async", - ) - security_group = response.get("SecurityGroup") - self.assertIsInstance(security_group, dict) - security_group_id = security_group.get("SecurityGroupId") - self.assertTrue(security_group_id) - log_test_step("Created security group {} (async)".format(security_group_id)) - - log_test_step("Creating inbound SSH rule on {} (async)".format(security_group_id)) - rule_response = await client.osc.CreateSecurityGroupRule( - SecurityGroupId=security_group_id, - Flow="Inbound", - IpProtocol=tcp, - FromPortRange=22, - ToPortRange=22, - IpRange=ip_range, - ) - self.assertIsInstance(rule_response.get("SecurityGroup"), dict) - - log_test_step("Reading security group {} (async)".format(security_group_id)) - read_response = await client.osc.ReadSecurityGroups( - Filters={"SecurityGroupIds": [security_group_id]} - ) - security_groups = read_response.get("SecurityGroups") - self.assertIsInstance(security_groups, list) - self.assertEqual(len(security_groups), 1) - - rules = security_groups[0].get("InboundRules", []) - self.assertTrue( - any( - rule.get("FromPortRange") == 22 - and rule.get("ToPortRange") == 22 - and rule.get("IpProtocol") == tcp - and ip_range in rule.get("IpRanges", []) - for rule in rules - ), - "expected SSH inbound rule on the security group", - ) - - log_test_step("Deleting inbound SSH rule on {} (async)".format(security_group_id)) - await client.osc.DeleteSecurityGroupRule( - SecurityGroupId=security_group_id, - Flow="Inbound", - IpProtocol=tcp, - FromPortRange=22, - ToPortRange=22, - IpRange=ip_range, - ) - finally: - if security_group_id: - log_test_step("Deleting security group {} (async)".format(security_group_id)) - await client.osc.DeleteSecurityGroup(SecurityGroupId=security_group_id) - - asyncio.run(run()) - - -if __name__ == "__main__": - unittest.main() \ No newline at end of file diff --git a/tests/async_/test_async_typed_oks.py b/tests/async_/test_async_typed_oks.py deleted file mode 100644 index f862f25..0000000 --- a/tests/async_/test_async_typed_oks.py +++ /dev/null @@ -1,24 +0,0 @@ -import asyncio -import unittest - -from osc_sdk_python import AsyncClient -from osc_sdk_python.generated.oks import ( - KubernetesVersionsResponse, - ListProjectsRequest, - ProjectResponseList, -) - -class TestAsyncTypedOks(unittest.TestCase): - - def test_typed_async_oks_methods_use_runtime_and_models(self): - - async def run(): - async with AsyncClient() as client: - projects = await client.oks.list_projects( - ListProjectsRequest(name="demo", deleted=False) - ) - versions = await client.oks.get_kubernetes_versions() - assert isinstance(projects, ProjectResponseList) - assert isinstance(versions, KubernetesVersionsResponse) - - asyncio.run(run()) diff --git a/tests/async_/test_async_vm.py b/tests/async_/test_async_vm.py deleted file mode 100644 index 130b79d..0000000 --- a/tests/async_/test_async_vm.py +++ /dev/null @@ -1,34 +0,0 @@ -import asyncio -import sys -import unittest - -sys.path.append("..") -from osc_sdk_python import AsyncClient - - -class TestAsyncVm(unittest.TestCase): - def test_listing(self): - async def run(): - client = AsyncClient() - try: - vms = await client.osc.ReadVms() - finally: - await client.close() - - self.assertEqual(type(vms), dict) - self.assertEqual(type(vms.get("Vms")), list) - - asyncio.run(run()) - - def test_listing_with_context_manager(self): - async def run(): - async with AsyncClient() as client: - vms = await client.osc.ReadVms() - self.assertEqual(type(vms), dict) - self.assertEqual(type(vms.get("Vms")), list) - - asyncio.run(run()) - - -if __name__ == "__main__": - unittest.main() From 88f12a45cc2715f6542a484f1e22b4a4a7578ede Mon Sep 17 00:00:00 2001 From: Yash Gaykar Date: Tue, 26 May 2026 14:10:33 +0530 Subject: [PATCH 17/26] :white_check_mark: test: Add a tests for openapi based generator --- tests/unit/test_codegen_openapi_adapter.py | 242 +++++++++++++++++++++ 1 file changed, 242 insertions(+) create mode 100644 tests/unit/test_codegen_openapi_adapter.py diff --git a/tests/unit/test_codegen_openapi_adapter.py b/tests/unit/test_codegen_openapi_adapter.py new file mode 100644 index 0000000..1bed437 --- /dev/null +++ b/tests/unit/test_codegen_openapi_adapter.py @@ -0,0 +1,242 @@ +from osc_sdk_python.codegen.adapters import PathOperationAdapter +from osc_sdk_python.codegen.generator import render_async_client, render_init, render_models + + +def test_action_body_schema_reuses_component_request_model(): + spec = { + "paths": { + "/CreateVms": { + "post": { + "operationId": "CreateVms", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateVmsRequest" + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateVmsResponse" + } + } + } + } + }, + } + } + }, + "components": { + "schemas": { + "CreateVmsRequest": { + "type": "object", + "properties": {"ImageId": {"type": "string"}}, + }, + "CreateVmsResponse": { + "type": "object", + "properties": {"Vms": {"type": "array", "items": {"type": "object"}}}, + }, + } + }, + } + + adapter = PathOperationAdapter(spec, service="api") + operations = adapter.operations() + models = adapter.schema_models() + + assert operations[0].request_model.name == "CreateVmsRequest" + assert operations[0].uses_request_as_body is True + + rendered_models = render_models(operations, models, "osc") + assert rendered_models.count("class CreateVmsRequest") == 1 + + rendered_client = render_async_client(operations, "api", "osc") + assert "class AsyncOscTypedMixin:" in rendered_client + assert 'service="api"' in rendered_client + assert "json_body=_dump_json_body(request)," in rendered_client + assert "from pydantic import TypeAdapter" in rendered_client + assert "return TypeAdapter(CreateVmsResponse).validate_python(response)" in rendered_client + + rendered_init = render_init(operations, models, "osc") + assert "AsyncOscTypedMixin" in rendered_init + + +def test_path_query_service_generates_combined_request_model(): + spec = { + "paths": { + "/projects/{project_id}": { + "get": { + "operationId": "GetProject", + "parameters": [ + { + "name": "project_id", + "in": "path", + "required": True, + "schema": {"type": "string"}, + }, + { + "name": "deleted", + "in": "query", + "schema": {"type": "boolean"}, + }, + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProjectResponse" + } + } + } + } + }, + } + } + }, + "components": { + "schemas": { + "ProjectResponse": { + "type": "object", + "properties": {"Id": {"type": "string"}}, + } + } + }, + } + + adapter = PathOperationAdapter(spec, service="oks") + operations = adapter.operations() + + assert operations[0].request_model.name == "GetProjectRequest" + assert operations[0].uses_request_as_body is False + assert operations[0].path_fields[0].name == "project_id" + assert operations[0].query_fields[0].name == "deleted" + + rendered_client = render_async_client(operations, "oks", "oks") + assert "class AsyncOksTypedMixin:" in rendered_client + assert 'service="oks"' in rendered_client + assert "'project_id': request.project_id" in rendered_client + assert "'deleted': request.deleted" in rendered_client + + +def test_rest_body_schema_keeps_operation_request_wrapper(): + spec = { + "paths": { + "/projects": { + "post": { + "operationId": "CreateProject", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProjectInput" + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProjectResponse" + } + } + } + } + }, + } + } + }, + "components": { + "schemas": { + "ProjectInput": { + "type": "object", + "properties": {"name": {"type": "string"}}, + }, + "ProjectResponse": { + "type": "object", + "properties": {"id": {"type": "string"}}, + }, + } + }, + } + + adapter = PathOperationAdapter(spec, service="oks") + operations = adapter.operations() + + assert operations[0].request_model.name == "CreateProjectRequest" + assert operations[0].uses_request_as_body is False + assert operations[0].body_field.annotation == "ProjectInput" + + rendered_client = render_async_client(operations, "oks", "oks") + assert "request: CreateProjectRequest | None = None" in rendered_client + assert "json_body=_dump_json_body(request.body)" in rendered_client + + +def test_scalar_enums_render_as_literals(): + spec = { + "paths": {}, + "components": { + "schemas": { + "BootMode": { + "type": "string", + "enum": ["uefi", "legacy"], + }, + "Vm": { + "type": "object", + "properties": { + "BootMode": {"$ref": "#/components/schemas/BootMode"}, + "State": { + "type": "string", + "enum": ["pending", "running"], + }, + }, + }, + } + }, + } + + adapter = PathOperationAdapter(spec, service="api") + rendered_models = render_models([], adapter.schema_models(), "osc") + + assert "from typing import Any, Literal" in rendered_models + assert "BootMode = Literal['uefi', 'legacy']" in rendered_models + assert "boot_mode: BootMode | None" in rendered_models + assert "state: Literal['pending', 'running'] | None" in rendered_models + + +def test_non_model_response_uses_type_adapter(): + spec = { + "paths": { + "/names": { + "get": { + "operationId": "ListNames", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": {"type": "string"}, + } + } + } + } + }, + } + } + } + } + + adapter = PathOperationAdapter(spec, service="oks") + rendered_client = render_async_client(adapter.operations(), "oks", "oks") + + assert "async def list_names(" in rendered_client + assert " ) -> list[str]:" in rendered_client + assert "return TypeAdapter(list[str]).validate_python(response)" in rendered_client From 488d44a838cec42d49d9c6a3a148a1967f5d64a5 Mon Sep 17 00:00:00 2001 From: Yash Gaykar Date: Tue, 26 May 2026 14:14:06 +0530 Subject: [PATCH 18/26] :white_check_mark: test: Add a test to uniquely marked fields --- tests/unit/test_codegen_openapi_adapter.py | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/tests/unit/test_codegen_openapi_adapter.py b/tests/unit/test_codegen_openapi_adapter.py index 1bed437..653ec35 100644 --- a/tests/unit/test_codegen_openapi_adapter.py +++ b/tests/unit/test_codegen_openapi_adapter.py @@ -211,6 +211,30 @@ def test_scalar_enums_render_as_literals(): assert "state: Literal['pending', 'running'] | None" in rendered_models +def test_required_schema_fields_render_without_default_none(): + spec = { + "paths": {}, + "components": { + "schemas": { + "CreateVmRequest": { + "type": "object", + "required": ["ImageId"], + "properties": { + "ImageId": {"type": "string"}, + "DryRun": {"type": "boolean"}, + }, + } + } + }, + } + + adapter = PathOperationAdapter(spec, service="api") + rendered_models = render_models([], adapter.schema_models(), "osc") + + assert "image_id: str = Field(alias='ImageId')" in rendered_models + assert "dry_run: bool | None = Field(default=None, alias='DryRun')" in rendered_models + + def test_non_model_response_uses_type_adapter(): spec = { "paths": { From 0f52570d8fb5d03fdd6e9ed0a196dc69db409e70 Mon Sep 17 00:00:00 2001 From: Yash Gaykar Date: Wed, 27 May 2026 18:32:12 +0530 Subject: [PATCH 19/26] :test_tube: test: cover retry timeout and retry-after behavior --- osc_sdk_python/runtime/async_/retry.py | 8 ++- osc_sdk_python/runtime/sync/retry.py | 29 ++++++++++- tests/async_/osc/test_async_retry.py | 71 +++++++++++++++++++++++++- tests/sync/osc/test_retry.py | 42 ++++++++++++++- 4 files changed, 145 insertions(+), 5 deletions(-) diff --git a/osc_sdk_python/runtime/async_/retry.py b/osc_sdk_python/runtime/async_/retry.py index 66df675..22d1e42 100644 --- a/osc_sdk_python/runtime/async_/retry.py +++ b/osc_sdk_python/runtime/async_/retry.py @@ -11,6 +11,7 @@ RETRY_BACKOFF_JITTER, RETRY_BACKOFF_MAX, get_default_reason, + Retry, ) @@ -75,6 +76,9 @@ def get_backoff_time(self) -> float: backoff += random.uniform(0, self.backoff_jitter) return min(backoff, self.backoff_max) + def get_retry_after_time(self, e: httpx.HTTPError): + return Retry.get_retry_after_time(self, e) + async def execute(self) -> httpx.Response: try: res = await self.execute_once() @@ -82,7 +86,9 @@ async def execute(self) -> httpx.Response: return res except httpx.HTTPError as e: if self.should_retry(e): - sleep_time = self.get_backoff_time() + sleep_time = self.get_retry_after_time(e) + if sleep_time is None: + sleep_time = self.get_backoff_time() await asyncio.sleep(sleep_time) return await self.increment().execute() raise e diff --git a/osc_sdk_python/runtime/sync/retry.py b/osc_sdk_python/runtime/sync/retry.py index ba8dec8..e2facb2 100644 --- a/osc_sdk_python/runtime/sync/retry.py +++ b/osc_sdk_python/runtime/sync/retry.py @@ -1,6 +1,8 @@ import requests import time import random +from datetime import datetime, timezone +from email.utils import parsedate_to_datetime from requests.exceptions import JSONDecodeError from ...problem import ProblemDecoder, LegacyProblemDecoder, LegacyProblem, Problem @@ -81,6 +83,29 @@ def get_backoff_time(self) -> float: backoff += random.uniform(0, self.backoff_jitter) return min(backoff, self.backoff_max) + def get_retry_after_time(self, e: requests.exceptions.RequestException): + response = getattr(e, "response", None) + if response is None: + return None + + retry_after = response.headers.get("Retry-After") + if retry_after is None: + return None + + try: + return max(0.0, float(retry_after)) + except ValueError: + pass + + try: + retry_date = parsedate_to_datetime(retry_after) + except (TypeError, ValueError): + return None + + if retry_date.tzinfo is None: + retry_date = retry_date.replace(tzinfo=timezone.utc) + return max(0.0, (retry_date - datetime.now(timezone.utc)).total_seconds()) + def execute(self) -> requests.Response: try: res = self.execute_once() @@ -88,7 +113,9 @@ def execute(self) -> requests.Response: return res except requests.exceptions.RequestException as e: if self.should_retry(e): - sleep_time = self.get_backoff_time() + sleep_time = self.get_retry_after_time(e) + if sleep_time is None: + sleep_time = self.get_backoff_time() time.sleep(sleep_time) return self.increment().execute() else: diff --git a/tests/async_/osc/test_async_retry.py b/tests/async_/osc/test_async_retry.py index f05c206..b68b903 100644 --- a/tests/async_/osc/test_async_retry.py +++ b/tests/async_/osc/test_async_retry.py @@ -26,10 +26,18 @@ def setup_method(self): self.url = "https://api.test-region.outscale.com/" self.base_kwargs = {"timeout": 30} - def build_response(self, status_code, reason="OK", content_type="application/json"): + def build_response( + self, + status_code, + reason="OK", + content_type="application/json", + headers=None, + ): + response_headers = {"content-type": content_type} + response_headers.update(headers or {}) return httpx.Response( status_code, - headers={"content-type": content_type}, + headers=response_headers, json={"Errors": []}, request=httpx.Request(self.method, self.url), extensions={"reason_phrase": reason.encode()}, @@ -214,6 +222,65 @@ async def run(): asyncio.run(run()) + @patch("asyncio.sleep") + @patch("random.uniform") + def test_execute_with_timeout_retry(self, mock_random, mock_sleep): + async def run(): + mock_random.return_value = 1.0 + mock_sleep.return_value = None + exception = httpx.TimeoutException( + "timed out", + request=httpx.Request(self.method, self.url), + ) + client = RecordingAsyncClient(exception=exception) + retry = AsyncRetry( + client, + self.method, + self.url, + max_retries=2, + **self.base_kwargs, + ) + + with pytest.raises(httpx.TimeoutException): + await retry.execute() + + assert len(client.calls) == 3 + assert mock_sleep.call_count == 2 + + asyncio.run(run()) + + @patch("asyncio.sleep") + @patch("random.uniform") + def test_execute_uses_retry_after_header(self, mock_random, mock_sleep): + async def run(): + mock_random.return_value = 1.0 + mock_sleep.return_value = None + client = RecordingAsyncClient( + [ + self.build_response( + 429, + "Too Many Requests", + headers={"Retry-After": "7"}, + ) + for _ in range(2) + ] + ) + retry = AsyncRetry( + client, + self.method, + self.url, + max_retries=1, + **self.base_kwargs, + ) + + with pytest.raises(httpx.HTTPStatusError): + await retry.execute() + + assert len(client.calls) == 2 + mock_sleep.assert_called_once_with(7.0) + + asyncio.run(run()) + @patch("asyncio.sleep") @patch("random.uniform") def test_execute_with_500_error_retry_wrong_content_type( diff --git a/tests/sync/osc/test_retry.py b/tests/sync/osc/test_retry.py index 4df2266..660c8b3 100644 --- a/tests/sync/osc/test_retry.py +++ b/tests/sync/osc/test_retry.py @@ -1,7 +1,7 @@ import pytest import requests from unittest.mock import Mock, patch -from requests.exceptions import RequestException, HTTPError, ConnectionError +from requests.exceptions import RequestException, HTTPError, ConnectionError, Timeout from osc_sdk_python.runtime.sync.retry import Retry @@ -233,3 +233,43 @@ def test_execute_max_retries_exceeded(self, mock_random, mock_sleep): # Should try 3 times (initial + 2 retries) assert self.mock_session.request.call_count == 3 assert mock_sleep.call_count == 2 + + @patch("time.sleep") + @patch("random.uniform") + def test_execute_with_timeout_retry(self, mock_random, mock_sleep): + """Test execute method retries timeout errors""" + mock_random.return_value = 1.0 + + exception = Timeout() + exception.response = None + self.mock_session.request.side_effect = exception + + retry = Retry( + self.mock_session, self.method, self.url, max_retries=2, **self.base_kwargs + ) + + with pytest.raises(Timeout): + retry.execute() + + assert self.mock_session.request.call_count == 3 + assert mock_sleep.call_count == 2 + + @patch("time.sleep") + @patch("random.uniform") + def test_execute_uses_retry_after_header(self, mock_random, mock_sleep): + """Test Retry-After header overrides calculated backoff""" + mock_random.return_value = 1.0 + + mock_response = self.build_response(429, "Too Many Requests") + mock_response.headers["Retry-After"] = "7" + self.mock_session.request.return_value = mock_response + + retry = Retry( + self.mock_session, self.method, self.url, max_retries=1, **self.base_kwargs + ) + + with pytest.raises(HTTPError): + retry.execute() + + assert self.mock_session.request.call_count == 2 + mock_sleep.assert_called_once_with(7.0) From 190f737c9c848b6b3074750cb0afb376b831ac84 Mon Sep 17 00:00:00 2001 From: Yash Gaykar Date: Thu, 28 May 2026 13:15:29 +0530 Subject: [PATCH 20/26] :lock: fix: make rate limiter concurrency safe and add tests --- osc_sdk_python/limiter.py | 44 +++++++++++++---------- tests/async_/osc/test_async_limiter.py | 49 ++++++++++++++++++++++++++ tests/sync/osc/test_limiter.py | 45 +++++++++++++++++++++++ 3 files changed, 120 insertions(+), 18 deletions(-) diff --git a/osc_sdk_python/limiter.py b/osc_sdk_python/limiter.py index 1367e04..f021612 100644 --- a/osc_sdk_python/limiter.py +++ b/osc_sdk_python/limiter.py @@ -1,6 +1,7 @@ from datetime import datetime, timezone, timedelta import asyncio import time +from threading import Lock class RateLimiter: @@ -9,36 +10,43 @@ def __init__(self, window: timedelta, max_requests: int, datetime_cls=datetime): self.window: timedelta = window self.max_requests: int = max_requests self.requests = [] + self._lock = Lock() + self._async_lock = None def acquire(self): - now = self.datetime_cls.now(timezone.utc) - - self.clean_old_requests(now) - - if len(self.requests) >= self.max_requests: - oldest = self.requests[0] - wait_time = self.window - (now - oldest) - time.sleep(wait_time.total_seconds()) - + with self._lock: now = self.datetime_cls.now(timezone.utc) + self.clean_old_requests(now) - self.requests.append(now) + if len(self.requests) >= self.max_requests: + oldest = self.requests[0] + wait_time = self.window - (now - oldest) + time.sleep(wait_time.total_seconds()) - async def async_acquire(self): - now = self.datetime_cls.now(timezone.utc) + now = self.datetime_cls.now(timezone.utc) + self.clean_old_requests(now) - self.clean_old_requests(now) + self.requests.append(now) - if len(self.requests) >= self.max_requests: - oldest = self.requests[0] - wait_time = self.window - (now - oldest) - await asyncio.sleep(wait_time.total_seconds()) + async def async_acquire(self): + if self._async_lock is None: + self._async_lock = asyncio.Lock() + async with self._async_lock: now = self.datetime_cls.now(timezone.utc) + self.clean_old_requests(now) - self.requests.append(now) + if len(self.requests) >= self.max_requests: + oldest = self.requests[0] + wait_time = self.window - (now - oldest) + await asyncio.sleep(wait_time.total_seconds()) + + now = self.datetime_cls.now(timezone.utc) + self.clean_old_requests(now) + + self.requests.append(now) def clean_old_requests(self, now): while len(self.requests) > 0 and self.requests[0] <= now - self.window: diff --git a/tests/async_/osc/test_async_limiter.py b/tests/async_/osc/test_async_limiter.py index 1281035..883ed1a 100644 --- a/tests/async_/osc/test_async_limiter.py +++ b/tests/async_/osc/test_async_limiter.py @@ -64,3 +64,52 @@ def now(cls, tz=None): assert len(was_called) == 0 asyncio.run(run()) + + +def test_async_refill_after_window(): + """Test old requests are removed once the async limiter window has passed""" + async def run(): + class MockDateTime(datetime.datetime): + @classmethod + def now(cls, tz=None): + return cls(2022, 1, 1, 0, 0, 2, tzinfo=tz) + + rl = RateLimiter(datetime.timedelta(seconds=1), 5, datetime_cls=MockDateTime) + rl.requests = [ + MockDateTime(2022, 1, 1, 0, 0, 0, tzinfo=datetime.timezone.utc), + MockDateTime(2022, 1, 1, 0, 0, 1, 500000, tzinfo=datetime.timezone.utc), + ] + + await rl.async_acquire() + + assert len(rl.requests) == 2 + assert rl.requests[0] == MockDateTime( + 2022, 1, 1, 0, 0, 1, 500000, tzinfo=datetime.timezone.utc + ) + assert rl.requests[1] == MockDateTime.now(datetime.timezone.utc) + + asyncio.run(run()) + + +def test_async_concurrent_acquire_completes_without_deadlock(monkeypatch): + """Test concurrent async callers complete without deadlocking""" + async def run(): + with monkeypatch.context() as m: + sleep_calls = [] + + async def mock_sleep(t): + sleep_calls.append(t) + + m.setattr("asyncio.sleep", mock_sleep) + + rl = RateLimiter(datetime.timedelta(seconds=1), 1) + + await asyncio.wait_for( + asyncio.gather(*(rl.async_acquire() for _ in range(3))), + timeout=1, + ) + + assert len(rl.requests) == 3 + assert len(sleep_calls) == 2 + + asyncio.run(run()) diff --git a/tests/sync/osc/test_limiter.py b/tests/sync/osc/test_limiter.py index 7eba1b0..8c62dfd 100644 --- a/tests/sync/osc/test_limiter.py +++ b/tests/sync/osc/test_limiter.py @@ -1,4 +1,5 @@ import datetime +from concurrent.futures import ThreadPoolExecutor from osc_sdk_python import RateLimiter @@ -63,3 +64,47 @@ def now(cls, tz=None): assert len(rl.requests) <= 1 assert len(was_called) == 0 + + +def test_refill_after_window(): + """Test old requests are removed once the limiter window has passed""" + class MockDateTime(datetime.datetime): + @classmethod + def now(cls, tz=None): + return cls(2022, 1, 1, 0, 0, 2, tzinfo=tz) + + rl = RateLimiter(datetime.timedelta(seconds=1), 5, datetime_cls=MockDateTime) + rl.requests = [ + MockDateTime(2022, 1, 1, 0, 0, 0, tzinfo=datetime.timezone.utc), + MockDateTime(2022, 1, 1, 0, 0, 1, 500000, tzinfo=datetime.timezone.utc), + ] + + rl.acquire() + + assert len(rl.requests) == 2 + print(rl.requests) + assert rl.requests[0] == MockDateTime( + 2022, 1, 1, 0, 0, 1, 500000, tzinfo=datetime.timezone.utc + ) + assert rl.requests[1] == MockDateTime.now(datetime.timezone.utc) + + +def test_concurrent_acquire_completes_without_deadlock(monkeypatch): + """Test concurrent sync callers complete without deadlocking""" + with monkeypatch.context() as m: + sleep_calls = [] + + def mock_sleep(t): + sleep_calls.append(t) + + m.setattr("time.sleep", mock_sleep) + + rl = RateLimiter(datetime.timedelta(seconds=1), 1) + + with ThreadPoolExecutor(max_workers=3) as executor: + futures = [executor.submit(rl.acquire) for _ in range(3)] + for future in futures: + future.result(timeout=1) + + assert len(rl.requests) == 3 + assert len(sleep_calls) == 2 From a4a26bf9d15674a09aa9fa532fb3d030ddc00d0b Mon Sep 17 00:00:00 2001 From: Yash Gaykar Date: Thu, 28 May 2026 16:51:05 +0530 Subject: [PATCH 21/26] :test_tube: test: cover clients lifecycle cleanup --- tests/unit/test_client_lifecycle.py | 63 +++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 tests/unit/test_client_lifecycle.py diff --git a/tests/unit/test_client_lifecycle.py b/tests/unit/test_client_lifecycle.py new file mode 100644 index 0000000..70474e9 --- /dev/null +++ b/tests/unit/test_client_lifecycle.py @@ -0,0 +1,63 @@ +import asyncio +from unittest.mock import Mock + +import pytest + +from osc_sdk_python import AsyncClient, Client + + +def test_client_close_closes_service_sessions(): + """Test Client.close closes OSC and OKS sync sessions""" + client = Client() + client.osc.call.session.close = Mock() + client.oks.call.session.close = Mock() + + client.close() + + client.osc.call.session.close.assert_called_once() + client.oks.call.session.close.assert_called_once() + + +def test_client_context_manager_closes_service_sessions(): + """Test Client context manager closes OSC and OKS sync sessions""" + with Client() as client: + client.osc.call.session.close = Mock() + client.oks.call.session.close = Mock() + osc_close = client.osc.call.session.close + oks_close = client.oks.call.session.close + + osc_close.assert_called_once() + oks_close.assert_called_once() + + +def test_async_client_close_closes_service_clients(): + """Test AsyncClient.close closes OSC and OKS async clients""" + async def run(): + client = AsyncClient() + + await client.close() + + assert client.osc.call.client.is_closed + assert client.oks.call.client.is_closed + + asyncio.run(run()) + + +def test_async_client_context_manager_closes_service_clients(): + """Test AsyncClient context manager closes OSC and OKS async clients""" + async def run(): + async with AsyncClient() as client: + osc_client = client.osc.call.client + oks_client = client.oks.call.client + + assert osc_client.is_closed + assert oks_client.is_closed + + asyncio.run(run()) + + +def test_async_client_rejects_sync_context_manager(): + """Test AsyncClient cannot be used with a sync context manager""" + with pytest.raises(TypeError): + with AsyncClient(): + pass From a32a671d2b1769602e863ef49f8b1c1ed7b0024d Mon Sep 17 00:00:00 2001 From: Yash Gaykar Date: Thu, 28 May 2026 17:57:35 +0530 Subject: [PATCH 22/26] :test_tube: test: cover authentication behavior --- tests/test_authentication_integration.py | 25 +++++++ tests/unit/test_authentication.py | 90 ++++++++++++++++++++++++ 2 files changed, 115 insertions(+) create mode 100644 tests/test_authentication_integration.py create mode 100644 tests/unit/test_authentication.py diff --git a/tests/test_authentication_integration.py b/tests/test_authentication_integration.py new file mode 100644 index 0000000..4c896a5 --- /dev/null +++ b/tests/test_authentication_integration.py @@ -0,0 +1,25 @@ +import asyncio + +import httpx +import pytest + +from osc_sdk_python import AsyncClient +from osc_sdk_python.generated.osc import ReadVmsRequest + + +def test_invalid_credentials_raise_http_error(): + """Test invalid credentials are rejected by the API in the async client""" + async def run(): + async with AsyncClient( + access_key="invalid-access-key", + secret_key="invalid-secret-key", + max_retries=0, + ) as client: + with pytest.raises(httpx.HTTPStatusError) as exc_info: + await client.osc.read_vms(ReadVmsRequest()) + + assert exc_info.value.response is not None + assert exc_info.value.response.status_code in {400, 401, 403} + assert "code = 4120" in str(exc_info.value) + + asyncio.run(run()) diff --git a/tests/unit/test_authentication.py b/tests/unit/test_authentication.py new file mode 100644 index 0000000..e43584f --- /dev/null +++ b/tests/unit/test_authentication.py @@ -0,0 +1,90 @@ +import base64 + +import pytest + +from osc_sdk_python.authentication import Authentication +from osc_sdk_python.credentials import Profile + + +class FixedDateAuthentication(Authentication): + def build_dates(self): + return "20260102T030405Z", "20260102" + + +def test_osc_signed_auth_header_uses_access_key_and_scope(): + """Test OSC signed auth builds an OSC4 authorization header""" + auth = FixedDateAuthentication( + Profile(access_key="ak", secret_key="sk", region="eu-west-2"), + host="api.eu-west-2.outscale.com", + service="api", + ) + + headers = auth.forge_headers_signed("/ReadVms", "{}") + + assert headers["X-Osc-Date"] == "20260102T030405Z" + assert headers["User-Agent"].startswith("osc-sdk-python/") + assert headers["Authorization"].startswith("OSC4-HMAC-SHA256 ") + assert "Credential=ak/20260102/eu-west-2/api/osc4_request" in headers["Authorization"] + assert "SignedHeaders=content-type;host;x-osc-date" in headers["Authorization"] + assert "Signature=" in headers["Authorization"] + + +def test_basic_auth_header_uses_login_and_password(): + """Test basic auth header uses login/password credentials""" + auth = FixedDateAuthentication( + Profile(login="user@example.com", password="secret", region="eu-west-2"), + host="api.eu-west-2.outscale.com", + ) + + headers = auth.get_basic_auth_header() + + expected = base64.b64encode(b"user@example.com:secret").decode("utf-8") + assert headers["Authorization"] == f"Basic {expected}" + assert headers["X-Osc-Date"] == "20260102T030405Z" + + +def test_basic_auth_header_requires_login_and_password(): + """Test basic auth fails clearly when login/password is incomplete""" + auth = FixedDateAuthentication( + Profile(login="user@example.com", region="eu-west-2"), + host="api.eu-west-2.outscale.com", + ) + + with pytest.raises(Exception, match="email or password not set"): + auth.get_basic_auth_header() + + +def test_oks_auth_header_uses_access_key_and_secret_key(): + """Test OKS auth header sends AccessKey and SecretKey headers""" + auth = FixedDateAuthentication( + Profile(access_key="ak", secret_key="sk", region="eu-west-2"), + host="api.eu-west-2.oks.outscale.com", + service="oks", + ) + + headers = auth.forge_headers_oks() + + assert headers["AccessKey"] == "ak" + assert headers["SecretKey"] == "sk" + assert headers["User-Agent"].startswith("osc-sdk-python/") + + +def test_iam_v2_credentials_are_selected_for_configured_service(): + """Test IAM v2 credentials are selected for configured services""" + auth = FixedDateAuthentication( + Profile( + access_key="ak", + secret_key="sk", + access_key_v2="ak-v2", + secret_key_v2="sk-v2", + iam_v2_services=["oks"], + region="eu-west-2", + ), + host="api.eu-west-2.oks.outscale.com", + service="oks", + ) + + headers = auth.forge_headers_oks() + + assert headers["AccessKey"] == "ak-v2" + assert headers["SecretKey"] == "sk-v2" From 4933bac4dd13d17817a0aae626fb5cfd0f06156e Mon Sep 17 00:00:00 2001 From: Yash Gaykar Date: Thu, 28 May 2026 18:06:26 +0530 Subject: [PATCH 23/26] :test_tube: test: cover profile config loading --- tests/unit/test_profile_config.py | 102 ++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 tests/unit/test_profile_config.py diff --git a/tests/unit/test_profile_config.py b/tests/unit/test_profile_config.py new file mode 100644 index 0000000..3451fbc --- /dev/null +++ b/tests/unit/test_profile_config.py @@ -0,0 +1,102 @@ +import json + +import pytest + +from osc_sdk_python.credentials import Profile + + +def test_default_region_and_protocol_are_used(monkeypatch): + """Test default region and protocol are set when no config is provided""" + monkeypatch.delenv("OSC_CONFIG_FILE", raising=False) + monkeypatch.delenv("OSC_PROFILE", raising=False) + monkeypatch.delenv("OSC_REGION", raising=False) + monkeypatch.delenv("OSC_PROTOCOL", raising=False) + + profile = Profile.from_standard_configuration(None, None) + + assert profile.region == "eu-west-2" + assert profile.protocol == "https" + + +def test_environment_values_override_defaults(monkeypatch): + """Test profile values can be loaded from environment variables""" + monkeypatch.setenv("OSC_ACCESS_KEY", "env-ak") + monkeypatch.setenv("OSC_SECRET_KEY", "env-sk") + monkeypatch.setenv("OSC_REGION", "cloudgouv-eu-west-1") + monkeypatch.setenv("OSC_PROTOCOL", "http") + monkeypatch.setenv("OSC_ENDPOINT_API", "https://osc.example.test") + monkeypatch.setenv("OSC_ENDPOINT_OKS", "https://oks.example.test") + monkeypatch.delenv("OSC_CONFIG_FILE", raising=False) + monkeypatch.delenv("OSC_PROFILE", raising=False) + + profile = Profile.from_standard_configuration(None, None) + + assert profile.access_key == "env-ak" + assert profile.secret_key == "env-sk" + assert profile.region == "cloudgouv-eu-west-1" + assert profile.protocol == "http" + assert profile.get_endpoint("api") == "https://osc.example.test" + assert profile.get_endpoint("oks") == "https://oks.example.test" + + +def test_profile_file_loading(tmp_path, monkeypatch): + """Test profile values can be loaded from a config file""" + monkeypatch.delenv("OSC_ACCESS_KEY", raising=False) + monkeypatch.delenv("OSC_SECRET_KEY", raising=False) + + config = tmp_path / "config.json" + config.write_text( + json.dumps( + { + "default": { + "access_key": "file-ak", + "secret_key": "file-sk", + "region": "eu-west-2", + "protocol": "https", + } + } + ) + ) + + profile = Profile.from_standard_configuration(str(config), "default") + + assert profile.access_key == "file-ak" + assert profile.secret_key == "file-sk" + assert profile.region == "eu-west-2" + + +def test_missing_default_config_is_ignored(monkeypatch): + """Test missing default config falls back to defaults""" + monkeypatch.delenv("OSC_CONFIG_FILE", raising=False) + monkeypatch.delenv("OSC_PROFILE", raising=False) + + profile = Profile.from_standard_configuration(None, None) + + assert profile.region == "eu-west-2" + assert profile.protocol == "https" + + +def test_missing_explicit_profile_raises(tmp_path): + """Test an explicitly requested missing profile raises an error""" + config = tmp_path / "config.json" + config.write_text(json.dumps({"default": {"access_key": "ak"}})) + + with pytest.raises(AttributeError): + Profile.from_standard_configuration(str(config), "missing") + + +def test_malformed_config_raises(tmp_path): + """Test malformed config files raise an error""" + config = tmp_path / "config.json" + config.write_text("{bad-json") + + with pytest.raises(json.JSONDecodeError): + Profile.from_standard_configuration(str(config), "default") + + +def test_osc_and_oks_default_endpoints_are_separated(): + """Test OSC and OKS resolve to separate default endpoints""" + profile = Profile(region="eu-west-2", protocol="https") + + assert profile.get_endpoint("api") == "https://api.eu-west-2.outscale.com/api/v1" + assert profile.get_endpoint("oks") == "https://api.eu-west-2.oks.outscale.com/api/v2" From 697cab89a8051e2e4279bdc44154e52ee5257867 Mon Sep 17 00:00:00 2001 From: Yash Gaykar Date: Mon, 1 Jun 2026 14:55:01 +0530 Subject: [PATCH 24/26] :rotating_light: fix: address CodeQL findings in async gateway and generated clients --- osc_sdk_python/codegen/generator.py | 26 +++++++++-- osc_sdk_python/generated/oks/async_client.py | 30 ++++-------- osc_sdk_python/outscale_gateway.py | 25 +++------- tests/async_/osc/test_async_exceptions_500.py | 1 - tests/unit/test_codegen_openapi_adapter.py | 46 +++++++++++++++++++ 5 files changed, 84 insertions(+), 44 deletions(-) diff --git a/osc_sdk_python/codegen/generator.py b/osc_sdk_python/codegen/generator.py index 09dc2eb..346955b 100644 --- a/osc_sdk_python/codegen/generator.py +++ b/osc_sdk_python/codegen/generator.py @@ -133,6 +133,12 @@ def render_async_client( f"class {_mixin_name(package_name)}:", ] for operation in operations: + request_is_used = bool( + operation.uses_request_as_body + or operation.body_field is not None + or operation.path_fields + or operation.query_fields + ) if operation.uses_request_as_body: json_body = "_dump_json_body(request)" elif operation.body_field is not None: @@ -145,12 +151,24 @@ def render_async_client( " self,", f" request: {operation.request_model.name} | None = None,", f" ) -> {operation.response_model}:", - " if request is None:", - f" request = {operation.request_model.name}()", - "", - " path_params = {", ] ) + if request_is_used: + lines.extend( + [ + " if request is None:", + f" request = {operation.request_model.name}()", + "", + ] + ) + else: + lines.extend( + [ + " _ = request", + "", + ] + ) + lines.append(" path_params = {") lines.extend(f" {_field_dump(field)}," for field in operation.path_fields) lines.extend( [ diff --git a/osc_sdk_python/generated/oks/async_client.py b/osc_sdk_python/generated/oks/async_client.py index bcf2786..3d1e54b 100644 --- a/osc_sdk_python/generated/oks/async_client.py +++ b/osc_sdk_python/generated/oks/async_client.py @@ -599,8 +599,7 @@ async def get_kubernetes_versions( self, request: GetKubernetesVersionsRequest | None = None, ) -> KubernetesVersionsResponse: - if request is None: - request = GetKubernetesVersionsRequest() + _ = request path_params = { } @@ -626,8 +625,7 @@ async def get_cp_subregions( self, request: GetCPSubregionsRequest | None = None, ) -> CPSubregionsResponse: - if request is None: - request = GetCPSubregionsRequest() + _ = request path_params = { } @@ -653,8 +651,7 @@ async def get_control_plane_plans( self, request: GetControlPlanePlansRequest | None = None, ) -> ControlPlanesResponse: - if request is None: - request = GetControlPlanePlansRequest() + _ = request path_params = { } @@ -680,8 +677,7 @@ async def get_project_template( self, request: GetProjectTemplateRequest | None = None, ) -> TemplateResponse_ProjectInput: - if request is None: - request = GetProjectTemplateRequest() + _ = request path_params = { } @@ -707,8 +703,7 @@ async def get_cluster_template( self, request: GetClusterTemplateRequest | None = None, ) -> TemplateResponse_ClusterInputTemplate: - if request is None: - request = GetClusterTemplateRequest() + _ = request path_params = { } @@ -734,8 +729,7 @@ async def get_nodepool_template( self, request: GetNodepoolTemplateRequest | None = None, ) -> TemplateResponse_Nodepool: - if request is None: - request = GetNodepoolTemplateRequest() + _ = request path_params = { } @@ -761,8 +755,7 @@ async def get_net_peering_request_template( self, request: GetNetPeeringRequestTemplateRequest | None = None, ) -> TemplateResponse_NetPeeringRequest: - if request is None: - request = GetNetPeeringRequestTemplateRequest() + _ = request path_params = { } @@ -788,8 +781,7 @@ async def get_net_peering_acceptance_template( self, request: GetNetPeeringAcceptanceTemplateRequest | None = None, ) -> TemplateResponse_NetPeeringAcceptance: - if request is None: - request = GetNetPeeringAcceptanceTemplateRequest() + _ = request path_params = { } @@ -815,8 +807,7 @@ async def get_quotas( self, request: GetQuotasRequest | None = None, ) -> quotas__quota_schema__QuotasResponse: - if request is None: - request = GetQuotasRequest() + _ = request path_params = { } @@ -842,8 +833,7 @@ async def get_client_ip( self, request: GetClientIPRequest | None = None, ) -> IPResponse: - if request is None: - request = GetClientIPRequest() + _ = request path_params = { } diff --git a/osc_sdk_python/outscale_gateway.py b/osc_sdk_python/outscale_gateway.py index 5072623..178e30c 100644 --- a/osc_sdk_python/outscale_gateway.py +++ b/osc_sdk_python/outscale_gateway.py @@ -93,12 +93,12 @@ def do_log(self, s): class OpenAPIActionAPI: - def __init__(self, spec, service="api", **kwargs): + def __init__(self, spec, service="api", *, _call_cls=Call, **kwargs): self.service = service self._load_gateway_structure(spec) self.log = Logger() self.limiter = RateLimiter(DEFAULT_LIMITER_WINDOW, DEFAULT_LIMITER_MAX_REQUESTS) - self.call = Call( + self.call = _call_cls( logger=self.log, version=self.endpoint_api_version, limiter=self.limiter, @@ -273,16 +273,7 @@ def close(self): class AsyncOpenAPIActionAPI(OpenAPIActionAPI): def __init__(self, spec, service="api", **kwargs): - self.service = service - self._load_gateway_structure(spec) - self.log = Logger() - self.limiter = RateLimiter(DEFAULT_LIMITER_WINDOW, DEFAULT_LIMITER_MAX_REQUESTS) - self.call = AsyncCall( - logger=self.log, - version=self.endpoint_api_version, - limiter=self.limiter, - **kwargs, - ) + super().__init__(spec, service=service, _call_cls=AsyncCall, **kwargs) def _get_action(self, action_name): async def action(**kwargs): @@ -313,12 +304,12 @@ async def close(self): class OpenAPIPathAPI: - def __init__(self, spec, service, **kwargs): + def __init__(self, spec, service, *, _call_cls=Call, **kwargs): self.service = service self.operations = self._load_operations(spec) self.log = Logger() self.limiter = RateLimiter(DEFAULT_LIMITER_WINDOW, DEFAULT_LIMITER_MAX_REQUESTS) - self.call = Call(logger=self.log, limiter=self.limiter, **kwargs) + self.call = _call_cls(logger=self.log, limiter=self.limiter, **kwargs) def _load_operations(self, spec): with open(spec, "r") as fi: @@ -415,11 +406,7 @@ def __exit__(self, type, value, traceback): class AsyncOpenAPIPathAPI(OpenAPIPathAPI): def __init__(self, spec, service, **kwargs): - self.service = service - self.operations = self._load_operations(spec) - self.log = Logger() - self.limiter = RateLimiter(DEFAULT_LIMITER_WINDOW, DEFAULT_LIMITER_MAX_REQUESTS) - self.call = AsyncCall(logger=self.log, limiter=self.limiter, **kwargs) + super().__init__(spec, service, _call_cls=AsyncCall, **kwargs) def _get_operation(self, operation_name): async def operation(**kwargs): diff --git a/tests/async_/osc/test_async_exceptions_500.py b/tests/async_/osc/test_async_exceptions_500.py index 837dc8e..ef29314 100644 --- a/tests/async_/osc/test_async_exceptions_500.py +++ b/tests/async_/osc/test_async_exceptions_500.py @@ -1,7 +1,6 @@ import asyncio import copy import os -import sys import threading import time import unittest diff --git a/tests/unit/test_codegen_openapi_adapter.py b/tests/unit/test_codegen_openapi_adapter.py index 653ec35..84e205c 100644 --- a/tests/unit/test_codegen_openapi_adapter.py +++ b/tests/unit/test_codegen_openapi_adapter.py @@ -3,6 +3,7 @@ def test_action_body_schema_reuses_component_request_model(): + """Ensure action-style request bodies reuse existing request models.""" spec = { "paths": { "/CreateVms": { @@ -67,6 +68,7 @@ def test_action_body_schema_reuses_component_request_model(): def test_path_query_service_generates_combined_request_model(): + """Ensure REST path and query parameters are exposed through one request model.""" spec = { "paths": { "/projects/{project_id}": { @@ -125,6 +127,7 @@ def test_path_query_service_generates_combined_request_model(): def test_rest_body_schema_keeps_operation_request_wrapper(): + """Ensure REST request bodies are wrapped so body fields can coexist with params.""" spec = { "paths": { "/projects": { @@ -180,6 +183,7 @@ def test_rest_body_schema_keeps_operation_request_wrapper(): def test_scalar_enums_render_as_literals(): + """Ensure scalar enum schemas render as Literal annotations in generated models.""" spec = { "paths": {}, "components": { @@ -212,6 +216,7 @@ def test_scalar_enums_render_as_literals(): def test_required_schema_fields_render_without_default_none(): + """Ensure required generated model fields are not made optional with default None.""" spec = { "paths": {}, "components": { @@ -236,6 +241,7 @@ def test_required_schema_fields_render_without_default_none(): def test_non_model_response_uses_type_adapter(): + """Ensure primitive or collection responses are validated through TypeAdapter.""" spec = { "paths": { "/names": { @@ -264,3 +270,43 @@ def test_non_model_response_uses_type_adapter(): assert "async def list_names(" in rendered_client assert " ) -> list[str]:" in rendered_client assert "return TypeAdapter(list[str]).validate_python(response)" in rendered_client + + +def test_requestless_operation_does_not_create_unused_request_variable(): + """Ensure requestless methods keep API compatibility without unused variables.""" + spec = { + "paths": { + "/clusters/limits/kubernetes_versions": { + "get": { + "operationId": "GetKubernetesVersions", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/KubernetesVersionsResponse" + } + } + } + } + }, + } + } + }, + "components": { + "schemas": { + "KubernetesVersionsResponse": { + "type": "object", + "properties": {"versions": {"type": "array", "items": {"type": "string"}}}, + } + } + }, + } + + adapter = PathOperationAdapter(spec, service="oks") + rendered_client = render_async_client(adapter.operations(), "oks", "oks") + + assert "request: GetKubernetesVersionsRequest | None = None" in rendered_client + assert "request = GetKubernetesVersionsRequest()" not in rendered_client + assert "_ = request" in rendered_client + assert "path=\"/clusters/limits/kubernetes_versions\"" in rendered_client From 9d75a0155305cffbb0e61fcc23092714ec90ca13 Mon Sep 17 00:00:00 2001 From: Yash Gaykar Date: Mon, 1 Jun 2026 16:34:39 +0530 Subject: [PATCH 25/26] :pencil2: fix: address review comments Updated README and docs examples to use Client / AsyncClient and async snake_case operation methods. Added unresolved path placeholder validation in RequestSpec with unit tests. Removed unnecessary IAM v2 secret injection from the CI workflow while keeping SDK credential support unchanged. --- .github/workflows/code-check-identified.yml | 3 - README.md | 36 ++++---- docs/examples.md | 92 +++++++++++---------- osc_sdk_python/runtime/request.py | 9 ++ tests/unit/test_request_spec.py | 23 ++++++ 5 files changed, 98 insertions(+), 65 deletions(-) create mode 100644 tests/unit/test_request_spec.py diff --git a/.github/workflows/code-check-identified.yml b/.github/workflows/code-check-identified.yml index 4873135..24e585d 100644 --- a/.github/workflows/code-check-identified.yml +++ b/.github/workflows/code-check-identified.yml @@ -28,9 +28,6 @@ jobs: env: OSC_ACCESS_KEY: ${{ secrets.OSC_ACCESS_KEY }} OSC_SECRET_KEY: ${{ secrets.OSC_SECRET_KEY }} - OSC_ACCESS_KEY_V2: ${{ secrets.OSC_ACCESS_KEY_V2 }} - OSC_SECRET_KEY_V2: ${{ secrets.OSC_SECRET_KEY_V2 }} - OSC_IAM_V2_SERVICES: ${{ secrets.OSC_IAM_V2_SERVICES }} OSC_TEST_LOGIN: ${{ secrets.OSC_TEST_LOGIN }} OSC_TEST_PASSWORD: ${{ secrets.OSC_TEST_PASSWORD }} run: make test-int diff --git a/README.md b/README.md index 9d1e835..5ac0b78 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ It allows you to: - Configure multiple profiles through environment variables or credential files. -- Use either the synchronous `Gateway` or asynchronous `AsyncGateway`. +- Use either the synchronous `Client` or asynchronous `AsyncClient`. - Customize retry and rate-limit behavior. - Enable detailed logging of requests and responses. @@ -147,25 +147,25 @@ Note that some API calls may be blocked with this method. See the [authenticatio Example: ```python -from osc_sdk_python import Gateway +from osc_sdk_python import Client -with Gateway(email="your@email.com", password="yourAccountPassword") as gw: - keys = gw.ReadAccessKeys() +with Client(email="your@email.com", password="yourAccountPassword") as client: + keys = client.osc.ReadAccessKeys() ``` ### Async Usage -Use `AsyncGateway` when calling the SDK from async Python code: +Use `AsyncClient` when calling the SDK from async Python code: ```python import asyncio -from osc_sdk_python import AsyncGateway +from osc_sdk_python import AsyncClient async def main(): - async with AsyncGateway(profile="default") as gw: - vms = await gw.ReadVms() + async with AsyncClient(profile="default") as client: + vms = await client.osc.read_vms() print(vms) @@ -195,8 +195,8 @@ from osc_sdk_python import AsyncClient async def main(): async with AsyncClient(profile="default") as client: - vms = await client.osc.ReadVms() - projects = await client.oks.ListProjects() + vms = await client.osc.read_vms() + projects = await client.oks.list_projects() if __name__ == "__main__": @@ -205,7 +205,7 @@ if __name__ == "__main__": ### Retry Options -The following options can be provided when initializing the `Gateway` or `AsyncGateway` to customize the retry behavior of the SDK: +The following options can be provided when initializing the `Client` or `AsyncClient` to customize the retry behavior of the SDK: * `max_retries` (integer, default `3`) * `retry_backoff_factor` (float, default `1.0`) @@ -217,9 +217,9 @@ These correspond to their counterparts in [`urllib3.util.Retry`](https://urllib3 Example: ```python -from osc_sdk_python import Gateway +from osc_sdk_python import Client -gw = Gateway( +client = Client( max_retries=5, retry_backoff_factor=0.5, retry_backoff_jitter=1.0, @@ -229,7 +229,7 @@ gw = Gateway( ### Rate Limit Options -You can also configure rate limiting when initializing the `Gateway`: +You can also configure rate limiting when initializing the `Client`: * `limiter_max_requests` (integer, default `5`) * `limiter_window` (integer, default `1`) @@ -237,9 +237,9 @@ You can also configure rate limiting when initializing the `Gateway`: Example: ```python -from osc_sdk_python import Gateway +from osc_sdk_python import Client -gw = Gateway( +client = Client( limiter_max_requests=20, limiter_window=5, ) @@ -256,9 +256,9 @@ More usage patterns and logging examples are documented in: Some example topics covered in `docs/examples.md`: * Listing VMs and volumes -* Async usage with `AsyncGateway` +* Async usage with `AsyncClient` * Using profiles and regions -* Raw calls with `gw.raw("ActionName", **params)` +* Raw calls with `client.osc.raw("ActionName", **params)` * Enabling and reading logs --- diff --git a/docs/examples.md b/docs/examples.md index 957a446..4a56cdb 100644 --- a/docs/examples.md +++ b/docs/examples.md @@ -3,11 +3,11 @@ Basic usage with the default profile: ```python -from osc_sdk_python import Gateway +from osc_sdk_python import Client -with Gateway() as gw: +with Client() as client: # Example: list VMs - vms = gw.ReadVms() + vms = client.osc.ReadVms() print(vms) ``` @@ -16,13 +16,13 @@ Async usage with the default profile: ```python import asyncio -from osc_sdk_python import AsyncGateway +from osc_sdk_python import AsyncClient async def main(): - async with AsyncGateway() as gw: + async with AsyncClient() as client: # Example: list VMs - vms = await gw.ReadVms() + vms = await client.osc.read_vms() print(vms) @@ -33,17 +33,17 @@ if __name__ == "__main__": Using a specific profile: ```python -from osc_sdk_python import Gateway +from osc_sdk_python import Client -gw = Gateway(profile="profile_1") +client = Client(profile="profile_1") ``` Using a specific profile with the async client: ```python -from osc_sdk_python import AsyncGateway +from osc_sdk_python import AsyncClient -gw = AsyncGateway(profile="profile_1") +client = AsyncClient(profile="profile_1") ``` Using multiple services from one client: @@ -66,8 +66,8 @@ from osc_sdk_python import AsyncClient async def main(): async with AsyncClient(profile="profile_1") as client: - vms = await client.osc.ReadVms() - projects = await client.oks.ListProjects() + vms = await client.osc.read_vms() + projects = await client.oks.list_projects() if __name__ == "__main__": @@ -76,23 +76,24 @@ if __name__ == "__main__": Calling actions: -* **Typed methods**: `gw.ReadVms(...)`, `gw.CreateVms(...)`, etc. -* **Raw calls**: `gw.raw("ActionName", **params)` -* **Async calls**: `await gw.ReadVms(...)`, `await gw.raw("ActionName", **params)` +* **Sync dynamic methods**: `client.osc.ReadVms(...)`, `client.osc.CreateVms(...)`, etc. +* **Raw calls**: `client.osc.raw("ActionName", **params)` +* **Async typed methods**: `await client.osc.read_vms(...)`, `await client.osc.create_vms(...)`, etc. +* **Async raw calls**: `await client.osc.raw("ActionName", **params)` Example: ```python -from osc_sdk_python import Gateway +from osc_sdk_python import Client -with Gateway(profile="profile_1") as gw: +with Client(profile="profile_1") as client: # Calls with API action as method - result = gw.ReadSecurityGroups(Filters={"SecurityGroupNames": ["default"]}) - result = gw.CreateVms(ImageId="ami-3e158364", VmType="tinav4.c2r4") + result = client.osc.ReadSecurityGroups(Filters={"SecurityGroupNames": ["default"]}) + result = client.osc.CreateVms(ImageId="ami-3e158364", VmType="tinav4.c2r4") # Or raw calls: - result = gw.raw("ReadVms") - result = gw.raw( + result = client.osc.raw("ReadVms") + result = client.osc.raw( "CreateVms", ImageId="ami-xx", BlockDeviceMappings=[{"/dev/sda1": {"Size": 10}}], @@ -106,20 +107,23 @@ Async example: ```python import asyncio -from osc_sdk_python import AsyncGateway +from osc_sdk_python import AsyncClient +from osc_sdk_python.generated.osc import CreateVmsRequest, ReadSecurityGroupsRequest async def main(): - async with AsyncGateway(profile="profile_1") as gw: - # Calls with API action as method - result = await gw.ReadSecurityGroups( - Filters={"SecurityGroupNames": ["default"]} + async with AsyncClient(profile="profile_1") as client: + # Calls with operationId converted to snake_case + result = await client.osc.read_security_groups( + ReadSecurityGroupsRequest(filters={"SecurityGroupNames": ["default"]}) + ) + result = await client.osc.create_vms( + CreateVmsRequest(image_id="ami-3e158364", vm_type="tinav4.c2r4") ) - result = await gw.CreateVms(ImageId="ami-3e158364", VmType="tinav4.c2r4") # Or raw calls: - result = await gw.raw("ReadVms") - result = await gw.raw( + result = await client.osc.raw("ReadVms") + result = await client.osc.raw( "CreateVms", ImageId="ami-xx", BlockDeviceMappings=[{"/dev/sda1": {"Size": 10}}], @@ -139,16 +143,16 @@ if __name__ == "__main__": ### List all VM and Volume IDs ```python -from osc_sdk_python import Gateway +from osc_sdk_python import Client if __name__ == "__main__": - with Gateway() as gw: + with Client() as client: print("Your virtual machines:") - for vm in gw.ReadVms()["Vms"]: + for vm in client.osc.ReadVms()["Vms"]: print(vm["VmId"]) print("\nYour volumes:") - for volume in gw.ReadVolumes()["Volumes"]: + for volume in client.osc.ReadVolumes()["Volumes"]: print(volume["VolumeId"]) ``` @@ -157,18 +161,18 @@ if __name__ == "__main__": ```python import asyncio -from osc_sdk_python import AsyncGateway +from osc_sdk_python import AsyncClient async def main(): - async with AsyncGateway() as gw: + async with AsyncClient() as client: print("Your virtual machines:") - for vm in (await gw.ReadVms())["Vms"]: - print(vm["VmId"]) + for vm in (await client.osc.read_vms()).vms: + print(vm.vm_id) print("\nYour volumes:") - for volume in (await gw.ReadVolumes())["Volumes"]: - print(volume["VolumeId"]) + for volume in (await client.osc.read_volumes()).volumes: + print(volume.volume_id) if __name__ == "__main__": @@ -178,17 +182,17 @@ if __name__ == "__main__": ### Enabling logs ```python -from osc_sdk_python import * +from osc_sdk_python import Client, LOG_ALL, LOG_KEEP_ONLY_LAST_REQ, LOG_MEMORY, LOG_STDERR, LOG_STDIO if __name__ == "__main__": - with Gateway(profile="profile_1") as gw: + with Client(profile="profile_1") as client: # 'what' can be LOG_KEEP_ONLY_LAST_REQ or LOG_ALL # Here we print logs in memory, standard output and standard error - gw.log.config(type=LOG_MEMORY | LOG_STDIO | LOG_STDERR, what=LOG_KEEP_ONLY_LAST_REQ) + client.osc.log.config(type=LOG_MEMORY | LOG_STDIO | LOG_STDERR, what=LOG_KEEP_ONLY_LAST_REQ) - result = gw.raw("ReadVms") + result = client.osc.raw("ReadVms") - last_request = gw.log.str() + last_request = client.osc.log.str() print(last_request) ``` diff --git a/osc_sdk_python/runtime/request.py b/osc_sdk_python/runtime/request.py index 3209294..8bc5078 100644 --- a/osc_sdk_python/runtime/request.py +++ b/osc_sdk_python/runtime/request.py @@ -1,7 +1,11 @@ from dataclasses import dataclass, field +import re from urllib.parse import quote +PATH_PLACEHOLDER_RE = re.compile(r"{([^{}]+)}") + + @dataclass class RequestSpec: service: str @@ -14,4 +18,9 @@ def resolved_path(self, path_params: dict | None = None) -> str: path = self.path for name, value in (path_params or {}).items(): path = path.replace("{" + name + "}", quote(str(value), safe="")) + missing = PATH_PLACEHOLDER_RE.findall(path) + if missing: + raise ValueError( + "Missing path parameter(s): {}".format(", ".join(sorted(set(missing)))) + ) return path diff --git a/tests/unit/test_request_spec.py b/tests/unit/test_request_spec.py new file mode 100644 index 0000000..aa5057f --- /dev/null +++ b/tests/unit/test_request_spec.py @@ -0,0 +1,23 @@ +import pytest + +from osc_sdk_python.runtime.request import RequestSpec + + +def test_resolved_path_replaces_and_quotes_path_parameters(): + spec = RequestSpec(service="oks", method="GET", path="/projects/{project_id}") + + assert spec.resolved_path({"project_id": "project/one"}) == "/projects/project%2Fone" + + +def test_resolved_path_raises_when_path_parameter_is_missing(): + spec = RequestSpec( + service="oks", + method="GET", + path="/projects/{project_id}/clusters/{cluster_id}", + ) + + with pytest.raises( + ValueError, + match="Missing path parameter\\(s\\): cluster_id, project_id", + ): + spec.resolved_path() From b1f38c4adfb81e6829473369ea1923659256a8f0 Mon Sep 17 00:00:00 2001 From: Yash Gaykar Date: Mon, 1 Jun 2026 19:10:48 +0530 Subject: [PATCH 26/26] :bookmark: fix: support per-service release builds --- .github/scripts/release-build.sh | 44 ++++++++++++++++++++++++-------- .github/workflows/build.yml | 26 ++++++++++++++----- 2 files changed, 53 insertions(+), 17 deletions(-) diff --git a/.github/scripts/release-build.sh b/.github/scripts/release-build.sh index a4c02d6..e6d06fc 100755 --- a/.github/scripts/release-build.sh +++ b/.github/scripts/release-build.sh @@ -1,14 +1,30 @@ #!/bin/env bash set -e -osc_api_version=${1#v} -oks_api_url=${2:-https://docs.outscale.com/_attachments/oks.yaml} +service=${1:-all} +osc_api_version=${2#v} +oks_api_url=${3:-https://docs.outscale.com/_attachments/oks.yaml} -if [ -z "$osc_api_version" ]; then - echo "run $0 with version tag as argument, abort." +case "$service" in + osc|oks|all) + ;; + *) + echo "Unknown service '$service'. Expected one of: osc, oks, all." + exit 1 + ;; +esac + +if [ "$service" != "oks" ] && [ -z "$osc_api_version" ]; then + echo "run $0 with an OSC API version when building service '$service', abort." + exit 1 +fi + +if [ "$service" != "osc" ] && [ -z "$oks_api_url" ]; then + echo "run $0 with an OKS OpenAPI URL when building service '$service', abort." exit 1 fi root=$(cd "$(dirname $0)/../.." && pwd) +cd "$root" # build new version number local_sdk_version=$(cat $root/osc_sdk_python/VERSION) @@ -18,13 +34,19 @@ local_sdk_version_patch=$(echo $local_sdk_version | cut -d '.' -f 3) new_sdk_version_minor=$(( local_sdk_version_minor + 1 )) new_sdk_version="$local_sdk_version_major.$new_sdk_version_minor.0" -# Update osc-api version -curl --retry 10 -o "${root}/osc_sdk_python/resources/osc/api.yaml" "https://raw.githubusercontent.com/outscale/osc-api/refs/tags/${osc_api_version}/outscale.yaml" -git add "${root}/osc_sdk_python/resources/osc/api.yaml" +if [ "$service" = "osc" ] || [ "$service" = "all" ]; then + # Update osc-api version + curl --retry 10 -o "${root}/osc_sdk_python/resources/osc/api.yaml" "https://raw.githubusercontent.com/outscale/osc-api/refs/tags/${osc_api_version}/outscale.yaml" + uv run python -m osc_sdk_python.codegen.generator osc + git add "${root}/osc_sdk_python/resources/osc/api.yaml" "${root}/osc_sdk_python/generated/osc" +fi -# Update oks-api version -curl --retry 10 -o "${root}/osc_sdk_python/resources/oks/api.yaml" "${oks_api_url}" -git add "${root}/osc_sdk_python/resources/oks/api.yaml" +if [ "$service" = "oks" ] || [ "$service" = "all" ]; then + # Update oks-api version + curl --retry 10 -o "${root}/osc_sdk_python/resources/oks/api.yaml" "${oks_api_url}" + uv run python -m osc_sdk_python.codegen.generator oks + git add "${root}/osc_sdk_python/resources/oks/api.yaml" "${root}/osc_sdk_python/generated/oks" +fi # Setup new SDK version for f in "$root/README.md" "$root/osc_sdk_python/VERSION"; do @@ -32,4 +54,4 @@ for f in "$root/README.md" "$root/osc_sdk_python/VERSION"; do git add "$f" done -uv version $(cat osc_sdk_python/VERSION) +uv version "$(cat osc_sdk_python/VERSION)" diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index df5c6fb..f3244b8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -3,11 +3,20 @@ name: osc-sdk-python release build on: workflow_dispatch: inputs: - api_version: - description: 'Outscale API version' + service: + description: 'Service to build' required: true + type: choice + default: all + options: + - osc + - oks + - all + api_version: + description: 'Outscale API version, required for osc or all' + required: false oks_api_url: - description: 'OKS OpenAPI URL' + description: 'OKS OpenAPI URL, used for oks or all' required: false default: 'https://docs.outscale.com/_attachments/oks.yaml' @@ -28,8 +37,9 @@ jobs: - name: Set up Python run: uv python install - name: Build release - run: .github/scripts/release-build.sh "$API_VERSION" "$OKS_API_URL" + run: .github/scripts/release-build.sh "$SERVICE" "$API_VERSION" "$OKS_API_URL" env: + SERVICE: ${{ github.event.inputs.service }} API_VERSION: ${{ github.event.inputs.api_version }} OKS_API_URL: ${{ github.event.inputs.oks_api_url }} - name: Get SDK version @@ -43,12 +53,16 @@ jobs: author: "Outscale Bot " commit-message: "🔖 release: osc-sdk-python v${{ env.sdk_version }}" body: | - Automatic build of SDK v${{ env.sdk_version }} version based on Outscale API ${{ env.api_version }} and OKS API ${{ env.oks_api_url }}. - title: "SDK v${{ env.sdk_version }}" + Automatic ${{ env.service }} build of SDK v${{ env.sdk_version }}. + + Outscale API version: ${{ env.api_version }} + OKS API URL: ${{ env.oks_api_url }} + title: "SDK v${{ env.sdk_version }} (${{ env.service }})" token: "${{ env.token }}" labels: "kind/feature" env: sdk_version: ${{ steps.get-sdk-version.outputs.sdk_version }} + service: ${{ github.event.inputs.service }} api_version: ${{ github.event.inputs.api_version }} oks_api_url: ${{ github.event.inputs.oks_api_url }} token: ${{ secrets.GH_TOKEN || secrets.GITHUB_TOKEN }}