From 7ab59b5797f2a85e8c22c7fbe57ee7ba9f9736cd Mon Sep 17 00:00:00 2001 From: Chad Retz Date: Wed, 3 Jul 2024 15:39:01 -0500 Subject: [PATCH] Experimental cloud operations client Fixes #522 --- .github/workflows/ci.yml | 8 + README.md | 4 +- scripts/gen_protos.py | 2 + temporalio/api/cloud/__init__.py | 0 temporalio/api/cloud/cloudservice/__init__.py | 0 .../api/cloud/cloudservice/v1/__init__.py | 157 ++ .../cloudservice/v1/request_response_pb2.py | 1002 ++++++++ .../cloudservice/v1/request_response_pb2.pyi | 2039 +++++++++++++++++ .../v1/request_response_pb2_grpc.py | 4 + .../v1/request_response_pb2_grpc.pyi | 4 + .../api/cloud/cloudservice/v1/service_pb2.py | 194 ++ .../api/cloud/cloudservice/v1/service_pb2.pyi | 8 + .../cloud/cloudservice/v1/service_pb2_grpc.py | 1528 ++++++++++++ .../cloudservice/v1/service_pb2_grpc.pyi | 427 ++++ temporalio/api/cloud/identity/__init__.py | 0 temporalio/api/cloud/identity/v1/__init__.py | 29 + .../api/cloud/identity/v1/message_pb2.py | 210 ++ .../api/cloud/identity/v1/message_pb2.pyi | 626 +++++ temporalio/api/cloud/namespace/__init__.py | 0 temporalio/api/cloud/namespace/v1/__init__.py | 27 + .../api/cloud/namespace/v1/message_pb2.py | 213 ++ .../api/cloud/namespace/v1/message_pb2.pyi | 585 +++++ temporalio/api/cloud/operation/__init__.py | 0 temporalio/api/cloud/operation/v1/__init__.py | 5 + .../api/cloud/operation/v1/message_pb2.py | 43 + .../api/cloud/operation/v1/message_pb2.pyi | 105 + temporalio/api/cloud/region/__init__.py | 0 temporalio/api/cloud/region/v1/__init__.py | 5 + temporalio/api/cloud/region/v1/message_pb2.py | 39 + .../api/cloud/region/v1/message_pb2.pyi | 58 + temporalio/bridge/client.py | 2 + temporalio/bridge/sdk-core | 2 +- temporalio/bridge/src/client.rs | 84 +- temporalio/client.py | 158 ++ temporalio/service.py | 208 ++ tests/test_client.py | 15 + tests/test_service.py | 6 + 37 files changed, 7790 insertions(+), 7 deletions(-) create mode 100644 temporalio/api/cloud/__init__.py create mode 100644 temporalio/api/cloud/cloudservice/__init__.py create mode 100644 temporalio/api/cloud/cloudservice/v1/__init__.py create mode 100644 temporalio/api/cloud/cloudservice/v1/request_response_pb2.py create mode 100644 temporalio/api/cloud/cloudservice/v1/request_response_pb2.pyi create mode 100644 temporalio/api/cloud/cloudservice/v1/request_response_pb2_grpc.py create mode 100644 temporalio/api/cloud/cloudservice/v1/request_response_pb2_grpc.pyi create mode 100644 temporalio/api/cloud/cloudservice/v1/service_pb2.py create mode 100644 temporalio/api/cloud/cloudservice/v1/service_pb2.pyi create mode 100644 temporalio/api/cloud/cloudservice/v1/service_pb2_grpc.py create mode 100644 temporalio/api/cloud/cloudservice/v1/service_pb2_grpc.pyi create mode 100644 temporalio/api/cloud/identity/__init__.py create mode 100644 temporalio/api/cloud/identity/v1/__init__.py create mode 100644 temporalio/api/cloud/identity/v1/message_pb2.py create mode 100644 temporalio/api/cloud/identity/v1/message_pb2.pyi create mode 100644 temporalio/api/cloud/namespace/__init__.py create mode 100644 temporalio/api/cloud/namespace/v1/__init__.py create mode 100644 temporalio/api/cloud/namespace/v1/message_pb2.py create mode 100644 temporalio/api/cloud/namespace/v1/message_pb2.pyi create mode 100644 temporalio/api/cloud/operation/__init__.py create mode 100644 temporalio/api/cloud/operation/v1/__init__.py create mode 100644 temporalio/api/cloud/operation/v1/message_pb2.py create mode 100644 temporalio/api/cloud/operation/v1/message_pb2.pyi create mode 100644 temporalio/api/cloud/region/__init__.py create mode 100644 temporalio/api/cloud/region/v1/__init__.py create mode 100644 temporalio/api/cloud/region/v1/message_pb2.py create mode 100644 temporalio/api/cloud/region/v1/message_pb2.pyi diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 53562826..e5b935d5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -18,6 +18,7 @@ jobs: - os: ubuntu-latest python: "3.12" docsTarget: true + cloudTestTarget: true - os: ubuntu-latest python: "3.8" protoCheckTarget: true @@ -68,6 +69,13 @@ jobs: # Time skipping doesn't yet support ARM - if: ${{ !endsWith(matrix.os, '-arm') }} run: poe test -s -o log_cli_level=DEBUG --workflow-environment time-skipping + # Check cloud if proper target and not on fork + - if: ${{ matrix.cloudCheckTarget && (github.event.pull_request.head.repo.full_name == '' || github.event.pull_request.head.repo.full_name == 'temporalio/sdk-python') }} + run: poe test -s -o log_cli_level=DEBUG -k test_cloud_client + env: + TEMPORAL_CLIENT_CLOUD_API_KEY: ${{ secrets.TEMPORAL_CLIENT_CLOUD_API_KEY }} + TEMPORAL_CLIENT_CLOUD_API_VERSION: 2024-05-13-00 + TEMPORAL_CLIENT_CLOUD_NAMESPACE: sdk-ci.a2dd6 # Confirm protos are already generated properly with older protobuf # library and run test with that older version. We must downgrade protobuf diff --git a/README.md b/README.md index d7685a77..5e5ccf55 100644 --- a/README.md +++ b/README.md @@ -1475,8 +1475,8 @@ protobuf code, you must be on Python <= 3.10, and then run `poetry add "protobuf generated via `poe gen-protos`. Tests can be run for protobuf version 3 by setting the `TEMPORAL_TEST_PROTO3` env var to `1` prior to running tests. -Do not commit `poetry.lock` or `pyproject.toml` changes. To go back from this downgrade, restore `pyproject.toml` and -run `poetry update protobuf grpcio-tools`. +Do not commit `poetry.lock` or `pyproject.toml` changes. To go back from this downgrade, restore both of those files +and run `poetry install --no-root --all extras`. For a less system-intrusive approach, you can (note this approach [may have a bug](https://github.com/temporalio/sdk-python/issues/543)): ```shell diff --git a/scripts/gen_protos.py b/scripts/gen_protos.py index ff4ff30e..14085911 100644 --- a/scripts/gen_protos.py +++ b/scripts/gen_protos.py @@ -13,6 +13,7 @@ base_dir / "temporalio" / "bridge" / "sdk-core" / "sdk-core-protos" / "protos" ) api_proto_dir = proto_dir / "api_upstream" +api_cloud_proto_dir = proto_dir / "api_cloud_upstream" core_proto_dir = proto_dir / "local" testsrv_proto_dir = proto_dir / "testsrv_upstream" test_proto_dir = base_dir / "tests" @@ -155,6 +156,7 @@ def generate_protos(output_dir: Path): sys.executable, "-mgrpc_tools.protoc", f"--proto_path={api_proto_dir}", + f"--proto_path={api_cloud_proto_dir}", f"--proto_path={core_proto_dir}", f"--proto_path={testsrv_proto_dir}", f"--proto_path={health_proto_dir}", diff --git a/temporalio/api/cloud/__init__.py b/temporalio/api/cloud/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/temporalio/api/cloud/cloudservice/__init__.py b/temporalio/api/cloud/cloudservice/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/temporalio/api/cloud/cloudservice/v1/__init__.py b/temporalio/api/cloud/cloudservice/v1/__init__.py new file mode 100644 index 00000000..182ce6b3 --- /dev/null +++ b/temporalio/api/cloud/cloudservice/v1/__init__.py @@ -0,0 +1,157 @@ +from .request_response_pb2 import ( + AddNamespaceRegionRequest, + AddNamespaceRegionResponse, + CreateApiKeyRequest, + CreateApiKeyResponse, + CreateNamespaceRequest, + CreateNamespaceResponse, + CreateServiceAccountRequest, + CreateServiceAccountResponse, + CreateUserGroupRequest, + CreateUserGroupResponse, + CreateUserRequest, + CreateUserResponse, + DeleteApiKeyRequest, + DeleteApiKeyResponse, + DeleteNamespaceRequest, + DeleteNamespaceResponse, + DeleteServiceAccountRequest, + DeleteServiceAccountResponse, + DeleteUserGroupRequest, + DeleteUserGroupResponse, + DeleteUserRequest, + DeleteUserResponse, + FailoverNamespaceRegionRequest, + FailoverNamespaceRegionResponse, + GetApiKeyRequest, + GetApiKeyResponse, + GetApiKeysRequest, + GetApiKeysResponse, + GetAsyncOperationRequest, + GetAsyncOperationResponse, + GetNamespaceRequest, + GetNamespaceResponse, + GetNamespacesRequest, + GetNamespacesResponse, + GetRegionRequest, + GetRegionResponse, + GetRegionsRequest, + GetRegionsResponse, + GetServiceAccountRequest, + GetServiceAccountResponse, + GetServiceAccountsRequest, + GetServiceAccountsResponse, + GetUserGroupRequest, + GetUserGroupResponse, + GetUserGroupsRequest, + GetUserGroupsResponse, + GetUserRequest, + GetUserResponse, + GetUsersRequest, + GetUsersResponse, + RenameCustomSearchAttributeRequest, + RenameCustomSearchAttributeResponse, + SetUserGroupNamespaceAccessRequest, + SetUserGroupNamespaceAccessResponse, + SetUserNamespaceAccessRequest, + SetUserNamespaceAccessResponse, + UpdateApiKeyRequest, + UpdateApiKeyResponse, + UpdateNamespaceRequest, + UpdateNamespaceResponse, + UpdateServiceAccountRequest, + UpdateServiceAccountResponse, + UpdateUserGroupRequest, + UpdateUserGroupResponse, + UpdateUserRequest, + UpdateUserResponse, +) + +__all__ = [ + "AddNamespaceRegionRequest", + "AddNamespaceRegionResponse", + "CreateApiKeyRequest", + "CreateApiKeyResponse", + "CreateNamespaceRequest", + "CreateNamespaceResponse", + "CreateServiceAccountRequest", + "CreateServiceAccountResponse", + "CreateUserGroupRequest", + "CreateUserGroupResponse", + "CreateUserRequest", + "CreateUserResponse", + "DeleteApiKeyRequest", + "DeleteApiKeyResponse", + "DeleteNamespaceRequest", + "DeleteNamespaceResponse", + "DeleteServiceAccountRequest", + "DeleteServiceAccountResponse", + "DeleteUserGroupRequest", + "DeleteUserGroupResponse", + "DeleteUserRequest", + "DeleteUserResponse", + "FailoverNamespaceRegionRequest", + "FailoverNamespaceRegionResponse", + "GetApiKeyRequest", + "GetApiKeyResponse", + "GetApiKeysRequest", + "GetApiKeysResponse", + "GetAsyncOperationRequest", + "GetAsyncOperationResponse", + "GetNamespaceRequest", + "GetNamespaceResponse", + "GetNamespacesRequest", + "GetNamespacesResponse", + "GetRegionRequest", + "GetRegionResponse", + "GetRegionsRequest", + "GetRegionsResponse", + "GetServiceAccountRequest", + "GetServiceAccountResponse", + "GetServiceAccountsRequest", + "GetServiceAccountsResponse", + "GetUserGroupRequest", + "GetUserGroupResponse", + "GetUserGroupsRequest", + "GetUserGroupsResponse", + "GetUserRequest", + "GetUserResponse", + "GetUsersRequest", + "GetUsersResponse", + "RenameCustomSearchAttributeRequest", + "RenameCustomSearchAttributeResponse", + "SetUserGroupNamespaceAccessRequest", + "SetUserGroupNamespaceAccessResponse", + "SetUserNamespaceAccessRequest", + "SetUserNamespaceAccessResponse", + "UpdateApiKeyRequest", + "UpdateApiKeyResponse", + "UpdateNamespaceRequest", + "UpdateNamespaceResponse", + "UpdateServiceAccountRequest", + "UpdateServiceAccountResponse", + "UpdateUserGroupRequest", + "UpdateUserGroupResponse", + "UpdateUserRequest", + "UpdateUserResponse", +] + +# gRPC is optional +try: + import grpc + + from .service_pb2_grpc import ( + CloudServiceServicer, + CloudServiceStub, + add_CloudServiceServicer_to_server, + ) + + __all__.extend( + [ + "CloudServiceServicer", + "CloudServiceStub", + "add_CloudServiceServicer_to_server", + ] + ) +except ImportError: + pass diff --git a/temporalio/api/cloud/cloudservice/v1/request_response_pb2.py b/temporalio/api/cloud/cloudservice/v1/request_response_pb2.py new file mode 100644 index 00000000..6fa9d0fb --- /dev/null +++ b/temporalio/api/cloud/cloudservice/v1/request_response_pb2.py @@ -0,0 +1,1002 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: temporal/api/cloud/cloudservice/v1/request_response.proto +"""Generated protocol buffer code.""" + +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database + +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from temporalio.api.cloud.identity.v1 import ( + message_pb2 as temporal_dot_api_dot_cloud_dot_identity_dot_v1_dot_message__pb2, +) +from temporalio.api.cloud.namespace.v1 import ( + message_pb2 as temporal_dot_api_dot_cloud_dot_namespace_dot_v1_dot_message__pb2, +) +from temporalio.api.cloud.operation.v1 import ( + message_pb2 as temporal_dot_api_dot_cloud_dot_operation_dot_v1_dot_message__pb2, +) +from temporalio.api.cloud.region.v1 import ( + message_pb2 as temporal_dot_api_dot_cloud_dot_region_dot_v1_dot_message__pb2, +) + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( + b'\n9temporal/api/cloud/cloudservice/v1/request_response.proto\x12"temporal.api.cloud.cloudservice.v1\x1a-temporal/api/cloud/operation/v1/message.proto\x1a,temporal/api/cloud/identity/v1/message.proto\x1a-temporal/api/cloud/namespace/v1/message.proto\x1a*temporal/api/cloud/region/v1/message.proto"Z\n\x0fGetUsersRequest\x12\x11\n\tpage_size\x18\x01 \x01(\x05\x12\x12\n\npage_token\x18\x02 \x01(\t\x12\r\n\x05\x65mail\x18\x03 \x01(\t\x12\x11\n\tnamespace\x18\x04 \x01(\t"`\n\x10GetUsersResponse\x12\x33\n\x05users\x18\x01 \x03(\x0b\x32$.temporal.api.cloud.identity.v1.User\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t"!\n\x0eGetUserRequest\x12\x0f\n\x07user_id\x18\x01 \x01(\t"E\n\x0fGetUserResponse\x12\x32\n\x04user\x18\x01 \x01(\x0b\x32$.temporal.api.cloud.identity.v1.User"g\n\x11\x43reateUserRequest\x12\x36\n\x04spec\x18\x01 \x01(\x0b\x32(.temporal.api.cloud.identity.v1.UserSpec\x12\x1a\n\x12\x61sync_operation_id\x18\x02 \x01(\t"o\n\x12\x43reateUserResponse\x12\x0f\n\x07user_id\x18\x01 \x01(\t\x12H\n\x0f\x61sync_operation\x18\x02 \x01(\x0b\x32/.temporal.api.cloud.operation.v1.AsyncOperation"\x92\x01\n\x11UpdateUserRequest\x12\x0f\n\x07user_id\x18\x01 \x01(\t\x12\x36\n\x04spec\x18\x02 \x01(\x0b\x32(.temporal.api.cloud.identity.v1.UserSpec\x12\x18\n\x10resource_version\x18\x03 \x01(\t\x12\x1a\n\x12\x61sync_operation_id\x18\x04 \x01(\t"^\n\x12UpdateUserResponse\x12H\n\x0f\x61sync_operation\x18\x01 \x01(\x0b\x32/.temporal.api.cloud.operation.v1.AsyncOperation"Z\n\x11\x44\x65leteUserRequest\x12\x0f\n\x07user_id\x18\x01 \x01(\t\x12\x18\n\x10resource_version\x18\x02 \x01(\t\x12\x1a\n\x12\x61sync_operation_id\x18\x03 \x01(\t"^\n\x12\x44\x65leteUserResponse\x12H\n\x0f\x61sync_operation\x18\x01 \x01(\x0b\x32/.temporal.api.cloud.operation.v1.AsyncOperation"\xba\x01\n\x1dSetUserNamespaceAccessRequest\x12\x11\n\tnamespace\x18\x01 \x01(\t\x12\x0f\n\x07user_id\x18\x02 \x01(\t\x12?\n\x06\x61\x63\x63\x65ss\x18\x03 \x01(\x0b\x32/.temporal.api.cloud.identity.v1.NamespaceAccess\x12\x18\n\x10resource_version\x18\x04 \x01(\t\x12\x1a\n\x12\x61sync_operation_id\x18\x05 \x01(\t"j\n\x1eSetUserNamespaceAccessResponse\x12H\n\x0f\x61sync_operation\x18\x01 \x01(\x0b\x32/.temporal.api.cloud.operation.v1.AsyncOperation"6\n\x18GetAsyncOperationRequest\x12\x1a\n\x12\x61sync_operation_id\x18\x01 \x01(\t"e\n\x19GetAsyncOperationResponse\x12H\n\x0f\x61sync_operation\x18\x01 \x01(\x0b\x32/.temporal.api.cloud.operation.v1.AsyncOperation"r\n\x16\x43reateNamespaceRequest\x12<\n\x04spec\x18\x02 \x01(\x0b\x32..temporal.api.cloud.namespace.v1.NamespaceSpec\x12\x1a\n\x12\x61sync_operation_id\x18\x03 \x01(\t"v\n\x17\x43reateNamespaceResponse\x12\x11\n\tnamespace\x18\x01 \x01(\t\x12H\n\x0f\x61sync_operation\x18\x02 \x01(\x0b\x32/.temporal.api.cloud.operation.v1.AsyncOperation"K\n\x14GetNamespacesRequest\x12\x11\n\tpage_size\x18\x01 \x01(\x05\x12\x12\n\npage_token\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t"p\n\x15GetNamespacesResponse\x12>\n\nnamespaces\x18\x01 \x03(\x0b\x32*.temporal.api.cloud.namespace.v1.Namespace\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t"(\n\x13GetNamespaceRequest\x12\x11\n\tnamespace\x18\x01 \x01(\t"U\n\x14GetNamespaceResponse\x12=\n\tnamespace\x18\x01 \x01(\x0b\x32*.temporal.api.cloud.namespace.v1.Namespace"\x9f\x01\n\x16UpdateNamespaceRequest\x12\x11\n\tnamespace\x18\x01 \x01(\t\x12<\n\x04spec\x18\x02 \x01(\x0b\x32..temporal.api.cloud.namespace.v1.NamespaceSpec\x12\x18\n\x10resource_version\x18\x03 \x01(\t\x12\x1a\n\x12\x61sync_operation_id\x18\x04 \x01(\t"c\n\x17UpdateNamespaceResponse\x12H\n\x0f\x61sync_operation\x18\x01 \x01(\x0b\x32/.temporal.api.cloud.operation.v1.AsyncOperation"\xc6\x01\n"RenameCustomSearchAttributeRequest\x12\x11\n\tnamespace\x18\x01 \x01(\t\x12-\n%existing_custom_search_attribute_name\x18\x02 \x01(\t\x12(\n new_custom_search_attribute_name\x18\x03 \x01(\t\x12\x18\n\x10resource_version\x18\x04 \x01(\t\x12\x1a\n\x12\x61sync_operation_id\x18\x05 \x01(\t"o\n#RenameCustomSearchAttributeResponse\x12H\n\x0f\x61sync_operation\x18\x01 \x01(\x0b\x32/.temporal.api.cloud.operation.v1.AsyncOperation"a\n\x16\x44\x65leteNamespaceRequest\x12\x11\n\tnamespace\x18\x01 \x01(\t\x12\x18\n\x10resource_version\x18\x02 \x01(\t\x12\x1a\n\x12\x61sync_operation_id\x18\x03 \x01(\t"c\n\x17\x44\x65leteNamespaceResponse\x12H\n\x0f\x61sync_operation\x18\x01 \x01(\x0b\x32/.temporal.api.cloud.operation.v1.AsyncOperation"_\n\x1e\x46\x61iloverNamespaceRegionRequest\x12\x11\n\tnamespace\x18\x01 \x01(\t\x12\x0e\n\x06region\x18\x02 \x01(\t\x12\x1a\n\x12\x61sync_operation_id\x18\x03 \x01(\t"k\n\x1f\x46\x61iloverNamespaceRegionResponse\x12H\n\x0f\x61sync_operation\x18\x01 \x01(\x0b\x32/.temporal.api.cloud.operation.v1.AsyncOperation"t\n\x19\x41\x64\x64NamespaceRegionRequest\x12\x11\n\tnamespace\x18\x01 \x01(\t\x12\x0e\n\x06region\x18\x02 \x01(\t\x12\x18\n\x10resource_version\x18\x03 \x01(\t\x12\x1a\n\x12\x61sync_operation_id\x18\x04 \x01(\t"f\n\x1a\x41\x64\x64NamespaceRegionResponse\x12H\n\x0f\x61sync_operation\x18\x01 \x01(\x0b\x32/.temporal.api.cloud.operation.v1.AsyncOperation"\x13\n\x11GetRegionsRequest"K\n\x12GetRegionsResponse\x12\x35\n\x07regions\x18\x01 \x03(\x0b\x32$.temporal.api.cloud.region.v1.Region""\n\x10GetRegionRequest\x12\x0e\n\x06region\x18\x01 \x01(\t"I\n\x11GetRegionResponse\x12\x34\n\x06region\x18\x01 \x01(\x0b\x32$.temporal.api.cloud.region.v1.Region"`\n\x11GetApiKeysRequest\x12\x11\n\tpage_size\x18\x01 \x01(\x05\x12\x12\n\npage_token\x18\x02 \x01(\t\x12\x10\n\x08owner_id\x18\x03 \x01(\t\x12\x12\n\nowner_type\x18\x04 \x01(\t"g\n\x12GetApiKeysResponse\x12\x38\n\x08\x61pi_keys\x18\x01 \x03(\x0b\x32&.temporal.api.cloud.identity.v1.ApiKey\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t""\n\x10GetApiKeyRequest\x12\x0e\n\x06key_id\x18\x01 \x01(\t"L\n\x11GetApiKeyResponse\x12\x37\n\x07\x61pi_key\x18\x01 \x01(\x0b\x32&.temporal.api.cloud.identity.v1.ApiKey"k\n\x13\x43reateApiKeyRequest\x12\x38\n\x04spec\x18\x01 \x01(\x0b\x32*.temporal.api.cloud.identity.v1.ApiKeySpec\x12\x1a\n\x12\x61sync_operation_id\x18\x02 \x01(\t"\x7f\n\x14\x43reateApiKeyResponse\x12\x0e\n\x06key_id\x18\x01 \x01(\t\x12\r\n\x05token\x18\x02 \x01(\t\x12H\n\x0f\x61sync_operation\x18\x03 \x01(\x0b\x32/.temporal.api.cloud.operation.v1.AsyncOperation"\x95\x01\n\x13UpdateApiKeyRequest\x12\x0e\n\x06key_id\x18\x01 \x01(\t\x12\x38\n\x04spec\x18\x02 \x01(\x0b\x32*.temporal.api.cloud.identity.v1.ApiKeySpec\x12\x18\n\x10resource_version\x18\x03 \x01(\t\x12\x1a\n\x12\x61sync_operation_id\x18\x04 \x01(\t"`\n\x14UpdateApiKeyResponse\x12H\n\x0f\x61sync_operation\x18\x01 \x01(\x0b\x32/.temporal.api.cloud.operation.v1.AsyncOperation"[\n\x13\x44\x65leteApiKeyRequest\x12\x0e\n\x06key_id\x18\x01 \x01(\t\x12\x18\n\x10resource_version\x18\x02 \x01(\t\x12\x1a\n\x12\x61sync_operation_id\x18\x03 \x01(\t"`\n\x14\x44\x65leteApiKeyResponse\x12H\n\x0f\x61sync_operation\x18\x01 \x01(\x0b\x32/.temporal.api.cloud.operation.v1.AsyncOperation"d\n\x14GetUserGroupsRequest\x12\x11\n\tpage_size\x18\x01 \x01(\x05\x12\x12\n\npage_token\x18\x02 \x01(\t\x12\x11\n\tnamespace\x18\x03 \x01(\t\x12\x12\n\ngroup_name\x18\x04 \x01(\t"k\n\x15GetUserGroupsResponse\x12\x39\n\x06groups\x18\x01 \x03(\x0b\x32).temporal.api.cloud.identity.v1.UserGroup\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t"\'\n\x13GetUserGroupRequest\x12\x10\n\x08group_id\x18\x01 \x01(\t"P\n\x14GetUserGroupResponse\x12\x38\n\x05group\x18\x01 \x01(\x0b\x32).temporal.api.cloud.identity.v1.UserGroup"q\n\x16\x43reateUserGroupRequest\x12;\n\x04spec\x18\x01 \x01(\x0b\x32-.temporal.api.cloud.identity.v1.UserGroupSpec\x12\x1a\n\x12\x61sync_operation_id\x18\x02 \x01(\t"u\n\x17\x43reateUserGroupResponse\x12\x10\n\x08group_id\x18\x01 \x01(\t\x12H\n\x0f\x61sync_operation\x18\x02 \x01(\x0b\x32/.temporal.api.cloud.operation.v1.AsyncOperation"\x9d\x01\n\x16UpdateUserGroupRequest\x12\x10\n\x08group_id\x18\x01 \x01(\t\x12;\n\x04spec\x18\x02 \x01(\x0b\x32-.temporal.api.cloud.identity.v1.UserGroupSpec\x12\x18\n\x10resource_version\x18\x03 \x01(\t\x12\x1a\n\x12\x61sync_operation_id\x18\x04 \x01(\t"c\n\x17UpdateUserGroupResponse\x12H\n\x0f\x61sync_operation\x18\x01 \x01(\x0b\x32/.temporal.api.cloud.operation.v1.AsyncOperation"`\n\x16\x44\x65leteUserGroupRequest\x12\x10\n\x08group_id\x18\x01 \x01(\t\x12\x18\n\x10resource_version\x18\x02 \x01(\t\x12\x1a\n\x12\x61sync_operation_id\x18\x03 \x01(\t"c\n\x17\x44\x65leteUserGroupResponse\x12H\n\x0f\x61sync_operation\x18\x01 \x01(\x0b\x32/.temporal.api.cloud.operation.v1.AsyncOperation"\xc0\x01\n"SetUserGroupNamespaceAccessRequest\x12\x11\n\tnamespace\x18\x01 \x01(\t\x12\x10\n\x08group_id\x18\x02 \x01(\t\x12?\n\x06\x61\x63\x63\x65ss\x18\x03 \x01(\x0b\x32/.temporal.api.cloud.identity.v1.NamespaceAccess\x12\x18\n\x10resource_version\x18\x04 \x01(\t\x12\x1a\n\x12\x61sync_operation_id\x18\x05 \x01(\t"o\n#SetUserGroupNamespaceAccessResponse\x12H\n\x0f\x61sync_operation\x18\x01 \x01(\x0b\x32/.temporal.api.cloud.operation.v1.AsyncOperation"{\n\x1b\x43reateServiceAccountRequest\x12@\n\x04spec\x18\x01 \x01(\x0b\x32\x32.temporal.api.cloud.identity.v1.ServiceAccountSpec\x12\x1a\n\x12\x61sync_operation_id\x18\x02 \x01(\t"\x84\x01\n\x1c\x43reateServiceAccountResponse\x12\x1a\n\x12service_account_id\x18\x01 \x01(\t\x12H\n\x0f\x61sync_operation\x18\x02 \x01(\x0b\x32/.temporal.api.cloud.operation.v1.AsyncOperation"6\n\x18GetServiceAccountRequest\x12\x1a\n\x12service_account_id\x18\x01 \x01(\t"d\n\x19GetServiceAccountResponse\x12G\n\x0fservice_account\x18\x01 \x01(\x0b\x32..temporal.api.cloud.identity.v1.ServiceAccount"B\n\x19GetServiceAccountsRequest\x12\x11\n\tpage_size\x18\x01 \x01(\x05\x12\x12\n\npage_token\x18\x02 \x01(\t"~\n\x1aGetServiceAccountsResponse\x12G\n\x0fservice_account\x18\x01 \x03(\x0b\x32..temporal.api.cloud.identity.v1.ServiceAccount\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t"\xb1\x01\n\x1bUpdateServiceAccountRequest\x12\x1a\n\x12service_account_id\x18\x01 \x01(\t\x12@\n\x04spec\x18\x02 \x01(\x0b\x32\x32.temporal.api.cloud.identity.v1.ServiceAccountSpec\x12\x18\n\x10resource_version\x18\x03 \x01(\t\x12\x1a\n\x12\x61sync_operation_id\x18\x04 \x01(\t"h\n\x1cUpdateServiceAccountResponse\x12H\n\x0f\x61sync_operation\x18\x01 \x01(\x0b\x32/.temporal.api.cloud.operation.v1.AsyncOperation"o\n\x1b\x44\x65leteServiceAccountRequest\x12\x1a\n\x12service_account_id\x18\x01 \x01(\t\x12\x18\n\x10resource_version\x18\x02 \x01(\t\x12\x1a\n\x12\x61sync_operation_id\x18\x03 \x01(\t"h\n\x1c\x44\x65leteServiceAccountResponse\x12H\n\x0f\x61sync_operation\x18\x01 \x01(\x0b\x32/.temporal.api.cloud.operation.v1.AsyncOperationB\xc8\x01\n%io.temporal.api.cloud.cloudservice.v1B\x14RequestResponseProtoP\x01Z5go.temporal.io/api/cloud/cloudservice/v1;cloudservice\xaa\x02$Temporalio.Api.Cloud.CloudService.V1\xea\x02(Temporalio::Api::Cloud::CloudService::V1b\x06proto3' +) + + +_GETUSERSREQUEST = DESCRIPTOR.message_types_by_name["GetUsersRequest"] +_GETUSERSRESPONSE = DESCRIPTOR.message_types_by_name["GetUsersResponse"] +_GETUSERREQUEST = DESCRIPTOR.message_types_by_name["GetUserRequest"] +_GETUSERRESPONSE = DESCRIPTOR.message_types_by_name["GetUserResponse"] +_CREATEUSERREQUEST = DESCRIPTOR.message_types_by_name["CreateUserRequest"] +_CREATEUSERRESPONSE = DESCRIPTOR.message_types_by_name["CreateUserResponse"] +_UPDATEUSERREQUEST = DESCRIPTOR.message_types_by_name["UpdateUserRequest"] +_UPDATEUSERRESPONSE = DESCRIPTOR.message_types_by_name["UpdateUserResponse"] +_DELETEUSERREQUEST = DESCRIPTOR.message_types_by_name["DeleteUserRequest"] +_DELETEUSERRESPONSE = DESCRIPTOR.message_types_by_name["DeleteUserResponse"] +_SETUSERNAMESPACEACCESSREQUEST = DESCRIPTOR.message_types_by_name[ + "SetUserNamespaceAccessRequest" +] +_SETUSERNAMESPACEACCESSRESPONSE = DESCRIPTOR.message_types_by_name[ + "SetUserNamespaceAccessResponse" +] +_GETASYNCOPERATIONREQUEST = DESCRIPTOR.message_types_by_name["GetAsyncOperationRequest"] +_GETASYNCOPERATIONRESPONSE = DESCRIPTOR.message_types_by_name[ + "GetAsyncOperationResponse" +] +_CREATENAMESPACEREQUEST = DESCRIPTOR.message_types_by_name["CreateNamespaceRequest"] +_CREATENAMESPACERESPONSE = DESCRIPTOR.message_types_by_name["CreateNamespaceResponse"] +_GETNAMESPACESREQUEST = DESCRIPTOR.message_types_by_name["GetNamespacesRequest"] +_GETNAMESPACESRESPONSE = DESCRIPTOR.message_types_by_name["GetNamespacesResponse"] +_GETNAMESPACEREQUEST = DESCRIPTOR.message_types_by_name["GetNamespaceRequest"] +_GETNAMESPACERESPONSE = DESCRIPTOR.message_types_by_name["GetNamespaceResponse"] +_UPDATENAMESPACEREQUEST = DESCRIPTOR.message_types_by_name["UpdateNamespaceRequest"] +_UPDATENAMESPACERESPONSE = DESCRIPTOR.message_types_by_name["UpdateNamespaceResponse"] +_RENAMECUSTOMSEARCHATTRIBUTEREQUEST = DESCRIPTOR.message_types_by_name[ + "RenameCustomSearchAttributeRequest" +] +_RENAMECUSTOMSEARCHATTRIBUTERESPONSE = DESCRIPTOR.message_types_by_name[ + "RenameCustomSearchAttributeResponse" +] +_DELETENAMESPACEREQUEST = DESCRIPTOR.message_types_by_name["DeleteNamespaceRequest"] +_DELETENAMESPACERESPONSE = DESCRIPTOR.message_types_by_name["DeleteNamespaceResponse"] +_FAILOVERNAMESPACEREGIONREQUEST = DESCRIPTOR.message_types_by_name[ + "FailoverNamespaceRegionRequest" +] +_FAILOVERNAMESPACEREGIONRESPONSE = DESCRIPTOR.message_types_by_name[ + "FailoverNamespaceRegionResponse" +] +_ADDNAMESPACEREGIONREQUEST = DESCRIPTOR.message_types_by_name[ + "AddNamespaceRegionRequest" +] +_ADDNAMESPACEREGIONRESPONSE = DESCRIPTOR.message_types_by_name[ + "AddNamespaceRegionResponse" +] +_GETREGIONSREQUEST = DESCRIPTOR.message_types_by_name["GetRegionsRequest"] +_GETREGIONSRESPONSE = DESCRIPTOR.message_types_by_name["GetRegionsResponse"] +_GETREGIONREQUEST = DESCRIPTOR.message_types_by_name["GetRegionRequest"] +_GETREGIONRESPONSE = DESCRIPTOR.message_types_by_name["GetRegionResponse"] +_GETAPIKEYSREQUEST = DESCRIPTOR.message_types_by_name["GetApiKeysRequest"] +_GETAPIKEYSRESPONSE = DESCRIPTOR.message_types_by_name["GetApiKeysResponse"] +_GETAPIKEYREQUEST = DESCRIPTOR.message_types_by_name["GetApiKeyRequest"] +_GETAPIKEYRESPONSE = DESCRIPTOR.message_types_by_name["GetApiKeyResponse"] +_CREATEAPIKEYREQUEST = DESCRIPTOR.message_types_by_name["CreateApiKeyRequest"] +_CREATEAPIKEYRESPONSE = DESCRIPTOR.message_types_by_name["CreateApiKeyResponse"] +_UPDATEAPIKEYREQUEST = DESCRIPTOR.message_types_by_name["UpdateApiKeyRequest"] +_UPDATEAPIKEYRESPONSE = DESCRIPTOR.message_types_by_name["UpdateApiKeyResponse"] +_DELETEAPIKEYREQUEST = DESCRIPTOR.message_types_by_name["DeleteApiKeyRequest"] +_DELETEAPIKEYRESPONSE = DESCRIPTOR.message_types_by_name["DeleteApiKeyResponse"] +_GETUSERGROUPSREQUEST = DESCRIPTOR.message_types_by_name["GetUserGroupsRequest"] +_GETUSERGROUPSRESPONSE = DESCRIPTOR.message_types_by_name["GetUserGroupsResponse"] +_GETUSERGROUPREQUEST = DESCRIPTOR.message_types_by_name["GetUserGroupRequest"] +_GETUSERGROUPRESPONSE = DESCRIPTOR.message_types_by_name["GetUserGroupResponse"] +_CREATEUSERGROUPREQUEST = DESCRIPTOR.message_types_by_name["CreateUserGroupRequest"] +_CREATEUSERGROUPRESPONSE = DESCRIPTOR.message_types_by_name["CreateUserGroupResponse"] +_UPDATEUSERGROUPREQUEST = DESCRIPTOR.message_types_by_name["UpdateUserGroupRequest"] +_UPDATEUSERGROUPRESPONSE = DESCRIPTOR.message_types_by_name["UpdateUserGroupResponse"] +_DELETEUSERGROUPREQUEST = DESCRIPTOR.message_types_by_name["DeleteUserGroupRequest"] +_DELETEUSERGROUPRESPONSE = DESCRIPTOR.message_types_by_name["DeleteUserGroupResponse"] +_SETUSERGROUPNAMESPACEACCESSREQUEST = DESCRIPTOR.message_types_by_name[ + "SetUserGroupNamespaceAccessRequest" +] +_SETUSERGROUPNAMESPACEACCESSRESPONSE = DESCRIPTOR.message_types_by_name[ + "SetUserGroupNamespaceAccessResponse" +] +_CREATESERVICEACCOUNTREQUEST = DESCRIPTOR.message_types_by_name[ + "CreateServiceAccountRequest" +] +_CREATESERVICEACCOUNTRESPONSE = DESCRIPTOR.message_types_by_name[ + "CreateServiceAccountResponse" +] +_GETSERVICEACCOUNTREQUEST = DESCRIPTOR.message_types_by_name["GetServiceAccountRequest"] +_GETSERVICEACCOUNTRESPONSE = DESCRIPTOR.message_types_by_name[ + "GetServiceAccountResponse" +] +_GETSERVICEACCOUNTSREQUEST = DESCRIPTOR.message_types_by_name[ + "GetServiceAccountsRequest" +] +_GETSERVICEACCOUNTSRESPONSE = DESCRIPTOR.message_types_by_name[ + "GetServiceAccountsResponse" +] +_UPDATESERVICEACCOUNTREQUEST = DESCRIPTOR.message_types_by_name[ + "UpdateServiceAccountRequest" +] +_UPDATESERVICEACCOUNTRESPONSE = DESCRIPTOR.message_types_by_name[ + "UpdateServiceAccountResponse" +] +_DELETESERVICEACCOUNTREQUEST = DESCRIPTOR.message_types_by_name[ + "DeleteServiceAccountRequest" +] +_DELETESERVICEACCOUNTRESPONSE = DESCRIPTOR.message_types_by_name[ + "DeleteServiceAccountResponse" +] +GetUsersRequest = _reflection.GeneratedProtocolMessageType( + "GetUsersRequest", + (_message.Message,), + { + "DESCRIPTOR": _GETUSERSREQUEST, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.GetUsersRequest) + }, +) +_sym_db.RegisterMessage(GetUsersRequest) + +GetUsersResponse = _reflection.GeneratedProtocolMessageType( + "GetUsersResponse", + (_message.Message,), + { + "DESCRIPTOR": _GETUSERSRESPONSE, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.GetUsersResponse) + }, +) +_sym_db.RegisterMessage(GetUsersResponse) + +GetUserRequest = _reflection.GeneratedProtocolMessageType( + "GetUserRequest", + (_message.Message,), + { + "DESCRIPTOR": _GETUSERREQUEST, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.GetUserRequest) + }, +) +_sym_db.RegisterMessage(GetUserRequest) + +GetUserResponse = _reflection.GeneratedProtocolMessageType( + "GetUserResponse", + (_message.Message,), + { + "DESCRIPTOR": _GETUSERRESPONSE, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.GetUserResponse) + }, +) +_sym_db.RegisterMessage(GetUserResponse) + +CreateUserRequest = _reflection.GeneratedProtocolMessageType( + "CreateUserRequest", + (_message.Message,), + { + "DESCRIPTOR": _CREATEUSERREQUEST, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.CreateUserRequest) + }, +) +_sym_db.RegisterMessage(CreateUserRequest) + +CreateUserResponse = _reflection.GeneratedProtocolMessageType( + "CreateUserResponse", + (_message.Message,), + { + "DESCRIPTOR": _CREATEUSERRESPONSE, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.CreateUserResponse) + }, +) +_sym_db.RegisterMessage(CreateUserResponse) + +UpdateUserRequest = _reflection.GeneratedProtocolMessageType( + "UpdateUserRequest", + (_message.Message,), + { + "DESCRIPTOR": _UPDATEUSERREQUEST, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.UpdateUserRequest) + }, +) +_sym_db.RegisterMessage(UpdateUserRequest) + +UpdateUserResponse = _reflection.GeneratedProtocolMessageType( + "UpdateUserResponse", + (_message.Message,), + { + "DESCRIPTOR": _UPDATEUSERRESPONSE, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.UpdateUserResponse) + }, +) +_sym_db.RegisterMessage(UpdateUserResponse) + +DeleteUserRequest = _reflection.GeneratedProtocolMessageType( + "DeleteUserRequest", + (_message.Message,), + { + "DESCRIPTOR": _DELETEUSERREQUEST, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.DeleteUserRequest) + }, +) +_sym_db.RegisterMessage(DeleteUserRequest) + +DeleteUserResponse = _reflection.GeneratedProtocolMessageType( + "DeleteUserResponse", + (_message.Message,), + { + "DESCRIPTOR": _DELETEUSERRESPONSE, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.DeleteUserResponse) + }, +) +_sym_db.RegisterMessage(DeleteUserResponse) + +SetUserNamespaceAccessRequest = _reflection.GeneratedProtocolMessageType( + "SetUserNamespaceAccessRequest", + (_message.Message,), + { + "DESCRIPTOR": _SETUSERNAMESPACEACCESSREQUEST, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.SetUserNamespaceAccessRequest) + }, +) +_sym_db.RegisterMessage(SetUserNamespaceAccessRequest) + +SetUserNamespaceAccessResponse = _reflection.GeneratedProtocolMessageType( + "SetUserNamespaceAccessResponse", + (_message.Message,), + { + "DESCRIPTOR": _SETUSERNAMESPACEACCESSRESPONSE, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.SetUserNamespaceAccessResponse) + }, +) +_sym_db.RegisterMessage(SetUserNamespaceAccessResponse) + +GetAsyncOperationRequest = _reflection.GeneratedProtocolMessageType( + "GetAsyncOperationRequest", + (_message.Message,), + { + "DESCRIPTOR": _GETASYNCOPERATIONREQUEST, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.GetAsyncOperationRequest) + }, +) +_sym_db.RegisterMessage(GetAsyncOperationRequest) + +GetAsyncOperationResponse = _reflection.GeneratedProtocolMessageType( + "GetAsyncOperationResponse", + (_message.Message,), + { + "DESCRIPTOR": _GETASYNCOPERATIONRESPONSE, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.GetAsyncOperationResponse) + }, +) +_sym_db.RegisterMessage(GetAsyncOperationResponse) + +CreateNamespaceRequest = _reflection.GeneratedProtocolMessageType( + "CreateNamespaceRequest", + (_message.Message,), + { + "DESCRIPTOR": _CREATENAMESPACEREQUEST, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.CreateNamespaceRequest) + }, +) +_sym_db.RegisterMessage(CreateNamespaceRequest) + +CreateNamespaceResponse = _reflection.GeneratedProtocolMessageType( + "CreateNamespaceResponse", + (_message.Message,), + { + "DESCRIPTOR": _CREATENAMESPACERESPONSE, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.CreateNamespaceResponse) + }, +) +_sym_db.RegisterMessage(CreateNamespaceResponse) + +GetNamespacesRequest = _reflection.GeneratedProtocolMessageType( + "GetNamespacesRequest", + (_message.Message,), + { + "DESCRIPTOR": _GETNAMESPACESREQUEST, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.GetNamespacesRequest) + }, +) +_sym_db.RegisterMessage(GetNamespacesRequest) + +GetNamespacesResponse = _reflection.GeneratedProtocolMessageType( + "GetNamespacesResponse", + (_message.Message,), + { + "DESCRIPTOR": _GETNAMESPACESRESPONSE, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.GetNamespacesResponse) + }, +) +_sym_db.RegisterMessage(GetNamespacesResponse) + +GetNamespaceRequest = _reflection.GeneratedProtocolMessageType( + "GetNamespaceRequest", + (_message.Message,), + { + "DESCRIPTOR": _GETNAMESPACEREQUEST, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.GetNamespaceRequest) + }, +) +_sym_db.RegisterMessage(GetNamespaceRequest) + +GetNamespaceResponse = _reflection.GeneratedProtocolMessageType( + "GetNamespaceResponse", + (_message.Message,), + { + "DESCRIPTOR": _GETNAMESPACERESPONSE, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.GetNamespaceResponse) + }, +) +_sym_db.RegisterMessage(GetNamespaceResponse) + +UpdateNamespaceRequest = _reflection.GeneratedProtocolMessageType( + "UpdateNamespaceRequest", + (_message.Message,), + { + "DESCRIPTOR": _UPDATENAMESPACEREQUEST, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.UpdateNamespaceRequest) + }, +) +_sym_db.RegisterMessage(UpdateNamespaceRequest) + +UpdateNamespaceResponse = _reflection.GeneratedProtocolMessageType( + "UpdateNamespaceResponse", + (_message.Message,), + { + "DESCRIPTOR": _UPDATENAMESPACERESPONSE, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.UpdateNamespaceResponse) + }, +) +_sym_db.RegisterMessage(UpdateNamespaceResponse) + +RenameCustomSearchAttributeRequest = _reflection.GeneratedProtocolMessageType( + "RenameCustomSearchAttributeRequest", + (_message.Message,), + { + "DESCRIPTOR": _RENAMECUSTOMSEARCHATTRIBUTEREQUEST, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.RenameCustomSearchAttributeRequest) + }, +) +_sym_db.RegisterMessage(RenameCustomSearchAttributeRequest) + +RenameCustomSearchAttributeResponse = _reflection.GeneratedProtocolMessageType( + "RenameCustomSearchAttributeResponse", + (_message.Message,), + { + "DESCRIPTOR": _RENAMECUSTOMSEARCHATTRIBUTERESPONSE, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.RenameCustomSearchAttributeResponse) + }, +) +_sym_db.RegisterMessage(RenameCustomSearchAttributeResponse) + +DeleteNamespaceRequest = _reflection.GeneratedProtocolMessageType( + "DeleteNamespaceRequest", + (_message.Message,), + { + "DESCRIPTOR": _DELETENAMESPACEREQUEST, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.DeleteNamespaceRequest) + }, +) +_sym_db.RegisterMessage(DeleteNamespaceRequest) + +DeleteNamespaceResponse = _reflection.GeneratedProtocolMessageType( + "DeleteNamespaceResponse", + (_message.Message,), + { + "DESCRIPTOR": _DELETENAMESPACERESPONSE, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.DeleteNamespaceResponse) + }, +) +_sym_db.RegisterMessage(DeleteNamespaceResponse) + +FailoverNamespaceRegionRequest = _reflection.GeneratedProtocolMessageType( + "FailoverNamespaceRegionRequest", + (_message.Message,), + { + "DESCRIPTOR": _FAILOVERNAMESPACEREGIONREQUEST, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.FailoverNamespaceRegionRequest) + }, +) +_sym_db.RegisterMessage(FailoverNamespaceRegionRequest) + +FailoverNamespaceRegionResponse = _reflection.GeneratedProtocolMessageType( + "FailoverNamespaceRegionResponse", + (_message.Message,), + { + "DESCRIPTOR": _FAILOVERNAMESPACEREGIONRESPONSE, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.FailoverNamespaceRegionResponse) + }, +) +_sym_db.RegisterMessage(FailoverNamespaceRegionResponse) + +AddNamespaceRegionRequest = _reflection.GeneratedProtocolMessageType( + "AddNamespaceRegionRequest", + (_message.Message,), + { + "DESCRIPTOR": _ADDNAMESPACEREGIONREQUEST, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.AddNamespaceRegionRequest) + }, +) +_sym_db.RegisterMessage(AddNamespaceRegionRequest) + +AddNamespaceRegionResponse = _reflection.GeneratedProtocolMessageType( + "AddNamespaceRegionResponse", + (_message.Message,), + { + "DESCRIPTOR": _ADDNAMESPACEREGIONRESPONSE, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.AddNamespaceRegionResponse) + }, +) +_sym_db.RegisterMessage(AddNamespaceRegionResponse) + +GetRegionsRequest = _reflection.GeneratedProtocolMessageType( + "GetRegionsRequest", + (_message.Message,), + { + "DESCRIPTOR": _GETREGIONSREQUEST, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.GetRegionsRequest) + }, +) +_sym_db.RegisterMessage(GetRegionsRequest) + +GetRegionsResponse = _reflection.GeneratedProtocolMessageType( + "GetRegionsResponse", + (_message.Message,), + { + "DESCRIPTOR": _GETREGIONSRESPONSE, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.GetRegionsResponse) + }, +) +_sym_db.RegisterMessage(GetRegionsResponse) + +GetRegionRequest = _reflection.GeneratedProtocolMessageType( + "GetRegionRequest", + (_message.Message,), + { + "DESCRIPTOR": _GETREGIONREQUEST, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.GetRegionRequest) + }, +) +_sym_db.RegisterMessage(GetRegionRequest) + +GetRegionResponse = _reflection.GeneratedProtocolMessageType( + "GetRegionResponse", + (_message.Message,), + { + "DESCRIPTOR": _GETREGIONRESPONSE, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.GetRegionResponse) + }, +) +_sym_db.RegisterMessage(GetRegionResponse) + +GetApiKeysRequest = _reflection.GeneratedProtocolMessageType( + "GetApiKeysRequest", + (_message.Message,), + { + "DESCRIPTOR": _GETAPIKEYSREQUEST, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.GetApiKeysRequest) + }, +) +_sym_db.RegisterMessage(GetApiKeysRequest) + +GetApiKeysResponse = _reflection.GeneratedProtocolMessageType( + "GetApiKeysResponse", + (_message.Message,), + { + "DESCRIPTOR": _GETAPIKEYSRESPONSE, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.GetApiKeysResponse) + }, +) +_sym_db.RegisterMessage(GetApiKeysResponse) + +GetApiKeyRequest = _reflection.GeneratedProtocolMessageType( + "GetApiKeyRequest", + (_message.Message,), + { + "DESCRIPTOR": _GETAPIKEYREQUEST, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.GetApiKeyRequest) + }, +) +_sym_db.RegisterMessage(GetApiKeyRequest) + +GetApiKeyResponse = _reflection.GeneratedProtocolMessageType( + "GetApiKeyResponse", + (_message.Message,), + { + "DESCRIPTOR": _GETAPIKEYRESPONSE, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.GetApiKeyResponse) + }, +) +_sym_db.RegisterMessage(GetApiKeyResponse) + +CreateApiKeyRequest = _reflection.GeneratedProtocolMessageType( + "CreateApiKeyRequest", + (_message.Message,), + { + "DESCRIPTOR": _CREATEAPIKEYREQUEST, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.CreateApiKeyRequest) + }, +) +_sym_db.RegisterMessage(CreateApiKeyRequest) + +CreateApiKeyResponse = _reflection.GeneratedProtocolMessageType( + "CreateApiKeyResponse", + (_message.Message,), + { + "DESCRIPTOR": _CREATEAPIKEYRESPONSE, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.CreateApiKeyResponse) + }, +) +_sym_db.RegisterMessage(CreateApiKeyResponse) + +UpdateApiKeyRequest = _reflection.GeneratedProtocolMessageType( + "UpdateApiKeyRequest", + (_message.Message,), + { + "DESCRIPTOR": _UPDATEAPIKEYREQUEST, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.UpdateApiKeyRequest) + }, +) +_sym_db.RegisterMessage(UpdateApiKeyRequest) + +UpdateApiKeyResponse = _reflection.GeneratedProtocolMessageType( + "UpdateApiKeyResponse", + (_message.Message,), + { + "DESCRIPTOR": _UPDATEAPIKEYRESPONSE, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.UpdateApiKeyResponse) + }, +) +_sym_db.RegisterMessage(UpdateApiKeyResponse) + +DeleteApiKeyRequest = _reflection.GeneratedProtocolMessageType( + "DeleteApiKeyRequest", + (_message.Message,), + { + "DESCRIPTOR": _DELETEAPIKEYREQUEST, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.DeleteApiKeyRequest) + }, +) +_sym_db.RegisterMessage(DeleteApiKeyRequest) + +DeleteApiKeyResponse = _reflection.GeneratedProtocolMessageType( + "DeleteApiKeyResponse", + (_message.Message,), + { + "DESCRIPTOR": _DELETEAPIKEYRESPONSE, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.DeleteApiKeyResponse) + }, +) +_sym_db.RegisterMessage(DeleteApiKeyResponse) + +GetUserGroupsRequest = _reflection.GeneratedProtocolMessageType( + "GetUserGroupsRequest", + (_message.Message,), + { + "DESCRIPTOR": _GETUSERGROUPSREQUEST, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.GetUserGroupsRequest) + }, +) +_sym_db.RegisterMessage(GetUserGroupsRequest) + +GetUserGroupsResponse = _reflection.GeneratedProtocolMessageType( + "GetUserGroupsResponse", + (_message.Message,), + { + "DESCRIPTOR": _GETUSERGROUPSRESPONSE, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.GetUserGroupsResponse) + }, +) +_sym_db.RegisterMessage(GetUserGroupsResponse) + +GetUserGroupRequest = _reflection.GeneratedProtocolMessageType( + "GetUserGroupRequest", + (_message.Message,), + { + "DESCRIPTOR": _GETUSERGROUPREQUEST, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.GetUserGroupRequest) + }, +) +_sym_db.RegisterMessage(GetUserGroupRequest) + +GetUserGroupResponse = _reflection.GeneratedProtocolMessageType( + "GetUserGroupResponse", + (_message.Message,), + { + "DESCRIPTOR": _GETUSERGROUPRESPONSE, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.GetUserGroupResponse) + }, +) +_sym_db.RegisterMessage(GetUserGroupResponse) + +CreateUserGroupRequest = _reflection.GeneratedProtocolMessageType( + "CreateUserGroupRequest", + (_message.Message,), + { + "DESCRIPTOR": _CREATEUSERGROUPREQUEST, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.CreateUserGroupRequest) + }, +) +_sym_db.RegisterMessage(CreateUserGroupRequest) + +CreateUserGroupResponse = _reflection.GeneratedProtocolMessageType( + "CreateUserGroupResponse", + (_message.Message,), + { + "DESCRIPTOR": _CREATEUSERGROUPRESPONSE, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.CreateUserGroupResponse) + }, +) +_sym_db.RegisterMessage(CreateUserGroupResponse) + +UpdateUserGroupRequest = _reflection.GeneratedProtocolMessageType( + "UpdateUserGroupRequest", + (_message.Message,), + { + "DESCRIPTOR": _UPDATEUSERGROUPREQUEST, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.UpdateUserGroupRequest) + }, +) +_sym_db.RegisterMessage(UpdateUserGroupRequest) + +UpdateUserGroupResponse = _reflection.GeneratedProtocolMessageType( + "UpdateUserGroupResponse", + (_message.Message,), + { + "DESCRIPTOR": _UPDATEUSERGROUPRESPONSE, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.UpdateUserGroupResponse) + }, +) +_sym_db.RegisterMessage(UpdateUserGroupResponse) + +DeleteUserGroupRequest = _reflection.GeneratedProtocolMessageType( + "DeleteUserGroupRequest", + (_message.Message,), + { + "DESCRIPTOR": _DELETEUSERGROUPREQUEST, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.DeleteUserGroupRequest) + }, +) +_sym_db.RegisterMessage(DeleteUserGroupRequest) + +DeleteUserGroupResponse = _reflection.GeneratedProtocolMessageType( + "DeleteUserGroupResponse", + (_message.Message,), + { + "DESCRIPTOR": _DELETEUSERGROUPRESPONSE, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.DeleteUserGroupResponse) + }, +) +_sym_db.RegisterMessage(DeleteUserGroupResponse) + +SetUserGroupNamespaceAccessRequest = _reflection.GeneratedProtocolMessageType( + "SetUserGroupNamespaceAccessRequest", + (_message.Message,), + { + "DESCRIPTOR": _SETUSERGROUPNAMESPACEACCESSREQUEST, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.SetUserGroupNamespaceAccessRequest) + }, +) +_sym_db.RegisterMessage(SetUserGroupNamespaceAccessRequest) + +SetUserGroupNamespaceAccessResponse = _reflection.GeneratedProtocolMessageType( + "SetUserGroupNamespaceAccessResponse", + (_message.Message,), + { + "DESCRIPTOR": _SETUSERGROUPNAMESPACEACCESSRESPONSE, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.SetUserGroupNamespaceAccessResponse) + }, +) +_sym_db.RegisterMessage(SetUserGroupNamespaceAccessResponse) + +CreateServiceAccountRequest = _reflection.GeneratedProtocolMessageType( + "CreateServiceAccountRequest", + (_message.Message,), + { + "DESCRIPTOR": _CREATESERVICEACCOUNTREQUEST, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.CreateServiceAccountRequest) + }, +) +_sym_db.RegisterMessage(CreateServiceAccountRequest) + +CreateServiceAccountResponse = _reflection.GeneratedProtocolMessageType( + "CreateServiceAccountResponse", + (_message.Message,), + { + "DESCRIPTOR": _CREATESERVICEACCOUNTRESPONSE, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.CreateServiceAccountResponse) + }, +) +_sym_db.RegisterMessage(CreateServiceAccountResponse) + +GetServiceAccountRequest = _reflection.GeneratedProtocolMessageType( + "GetServiceAccountRequest", + (_message.Message,), + { + "DESCRIPTOR": _GETSERVICEACCOUNTREQUEST, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.GetServiceAccountRequest) + }, +) +_sym_db.RegisterMessage(GetServiceAccountRequest) + +GetServiceAccountResponse = _reflection.GeneratedProtocolMessageType( + "GetServiceAccountResponse", + (_message.Message,), + { + "DESCRIPTOR": _GETSERVICEACCOUNTRESPONSE, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.GetServiceAccountResponse) + }, +) +_sym_db.RegisterMessage(GetServiceAccountResponse) + +GetServiceAccountsRequest = _reflection.GeneratedProtocolMessageType( + "GetServiceAccountsRequest", + (_message.Message,), + { + "DESCRIPTOR": _GETSERVICEACCOUNTSREQUEST, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.GetServiceAccountsRequest) + }, +) +_sym_db.RegisterMessage(GetServiceAccountsRequest) + +GetServiceAccountsResponse = _reflection.GeneratedProtocolMessageType( + "GetServiceAccountsResponse", + (_message.Message,), + { + "DESCRIPTOR": _GETSERVICEACCOUNTSRESPONSE, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.GetServiceAccountsResponse) + }, +) +_sym_db.RegisterMessage(GetServiceAccountsResponse) + +UpdateServiceAccountRequest = _reflection.GeneratedProtocolMessageType( + "UpdateServiceAccountRequest", + (_message.Message,), + { + "DESCRIPTOR": _UPDATESERVICEACCOUNTREQUEST, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.UpdateServiceAccountRequest) + }, +) +_sym_db.RegisterMessage(UpdateServiceAccountRequest) + +UpdateServiceAccountResponse = _reflection.GeneratedProtocolMessageType( + "UpdateServiceAccountResponse", + (_message.Message,), + { + "DESCRIPTOR": _UPDATESERVICEACCOUNTRESPONSE, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.UpdateServiceAccountResponse) + }, +) +_sym_db.RegisterMessage(UpdateServiceAccountResponse) + +DeleteServiceAccountRequest = _reflection.GeneratedProtocolMessageType( + "DeleteServiceAccountRequest", + (_message.Message,), + { + "DESCRIPTOR": _DELETESERVICEACCOUNTREQUEST, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.DeleteServiceAccountRequest) + }, +) +_sym_db.RegisterMessage(DeleteServiceAccountRequest) + +DeleteServiceAccountResponse = _reflection.GeneratedProtocolMessageType( + "DeleteServiceAccountResponse", + (_message.Message,), + { + "DESCRIPTOR": _DELETESERVICEACCOUNTRESPONSE, + "__module__": "temporal.api.cloud.cloudservice.v1.request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.cloudservice.v1.DeleteServiceAccountResponse) + }, +) +_sym_db.RegisterMessage(DeleteServiceAccountResponse) + +if _descriptor._USE_C_DESCRIPTORS == False: + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = b"\n%io.temporal.api.cloud.cloudservice.v1B\024RequestResponseProtoP\001Z5go.temporal.io/api/cloud/cloudservice/v1;cloudservice\252\002$Temporalio.Api.Cloud.CloudService.V1\352\002(Temporalio::Api::Cloud::CloudService::V1" + _GETUSERSREQUEST._serialized_start = 281 + _GETUSERSREQUEST._serialized_end = 371 + _GETUSERSRESPONSE._serialized_start = 373 + _GETUSERSRESPONSE._serialized_end = 469 + _GETUSERREQUEST._serialized_start = 471 + _GETUSERREQUEST._serialized_end = 504 + _GETUSERRESPONSE._serialized_start = 506 + _GETUSERRESPONSE._serialized_end = 575 + _CREATEUSERREQUEST._serialized_start = 577 + _CREATEUSERREQUEST._serialized_end = 680 + _CREATEUSERRESPONSE._serialized_start = 682 + _CREATEUSERRESPONSE._serialized_end = 793 + _UPDATEUSERREQUEST._serialized_start = 796 + _UPDATEUSERREQUEST._serialized_end = 942 + _UPDATEUSERRESPONSE._serialized_start = 944 + _UPDATEUSERRESPONSE._serialized_end = 1038 + _DELETEUSERREQUEST._serialized_start = 1040 + _DELETEUSERREQUEST._serialized_end = 1130 + _DELETEUSERRESPONSE._serialized_start = 1132 + _DELETEUSERRESPONSE._serialized_end = 1226 + _SETUSERNAMESPACEACCESSREQUEST._serialized_start = 1229 + _SETUSERNAMESPACEACCESSREQUEST._serialized_end = 1415 + _SETUSERNAMESPACEACCESSRESPONSE._serialized_start = 1417 + _SETUSERNAMESPACEACCESSRESPONSE._serialized_end = 1523 + _GETASYNCOPERATIONREQUEST._serialized_start = 1525 + _GETASYNCOPERATIONREQUEST._serialized_end = 1579 + _GETASYNCOPERATIONRESPONSE._serialized_start = 1581 + _GETASYNCOPERATIONRESPONSE._serialized_end = 1682 + _CREATENAMESPACEREQUEST._serialized_start = 1684 + _CREATENAMESPACEREQUEST._serialized_end = 1798 + _CREATENAMESPACERESPONSE._serialized_start = 1800 + _CREATENAMESPACERESPONSE._serialized_end = 1918 + _GETNAMESPACESREQUEST._serialized_start = 1920 + _GETNAMESPACESREQUEST._serialized_end = 1995 + _GETNAMESPACESRESPONSE._serialized_start = 1997 + _GETNAMESPACESRESPONSE._serialized_end = 2109 + _GETNAMESPACEREQUEST._serialized_start = 2111 + _GETNAMESPACEREQUEST._serialized_end = 2151 + _GETNAMESPACERESPONSE._serialized_start = 2153 + _GETNAMESPACERESPONSE._serialized_end = 2238 + _UPDATENAMESPACEREQUEST._serialized_start = 2241 + _UPDATENAMESPACEREQUEST._serialized_end = 2400 + _UPDATENAMESPACERESPONSE._serialized_start = 2402 + _UPDATENAMESPACERESPONSE._serialized_end = 2501 + _RENAMECUSTOMSEARCHATTRIBUTEREQUEST._serialized_start = 2504 + _RENAMECUSTOMSEARCHATTRIBUTEREQUEST._serialized_end = 2702 + _RENAMECUSTOMSEARCHATTRIBUTERESPONSE._serialized_start = 2704 + _RENAMECUSTOMSEARCHATTRIBUTERESPONSE._serialized_end = 2815 + _DELETENAMESPACEREQUEST._serialized_start = 2817 + _DELETENAMESPACEREQUEST._serialized_end = 2914 + _DELETENAMESPACERESPONSE._serialized_start = 2916 + _DELETENAMESPACERESPONSE._serialized_end = 3015 + _FAILOVERNAMESPACEREGIONREQUEST._serialized_start = 3017 + _FAILOVERNAMESPACEREGIONREQUEST._serialized_end = 3112 + _FAILOVERNAMESPACEREGIONRESPONSE._serialized_start = 3114 + _FAILOVERNAMESPACEREGIONRESPONSE._serialized_end = 3221 + _ADDNAMESPACEREGIONREQUEST._serialized_start = 3223 + _ADDNAMESPACEREGIONREQUEST._serialized_end = 3339 + _ADDNAMESPACEREGIONRESPONSE._serialized_start = 3341 + _ADDNAMESPACEREGIONRESPONSE._serialized_end = 3443 + _GETREGIONSREQUEST._serialized_start = 3445 + _GETREGIONSREQUEST._serialized_end = 3464 + _GETREGIONSRESPONSE._serialized_start = 3466 + _GETREGIONSRESPONSE._serialized_end = 3541 + _GETREGIONREQUEST._serialized_start = 3543 + _GETREGIONREQUEST._serialized_end = 3577 + _GETREGIONRESPONSE._serialized_start = 3579 + _GETREGIONRESPONSE._serialized_end = 3652 + _GETAPIKEYSREQUEST._serialized_start = 3654 + _GETAPIKEYSREQUEST._serialized_end = 3750 + _GETAPIKEYSRESPONSE._serialized_start = 3752 + _GETAPIKEYSRESPONSE._serialized_end = 3855 + _GETAPIKEYREQUEST._serialized_start = 3857 + _GETAPIKEYREQUEST._serialized_end = 3891 + _GETAPIKEYRESPONSE._serialized_start = 3893 + _GETAPIKEYRESPONSE._serialized_end = 3969 + _CREATEAPIKEYREQUEST._serialized_start = 3971 + _CREATEAPIKEYREQUEST._serialized_end = 4078 + _CREATEAPIKEYRESPONSE._serialized_start = 4080 + _CREATEAPIKEYRESPONSE._serialized_end = 4207 + _UPDATEAPIKEYREQUEST._serialized_start = 4210 + _UPDATEAPIKEYREQUEST._serialized_end = 4359 + _UPDATEAPIKEYRESPONSE._serialized_start = 4361 + _UPDATEAPIKEYRESPONSE._serialized_end = 4457 + _DELETEAPIKEYREQUEST._serialized_start = 4459 + _DELETEAPIKEYREQUEST._serialized_end = 4550 + _DELETEAPIKEYRESPONSE._serialized_start = 4552 + _DELETEAPIKEYRESPONSE._serialized_end = 4648 + _GETUSERGROUPSREQUEST._serialized_start = 4650 + _GETUSERGROUPSREQUEST._serialized_end = 4750 + _GETUSERGROUPSRESPONSE._serialized_start = 4752 + _GETUSERGROUPSRESPONSE._serialized_end = 4859 + _GETUSERGROUPREQUEST._serialized_start = 4861 + _GETUSERGROUPREQUEST._serialized_end = 4900 + _GETUSERGROUPRESPONSE._serialized_start = 4902 + _GETUSERGROUPRESPONSE._serialized_end = 4982 + _CREATEUSERGROUPREQUEST._serialized_start = 4984 + _CREATEUSERGROUPREQUEST._serialized_end = 5097 + _CREATEUSERGROUPRESPONSE._serialized_start = 5099 + _CREATEUSERGROUPRESPONSE._serialized_end = 5216 + _UPDATEUSERGROUPREQUEST._serialized_start = 5219 + _UPDATEUSERGROUPREQUEST._serialized_end = 5376 + _UPDATEUSERGROUPRESPONSE._serialized_start = 5378 + _UPDATEUSERGROUPRESPONSE._serialized_end = 5477 + _DELETEUSERGROUPREQUEST._serialized_start = 5479 + _DELETEUSERGROUPREQUEST._serialized_end = 5575 + _DELETEUSERGROUPRESPONSE._serialized_start = 5577 + _DELETEUSERGROUPRESPONSE._serialized_end = 5676 + _SETUSERGROUPNAMESPACEACCESSREQUEST._serialized_start = 5679 + _SETUSERGROUPNAMESPACEACCESSREQUEST._serialized_end = 5871 + _SETUSERGROUPNAMESPACEACCESSRESPONSE._serialized_start = 5873 + _SETUSERGROUPNAMESPACEACCESSRESPONSE._serialized_end = 5984 + _CREATESERVICEACCOUNTREQUEST._serialized_start = 5986 + _CREATESERVICEACCOUNTREQUEST._serialized_end = 6109 + _CREATESERVICEACCOUNTRESPONSE._serialized_start = 6112 + _CREATESERVICEACCOUNTRESPONSE._serialized_end = 6244 + _GETSERVICEACCOUNTREQUEST._serialized_start = 6246 + _GETSERVICEACCOUNTREQUEST._serialized_end = 6300 + _GETSERVICEACCOUNTRESPONSE._serialized_start = 6302 + _GETSERVICEACCOUNTRESPONSE._serialized_end = 6402 + _GETSERVICEACCOUNTSREQUEST._serialized_start = 6404 + _GETSERVICEACCOUNTSREQUEST._serialized_end = 6470 + _GETSERVICEACCOUNTSRESPONSE._serialized_start = 6472 + _GETSERVICEACCOUNTSRESPONSE._serialized_end = 6598 + _UPDATESERVICEACCOUNTREQUEST._serialized_start = 6601 + _UPDATESERVICEACCOUNTREQUEST._serialized_end = 6778 + _UPDATESERVICEACCOUNTRESPONSE._serialized_start = 6780 + _UPDATESERVICEACCOUNTRESPONSE._serialized_end = 6884 + _DELETESERVICEACCOUNTREQUEST._serialized_start = 6886 + _DELETESERVICEACCOUNTREQUEST._serialized_end = 6997 + _DELETESERVICEACCOUNTRESPONSE._serialized_start = 6999 + _DELETESERVICEACCOUNTRESPONSE._serialized_end = 7103 +# @@protoc_insertion_point(module_scope) diff --git a/temporalio/api/cloud/cloudservice/v1/request_response_pb2.pyi b/temporalio/api/cloud/cloudservice/v1/request_response_pb2.pyi new file mode 100644 index 00000000..fa2910d3 --- /dev/null +++ b/temporalio/api/cloud/cloudservice/v1/request_response_pb2.pyi @@ -0,0 +1,2039 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" + +import builtins +import collections.abc +import sys + +import google.protobuf.descriptor +import google.protobuf.internal.containers +import google.protobuf.message + +import temporalio.api.cloud.identity.v1.message_pb2 +import temporalio.api.cloud.namespace.v1.message_pb2 +import temporalio.api.cloud.operation.v1.message_pb2 +import temporalio.api.cloud.region.v1.message_pb2 + +if sys.version_info >= (3, 8): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class GetUsersRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + PAGE_SIZE_FIELD_NUMBER: builtins.int + PAGE_TOKEN_FIELD_NUMBER: builtins.int + EMAIL_FIELD_NUMBER: builtins.int + NAMESPACE_FIELD_NUMBER: builtins.int + page_size: builtins.int + """The requested size of the page to retrieve - optional. + Cannot exceed 1000. Defaults to 100. + """ + page_token: builtins.str + """The page token if this is continuing from another response - optional.""" + email: builtins.str + """Filter users by email address - optional.""" + namespace: builtins.str + """Filter users by the namespace they have access to - optional.""" + def __init__( + self, + *, + page_size: builtins.int = ..., + page_token: builtins.str = ..., + email: builtins.str = ..., + namespace: builtins.str = ..., + ) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "email", + b"email", + "namespace", + b"namespace", + "page_size", + b"page_size", + "page_token", + b"page_token", + ], + ) -> None: ... + +global___GetUsersRequest = GetUsersRequest + +class GetUsersResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + USERS_FIELD_NUMBER: builtins.int + NEXT_PAGE_TOKEN_FIELD_NUMBER: builtins.int + @property + def users( + self, + ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ + temporalio.api.cloud.identity.v1.message_pb2.User + ]: + """The list of users in ascending ids order""" + next_page_token: builtins.str + """The next page's token""" + def __init__( + self, + *, + users: collections.abc.Iterable[ + temporalio.api.cloud.identity.v1.message_pb2.User + ] + | None = ..., + next_page_token: builtins.str = ..., + ) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "next_page_token", b"next_page_token", "users", b"users" + ], + ) -> None: ... + +global___GetUsersResponse = GetUsersResponse + +class GetUserRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + USER_ID_FIELD_NUMBER: builtins.int + user_id: builtins.str + """The id of the user to get""" + def __init__( + self, + *, + user_id: builtins.str = ..., + ) -> None: ... + def ClearField( + self, field_name: typing_extensions.Literal["user_id", b"user_id"] + ) -> None: ... + +global___GetUserRequest = GetUserRequest + +class GetUserResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + USER_FIELD_NUMBER: builtins.int + @property + def user(self) -> temporalio.api.cloud.identity.v1.message_pb2.User: + """The user""" + def __init__( + self, + *, + user: temporalio.api.cloud.identity.v1.message_pb2.User | None = ..., + ) -> None: ... + def HasField( + self, field_name: typing_extensions.Literal["user", b"user"] + ) -> builtins.bool: ... + def ClearField( + self, field_name: typing_extensions.Literal["user", b"user"] + ) -> None: ... + +global___GetUserResponse = GetUserResponse + +class CreateUserRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + SPEC_FIELD_NUMBER: builtins.int + ASYNC_OPERATION_ID_FIELD_NUMBER: builtins.int + @property + def spec(self) -> temporalio.api.cloud.identity.v1.message_pb2.UserSpec: + """The spec for the user to invite""" + async_operation_id: builtins.str + """The id to use for this async operation - optional""" + def __init__( + self, + *, + spec: temporalio.api.cloud.identity.v1.message_pb2.UserSpec | None = ..., + async_operation_id: builtins.str = ..., + ) -> None: ... + def HasField( + self, field_name: typing_extensions.Literal["spec", b"spec"] + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "async_operation_id", b"async_operation_id", "spec", b"spec" + ], + ) -> None: ... + +global___CreateUserRequest = CreateUserRequest + +class CreateUserResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + USER_ID_FIELD_NUMBER: builtins.int + ASYNC_OPERATION_FIELD_NUMBER: builtins.int + user_id: builtins.str + """The id of the user that was invited""" + @property + def async_operation( + self, + ) -> temporalio.api.cloud.operation.v1.message_pb2.AsyncOperation: + """The async operation""" + def __init__( + self, + *, + user_id: builtins.str = ..., + async_operation: temporalio.api.cloud.operation.v1.message_pb2.AsyncOperation + | None = ..., + ) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal["async_operation", b"async_operation"], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "async_operation", b"async_operation", "user_id", b"user_id" + ], + ) -> None: ... + +global___CreateUserResponse = CreateUserResponse + +class UpdateUserRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + USER_ID_FIELD_NUMBER: builtins.int + SPEC_FIELD_NUMBER: builtins.int + RESOURCE_VERSION_FIELD_NUMBER: builtins.int + ASYNC_OPERATION_ID_FIELD_NUMBER: builtins.int + user_id: builtins.str + """The id of the user to update""" + @property + def spec(self) -> temporalio.api.cloud.identity.v1.message_pb2.UserSpec: + """The new user specification""" + resource_version: builtins.str + """The version of the user for which this update is intended for + The latest version can be found in the GetUser operation response + """ + async_operation_id: builtins.str + """The id to use for this async operation - optional""" + def __init__( + self, + *, + user_id: builtins.str = ..., + spec: temporalio.api.cloud.identity.v1.message_pb2.UserSpec | None = ..., + resource_version: builtins.str = ..., + async_operation_id: builtins.str = ..., + ) -> None: ... + def HasField( + self, field_name: typing_extensions.Literal["spec", b"spec"] + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "async_operation_id", + b"async_operation_id", + "resource_version", + b"resource_version", + "spec", + b"spec", + "user_id", + b"user_id", + ], + ) -> None: ... + +global___UpdateUserRequest = UpdateUserRequest + +class UpdateUserResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ASYNC_OPERATION_FIELD_NUMBER: builtins.int + @property + def async_operation( + self, + ) -> temporalio.api.cloud.operation.v1.message_pb2.AsyncOperation: + """The async operation""" + def __init__( + self, + *, + async_operation: temporalio.api.cloud.operation.v1.message_pb2.AsyncOperation + | None = ..., + ) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal["async_operation", b"async_operation"], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal["async_operation", b"async_operation"], + ) -> None: ... + +global___UpdateUserResponse = UpdateUserResponse + +class DeleteUserRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + USER_ID_FIELD_NUMBER: builtins.int + RESOURCE_VERSION_FIELD_NUMBER: builtins.int + ASYNC_OPERATION_ID_FIELD_NUMBER: builtins.int + user_id: builtins.str + """The id of the user to delete""" + resource_version: builtins.str + """The version of the user for which this delete is intended for + The latest version can be found in the GetUser operation response + """ + async_operation_id: builtins.str + """The id to use for this async operation - optional""" + def __init__( + self, + *, + user_id: builtins.str = ..., + resource_version: builtins.str = ..., + async_operation_id: builtins.str = ..., + ) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "async_operation_id", + b"async_operation_id", + "resource_version", + b"resource_version", + "user_id", + b"user_id", + ], + ) -> None: ... + +global___DeleteUserRequest = DeleteUserRequest + +class DeleteUserResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ASYNC_OPERATION_FIELD_NUMBER: builtins.int + @property + def async_operation( + self, + ) -> temporalio.api.cloud.operation.v1.message_pb2.AsyncOperation: + """The async operation""" + def __init__( + self, + *, + async_operation: temporalio.api.cloud.operation.v1.message_pb2.AsyncOperation + | None = ..., + ) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal["async_operation", b"async_operation"], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal["async_operation", b"async_operation"], + ) -> None: ... + +global___DeleteUserResponse = DeleteUserResponse + +class SetUserNamespaceAccessRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + NAMESPACE_FIELD_NUMBER: builtins.int + USER_ID_FIELD_NUMBER: builtins.int + ACCESS_FIELD_NUMBER: builtins.int + RESOURCE_VERSION_FIELD_NUMBER: builtins.int + ASYNC_OPERATION_ID_FIELD_NUMBER: builtins.int + namespace: builtins.str + """The namespace to set permissions for""" + user_id: builtins.str + """The id of the user to set permissions for""" + @property + def access(self) -> temporalio.api.cloud.identity.v1.message_pb2.NamespaceAccess: + """The namespace access to assign the user""" + resource_version: builtins.str + """The version of the user for which this update is intended for + The latest version can be found in the GetUser operation response + """ + async_operation_id: builtins.str + """The id to use for this async operation - optional""" + def __init__( + self, + *, + namespace: builtins.str = ..., + user_id: builtins.str = ..., + access: temporalio.api.cloud.identity.v1.message_pb2.NamespaceAccess + | None = ..., + resource_version: builtins.str = ..., + async_operation_id: builtins.str = ..., + ) -> None: ... + def HasField( + self, field_name: typing_extensions.Literal["access", b"access"] + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "access", + b"access", + "async_operation_id", + b"async_operation_id", + "namespace", + b"namespace", + "resource_version", + b"resource_version", + "user_id", + b"user_id", + ], + ) -> None: ... + +global___SetUserNamespaceAccessRequest = SetUserNamespaceAccessRequest + +class SetUserNamespaceAccessResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ASYNC_OPERATION_FIELD_NUMBER: builtins.int + @property + def async_operation( + self, + ) -> temporalio.api.cloud.operation.v1.message_pb2.AsyncOperation: + """The async operation""" + def __init__( + self, + *, + async_operation: temporalio.api.cloud.operation.v1.message_pb2.AsyncOperation + | None = ..., + ) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal["async_operation", b"async_operation"], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal["async_operation", b"async_operation"], + ) -> None: ... + +global___SetUserNamespaceAccessResponse = SetUserNamespaceAccessResponse + +class GetAsyncOperationRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ASYNC_OPERATION_ID_FIELD_NUMBER: builtins.int + async_operation_id: builtins.str + """The id of the async operation to get""" + def __init__( + self, + *, + async_operation_id: builtins.str = ..., + ) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "async_operation_id", b"async_operation_id" + ], + ) -> None: ... + +global___GetAsyncOperationRequest = GetAsyncOperationRequest + +class GetAsyncOperationResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ASYNC_OPERATION_FIELD_NUMBER: builtins.int + @property + def async_operation( + self, + ) -> temporalio.api.cloud.operation.v1.message_pb2.AsyncOperation: + """The async operation""" + def __init__( + self, + *, + async_operation: temporalio.api.cloud.operation.v1.message_pb2.AsyncOperation + | None = ..., + ) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal["async_operation", b"async_operation"], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal["async_operation", b"async_operation"], + ) -> None: ... + +global___GetAsyncOperationResponse = GetAsyncOperationResponse + +class CreateNamespaceRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + SPEC_FIELD_NUMBER: builtins.int + ASYNC_OPERATION_ID_FIELD_NUMBER: builtins.int + @property + def spec(self) -> temporalio.api.cloud.namespace.v1.message_pb2.NamespaceSpec: + """The namespace specification.""" + async_operation_id: builtins.str + """The id to use for this async operation. + Optional, if not provided a random id will be generated. + """ + def __init__( + self, + *, + spec: temporalio.api.cloud.namespace.v1.message_pb2.NamespaceSpec | None = ..., + async_operation_id: builtins.str = ..., + ) -> None: ... + def HasField( + self, field_name: typing_extensions.Literal["spec", b"spec"] + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "async_operation_id", b"async_operation_id", "spec", b"spec" + ], + ) -> None: ... + +global___CreateNamespaceRequest = CreateNamespaceRequest + +class CreateNamespaceResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + NAMESPACE_FIELD_NUMBER: builtins.int + ASYNC_OPERATION_FIELD_NUMBER: builtins.int + namespace: builtins.str + """The namespace that was created.""" + @property + def async_operation( + self, + ) -> temporalio.api.cloud.operation.v1.message_pb2.AsyncOperation: + """The async operation.""" + def __init__( + self, + *, + namespace: builtins.str = ..., + async_operation: temporalio.api.cloud.operation.v1.message_pb2.AsyncOperation + | None = ..., + ) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal["async_operation", b"async_operation"], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "async_operation", b"async_operation", "namespace", b"namespace" + ], + ) -> None: ... + +global___CreateNamespaceResponse = CreateNamespaceResponse + +class GetNamespacesRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + PAGE_SIZE_FIELD_NUMBER: builtins.int + PAGE_TOKEN_FIELD_NUMBER: builtins.int + NAME_FIELD_NUMBER: builtins.int + page_size: builtins.int + """The requested size of the page to retrieve. + Cannot exceed 1000. + Optional, defaults to 100. + """ + page_token: builtins.str + """The page token if this is continuing from another response. + Optional, defaults to empty. + """ + name: builtins.str + """Filter namespaces by their name. + Optional, defaults to empty. + """ + def __init__( + self, + *, + page_size: builtins.int = ..., + page_token: builtins.str = ..., + name: builtins.str = ..., + ) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "name", b"name", "page_size", b"page_size", "page_token", b"page_token" + ], + ) -> None: ... + +global___GetNamespacesRequest = GetNamespacesRequest + +class GetNamespacesResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + NAMESPACES_FIELD_NUMBER: builtins.int + NEXT_PAGE_TOKEN_FIELD_NUMBER: builtins.int + @property + def namespaces( + self, + ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ + temporalio.api.cloud.namespace.v1.message_pb2.Namespace + ]: + """The list of namespaces in ascending name order.""" + next_page_token: builtins.str + """The next page's token.""" + def __init__( + self, + *, + namespaces: collections.abc.Iterable[ + temporalio.api.cloud.namespace.v1.message_pb2.Namespace + ] + | None = ..., + next_page_token: builtins.str = ..., + ) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "namespaces", b"namespaces", "next_page_token", b"next_page_token" + ], + ) -> None: ... + +global___GetNamespacesResponse = GetNamespacesResponse + +class GetNamespaceRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + NAMESPACE_FIELD_NUMBER: builtins.int + namespace: builtins.str + """The namespace to get.""" + def __init__( + self, + *, + namespace: builtins.str = ..., + ) -> None: ... + def ClearField( + self, field_name: typing_extensions.Literal["namespace", b"namespace"] + ) -> None: ... + +global___GetNamespaceRequest = GetNamespaceRequest + +class GetNamespaceResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + NAMESPACE_FIELD_NUMBER: builtins.int + @property + def namespace(self) -> temporalio.api.cloud.namespace.v1.message_pb2.Namespace: + """The namespace.""" + def __init__( + self, + *, + namespace: temporalio.api.cloud.namespace.v1.message_pb2.Namespace | None = ..., + ) -> None: ... + def HasField( + self, field_name: typing_extensions.Literal["namespace", b"namespace"] + ) -> builtins.bool: ... + def ClearField( + self, field_name: typing_extensions.Literal["namespace", b"namespace"] + ) -> None: ... + +global___GetNamespaceResponse = GetNamespaceResponse + +class UpdateNamespaceRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + NAMESPACE_FIELD_NUMBER: builtins.int + SPEC_FIELD_NUMBER: builtins.int + RESOURCE_VERSION_FIELD_NUMBER: builtins.int + ASYNC_OPERATION_ID_FIELD_NUMBER: builtins.int + namespace: builtins.str + """The namespace to update.""" + @property + def spec(self) -> temporalio.api.cloud.namespace.v1.message_pb2.NamespaceSpec: + """The new namespace specification.""" + resource_version: builtins.str + """The version of the namespace for which this update is intended for. + The latest version can be found in the namespace status. + """ + async_operation_id: builtins.str + """The id to use for this async operation. + Optional, if not provided a random id will be generated. + """ + def __init__( + self, + *, + namespace: builtins.str = ..., + spec: temporalio.api.cloud.namespace.v1.message_pb2.NamespaceSpec | None = ..., + resource_version: builtins.str = ..., + async_operation_id: builtins.str = ..., + ) -> None: ... + def HasField( + self, field_name: typing_extensions.Literal["spec", b"spec"] + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "async_operation_id", + b"async_operation_id", + "namespace", + b"namespace", + "resource_version", + b"resource_version", + "spec", + b"spec", + ], + ) -> None: ... + +global___UpdateNamespaceRequest = UpdateNamespaceRequest + +class UpdateNamespaceResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ASYNC_OPERATION_FIELD_NUMBER: builtins.int + @property + def async_operation( + self, + ) -> temporalio.api.cloud.operation.v1.message_pb2.AsyncOperation: + """The async operation.""" + def __init__( + self, + *, + async_operation: temporalio.api.cloud.operation.v1.message_pb2.AsyncOperation + | None = ..., + ) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal["async_operation", b"async_operation"], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal["async_operation", b"async_operation"], + ) -> None: ... + +global___UpdateNamespaceResponse = UpdateNamespaceResponse + +class RenameCustomSearchAttributeRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + NAMESPACE_FIELD_NUMBER: builtins.int + EXISTING_CUSTOM_SEARCH_ATTRIBUTE_NAME_FIELD_NUMBER: builtins.int + NEW_CUSTOM_SEARCH_ATTRIBUTE_NAME_FIELD_NUMBER: builtins.int + RESOURCE_VERSION_FIELD_NUMBER: builtins.int + ASYNC_OPERATION_ID_FIELD_NUMBER: builtins.int + namespace: builtins.str + """The namespace to rename the custom search attribute for.""" + existing_custom_search_attribute_name: builtins.str + """The existing name of the custom search attribute to be renamed.""" + new_custom_search_attribute_name: builtins.str + """The new name of the custom search attribute.""" + resource_version: builtins.str + """The version of the namespace for which this update is intended for. + The latest version can be found in the namespace status. + """ + async_operation_id: builtins.str + """The id to use for this async operation. + Optional, if not provided a random id will be generated. + """ + def __init__( + self, + *, + namespace: builtins.str = ..., + existing_custom_search_attribute_name: builtins.str = ..., + new_custom_search_attribute_name: builtins.str = ..., + resource_version: builtins.str = ..., + async_operation_id: builtins.str = ..., + ) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "async_operation_id", + b"async_operation_id", + "existing_custom_search_attribute_name", + b"existing_custom_search_attribute_name", + "namespace", + b"namespace", + "new_custom_search_attribute_name", + b"new_custom_search_attribute_name", + "resource_version", + b"resource_version", + ], + ) -> None: ... + +global___RenameCustomSearchAttributeRequest = RenameCustomSearchAttributeRequest + +class RenameCustomSearchAttributeResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ASYNC_OPERATION_FIELD_NUMBER: builtins.int + @property + def async_operation( + self, + ) -> temporalio.api.cloud.operation.v1.message_pb2.AsyncOperation: + """The async operation.""" + def __init__( + self, + *, + async_operation: temporalio.api.cloud.operation.v1.message_pb2.AsyncOperation + | None = ..., + ) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal["async_operation", b"async_operation"], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal["async_operation", b"async_operation"], + ) -> None: ... + +global___RenameCustomSearchAttributeResponse = RenameCustomSearchAttributeResponse + +class DeleteNamespaceRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + NAMESPACE_FIELD_NUMBER: builtins.int + RESOURCE_VERSION_FIELD_NUMBER: builtins.int + ASYNC_OPERATION_ID_FIELD_NUMBER: builtins.int + namespace: builtins.str + """The namespace to delete.""" + resource_version: builtins.str + """The version of the namespace for which this delete is intended for. + The latest version can be found in the namespace status. + """ + async_operation_id: builtins.str + """The id to use for this async operation. + Optional, if not provided a random id will be generated. + """ + def __init__( + self, + *, + namespace: builtins.str = ..., + resource_version: builtins.str = ..., + async_operation_id: builtins.str = ..., + ) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "async_operation_id", + b"async_operation_id", + "namespace", + b"namespace", + "resource_version", + b"resource_version", + ], + ) -> None: ... + +global___DeleteNamespaceRequest = DeleteNamespaceRequest + +class DeleteNamespaceResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ASYNC_OPERATION_FIELD_NUMBER: builtins.int + @property + def async_operation( + self, + ) -> temporalio.api.cloud.operation.v1.message_pb2.AsyncOperation: + """The async operation.""" + def __init__( + self, + *, + async_operation: temporalio.api.cloud.operation.v1.message_pb2.AsyncOperation + | None = ..., + ) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal["async_operation", b"async_operation"], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal["async_operation", b"async_operation"], + ) -> None: ... + +global___DeleteNamespaceResponse = DeleteNamespaceResponse + +class FailoverNamespaceRegionRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + NAMESPACE_FIELD_NUMBER: builtins.int + REGION_FIELD_NUMBER: builtins.int + ASYNC_OPERATION_ID_FIELD_NUMBER: builtins.int + namespace: builtins.str + """The namespace to failover.""" + region: builtins.str + """The id of the region to failover to. + Must be a region that the namespace is currently available in. + """ + async_operation_id: builtins.str + """The id to use for this async operation - optional.""" + def __init__( + self, + *, + namespace: builtins.str = ..., + region: builtins.str = ..., + async_operation_id: builtins.str = ..., + ) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "async_operation_id", + b"async_operation_id", + "namespace", + b"namespace", + "region", + b"region", + ], + ) -> None: ... + +global___FailoverNamespaceRegionRequest = FailoverNamespaceRegionRequest + +class FailoverNamespaceRegionResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ASYNC_OPERATION_FIELD_NUMBER: builtins.int + @property + def async_operation( + self, + ) -> temporalio.api.cloud.operation.v1.message_pb2.AsyncOperation: + """The async operation.""" + def __init__( + self, + *, + async_operation: temporalio.api.cloud.operation.v1.message_pb2.AsyncOperation + | None = ..., + ) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal["async_operation", b"async_operation"], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal["async_operation", b"async_operation"], + ) -> None: ... + +global___FailoverNamespaceRegionResponse = FailoverNamespaceRegionResponse + +class AddNamespaceRegionRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + NAMESPACE_FIELD_NUMBER: builtins.int + REGION_FIELD_NUMBER: builtins.int + RESOURCE_VERSION_FIELD_NUMBER: builtins.int + ASYNC_OPERATION_ID_FIELD_NUMBER: builtins.int + namespace: builtins.str + """The namespace to add the region to.""" + region: builtins.str + """The id of the standby region to add to the namespace. + The GetRegions API can be used to get the list of valid region ids. + Example: "aws-us-west-2". + """ + resource_version: builtins.str + """The version of the namespace for which this add region operation is intended for. + The latest version can be found in the GetNamespace operation response. + """ + async_operation_id: builtins.str + """The id to use for this async operation - optional.""" + def __init__( + self, + *, + namespace: builtins.str = ..., + region: builtins.str = ..., + resource_version: builtins.str = ..., + async_operation_id: builtins.str = ..., + ) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "async_operation_id", + b"async_operation_id", + "namespace", + b"namespace", + "region", + b"region", + "resource_version", + b"resource_version", + ], + ) -> None: ... + +global___AddNamespaceRegionRequest = AddNamespaceRegionRequest + +class AddNamespaceRegionResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ASYNC_OPERATION_FIELD_NUMBER: builtins.int + @property + def async_operation( + self, + ) -> temporalio.api.cloud.operation.v1.message_pb2.AsyncOperation: + """The async operation.""" + def __init__( + self, + *, + async_operation: temporalio.api.cloud.operation.v1.message_pb2.AsyncOperation + | None = ..., + ) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal["async_operation", b"async_operation"], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal["async_operation", b"async_operation"], + ) -> None: ... + +global___AddNamespaceRegionResponse = AddNamespaceRegionResponse + +class GetRegionsRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + def __init__( + self, + ) -> None: ... + +global___GetRegionsRequest = GetRegionsRequest + +class GetRegionsResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + REGIONS_FIELD_NUMBER: builtins.int + @property + def regions( + self, + ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ + temporalio.api.cloud.region.v1.message_pb2.Region + ]: + """The temporal cloud regions.""" + def __init__( + self, + *, + regions: collections.abc.Iterable[ + temporalio.api.cloud.region.v1.message_pb2.Region + ] + | None = ..., + ) -> None: ... + def ClearField( + self, field_name: typing_extensions.Literal["regions", b"regions"] + ) -> None: ... + +global___GetRegionsResponse = GetRegionsResponse + +class GetRegionRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + REGION_FIELD_NUMBER: builtins.int + region: builtins.str + """The id of the region to get.""" + def __init__( + self, + *, + region: builtins.str = ..., + ) -> None: ... + def ClearField( + self, field_name: typing_extensions.Literal["region", b"region"] + ) -> None: ... + +global___GetRegionRequest = GetRegionRequest + +class GetRegionResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + REGION_FIELD_NUMBER: builtins.int + @property + def region(self) -> temporalio.api.cloud.region.v1.message_pb2.Region: + """The temporal cloud region.""" + def __init__( + self, + *, + region: temporalio.api.cloud.region.v1.message_pb2.Region | None = ..., + ) -> None: ... + def HasField( + self, field_name: typing_extensions.Literal["region", b"region"] + ) -> builtins.bool: ... + def ClearField( + self, field_name: typing_extensions.Literal["region", b"region"] + ) -> None: ... + +global___GetRegionResponse = GetRegionResponse + +class GetApiKeysRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + PAGE_SIZE_FIELD_NUMBER: builtins.int + PAGE_TOKEN_FIELD_NUMBER: builtins.int + OWNER_ID_FIELD_NUMBER: builtins.int + OWNER_TYPE_FIELD_NUMBER: builtins.int + page_size: builtins.int + """The requested size of the page to retrieve - optional. + Cannot exceed 1000. Defaults to 100. + """ + page_token: builtins.str + """The page token if this is continuing from another response - optional.""" + owner_id: builtins.str + """Filter api keys by owner id - optional.""" + owner_type: builtins.str + """Filter api keys by owner type - optional. + Possible values: user, service-account + """ + def __init__( + self, + *, + page_size: builtins.int = ..., + page_token: builtins.str = ..., + owner_id: builtins.str = ..., + owner_type: builtins.str = ..., + ) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "owner_id", + b"owner_id", + "owner_type", + b"owner_type", + "page_size", + b"page_size", + "page_token", + b"page_token", + ], + ) -> None: ... + +global___GetApiKeysRequest = GetApiKeysRequest + +class GetApiKeysResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + API_KEYS_FIELD_NUMBER: builtins.int + NEXT_PAGE_TOKEN_FIELD_NUMBER: builtins.int + @property + def api_keys( + self, + ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ + temporalio.api.cloud.identity.v1.message_pb2.ApiKey + ]: + """The list of api keys in ascending id order.""" + next_page_token: builtins.str + """The next page's token.""" + def __init__( + self, + *, + api_keys: collections.abc.Iterable[ + temporalio.api.cloud.identity.v1.message_pb2.ApiKey + ] + | None = ..., + next_page_token: builtins.str = ..., + ) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "api_keys", b"api_keys", "next_page_token", b"next_page_token" + ], + ) -> None: ... + +global___GetApiKeysResponse = GetApiKeysResponse + +class GetApiKeyRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_ID_FIELD_NUMBER: builtins.int + key_id: builtins.str + """The id of the api key to get.""" + def __init__( + self, + *, + key_id: builtins.str = ..., + ) -> None: ... + def ClearField( + self, field_name: typing_extensions.Literal["key_id", b"key_id"] + ) -> None: ... + +global___GetApiKeyRequest = GetApiKeyRequest + +class GetApiKeyResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + API_KEY_FIELD_NUMBER: builtins.int + @property + def api_key(self) -> temporalio.api.cloud.identity.v1.message_pb2.ApiKey: + """The api key.""" + def __init__( + self, + *, + api_key: temporalio.api.cloud.identity.v1.message_pb2.ApiKey | None = ..., + ) -> None: ... + def HasField( + self, field_name: typing_extensions.Literal["api_key", b"api_key"] + ) -> builtins.bool: ... + def ClearField( + self, field_name: typing_extensions.Literal["api_key", b"api_key"] + ) -> None: ... + +global___GetApiKeyResponse = GetApiKeyResponse + +class CreateApiKeyRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + SPEC_FIELD_NUMBER: builtins.int + ASYNC_OPERATION_ID_FIELD_NUMBER: builtins.int + @property + def spec(self) -> temporalio.api.cloud.identity.v1.message_pb2.ApiKeySpec: + """The spec for the api key to create. + Create api key only supports service-account owner type for now. + """ + async_operation_id: builtins.str + """The id to use for this async operation - optional.""" + def __init__( + self, + *, + spec: temporalio.api.cloud.identity.v1.message_pb2.ApiKeySpec | None = ..., + async_operation_id: builtins.str = ..., + ) -> None: ... + def HasField( + self, field_name: typing_extensions.Literal["spec", b"spec"] + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "async_operation_id", b"async_operation_id", "spec", b"spec" + ], + ) -> None: ... + +global___CreateApiKeyRequest = CreateApiKeyRequest + +class CreateApiKeyResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_ID_FIELD_NUMBER: builtins.int + TOKEN_FIELD_NUMBER: builtins.int + ASYNC_OPERATION_FIELD_NUMBER: builtins.int + key_id: builtins.str + """The id of the api key created.""" + token: builtins.str + """The token of the api key created. + This is a secret and should be stored securely. + It will not be retrievable after this response. + """ + @property + def async_operation( + self, + ) -> temporalio.api.cloud.operation.v1.message_pb2.AsyncOperation: + """The async operation.""" + def __init__( + self, + *, + key_id: builtins.str = ..., + token: builtins.str = ..., + async_operation: temporalio.api.cloud.operation.v1.message_pb2.AsyncOperation + | None = ..., + ) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal["async_operation", b"async_operation"], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "async_operation", + b"async_operation", + "key_id", + b"key_id", + "token", + b"token", + ], + ) -> None: ... + +global___CreateApiKeyResponse = CreateApiKeyResponse + +class UpdateApiKeyRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_ID_FIELD_NUMBER: builtins.int + SPEC_FIELD_NUMBER: builtins.int + RESOURCE_VERSION_FIELD_NUMBER: builtins.int + ASYNC_OPERATION_ID_FIELD_NUMBER: builtins.int + key_id: builtins.str + """The id of the api key to update.""" + @property + def spec(self) -> temporalio.api.cloud.identity.v1.message_pb2.ApiKeySpec: + """The new api key specification.""" + resource_version: builtins.str + """The version of the api key for which this update is intended for. + The latest version can be found in the GetApiKey operation response. + """ + async_operation_id: builtins.str + """The id to use for this async operation - optional.""" + def __init__( + self, + *, + key_id: builtins.str = ..., + spec: temporalio.api.cloud.identity.v1.message_pb2.ApiKeySpec | None = ..., + resource_version: builtins.str = ..., + async_operation_id: builtins.str = ..., + ) -> None: ... + def HasField( + self, field_name: typing_extensions.Literal["spec", b"spec"] + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "async_operation_id", + b"async_operation_id", + "key_id", + b"key_id", + "resource_version", + b"resource_version", + "spec", + b"spec", + ], + ) -> None: ... + +global___UpdateApiKeyRequest = UpdateApiKeyRequest + +class UpdateApiKeyResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ASYNC_OPERATION_FIELD_NUMBER: builtins.int + @property + def async_operation( + self, + ) -> temporalio.api.cloud.operation.v1.message_pb2.AsyncOperation: + """The async operation.""" + def __init__( + self, + *, + async_operation: temporalio.api.cloud.operation.v1.message_pb2.AsyncOperation + | None = ..., + ) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal["async_operation", b"async_operation"], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal["async_operation", b"async_operation"], + ) -> None: ... + +global___UpdateApiKeyResponse = UpdateApiKeyResponse + +class DeleteApiKeyRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_ID_FIELD_NUMBER: builtins.int + RESOURCE_VERSION_FIELD_NUMBER: builtins.int + ASYNC_OPERATION_ID_FIELD_NUMBER: builtins.int + key_id: builtins.str + """The id of the api key to delete.""" + resource_version: builtins.str + """The version of the api key for which this delete is intended for. + The latest version can be found in the GetApiKey operation response. + """ + async_operation_id: builtins.str + """The id to use for this async operation - optional.""" + def __init__( + self, + *, + key_id: builtins.str = ..., + resource_version: builtins.str = ..., + async_operation_id: builtins.str = ..., + ) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "async_operation_id", + b"async_operation_id", + "key_id", + b"key_id", + "resource_version", + b"resource_version", + ], + ) -> None: ... + +global___DeleteApiKeyRequest = DeleteApiKeyRequest + +class DeleteApiKeyResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ASYNC_OPERATION_FIELD_NUMBER: builtins.int + @property + def async_operation( + self, + ) -> temporalio.api.cloud.operation.v1.message_pb2.AsyncOperation: + """The async operation.""" + def __init__( + self, + *, + async_operation: temporalio.api.cloud.operation.v1.message_pb2.AsyncOperation + | None = ..., + ) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal["async_operation", b"async_operation"], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal["async_operation", b"async_operation"], + ) -> None: ... + +global___DeleteApiKeyResponse = DeleteApiKeyResponse + +class GetUserGroupsRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + PAGE_SIZE_FIELD_NUMBER: builtins.int + PAGE_TOKEN_FIELD_NUMBER: builtins.int + NAMESPACE_FIELD_NUMBER: builtins.int + GROUP_NAME_FIELD_NUMBER: builtins.int + page_size: builtins.int + """The requested size of the page to retrieve - optional. + Cannot exceed 1000. Defaults to 100. + """ + page_token: builtins.str + """The page token if this is continuing from another response - optional.""" + namespace: builtins.str + """Filter groups by the namespace they have access to - optional.""" + group_name: builtins.str + """Filter groups by their name - optional.""" + def __init__( + self, + *, + page_size: builtins.int = ..., + page_token: builtins.str = ..., + namespace: builtins.str = ..., + group_name: builtins.str = ..., + ) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "group_name", + b"group_name", + "namespace", + b"namespace", + "page_size", + b"page_size", + "page_token", + b"page_token", + ], + ) -> None: ... + +global___GetUserGroupsRequest = GetUserGroupsRequest + +class GetUserGroupsResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + GROUPS_FIELD_NUMBER: builtins.int + NEXT_PAGE_TOKEN_FIELD_NUMBER: builtins.int + @property + def groups( + self, + ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ + temporalio.api.cloud.identity.v1.message_pb2.UserGroup + ]: + """The list of groups in ascending name order.""" + next_page_token: builtins.str + """The next page's token.""" + def __init__( + self, + *, + groups: collections.abc.Iterable[ + temporalio.api.cloud.identity.v1.message_pb2.UserGroup + ] + | None = ..., + next_page_token: builtins.str = ..., + ) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "groups", b"groups", "next_page_token", b"next_page_token" + ], + ) -> None: ... + +global___GetUserGroupsResponse = GetUserGroupsResponse + +class GetUserGroupRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + GROUP_ID_FIELD_NUMBER: builtins.int + group_id: builtins.str + """The id of the group to get.""" + def __init__( + self, + *, + group_id: builtins.str = ..., + ) -> None: ... + def ClearField( + self, field_name: typing_extensions.Literal["group_id", b"group_id"] + ) -> None: ... + +global___GetUserGroupRequest = GetUserGroupRequest + +class GetUserGroupResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + GROUP_FIELD_NUMBER: builtins.int + @property + def group(self) -> temporalio.api.cloud.identity.v1.message_pb2.UserGroup: + """The group.""" + def __init__( + self, + *, + group: temporalio.api.cloud.identity.v1.message_pb2.UserGroup | None = ..., + ) -> None: ... + def HasField( + self, field_name: typing_extensions.Literal["group", b"group"] + ) -> builtins.bool: ... + def ClearField( + self, field_name: typing_extensions.Literal["group", b"group"] + ) -> None: ... + +global___GetUserGroupResponse = GetUserGroupResponse + +class CreateUserGroupRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + SPEC_FIELD_NUMBER: builtins.int + ASYNC_OPERATION_ID_FIELD_NUMBER: builtins.int + @property + def spec(self) -> temporalio.api.cloud.identity.v1.message_pb2.UserGroupSpec: + """The spec for the group to create.""" + async_operation_id: builtins.str + """The id to use for this async operation. + Optional, if not provided a random id will be generated. + """ + def __init__( + self, + *, + spec: temporalio.api.cloud.identity.v1.message_pb2.UserGroupSpec | None = ..., + async_operation_id: builtins.str = ..., + ) -> None: ... + def HasField( + self, field_name: typing_extensions.Literal["spec", b"spec"] + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "async_operation_id", b"async_operation_id", "spec", b"spec" + ], + ) -> None: ... + +global___CreateUserGroupRequest = CreateUserGroupRequest + +class CreateUserGroupResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + GROUP_ID_FIELD_NUMBER: builtins.int + ASYNC_OPERATION_FIELD_NUMBER: builtins.int + group_id: builtins.str + """The id of the group that was created.""" + @property + def async_operation( + self, + ) -> temporalio.api.cloud.operation.v1.message_pb2.AsyncOperation: + """The async operation.""" + def __init__( + self, + *, + group_id: builtins.str = ..., + async_operation: temporalio.api.cloud.operation.v1.message_pb2.AsyncOperation + | None = ..., + ) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal["async_operation", b"async_operation"], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "async_operation", b"async_operation", "group_id", b"group_id" + ], + ) -> None: ... + +global___CreateUserGroupResponse = CreateUserGroupResponse + +class UpdateUserGroupRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + GROUP_ID_FIELD_NUMBER: builtins.int + SPEC_FIELD_NUMBER: builtins.int + RESOURCE_VERSION_FIELD_NUMBER: builtins.int + ASYNC_OPERATION_ID_FIELD_NUMBER: builtins.int + group_id: builtins.str + """The id of the group to update.""" + @property + def spec(self) -> temporalio.api.cloud.identity.v1.message_pb2.UserGroupSpec: + """The new group specification.""" + resource_version: builtins.str + """The version of the group for which this update is intended for. + The latest version can be found in the GetGroup operation response. + """ + async_operation_id: builtins.str + """The id to use for this async operation. + Optional, if not provided a random id will be generated. + """ + def __init__( + self, + *, + group_id: builtins.str = ..., + spec: temporalio.api.cloud.identity.v1.message_pb2.UserGroupSpec | None = ..., + resource_version: builtins.str = ..., + async_operation_id: builtins.str = ..., + ) -> None: ... + def HasField( + self, field_name: typing_extensions.Literal["spec", b"spec"] + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "async_operation_id", + b"async_operation_id", + "group_id", + b"group_id", + "resource_version", + b"resource_version", + "spec", + b"spec", + ], + ) -> None: ... + +global___UpdateUserGroupRequest = UpdateUserGroupRequest + +class UpdateUserGroupResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ASYNC_OPERATION_FIELD_NUMBER: builtins.int + @property + def async_operation( + self, + ) -> temporalio.api.cloud.operation.v1.message_pb2.AsyncOperation: + """The async operation.""" + def __init__( + self, + *, + async_operation: temporalio.api.cloud.operation.v1.message_pb2.AsyncOperation + | None = ..., + ) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal["async_operation", b"async_operation"], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal["async_operation", b"async_operation"], + ) -> None: ... + +global___UpdateUserGroupResponse = UpdateUserGroupResponse + +class DeleteUserGroupRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + GROUP_ID_FIELD_NUMBER: builtins.int + RESOURCE_VERSION_FIELD_NUMBER: builtins.int + ASYNC_OPERATION_ID_FIELD_NUMBER: builtins.int + group_id: builtins.str + """The id of the group to delete.""" + resource_version: builtins.str + """The version of the group for which this delete is intended for. + The latest version can be found in the GetGroup operation response. + """ + async_operation_id: builtins.str + """The id to use for this async operation. + Optional, if not provided a random id will be generated. + """ + def __init__( + self, + *, + group_id: builtins.str = ..., + resource_version: builtins.str = ..., + async_operation_id: builtins.str = ..., + ) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "async_operation_id", + b"async_operation_id", + "group_id", + b"group_id", + "resource_version", + b"resource_version", + ], + ) -> None: ... + +global___DeleteUserGroupRequest = DeleteUserGroupRequest + +class DeleteUserGroupResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ASYNC_OPERATION_FIELD_NUMBER: builtins.int + @property + def async_operation( + self, + ) -> temporalio.api.cloud.operation.v1.message_pb2.AsyncOperation: + """The async operation.""" + def __init__( + self, + *, + async_operation: temporalio.api.cloud.operation.v1.message_pb2.AsyncOperation + | None = ..., + ) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal["async_operation", b"async_operation"], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal["async_operation", b"async_operation"], + ) -> None: ... + +global___DeleteUserGroupResponse = DeleteUserGroupResponse + +class SetUserGroupNamespaceAccessRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + NAMESPACE_FIELD_NUMBER: builtins.int + GROUP_ID_FIELD_NUMBER: builtins.int + ACCESS_FIELD_NUMBER: builtins.int + RESOURCE_VERSION_FIELD_NUMBER: builtins.int + ASYNC_OPERATION_ID_FIELD_NUMBER: builtins.int + namespace: builtins.str + """The namespace to set permissions for.""" + group_id: builtins.str + """The id of the group to set permissions for.""" + @property + def access(self) -> temporalio.api.cloud.identity.v1.message_pb2.NamespaceAccess: + """The namespace access to assign the group. If left empty, the group will be removed from the namespace access.""" + resource_version: builtins.str + """The version of the group for which this update is intended for. + The latest version can be found in the GetGroup operation response. + """ + async_operation_id: builtins.str + """The id to use for this async operation - optional.""" + def __init__( + self, + *, + namespace: builtins.str = ..., + group_id: builtins.str = ..., + access: temporalio.api.cloud.identity.v1.message_pb2.NamespaceAccess + | None = ..., + resource_version: builtins.str = ..., + async_operation_id: builtins.str = ..., + ) -> None: ... + def HasField( + self, field_name: typing_extensions.Literal["access", b"access"] + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "access", + b"access", + "async_operation_id", + b"async_operation_id", + "group_id", + b"group_id", + "namespace", + b"namespace", + "resource_version", + b"resource_version", + ], + ) -> None: ... + +global___SetUserGroupNamespaceAccessRequest = SetUserGroupNamespaceAccessRequest + +class SetUserGroupNamespaceAccessResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ASYNC_OPERATION_FIELD_NUMBER: builtins.int + @property + def async_operation( + self, + ) -> temporalio.api.cloud.operation.v1.message_pb2.AsyncOperation: + """The async operation.""" + def __init__( + self, + *, + async_operation: temporalio.api.cloud.operation.v1.message_pb2.AsyncOperation + | None = ..., + ) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal["async_operation", b"async_operation"], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal["async_operation", b"async_operation"], + ) -> None: ... + +global___SetUserGroupNamespaceAccessResponse = SetUserGroupNamespaceAccessResponse + +class CreateServiceAccountRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + SPEC_FIELD_NUMBER: builtins.int + ASYNC_OPERATION_ID_FIELD_NUMBER: builtins.int + @property + def spec(self) -> temporalio.api.cloud.identity.v1.message_pb2.ServiceAccountSpec: + """The spec of the service account to create.""" + async_operation_id: builtins.str + """The ID to use for this async operation - optional.""" + def __init__( + self, + *, + spec: temporalio.api.cloud.identity.v1.message_pb2.ServiceAccountSpec + | None = ..., + async_operation_id: builtins.str = ..., + ) -> None: ... + def HasField( + self, field_name: typing_extensions.Literal["spec", b"spec"] + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "async_operation_id", b"async_operation_id", "spec", b"spec" + ], + ) -> None: ... + +global___CreateServiceAccountRequest = CreateServiceAccountRequest + +class CreateServiceAccountResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + SERVICE_ACCOUNT_ID_FIELD_NUMBER: builtins.int + ASYNC_OPERATION_FIELD_NUMBER: builtins.int + service_account_id: builtins.str + """The ID of the created service account.""" + @property + def async_operation( + self, + ) -> temporalio.api.cloud.operation.v1.message_pb2.AsyncOperation: + """The async operation.""" + def __init__( + self, + *, + service_account_id: builtins.str = ..., + async_operation: temporalio.api.cloud.operation.v1.message_pb2.AsyncOperation + | None = ..., + ) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal["async_operation", b"async_operation"], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "async_operation", + b"async_operation", + "service_account_id", + b"service_account_id", + ], + ) -> None: ... + +global___CreateServiceAccountResponse = CreateServiceAccountResponse + +class GetServiceAccountRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + SERVICE_ACCOUNT_ID_FIELD_NUMBER: builtins.int + service_account_id: builtins.str + """ID of the service account to retrieve.""" + def __init__( + self, + *, + service_account_id: builtins.str = ..., + ) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "service_account_id", b"service_account_id" + ], + ) -> None: ... + +global___GetServiceAccountRequest = GetServiceAccountRequest + +class GetServiceAccountResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + SERVICE_ACCOUNT_FIELD_NUMBER: builtins.int + @property + def service_account( + self, + ) -> temporalio.api.cloud.identity.v1.message_pb2.ServiceAccount: + """The service account retrieved.""" + def __init__( + self, + *, + service_account: temporalio.api.cloud.identity.v1.message_pb2.ServiceAccount + | None = ..., + ) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal["service_account", b"service_account"], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal["service_account", b"service_account"], + ) -> None: ... + +global___GetServiceAccountResponse = GetServiceAccountResponse + +class GetServiceAccountsRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + PAGE_SIZE_FIELD_NUMBER: builtins.int + PAGE_TOKEN_FIELD_NUMBER: builtins.int + page_size: builtins.int + """The requested size of the page to retrieve - optional. + Cannot exceed 1000. Defaults to 100. + """ + page_token: builtins.str + """The page token if this is continuing from another response - optional.""" + def __init__( + self, + *, + page_size: builtins.int = ..., + page_token: builtins.str = ..., + ) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "page_size", b"page_size", "page_token", b"page_token" + ], + ) -> None: ... + +global___GetServiceAccountsRequest = GetServiceAccountsRequest + +class GetServiceAccountsResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + SERVICE_ACCOUNT_FIELD_NUMBER: builtins.int + NEXT_PAGE_TOKEN_FIELD_NUMBER: builtins.int + @property + def service_account( + self, + ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ + temporalio.api.cloud.identity.v1.message_pb2.ServiceAccount + ]: + """The list of service accounts in ascending ID order.""" + next_page_token: builtins.str + """The next page token, set if there is another page.""" + def __init__( + self, + *, + service_account: collections.abc.Iterable[ + temporalio.api.cloud.identity.v1.message_pb2.ServiceAccount + ] + | None = ..., + next_page_token: builtins.str = ..., + ) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "next_page_token", b"next_page_token", "service_account", b"service_account" + ], + ) -> None: ... + +global___GetServiceAccountsResponse = GetServiceAccountsResponse + +class UpdateServiceAccountRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + SERVICE_ACCOUNT_ID_FIELD_NUMBER: builtins.int + SPEC_FIELD_NUMBER: builtins.int + RESOURCE_VERSION_FIELD_NUMBER: builtins.int + ASYNC_OPERATION_ID_FIELD_NUMBER: builtins.int + service_account_id: builtins.str + """The ID of the service account to update.""" + @property + def spec(self) -> temporalio.api.cloud.identity.v1.message_pb2.ServiceAccountSpec: + """The new service account specification.""" + resource_version: builtins.str + """The version of the service account for which this update is intended for. + The latest version can be found in the GetServiceAccount response. + """ + async_operation_id: builtins.str + """The ID to use for this async operation - optional.""" + def __init__( + self, + *, + service_account_id: builtins.str = ..., + spec: temporalio.api.cloud.identity.v1.message_pb2.ServiceAccountSpec + | None = ..., + resource_version: builtins.str = ..., + async_operation_id: builtins.str = ..., + ) -> None: ... + def HasField( + self, field_name: typing_extensions.Literal["spec", b"spec"] + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "async_operation_id", + b"async_operation_id", + "resource_version", + b"resource_version", + "service_account_id", + b"service_account_id", + "spec", + b"spec", + ], + ) -> None: ... + +global___UpdateServiceAccountRequest = UpdateServiceAccountRequest + +class UpdateServiceAccountResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ASYNC_OPERATION_FIELD_NUMBER: builtins.int + @property + def async_operation( + self, + ) -> temporalio.api.cloud.operation.v1.message_pb2.AsyncOperation: + """The async operation.""" + def __init__( + self, + *, + async_operation: temporalio.api.cloud.operation.v1.message_pb2.AsyncOperation + | None = ..., + ) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal["async_operation", b"async_operation"], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal["async_operation", b"async_operation"], + ) -> None: ... + +global___UpdateServiceAccountResponse = UpdateServiceAccountResponse + +class DeleteServiceAccountRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + SERVICE_ACCOUNT_ID_FIELD_NUMBER: builtins.int + RESOURCE_VERSION_FIELD_NUMBER: builtins.int + ASYNC_OPERATION_ID_FIELD_NUMBER: builtins.int + service_account_id: builtins.str + """The ID of the service account to delete;""" + resource_version: builtins.str + """The version of the service account for which this update is intended for. + The latest version can be found in the GetServiceAccount response. + """ + async_operation_id: builtins.str + """The ID to use for this async operation - optional.""" + def __init__( + self, + *, + service_account_id: builtins.str = ..., + resource_version: builtins.str = ..., + async_operation_id: builtins.str = ..., + ) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "async_operation_id", + b"async_operation_id", + "resource_version", + b"resource_version", + "service_account_id", + b"service_account_id", + ], + ) -> None: ... + +global___DeleteServiceAccountRequest = DeleteServiceAccountRequest + +class DeleteServiceAccountResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ASYNC_OPERATION_FIELD_NUMBER: builtins.int + @property + def async_operation( + self, + ) -> temporalio.api.cloud.operation.v1.message_pb2.AsyncOperation: + """The async operation.""" + def __init__( + self, + *, + async_operation: temporalio.api.cloud.operation.v1.message_pb2.AsyncOperation + | None = ..., + ) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal["async_operation", b"async_operation"], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal["async_operation", b"async_operation"], + ) -> None: ... + +global___DeleteServiceAccountResponse = DeleteServiceAccountResponse diff --git a/temporalio/api/cloud/cloudservice/v1/request_response_pb2_grpc.py b/temporalio/api/cloud/cloudservice/v1/request_response_pb2_grpc.py new file mode 100644 index 00000000..bf947056 --- /dev/null +++ b/temporalio/api/cloud/cloudservice/v1/request_response_pb2_grpc.py @@ -0,0 +1,4 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" + +import grpc diff --git a/temporalio/api/cloud/cloudservice/v1/request_response_pb2_grpc.pyi b/temporalio/api/cloud/cloudservice/v1/request_response_pb2_grpc.pyi new file mode 100644 index 00000000..f3a5a087 --- /dev/null +++ b/temporalio/api/cloud/cloudservice/v1/request_response_pb2_grpc.pyi @@ -0,0 +1,4 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" diff --git a/temporalio/api/cloud/cloudservice/v1/service_pb2.py b/temporalio/api/cloud/cloudservice/v1/service_pb2.py new file mode 100644 index 00000000..7ecafb78 --- /dev/null +++ b/temporalio/api/cloud/cloudservice/v1/service_pb2.py @@ -0,0 +1,194 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: temporal/api/cloud/cloudservice/v1/service.proto +"""Generated protocol buffer code.""" + +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database + +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 + +from temporalio.api.cloud.cloudservice.v1 import ( + request_response_pb2 as temporal_dot_api_dot_cloud_dot_cloudservice_dot_v1_dot_request__response__pb2, +) + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( + b'\n0temporal/api/cloud/cloudservice/v1/service.proto\x12"temporal.api.cloud.cloudservice.v1\x1a\x39temporal/api/cloud/cloudservice/v1/request_response.proto\x1a\x1cgoogle/api/annotations.proto2\xce.\n\x0c\x43loudService\x12\x8b\x01\n\x08GetUsers\x12\x33.temporal.api.cloud.cloudservice.v1.GetUsersRequest\x1a\x34.temporal.api.cloud.cloudservice.v1.GetUsersResponse"\x14\x82\xd3\xe4\x93\x02\x0e\x12\x0c/cloud/users\x12\x92\x01\n\x07GetUser\x12\x32.temporal.api.cloud.cloudservice.v1.GetUserRequest\x1a\x33.temporal.api.cloud.cloudservice.v1.GetUserResponse"\x1e\x82\xd3\xe4\x93\x02\x18\x12\x16/cloud/users/{user_id}\x12\x94\x01\n\nCreateUser\x12\x35.temporal.api.cloud.cloudservice.v1.CreateUserRequest\x1a\x36.temporal.api.cloud.cloudservice.v1.CreateUserResponse"\x17\x82\xd3\xe4\x93\x02\x11"\x0c/cloud/users:\x01*\x12\x9e\x01\n\nUpdateUser\x12\x35.temporal.api.cloud.cloudservice.v1.UpdateUserRequest\x1a\x36.temporal.api.cloud.cloudservice.v1.UpdateUserResponse"!\x82\xd3\xe4\x93\x02\x1b"\x16/cloud/users/{user_id}:\x01*\x12\x9b\x01\n\nDeleteUser\x12\x35.temporal.api.cloud.cloudservice.v1.DeleteUserRequest\x1a\x36.temporal.api.cloud.cloudservice.v1.DeleteUserResponse"\x1e\x82\xd3\xe4\x93\x02\x18*\x16/cloud/users/{user_id}\x12\xe0\x01\n\x16SetUserNamespaceAccess\x12\x41.temporal.api.cloud.cloudservice.v1.SetUserNamespaceAccessRequest\x1a\x42.temporal.api.cloud.cloudservice.v1.SetUserNamespaceAccessResponse"?\x82\xd3\xe4\x93\x02\x39"4/cloud/namespaces/{namespace}/users/{user_id}/access:\x01*\x12\xc0\x01\n\x11GetAsyncOperation\x12<.temporal.api.cloud.cloudservice.v1.GetAsyncOperationRequest\x1a=.temporal.api.cloud.cloudservice.v1.GetAsyncOperationResponse".\x82\xd3\xe4\x93\x02(\x12&/cloud/operations/{async_operation_id}\x12\xa8\x01\n\x0f\x43reateNamespace\x12:.temporal.api.cloud.cloudservice.v1.CreateNamespaceRequest\x1a;.temporal.api.cloud.cloudservice.v1.CreateNamespaceResponse"\x1c\x82\xd3\xe4\x93\x02\x16"\x11/cloud/namespaces:\x01*\x12\x9f\x01\n\rGetNamespaces\x12\x38.temporal.api.cloud.cloudservice.v1.GetNamespacesRequest\x1a\x39.temporal.api.cloud.cloudservice.v1.GetNamespacesResponse"\x19\x82\xd3\xe4\x93\x02\x13\x12\x11/cloud/namespaces\x12\xa8\x01\n\x0cGetNamespace\x12\x37.temporal.api.cloud.cloudservice.v1.GetNamespaceRequest\x1a\x38.temporal.api.cloud.cloudservice.v1.GetNamespaceResponse"%\x82\xd3\xe4\x93\x02\x1f\x12\x1d/cloud/namespaces/{namespace}\x12\xb4\x01\n\x0fUpdateNamespace\x12:.temporal.api.cloud.cloudservice.v1.UpdateNamespaceRequest\x1a;.temporal.api.cloud.cloudservice.v1.UpdateNamespaceResponse"(\x82\xd3\xe4\x93\x02""\x1d/cloud/namespaces/{namespace}:\x01*\x12\xf7\x01\n\x1bRenameCustomSearchAttribute\x12\x46.temporal.api.cloud.cloudservice.v1.RenameCustomSearchAttributeRequest\x1aG.temporal.api.cloud.cloudservice.v1.RenameCustomSearchAttributeResponse"G\x82\xd3\xe4\x93\x02\x41".temporal.api.cloud.cloudservice.v1.AddNamespaceRegionResponse"3\x82\xd3\xe4\x93\x02-"(/cloud/namespaces/{namespace}/add-region:\x01*\x12\x93\x01\n\nGetRegions\x12\x35.temporal.api.cloud.cloudservice.v1.GetRegionsRequest\x1a\x36.temporal.api.cloud.cloudservice.v1.GetRegionsResponse"\x16\x82\xd3\xe4\x93\x02\x10\x12\x0e/cloud/regions\x12\x99\x01\n\tGetRegion\x12\x34.temporal.api.cloud.cloudservice.v1.GetRegionRequest\x1a\x35.temporal.api.cloud.cloudservice.v1.GetRegionResponse"\x1f\x82\xd3\xe4\x93\x02\x19\x12\x17/cloud/regions/{region}\x12\x94\x01\n\nGetApiKeys\x12\x35.temporal.api.cloud.cloudservice.v1.GetApiKeysRequest\x1a\x36.temporal.api.cloud.cloudservice.v1.GetApiKeysResponse"\x17\x82\xd3\xe4\x93\x02\x11\x12\x0f/cloud/api-keys\x12\x9a\x01\n\tGetApiKey\x12\x34.temporal.api.cloud.cloudservice.v1.GetApiKeyRequest\x1a\x35.temporal.api.cloud.cloudservice.v1.GetApiKeyResponse" \x82\xd3\xe4\x93\x02\x1a\x12\x18/cloud/api-keys/{key_id}\x12\x9d\x01\n\x0c\x43reateApiKey\x12\x37.temporal.api.cloud.cloudservice.v1.CreateApiKeyRequest\x1a\x38.temporal.api.cloud.cloudservice.v1.CreateApiKeyResponse"\x1a\x82\xd3\xe4\x93\x02\x14"\x0f/cloud/api-keys:\x01*\x12\xa6\x01\n\x0cUpdateApiKey\x12\x37.temporal.api.cloud.cloudservice.v1.UpdateApiKeyRequest\x1a\x38.temporal.api.cloud.cloudservice.v1.UpdateApiKeyResponse"#\x82\xd3\xe4\x93\x02\x1d"\x18/cloud/api-keys/{key_id}:\x01*\x12\xa3\x01\n\x0c\x44\x65leteApiKey\x12\x37.temporal.api.cloud.cloudservice.v1.DeleteApiKeyRequest\x1a\x38.temporal.api.cloud.cloudservice.v1.DeleteApiKeyResponse" \x82\xd3\xe4\x93\x02\x1a*\x18/cloud/api-keys/{key_id}\x12\xa0\x01\n\rGetUserGroups\x12\x38.temporal.api.cloud.cloudservice.v1.GetUserGroupsRequest\x1a\x39.temporal.api.cloud.cloudservice.v1.GetUserGroupsResponse"\x1a\x82\xd3\xe4\x93\x02\x14\x12\x12/cloud/user-groups\x12\xa8\x01\n\x0cGetUserGroup\x12\x37.temporal.api.cloud.cloudservice.v1.GetUserGroupRequest\x1a\x38.temporal.api.cloud.cloudservice.v1.GetUserGroupResponse"%\x82\xd3\xe4\x93\x02\x1f\x12\x1d/cloud/user-groups/{group_id}\x12\xa9\x01\n\x0f\x43reateUserGroup\x12:.temporal.api.cloud.cloudservice.v1.CreateUserGroupRequest\x1a;.temporal.api.cloud.cloudservice.v1.CreateUserGroupResponse"\x1d\x82\xd3\xe4\x93\x02\x17"\x12/cloud/user-groups:\x01*\x12\xb4\x01\n\x0fUpdateUserGroup\x12:.temporal.api.cloud.cloudservice.v1.UpdateUserGroupRequest\x1a;.temporal.api.cloud.cloudservice.v1.UpdateUserGroupResponse"(\x82\xd3\xe4\x93\x02""\x1d/cloud/user-groups/{group_id}:\x01*\x12\xb1\x01\n\x0f\x44\x65leteUserGroup\x12:.temporal.api.cloud.cloudservice.v1.DeleteUserGroupRequest\x1a;.temporal.api.cloud.cloudservice.v1.DeleteUserGroupResponse"%\x82\xd3\xe4\x93\x02\x1f*\x1d/cloud/user-groups/{group_id}\x12\xf6\x01\n\x1bSetUserGroupNamespaceAccess\x12\x46.temporal.api.cloud.cloudservice.v1.SetUserGroupNamespaceAccessRequest\x1aG.temporal.api.cloud.cloudservice.v1.SetUserGroupNamespaceAccessResponse"F\x82\xd3\xe4\x93\x02@";/cloud/namespaces/{namespace}/user-groups/{group_id}/access:\x01*\x12\xbd\x01\n\x14\x43reateServiceAccount\x12?.temporal.api.cloud.cloudservice.v1.CreateServiceAccountRequest\x1a@.temporal.api.cloud.cloudservice.v1.CreateServiceAccountResponse""\x82\xd3\xe4\x93\x02\x1c"\x17/cloud/service-accounts:\x01*\x12\xc6\x01\n\x11GetServiceAccount\x12<.temporal.api.cloud.cloudservice.v1.GetServiceAccountRequest\x1a=.temporal.api.cloud.cloudservice.v1.GetServiceAccountResponse"4\x82\xd3\xe4\x93\x02.\x12,/cloud/service-accounts/{service_account_id}\x12\xb4\x01\n\x12GetServiceAccounts\x12=.temporal.api.cloud.cloudservice.v1.GetServiceAccountsRequest\x1a>.temporal.api.cloud.cloudservice.v1.GetServiceAccountsResponse"\x1f\x82\xd3\xe4\x93\x02\x19\x12\x17/cloud/service-accounts\x12\xd2\x01\n\x14UpdateServiceAccount\x12?.temporal.api.cloud.cloudservice.v1.UpdateServiceAccountRequest\x1a@.temporal.api.cloud.cloudservice.v1.UpdateServiceAccountResponse"7\x82\xd3\xe4\x93\x02\x31",/cloud/service-accounts/{service_account_id}:\x01*\x12\xcf\x01\n\x14\x44\x65leteServiceAccount\x12?.temporal.api.cloud.cloudservice.v1.DeleteServiceAccountRequest\x1a@.temporal.api.cloud.cloudservice.v1.DeleteServiceAccountResponse"4\x82\xd3\xe4\x93\x02.*,/cloud/service-accounts/{service_account_id}B\xc0\x01\n%io.temporal.api.cloud.cloudservice.v1B\x0cServiceProtoP\x01Z5go.temporal.io/api/cloud/cloudservice/v1;cloudservice\xaa\x02$Temporalio.Api.Cloud.CloudService.V1\xea\x02(Temporalio::Api::Cloud::CloudService::V1b\x06proto3' +) + + +_CLOUDSERVICE = DESCRIPTOR.services_by_name["CloudService"] +if _descriptor._USE_C_DESCRIPTORS == False: + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = b"\n%io.temporal.api.cloud.cloudservice.v1B\014ServiceProtoP\001Z5go.temporal.io/api/cloud/cloudservice/v1;cloudservice\252\002$Temporalio.Api.Cloud.CloudService.V1\352\002(Temporalio::Api::Cloud::CloudService::V1" + _CLOUDSERVICE.methods_by_name["GetUsers"]._options = None + _CLOUDSERVICE.methods_by_name[ + "GetUsers" + ]._serialized_options = b"\202\323\344\223\002\016\022\014/cloud/users" + _CLOUDSERVICE.methods_by_name["GetUser"]._options = None + _CLOUDSERVICE.methods_by_name[ + "GetUser" + ]._serialized_options = b"\202\323\344\223\002\030\022\026/cloud/users/{user_id}" + _CLOUDSERVICE.methods_by_name["CreateUser"]._options = None + _CLOUDSERVICE.methods_by_name[ + "CreateUser" + ]._serialized_options = b'\202\323\344\223\002\021"\014/cloud/users:\001*' + _CLOUDSERVICE.methods_by_name["UpdateUser"]._options = None + _CLOUDSERVICE.methods_by_name[ + "UpdateUser" + ]._serialized_options = b'\202\323\344\223\002\033"\026/cloud/users/{user_id}:\001*' + _CLOUDSERVICE.methods_by_name["DeleteUser"]._options = None + _CLOUDSERVICE.methods_by_name[ + "DeleteUser" + ]._serialized_options = b"\202\323\344\223\002\030*\026/cloud/users/{user_id}" + _CLOUDSERVICE.methods_by_name["SetUserNamespaceAccess"]._options = None + _CLOUDSERVICE.methods_by_name[ + "SetUserNamespaceAccess" + ]._serialized_options = b'\202\323\344\223\0029"4/cloud/namespaces/{namespace}/users/{user_id}/access:\001*' + _CLOUDSERVICE.methods_by_name["GetAsyncOperation"]._options = None + _CLOUDSERVICE.methods_by_name[ + "GetAsyncOperation" + ]._serialized_options = ( + b"\202\323\344\223\002(\022&/cloud/operations/{async_operation_id}" + ) + _CLOUDSERVICE.methods_by_name["CreateNamespace"]._options = None + _CLOUDSERVICE.methods_by_name[ + "CreateNamespace" + ]._serialized_options = b'\202\323\344\223\002\026"\021/cloud/namespaces:\001*' + _CLOUDSERVICE.methods_by_name["GetNamespaces"]._options = None + _CLOUDSERVICE.methods_by_name[ + "GetNamespaces" + ]._serialized_options = b"\202\323\344\223\002\023\022\021/cloud/namespaces" + _CLOUDSERVICE.methods_by_name["GetNamespace"]._options = None + _CLOUDSERVICE.methods_by_name[ + "GetNamespace" + ]._serialized_options = ( + b"\202\323\344\223\002\037\022\035/cloud/namespaces/{namespace}" + ) + _CLOUDSERVICE.methods_by_name["UpdateNamespace"]._options = None + _CLOUDSERVICE.methods_by_name[ + "UpdateNamespace" + ]._serialized_options = ( + b'\202\323\344\223\002""\035/cloud/namespaces/{namespace}:\001*' + ) + _CLOUDSERVICE.methods_by_name["RenameCustomSearchAttribute"]._options = None + _CLOUDSERVICE.methods_by_name[ + "RenameCustomSearchAttribute" + ]._serialized_options = b'\202\323\344\223\002A" None: ... + GetUsers: grpc.UnaryUnaryMultiCallable[ + temporalio.api.cloud.cloudservice.v1.request_response_pb2.GetUsersRequest, + temporalio.api.cloud.cloudservice.v1.request_response_pb2.GetUsersResponse, + ] + """Gets all known users""" + GetUser: grpc.UnaryUnaryMultiCallable[ + temporalio.api.cloud.cloudservice.v1.request_response_pb2.GetUserRequest, + temporalio.api.cloud.cloudservice.v1.request_response_pb2.GetUserResponse, + ] + """Get a user""" + CreateUser: grpc.UnaryUnaryMultiCallable[ + temporalio.api.cloud.cloudservice.v1.request_response_pb2.CreateUserRequest, + temporalio.api.cloud.cloudservice.v1.request_response_pb2.CreateUserResponse, + ] + """Create a user""" + UpdateUser: grpc.UnaryUnaryMultiCallable[ + temporalio.api.cloud.cloudservice.v1.request_response_pb2.UpdateUserRequest, + temporalio.api.cloud.cloudservice.v1.request_response_pb2.UpdateUserResponse, + ] + """Update a user""" + DeleteUser: grpc.UnaryUnaryMultiCallable[ + temporalio.api.cloud.cloudservice.v1.request_response_pb2.DeleteUserRequest, + temporalio.api.cloud.cloudservice.v1.request_response_pb2.DeleteUserResponse, + ] + """Delete a user""" + SetUserNamespaceAccess: grpc.UnaryUnaryMultiCallable[ + temporalio.api.cloud.cloudservice.v1.request_response_pb2.SetUserNamespaceAccessRequest, + temporalio.api.cloud.cloudservice.v1.request_response_pb2.SetUserNamespaceAccessResponse, + ] + """Set a user's access to a namespace""" + GetAsyncOperation: grpc.UnaryUnaryMultiCallable[ + temporalio.api.cloud.cloudservice.v1.request_response_pb2.GetAsyncOperationRequest, + temporalio.api.cloud.cloudservice.v1.request_response_pb2.GetAsyncOperationResponse, + ] + """Get the latest information on an async operation""" + CreateNamespace: grpc.UnaryUnaryMultiCallable[ + temporalio.api.cloud.cloudservice.v1.request_response_pb2.CreateNamespaceRequest, + temporalio.api.cloud.cloudservice.v1.request_response_pb2.CreateNamespaceResponse, + ] + """Create a new namespace""" + GetNamespaces: grpc.UnaryUnaryMultiCallable[ + temporalio.api.cloud.cloudservice.v1.request_response_pb2.GetNamespacesRequest, + temporalio.api.cloud.cloudservice.v1.request_response_pb2.GetNamespacesResponse, + ] + """Get all namespaces""" + GetNamespace: grpc.UnaryUnaryMultiCallable[ + temporalio.api.cloud.cloudservice.v1.request_response_pb2.GetNamespaceRequest, + temporalio.api.cloud.cloudservice.v1.request_response_pb2.GetNamespaceResponse, + ] + """Get a namespace""" + UpdateNamespace: grpc.UnaryUnaryMultiCallable[ + temporalio.api.cloud.cloudservice.v1.request_response_pb2.UpdateNamespaceRequest, + temporalio.api.cloud.cloudservice.v1.request_response_pb2.UpdateNamespaceResponse, + ] + """Update a namespace""" + RenameCustomSearchAttribute: grpc.UnaryUnaryMultiCallable[ + temporalio.api.cloud.cloudservice.v1.request_response_pb2.RenameCustomSearchAttributeRequest, + temporalio.api.cloud.cloudservice.v1.request_response_pb2.RenameCustomSearchAttributeResponse, + ] + """Rename an existing customer search attribute""" + DeleteNamespace: grpc.UnaryUnaryMultiCallable[ + temporalio.api.cloud.cloudservice.v1.request_response_pb2.DeleteNamespaceRequest, + temporalio.api.cloud.cloudservice.v1.request_response_pb2.DeleteNamespaceResponse, + ] + """Delete a namespace""" + FailoverNamespaceRegion: grpc.UnaryUnaryMultiCallable[ + temporalio.api.cloud.cloudservice.v1.request_response_pb2.FailoverNamespaceRegionRequest, + temporalio.api.cloud.cloudservice.v1.request_response_pb2.FailoverNamespaceRegionResponse, + ] + """Failover a multi-region namespace""" + AddNamespaceRegion: grpc.UnaryUnaryMultiCallable[ + temporalio.api.cloud.cloudservice.v1.request_response_pb2.AddNamespaceRegionRequest, + temporalio.api.cloud.cloudservice.v1.request_response_pb2.AddNamespaceRegionResponse, + ] + """Add a new region to a namespace""" + GetRegions: grpc.UnaryUnaryMultiCallable[ + temporalio.api.cloud.cloudservice.v1.request_response_pb2.GetRegionsRequest, + temporalio.api.cloud.cloudservice.v1.request_response_pb2.GetRegionsResponse, + ] + """Get all regions""" + GetRegion: grpc.UnaryUnaryMultiCallable[ + temporalio.api.cloud.cloudservice.v1.request_response_pb2.GetRegionRequest, + temporalio.api.cloud.cloudservice.v1.request_response_pb2.GetRegionResponse, + ] + """Get a region""" + GetApiKeys: grpc.UnaryUnaryMultiCallable[ + temporalio.api.cloud.cloudservice.v1.request_response_pb2.GetApiKeysRequest, + temporalio.api.cloud.cloudservice.v1.request_response_pb2.GetApiKeysResponse, + ] + """Get all known API keys""" + GetApiKey: grpc.UnaryUnaryMultiCallable[ + temporalio.api.cloud.cloudservice.v1.request_response_pb2.GetApiKeyRequest, + temporalio.api.cloud.cloudservice.v1.request_response_pb2.GetApiKeyResponse, + ] + """Get an API key""" + CreateApiKey: grpc.UnaryUnaryMultiCallable[ + temporalio.api.cloud.cloudservice.v1.request_response_pb2.CreateApiKeyRequest, + temporalio.api.cloud.cloudservice.v1.request_response_pb2.CreateApiKeyResponse, + ] + """Create an API key""" + UpdateApiKey: grpc.UnaryUnaryMultiCallable[ + temporalio.api.cloud.cloudservice.v1.request_response_pb2.UpdateApiKeyRequest, + temporalio.api.cloud.cloudservice.v1.request_response_pb2.UpdateApiKeyResponse, + ] + """Update an API key""" + DeleteApiKey: grpc.UnaryUnaryMultiCallable[ + temporalio.api.cloud.cloudservice.v1.request_response_pb2.DeleteApiKeyRequest, + temporalio.api.cloud.cloudservice.v1.request_response_pb2.DeleteApiKeyResponse, + ] + """Delete an API key""" + GetUserGroups: grpc.UnaryUnaryMultiCallable[ + temporalio.api.cloud.cloudservice.v1.request_response_pb2.GetUserGroupsRequest, + temporalio.api.cloud.cloudservice.v1.request_response_pb2.GetUserGroupsResponse, + ] + """Get all user groups""" + GetUserGroup: grpc.UnaryUnaryMultiCallable[ + temporalio.api.cloud.cloudservice.v1.request_response_pb2.GetUserGroupRequest, + temporalio.api.cloud.cloudservice.v1.request_response_pb2.GetUserGroupResponse, + ] + """Get a user group""" + CreateUserGroup: grpc.UnaryUnaryMultiCallable[ + temporalio.api.cloud.cloudservice.v1.request_response_pb2.CreateUserGroupRequest, + temporalio.api.cloud.cloudservice.v1.request_response_pb2.CreateUserGroupResponse, + ] + """Create new a user group""" + UpdateUserGroup: grpc.UnaryUnaryMultiCallable[ + temporalio.api.cloud.cloudservice.v1.request_response_pb2.UpdateUserGroupRequest, + temporalio.api.cloud.cloudservice.v1.request_response_pb2.UpdateUserGroupResponse, + ] + """Update a user group""" + DeleteUserGroup: grpc.UnaryUnaryMultiCallable[ + temporalio.api.cloud.cloudservice.v1.request_response_pb2.DeleteUserGroupRequest, + temporalio.api.cloud.cloudservice.v1.request_response_pb2.DeleteUserGroupResponse, + ] + """Delete a user group""" + SetUserGroupNamespaceAccess: grpc.UnaryUnaryMultiCallable[ + temporalio.api.cloud.cloudservice.v1.request_response_pb2.SetUserGroupNamespaceAccessRequest, + temporalio.api.cloud.cloudservice.v1.request_response_pb2.SetUserGroupNamespaceAccessResponse, + ] + """Set a user group's access to a namespace""" + CreateServiceAccount: grpc.UnaryUnaryMultiCallable[ + temporalio.api.cloud.cloudservice.v1.request_response_pb2.CreateServiceAccountRequest, + temporalio.api.cloud.cloudservice.v1.request_response_pb2.CreateServiceAccountResponse, + ] + """Create a service account.""" + GetServiceAccount: grpc.UnaryUnaryMultiCallable[ + temporalio.api.cloud.cloudservice.v1.request_response_pb2.GetServiceAccountRequest, + temporalio.api.cloud.cloudservice.v1.request_response_pb2.GetServiceAccountResponse, + ] + """Get a service account.""" + GetServiceAccounts: grpc.UnaryUnaryMultiCallable[ + temporalio.api.cloud.cloudservice.v1.request_response_pb2.GetServiceAccountsRequest, + temporalio.api.cloud.cloudservice.v1.request_response_pb2.GetServiceAccountsResponse, + ] + """Get service accounts.""" + UpdateServiceAccount: grpc.UnaryUnaryMultiCallable[ + temporalio.api.cloud.cloudservice.v1.request_response_pb2.UpdateServiceAccountRequest, + temporalio.api.cloud.cloudservice.v1.request_response_pb2.UpdateServiceAccountResponse, + ] + """Update a service account.""" + DeleteServiceAccount: grpc.UnaryUnaryMultiCallable[ + temporalio.api.cloud.cloudservice.v1.request_response_pb2.DeleteServiceAccountRequest, + temporalio.api.cloud.cloudservice.v1.request_response_pb2.DeleteServiceAccountResponse, + ] + """Delete a service account.""" + +class CloudServiceServicer(metaclass=abc.ABCMeta): + """WARNING: This service is currently experimental and may change in + incompatible ways. + """ + + @abc.abstractmethod + def GetUsers( + self, + request: temporalio.api.cloud.cloudservice.v1.request_response_pb2.GetUsersRequest, + context: grpc.ServicerContext, + ) -> temporalio.api.cloud.cloudservice.v1.request_response_pb2.GetUsersResponse: + """Gets all known users""" + @abc.abstractmethod + def GetUser( + self, + request: temporalio.api.cloud.cloudservice.v1.request_response_pb2.GetUserRequest, + context: grpc.ServicerContext, + ) -> temporalio.api.cloud.cloudservice.v1.request_response_pb2.GetUserResponse: + """Get a user""" + @abc.abstractmethod + def CreateUser( + self, + request: temporalio.api.cloud.cloudservice.v1.request_response_pb2.CreateUserRequest, + context: grpc.ServicerContext, + ) -> temporalio.api.cloud.cloudservice.v1.request_response_pb2.CreateUserResponse: + """Create a user""" + @abc.abstractmethod + def UpdateUser( + self, + request: temporalio.api.cloud.cloudservice.v1.request_response_pb2.UpdateUserRequest, + context: grpc.ServicerContext, + ) -> temporalio.api.cloud.cloudservice.v1.request_response_pb2.UpdateUserResponse: + """Update a user""" + @abc.abstractmethod + def DeleteUser( + self, + request: temporalio.api.cloud.cloudservice.v1.request_response_pb2.DeleteUserRequest, + context: grpc.ServicerContext, + ) -> temporalio.api.cloud.cloudservice.v1.request_response_pb2.DeleteUserResponse: + """Delete a user""" + @abc.abstractmethod + def SetUserNamespaceAccess( + self, + request: temporalio.api.cloud.cloudservice.v1.request_response_pb2.SetUserNamespaceAccessRequest, + context: grpc.ServicerContext, + ) -> temporalio.api.cloud.cloudservice.v1.request_response_pb2.SetUserNamespaceAccessResponse: + """Set a user's access to a namespace""" + @abc.abstractmethod + def GetAsyncOperation( + self, + request: temporalio.api.cloud.cloudservice.v1.request_response_pb2.GetAsyncOperationRequest, + context: grpc.ServicerContext, + ) -> temporalio.api.cloud.cloudservice.v1.request_response_pb2.GetAsyncOperationResponse: + """Get the latest information on an async operation""" + @abc.abstractmethod + def CreateNamespace( + self, + request: temporalio.api.cloud.cloudservice.v1.request_response_pb2.CreateNamespaceRequest, + context: grpc.ServicerContext, + ) -> temporalio.api.cloud.cloudservice.v1.request_response_pb2.CreateNamespaceResponse: + """Create a new namespace""" + @abc.abstractmethod + def GetNamespaces( + self, + request: temporalio.api.cloud.cloudservice.v1.request_response_pb2.GetNamespacesRequest, + context: grpc.ServicerContext, + ) -> ( + temporalio.api.cloud.cloudservice.v1.request_response_pb2.GetNamespacesResponse + ): + """Get all namespaces""" + @abc.abstractmethod + def GetNamespace( + self, + request: temporalio.api.cloud.cloudservice.v1.request_response_pb2.GetNamespaceRequest, + context: grpc.ServicerContext, + ) -> temporalio.api.cloud.cloudservice.v1.request_response_pb2.GetNamespaceResponse: + """Get a namespace""" + @abc.abstractmethod + def UpdateNamespace( + self, + request: temporalio.api.cloud.cloudservice.v1.request_response_pb2.UpdateNamespaceRequest, + context: grpc.ServicerContext, + ) -> temporalio.api.cloud.cloudservice.v1.request_response_pb2.UpdateNamespaceResponse: + """Update a namespace""" + @abc.abstractmethod + def RenameCustomSearchAttribute( + self, + request: temporalio.api.cloud.cloudservice.v1.request_response_pb2.RenameCustomSearchAttributeRequest, + context: grpc.ServicerContext, + ) -> temporalio.api.cloud.cloudservice.v1.request_response_pb2.RenameCustomSearchAttributeResponse: + """Rename an existing customer search attribute""" + @abc.abstractmethod + def DeleteNamespace( + self, + request: temporalio.api.cloud.cloudservice.v1.request_response_pb2.DeleteNamespaceRequest, + context: grpc.ServicerContext, + ) -> temporalio.api.cloud.cloudservice.v1.request_response_pb2.DeleteNamespaceResponse: + """Delete a namespace""" + @abc.abstractmethod + def FailoverNamespaceRegion( + self, + request: temporalio.api.cloud.cloudservice.v1.request_response_pb2.FailoverNamespaceRegionRequest, + context: grpc.ServicerContext, + ) -> temporalio.api.cloud.cloudservice.v1.request_response_pb2.FailoverNamespaceRegionResponse: + """Failover a multi-region namespace""" + @abc.abstractmethod + def AddNamespaceRegion( + self, + request: temporalio.api.cloud.cloudservice.v1.request_response_pb2.AddNamespaceRegionRequest, + context: grpc.ServicerContext, + ) -> temporalio.api.cloud.cloudservice.v1.request_response_pb2.AddNamespaceRegionResponse: + """Add a new region to a namespace""" + @abc.abstractmethod + def GetRegions( + self, + request: temporalio.api.cloud.cloudservice.v1.request_response_pb2.GetRegionsRequest, + context: grpc.ServicerContext, + ) -> temporalio.api.cloud.cloudservice.v1.request_response_pb2.GetRegionsResponse: + """Get all regions""" + @abc.abstractmethod + def GetRegion( + self, + request: temporalio.api.cloud.cloudservice.v1.request_response_pb2.GetRegionRequest, + context: grpc.ServicerContext, + ) -> temporalio.api.cloud.cloudservice.v1.request_response_pb2.GetRegionResponse: + """Get a region""" + @abc.abstractmethod + def GetApiKeys( + self, + request: temporalio.api.cloud.cloudservice.v1.request_response_pb2.GetApiKeysRequest, + context: grpc.ServicerContext, + ) -> temporalio.api.cloud.cloudservice.v1.request_response_pb2.GetApiKeysResponse: + """Get all known API keys""" + @abc.abstractmethod + def GetApiKey( + self, + request: temporalio.api.cloud.cloudservice.v1.request_response_pb2.GetApiKeyRequest, + context: grpc.ServicerContext, + ) -> temporalio.api.cloud.cloudservice.v1.request_response_pb2.GetApiKeyResponse: + """Get an API key""" + @abc.abstractmethod + def CreateApiKey( + self, + request: temporalio.api.cloud.cloudservice.v1.request_response_pb2.CreateApiKeyRequest, + context: grpc.ServicerContext, + ) -> temporalio.api.cloud.cloudservice.v1.request_response_pb2.CreateApiKeyResponse: + """Create an API key""" + @abc.abstractmethod + def UpdateApiKey( + self, + request: temporalio.api.cloud.cloudservice.v1.request_response_pb2.UpdateApiKeyRequest, + context: grpc.ServicerContext, + ) -> temporalio.api.cloud.cloudservice.v1.request_response_pb2.UpdateApiKeyResponse: + """Update an API key""" + @abc.abstractmethod + def DeleteApiKey( + self, + request: temporalio.api.cloud.cloudservice.v1.request_response_pb2.DeleteApiKeyRequest, + context: grpc.ServicerContext, + ) -> temporalio.api.cloud.cloudservice.v1.request_response_pb2.DeleteApiKeyResponse: + """Delete an API key""" + @abc.abstractmethod + def GetUserGroups( + self, + request: temporalio.api.cloud.cloudservice.v1.request_response_pb2.GetUserGroupsRequest, + context: grpc.ServicerContext, + ) -> ( + temporalio.api.cloud.cloudservice.v1.request_response_pb2.GetUserGroupsResponse + ): + """Get all user groups""" + @abc.abstractmethod + def GetUserGroup( + self, + request: temporalio.api.cloud.cloudservice.v1.request_response_pb2.GetUserGroupRequest, + context: grpc.ServicerContext, + ) -> temporalio.api.cloud.cloudservice.v1.request_response_pb2.GetUserGroupResponse: + """Get a user group""" + @abc.abstractmethod + def CreateUserGroup( + self, + request: temporalio.api.cloud.cloudservice.v1.request_response_pb2.CreateUserGroupRequest, + context: grpc.ServicerContext, + ) -> temporalio.api.cloud.cloudservice.v1.request_response_pb2.CreateUserGroupResponse: + """Create new a user group""" + @abc.abstractmethod + def UpdateUserGroup( + self, + request: temporalio.api.cloud.cloudservice.v1.request_response_pb2.UpdateUserGroupRequest, + context: grpc.ServicerContext, + ) -> temporalio.api.cloud.cloudservice.v1.request_response_pb2.UpdateUserGroupResponse: + """Update a user group""" + @abc.abstractmethod + def DeleteUserGroup( + self, + request: temporalio.api.cloud.cloudservice.v1.request_response_pb2.DeleteUserGroupRequest, + context: grpc.ServicerContext, + ) -> temporalio.api.cloud.cloudservice.v1.request_response_pb2.DeleteUserGroupResponse: + """Delete a user group""" + @abc.abstractmethod + def SetUserGroupNamespaceAccess( + self, + request: temporalio.api.cloud.cloudservice.v1.request_response_pb2.SetUserGroupNamespaceAccessRequest, + context: grpc.ServicerContext, + ) -> temporalio.api.cloud.cloudservice.v1.request_response_pb2.SetUserGroupNamespaceAccessResponse: + """Set a user group's access to a namespace""" + @abc.abstractmethod + def CreateServiceAccount( + self, + request: temporalio.api.cloud.cloudservice.v1.request_response_pb2.CreateServiceAccountRequest, + context: grpc.ServicerContext, + ) -> temporalio.api.cloud.cloudservice.v1.request_response_pb2.CreateServiceAccountResponse: + """Create a service account.""" + @abc.abstractmethod + def GetServiceAccount( + self, + request: temporalio.api.cloud.cloudservice.v1.request_response_pb2.GetServiceAccountRequest, + context: grpc.ServicerContext, + ) -> temporalio.api.cloud.cloudservice.v1.request_response_pb2.GetServiceAccountResponse: + """Get a service account.""" + @abc.abstractmethod + def GetServiceAccounts( + self, + request: temporalio.api.cloud.cloudservice.v1.request_response_pb2.GetServiceAccountsRequest, + context: grpc.ServicerContext, + ) -> temporalio.api.cloud.cloudservice.v1.request_response_pb2.GetServiceAccountsResponse: + """Get service accounts.""" + @abc.abstractmethod + def UpdateServiceAccount( + self, + request: temporalio.api.cloud.cloudservice.v1.request_response_pb2.UpdateServiceAccountRequest, + context: grpc.ServicerContext, + ) -> temporalio.api.cloud.cloudservice.v1.request_response_pb2.UpdateServiceAccountResponse: + """Update a service account.""" + @abc.abstractmethod + def DeleteServiceAccount( + self, + request: temporalio.api.cloud.cloudservice.v1.request_response_pb2.DeleteServiceAccountRequest, + context: grpc.ServicerContext, + ) -> temporalio.api.cloud.cloudservice.v1.request_response_pb2.DeleteServiceAccountResponse: + """Delete a service account.""" + +def add_CloudServiceServicer_to_server( + servicer: CloudServiceServicer, server: grpc.Server +) -> None: ... diff --git a/temporalio/api/cloud/identity/__init__.py b/temporalio/api/cloud/identity/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/temporalio/api/cloud/identity/v1/__init__.py b/temporalio/api/cloud/identity/v1/__init__.py new file mode 100644 index 00000000..41770a31 --- /dev/null +++ b/temporalio/api/cloud/identity/v1/__init__.py @@ -0,0 +1,29 @@ +from .message_pb2 import ( + Access, + AccountAccess, + ApiKey, + ApiKeySpec, + Invitation, + NamespaceAccess, + ServiceAccount, + ServiceAccountSpec, + User, + UserGroup, + UserGroupSpec, + UserSpec, +) + +__all__ = [ + "Access", + "AccountAccess", + "ApiKey", + "ApiKeySpec", + "Invitation", + "NamespaceAccess", + "ServiceAccount", + "ServiceAccountSpec", + "User", + "UserGroup", + "UserGroupSpec", + "UserSpec", +] diff --git a/temporalio/api/cloud/identity/v1/message_pb2.py b/temporalio/api/cloud/identity/v1/message_pb2.py new file mode 100644 index 00000000..09543b81 --- /dev/null +++ b/temporalio/api/cloud/identity/v1/message_pb2.py @@ -0,0 +1,210 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: temporal/api/cloud/identity/v1/message.proto +"""Generated protocol buffer code.""" + +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database + +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( + b'\n,temporal/api/cloud/identity/v1/message.proto\x12\x1etemporal.api.cloud.identity.v1\x1a\x1fgoogle/protobuf/timestamp.proto"\x1d\n\rAccountAccess\x12\x0c\n\x04role\x18\x01 \x01(\t"%\n\x0fNamespaceAccess\x12\x12\n\npermission\x18\x01 \x01(\t"\x95\x02\n\x06\x41\x63\x63\x65ss\x12\x45\n\x0e\x61\x63\x63ount_access\x18\x01 \x01(\x0b\x32-.temporal.api.cloud.identity.v1.AccountAccess\x12Y\n\x12namespace_accesses\x18\x02 \x03(\x0b\x32=.temporal.api.cloud.identity.v1.Access.NamespaceAccessesEntry\x1ai\n\x16NamespaceAccessesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12>\n\x05value\x18\x02 \x01(\x0b\x32/.temporal.api.cloud.identity.v1.NamespaceAccess:\x02\x38\x01"Q\n\x08UserSpec\x12\r\n\x05\x65mail\x18\x01 \x01(\t\x12\x36\n\x06\x61\x63\x63\x65ss\x18\x02 \x01(\x0b\x32&.temporal.api.cloud.identity.v1.Access"p\n\nInvitation\x12\x30\n\x0c\x63reated_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x30\n\x0c\x65xpired_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp"\xb9\x02\n\x04User\x12\n\n\x02id\x18\x01 \x01(\t\x12\x18\n\x10resource_version\x18\x02 \x01(\t\x12\x36\n\x04spec\x18\x03 \x01(\x0b\x32(.temporal.api.cloud.identity.v1.UserSpec\x12\r\n\x05state\x18\x04 \x01(\t\x12\x1a\n\x12\x61sync_operation_id\x18\x05 \x01(\t\x12>\n\ninvitation\x18\x06 \x01(\x0b\x32*.temporal.api.cloud.identity.v1.Invitation\x12\x30\n\x0c\x63reated_time\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x36\n\x12last_modified_time\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp"U\n\rUserGroupSpec\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x36\n\x06\x61\x63\x63\x65ss\x18\x02 \x01(\x0b\x32&.temporal.api.cloud.identity.v1.Access"\x83\x02\n\tUserGroup\x12\n\n\x02id\x18\x01 \x01(\t\x12\x18\n\x10resource_version\x18\x02 \x01(\t\x12;\n\x04spec\x18\x03 \x01(\x0b\x32-.temporal.api.cloud.identity.v1.UserGroupSpec\x12\r\n\x05state\x18\x04 \x01(\t\x12\x1a\n\x12\x61sync_operation_id\x18\x05 \x01(\t\x12\x30\n\x0c\x63reated_time\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x36\n\x12last_modified_time\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp"\x8d\x02\n\x0eServiceAccount\x12\n\n\x02id\x18\x01 \x01(\t\x12\x18\n\x10resource_version\x18\x02 \x01(\t\x12@\n\x04spec\x18\x03 \x01(\x0b\x32\x32.temporal.api.cloud.identity.v1.ServiceAccountSpec\x12\r\n\x05state\x18\x04 \x01(\t\x12\x1a\n\x12\x61sync_operation_id\x18\x05 \x01(\t\x12\x30\n\x0c\x63reated_time\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x36\n\x12last_modified_time\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp"o\n\x12ServiceAccountSpec\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x36\n\x06\x61\x63\x63\x65ss\x18\x02 \x01(\x0b\x32&.temporal.api.cloud.identity.v1.Access\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t"\xfd\x01\n\x06\x41piKey\x12\n\n\x02id\x18\x01 \x01(\t\x12\x18\n\x10resource_version\x18\x02 \x01(\t\x12\x38\n\x04spec\x18\x03 \x01(\x0b\x32*.temporal.api.cloud.identity.v1.ApiKeySpec\x12\r\n\x05state\x18\x04 \x01(\t\x12\x1a\n\x12\x61sync_operation_id\x18\x05 \x01(\t\x12\x30\n\x0c\x63reated_time\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x36\n\x12last_modified_time\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp"\xa0\x01\n\nApiKeySpec\x12\x10\n\x08owner_id\x18\x01 \x01(\t\x12\x12\n\nowner_type\x18\x02 \x01(\t\x12\x14\n\x0c\x64isplay_name\x18\x03 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x04 \x01(\t\x12/\n\x0b\x65xpiry_time\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x10\n\x08\x64isabled\x18\x06 \x01(\x08\x42\xac\x01\n!io.temporal.api.cloud.identity.v1B\x0cMessageProtoP\x01Z-go.temporal.io/api/cloud/identity/v1;identity\xaa\x02 Temporalio.Api.Cloud.Identity.V1\xea\x02$Temporalio::Api::Cloud::Identity::V1b\x06proto3' +) + + +_ACCOUNTACCESS = DESCRIPTOR.message_types_by_name["AccountAccess"] +_NAMESPACEACCESS = DESCRIPTOR.message_types_by_name["NamespaceAccess"] +_ACCESS = DESCRIPTOR.message_types_by_name["Access"] +_ACCESS_NAMESPACEACCESSESENTRY = _ACCESS.nested_types_by_name["NamespaceAccessesEntry"] +_USERSPEC = DESCRIPTOR.message_types_by_name["UserSpec"] +_INVITATION = DESCRIPTOR.message_types_by_name["Invitation"] +_USER = DESCRIPTOR.message_types_by_name["User"] +_USERGROUPSPEC = DESCRIPTOR.message_types_by_name["UserGroupSpec"] +_USERGROUP = DESCRIPTOR.message_types_by_name["UserGroup"] +_SERVICEACCOUNT = DESCRIPTOR.message_types_by_name["ServiceAccount"] +_SERVICEACCOUNTSPEC = DESCRIPTOR.message_types_by_name["ServiceAccountSpec"] +_APIKEY = DESCRIPTOR.message_types_by_name["ApiKey"] +_APIKEYSPEC = DESCRIPTOR.message_types_by_name["ApiKeySpec"] +AccountAccess = _reflection.GeneratedProtocolMessageType( + "AccountAccess", + (_message.Message,), + { + "DESCRIPTOR": _ACCOUNTACCESS, + "__module__": "temporal.api.cloud.identity.v1.message_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.identity.v1.AccountAccess) + }, +) +_sym_db.RegisterMessage(AccountAccess) + +NamespaceAccess = _reflection.GeneratedProtocolMessageType( + "NamespaceAccess", + (_message.Message,), + { + "DESCRIPTOR": _NAMESPACEACCESS, + "__module__": "temporal.api.cloud.identity.v1.message_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.identity.v1.NamespaceAccess) + }, +) +_sym_db.RegisterMessage(NamespaceAccess) + +Access = _reflection.GeneratedProtocolMessageType( + "Access", + (_message.Message,), + { + "NamespaceAccessesEntry": _reflection.GeneratedProtocolMessageType( + "NamespaceAccessesEntry", + (_message.Message,), + { + "DESCRIPTOR": _ACCESS_NAMESPACEACCESSESENTRY, + "__module__": "temporal.api.cloud.identity.v1.message_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.identity.v1.Access.NamespaceAccessesEntry) + }, + ), + "DESCRIPTOR": _ACCESS, + "__module__": "temporal.api.cloud.identity.v1.message_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.identity.v1.Access) + }, +) +_sym_db.RegisterMessage(Access) +_sym_db.RegisterMessage(Access.NamespaceAccessesEntry) + +UserSpec = _reflection.GeneratedProtocolMessageType( + "UserSpec", + (_message.Message,), + { + "DESCRIPTOR": _USERSPEC, + "__module__": "temporal.api.cloud.identity.v1.message_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.identity.v1.UserSpec) + }, +) +_sym_db.RegisterMessage(UserSpec) + +Invitation = _reflection.GeneratedProtocolMessageType( + "Invitation", + (_message.Message,), + { + "DESCRIPTOR": _INVITATION, + "__module__": "temporal.api.cloud.identity.v1.message_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.identity.v1.Invitation) + }, +) +_sym_db.RegisterMessage(Invitation) + +User = _reflection.GeneratedProtocolMessageType( + "User", + (_message.Message,), + { + "DESCRIPTOR": _USER, + "__module__": "temporal.api.cloud.identity.v1.message_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.identity.v1.User) + }, +) +_sym_db.RegisterMessage(User) + +UserGroupSpec = _reflection.GeneratedProtocolMessageType( + "UserGroupSpec", + (_message.Message,), + { + "DESCRIPTOR": _USERGROUPSPEC, + "__module__": "temporal.api.cloud.identity.v1.message_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.identity.v1.UserGroupSpec) + }, +) +_sym_db.RegisterMessage(UserGroupSpec) + +UserGroup = _reflection.GeneratedProtocolMessageType( + "UserGroup", + (_message.Message,), + { + "DESCRIPTOR": _USERGROUP, + "__module__": "temporal.api.cloud.identity.v1.message_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.identity.v1.UserGroup) + }, +) +_sym_db.RegisterMessage(UserGroup) + +ServiceAccount = _reflection.GeneratedProtocolMessageType( + "ServiceAccount", + (_message.Message,), + { + "DESCRIPTOR": _SERVICEACCOUNT, + "__module__": "temporal.api.cloud.identity.v1.message_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.identity.v1.ServiceAccount) + }, +) +_sym_db.RegisterMessage(ServiceAccount) + +ServiceAccountSpec = _reflection.GeneratedProtocolMessageType( + "ServiceAccountSpec", + (_message.Message,), + { + "DESCRIPTOR": _SERVICEACCOUNTSPEC, + "__module__": "temporal.api.cloud.identity.v1.message_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.identity.v1.ServiceAccountSpec) + }, +) +_sym_db.RegisterMessage(ServiceAccountSpec) + +ApiKey = _reflection.GeneratedProtocolMessageType( + "ApiKey", + (_message.Message,), + { + "DESCRIPTOR": _APIKEY, + "__module__": "temporal.api.cloud.identity.v1.message_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.identity.v1.ApiKey) + }, +) +_sym_db.RegisterMessage(ApiKey) + +ApiKeySpec = _reflection.GeneratedProtocolMessageType( + "ApiKeySpec", + (_message.Message,), + { + "DESCRIPTOR": _APIKEYSPEC, + "__module__": "temporal.api.cloud.identity.v1.message_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.identity.v1.ApiKeySpec) + }, +) +_sym_db.RegisterMessage(ApiKeySpec) + +if _descriptor._USE_C_DESCRIPTORS == False: + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = b"\n!io.temporal.api.cloud.identity.v1B\014MessageProtoP\001Z-go.temporal.io/api/cloud/identity/v1;identity\252\002 Temporalio.Api.Cloud.Identity.V1\352\002$Temporalio::Api::Cloud::Identity::V1" + _ACCESS_NAMESPACEACCESSESENTRY._options = None + _ACCESS_NAMESPACEACCESSESENTRY._serialized_options = b"8\001" + _ACCOUNTACCESS._serialized_start = 113 + _ACCOUNTACCESS._serialized_end = 142 + _NAMESPACEACCESS._serialized_start = 144 + _NAMESPACEACCESS._serialized_end = 181 + _ACCESS._serialized_start = 184 + _ACCESS._serialized_end = 461 + _ACCESS_NAMESPACEACCESSESENTRY._serialized_start = 356 + _ACCESS_NAMESPACEACCESSESENTRY._serialized_end = 461 + _USERSPEC._serialized_start = 463 + _USERSPEC._serialized_end = 544 + _INVITATION._serialized_start = 546 + _INVITATION._serialized_end = 658 + _USER._serialized_start = 661 + _USER._serialized_end = 974 + _USERGROUPSPEC._serialized_start = 976 + _USERGROUPSPEC._serialized_end = 1061 + _USERGROUP._serialized_start = 1064 + _USERGROUP._serialized_end = 1323 + _SERVICEACCOUNT._serialized_start = 1326 + _SERVICEACCOUNT._serialized_end = 1595 + _SERVICEACCOUNTSPEC._serialized_start = 1597 + _SERVICEACCOUNTSPEC._serialized_end = 1708 + _APIKEY._serialized_start = 1711 + _APIKEY._serialized_end = 1964 + _APIKEYSPEC._serialized_start = 1967 + _APIKEYSPEC._serialized_end = 2127 +# @@protoc_insertion_point(module_scope) diff --git a/temporalio/api/cloud/identity/v1/message_pb2.pyi b/temporalio/api/cloud/identity/v1/message_pb2.pyi new file mode 100644 index 00000000..1c8437f5 --- /dev/null +++ b/temporalio/api/cloud/identity/v1/message_pb2.pyi @@ -0,0 +1,626 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" + +import builtins +import collections.abc +import sys + +import google.protobuf.descriptor +import google.protobuf.internal.containers +import google.protobuf.message +import google.protobuf.timestamp_pb2 + +if sys.version_info >= (3, 8): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class AccountAccess(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ROLE_FIELD_NUMBER: builtins.int + role: builtins.str + """The role on the account, should be one of [admin, developer, read] + admin - gives full access the account, including users and namespaces + developer - gives access to create namespaces on the account + read - gives read only access to the account + """ + def __init__( + self, + *, + role: builtins.str = ..., + ) -> None: ... + def ClearField( + self, field_name: typing_extensions.Literal["role", b"role"] + ) -> None: ... + +global___AccountAccess = AccountAccess + +class NamespaceAccess(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + PERMISSION_FIELD_NUMBER: builtins.int + permission: builtins.str + """The permission to the namespace, should be one of [admin, write, read] + admin - gives full access to the namespace, including assigning namespace access to other users + write - gives write access to the namespace configuration and workflows within the namespace + read - gives read only access to the namespace configuration and workflows within the namespace + """ + def __init__( + self, + *, + permission: builtins.str = ..., + ) -> None: ... + def ClearField( + self, field_name: typing_extensions.Literal["permission", b"permission"] + ) -> None: ... + +global___NamespaceAccess = NamespaceAccess + +class Access(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class NamespaceAccessesEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.str + @property + def value(self) -> global___NamespaceAccess: ... + def __init__( + self, + *, + key: builtins.str = ..., + value: global___NamespaceAccess | None = ..., + ) -> None: ... + def HasField( + self, field_name: typing_extensions.Literal["value", b"value"] + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal["key", b"key", "value", b"value"], + ) -> None: ... + + ACCOUNT_ACCESS_FIELD_NUMBER: builtins.int + NAMESPACE_ACCESSES_FIELD_NUMBER: builtins.int + @property + def account_access(self) -> global___AccountAccess: + """The account access""" + @property + def namespace_accesses( + self, + ) -> google.protobuf.internal.containers.MessageMap[ + builtins.str, global___NamespaceAccess + ]: + """The map of namespace accesses + The key is the namespace name and the value is the access to the namespace + """ + def __init__( + self, + *, + account_access: global___AccountAccess | None = ..., + namespace_accesses: collections.abc.Mapping[ + builtins.str, global___NamespaceAccess + ] + | None = ..., + ) -> None: ... + def HasField( + self, field_name: typing_extensions.Literal["account_access", b"account_access"] + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "account_access", + b"account_access", + "namespace_accesses", + b"namespace_accesses", + ], + ) -> None: ... + +global___Access = Access + +class UserSpec(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + EMAIL_FIELD_NUMBER: builtins.int + ACCESS_FIELD_NUMBER: builtins.int + email: builtins.str + """The email address associated to the user""" + @property + def access(self) -> global___Access: + """The access to assigned to the user""" + def __init__( + self, + *, + email: builtins.str = ..., + access: global___Access | None = ..., + ) -> None: ... + def HasField( + self, field_name: typing_extensions.Literal["access", b"access"] + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal["access", b"access", "email", b"email"], + ) -> None: ... + +global___UserSpec = UserSpec + +class Invitation(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + CREATED_TIME_FIELD_NUMBER: builtins.int + EXPIRED_TIME_FIELD_NUMBER: builtins.int + @property + def created_time(self) -> google.protobuf.timestamp_pb2.Timestamp: + """The date and time when the user was created""" + @property + def expired_time(self) -> google.protobuf.timestamp_pb2.Timestamp: + """The date and time when the invitation expires or has expired""" + def __init__( + self, + *, + created_time: google.protobuf.timestamp_pb2.Timestamp | None = ..., + expired_time: google.protobuf.timestamp_pb2.Timestamp | None = ..., + ) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal[ + "created_time", b"created_time", "expired_time", b"expired_time" + ], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "created_time", b"created_time", "expired_time", b"expired_time" + ], + ) -> None: ... + +global___Invitation = Invitation + +class User(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ID_FIELD_NUMBER: builtins.int + RESOURCE_VERSION_FIELD_NUMBER: builtins.int + SPEC_FIELD_NUMBER: builtins.int + STATE_FIELD_NUMBER: builtins.int + ASYNC_OPERATION_ID_FIELD_NUMBER: builtins.int + INVITATION_FIELD_NUMBER: builtins.int + CREATED_TIME_FIELD_NUMBER: builtins.int + LAST_MODIFIED_TIME_FIELD_NUMBER: builtins.int + id: builtins.str + """The id of the user""" + resource_version: builtins.str + """The current version of the user specification + The next update operation will have to include this version + """ + @property + def spec(self) -> global___UserSpec: + """The user specification""" + state: builtins.str + """The current state of the user""" + async_operation_id: builtins.str + """The id of the async operation that is creating/updating/deleting the user, if any""" + @property + def invitation(self) -> global___Invitation: + """The details of the open invitation sent to the user, if any""" + @property + def created_time(self) -> google.protobuf.timestamp_pb2.Timestamp: + """The date and time when the user was created""" + @property + def last_modified_time(self) -> google.protobuf.timestamp_pb2.Timestamp: + """The date and time when the user was last modified + Will not be set if the user has never been modified + """ + def __init__( + self, + *, + id: builtins.str = ..., + resource_version: builtins.str = ..., + spec: global___UserSpec | None = ..., + state: builtins.str = ..., + async_operation_id: builtins.str = ..., + invitation: global___Invitation | None = ..., + created_time: google.protobuf.timestamp_pb2.Timestamp | None = ..., + last_modified_time: google.protobuf.timestamp_pb2.Timestamp | None = ..., + ) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal[ + "created_time", + b"created_time", + "invitation", + b"invitation", + "last_modified_time", + b"last_modified_time", + "spec", + b"spec", + ], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "async_operation_id", + b"async_operation_id", + "created_time", + b"created_time", + "id", + b"id", + "invitation", + b"invitation", + "last_modified_time", + b"last_modified_time", + "resource_version", + b"resource_version", + "spec", + b"spec", + "state", + b"state", + ], + ) -> None: ... + +global___User = User + +class UserGroupSpec(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + NAME_FIELD_NUMBER: builtins.int + ACCESS_FIELD_NUMBER: builtins.int + name: builtins.str + """The name of the group as defined in the customer's IdP (e.g. Google group name in Google Workspace) + The name is immutable. Once set, it cannot be changed + """ + @property + def access(self) -> global___Access: + """The access assigned to the group""" + def __init__( + self, + *, + name: builtins.str = ..., + access: global___Access | None = ..., + ) -> None: ... + def HasField( + self, field_name: typing_extensions.Literal["access", b"access"] + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal["access", b"access", "name", b"name"], + ) -> None: ... + +global___UserGroupSpec = UserGroupSpec + +class UserGroup(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ID_FIELD_NUMBER: builtins.int + RESOURCE_VERSION_FIELD_NUMBER: builtins.int + SPEC_FIELD_NUMBER: builtins.int + STATE_FIELD_NUMBER: builtins.int + ASYNC_OPERATION_ID_FIELD_NUMBER: builtins.int + CREATED_TIME_FIELD_NUMBER: builtins.int + LAST_MODIFIED_TIME_FIELD_NUMBER: builtins.int + id: builtins.str + """The id of the group""" + resource_version: builtins.str + """The current version of the group specification + The next update operation will have to include this version + """ + @property + def spec(self) -> global___UserGroupSpec: + """The group specification""" + state: builtins.str + """The current state of the group""" + async_operation_id: builtins.str + """The id of the async operation that is creating/updating/deleting the group, if any""" + @property + def created_time(self) -> google.protobuf.timestamp_pb2.Timestamp: + """The date and time when the group was created""" + @property + def last_modified_time(self) -> google.protobuf.timestamp_pb2.Timestamp: + """The date and time when the group was last modified + Will not be set if the group has never been modified + """ + def __init__( + self, + *, + id: builtins.str = ..., + resource_version: builtins.str = ..., + spec: global___UserGroupSpec | None = ..., + state: builtins.str = ..., + async_operation_id: builtins.str = ..., + created_time: google.protobuf.timestamp_pb2.Timestamp | None = ..., + last_modified_time: google.protobuf.timestamp_pb2.Timestamp | None = ..., + ) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal[ + "created_time", + b"created_time", + "last_modified_time", + b"last_modified_time", + "spec", + b"spec", + ], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "async_operation_id", + b"async_operation_id", + "created_time", + b"created_time", + "id", + b"id", + "last_modified_time", + b"last_modified_time", + "resource_version", + b"resource_version", + "spec", + b"spec", + "state", + b"state", + ], + ) -> None: ... + +global___UserGroup = UserGroup + +class ServiceAccount(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ID_FIELD_NUMBER: builtins.int + RESOURCE_VERSION_FIELD_NUMBER: builtins.int + SPEC_FIELD_NUMBER: builtins.int + STATE_FIELD_NUMBER: builtins.int + ASYNC_OPERATION_ID_FIELD_NUMBER: builtins.int + CREATED_TIME_FIELD_NUMBER: builtins.int + LAST_MODIFIED_TIME_FIELD_NUMBER: builtins.int + id: builtins.str + """The id of the service account.""" + resource_version: builtins.str + """The current version of the service account specification. + The next update operation will have to include this version. + """ + @property + def spec(self) -> global___ServiceAccountSpec: + """The service account specification.""" + state: builtins.str + """The current state of the service account. + Possible values: activating, activationfailed, active, updating, updatefailed, deleting, deletefailed, deleted, suspending, suspendfailed, suspended. + For any failed state, reach out to Temporal Cloud support for remediation. + """ + async_operation_id: builtins.str + """The id of the async operation that is creating/updating/deleting the service account, if any.""" + @property + def created_time(self) -> google.protobuf.timestamp_pb2.Timestamp: + """The date and time when the service account was created.""" + @property + def last_modified_time(self) -> google.protobuf.timestamp_pb2.Timestamp: + """The date and time when the service account was last modified + Will not be set if the service account has never been modified. + """ + def __init__( + self, + *, + id: builtins.str = ..., + resource_version: builtins.str = ..., + spec: global___ServiceAccountSpec | None = ..., + state: builtins.str = ..., + async_operation_id: builtins.str = ..., + created_time: google.protobuf.timestamp_pb2.Timestamp | None = ..., + last_modified_time: google.protobuf.timestamp_pb2.Timestamp | None = ..., + ) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal[ + "created_time", + b"created_time", + "last_modified_time", + b"last_modified_time", + "spec", + b"spec", + ], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "async_operation_id", + b"async_operation_id", + "created_time", + b"created_time", + "id", + b"id", + "last_modified_time", + b"last_modified_time", + "resource_version", + b"resource_version", + "spec", + b"spec", + "state", + b"state", + ], + ) -> None: ... + +global___ServiceAccount = ServiceAccount + +class ServiceAccountSpec(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + NAME_FIELD_NUMBER: builtins.int + ACCESS_FIELD_NUMBER: builtins.int + DESCRIPTION_FIELD_NUMBER: builtins.int + name: builtins.str + """The name associated with the service account. + The name is mutable, but must be unique across all your active service accounts. + """ + @property + def access(self) -> global___Access: + """The access assigned to the service account. + The access is mutable. + """ + description: builtins.str + """The description associated with the service account - optional. + The description is mutable. + """ + def __init__( + self, + *, + name: builtins.str = ..., + access: global___Access | None = ..., + description: builtins.str = ..., + ) -> None: ... + def HasField( + self, field_name: typing_extensions.Literal["access", b"access"] + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "access", b"access", "description", b"description", "name", b"name" + ], + ) -> None: ... + +global___ServiceAccountSpec = ServiceAccountSpec + +class ApiKey(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ID_FIELD_NUMBER: builtins.int + RESOURCE_VERSION_FIELD_NUMBER: builtins.int + SPEC_FIELD_NUMBER: builtins.int + STATE_FIELD_NUMBER: builtins.int + ASYNC_OPERATION_ID_FIELD_NUMBER: builtins.int + CREATED_TIME_FIELD_NUMBER: builtins.int + LAST_MODIFIED_TIME_FIELD_NUMBER: builtins.int + id: builtins.str + """The id of the API Key.""" + resource_version: builtins.str + """The current version of the API key specification. + The next update operation will have to include this version. + """ + @property + def spec(self) -> global___ApiKeySpec: + """The API key specification.""" + state: builtins.str + """The current state of the API key. + Possible values: activating, activationfailed, active, updating, updatefailed, deleting, deletefailed, deleted, suspending, suspendfailed, suspended. + For any failed state, reach out to Temporal Cloud support for remediation. + """ + async_operation_id: builtins.str + """The id of the async operation that is creating/updating/deleting the API key, if any.""" + @property + def created_time(self) -> google.protobuf.timestamp_pb2.Timestamp: + """The date and time when the API key was created.""" + @property + def last_modified_time(self) -> google.protobuf.timestamp_pb2.Timestamp: + """The date and time when the API key was last modified. + Will not be set if the API key has never been modified. + """ + def __init__( + self, + *, + id: builtins.str = ..., + resource_version: builtins.str = ..., + spec: global___ApiKeySpec | None = ..., + state: builtins.str = ..., + async_operation_id: builtins.str = ..., + created_time: google.protobuf.timestamp_pb2.Timestamp | None = ..., + last_modified_time: google.protobuf.timestamp_pb2.Timestamp | None = ..., + ) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal[ + "created_time", + b"created_time", + "last_modified_time", + b"last_modified_time", + "spec", + b"spec", + ], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "async_operation_id", + b"async_operation_id", + "created_time", + b"created_time", + "id", + b"id", + "last_modified_time", + b"last_modified_time", + "resource_version", + b"resource_version", + "spec", + b"spec", + "state", + b"state", + ], + ) -> None: ... + +global___ApiKey = ApiKey + +class ApiKeySpec(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + OWNER_ID_FIELD_NUMBER: builtins.int + OWNER_TYPE_FIELD_NUMBER: builtins.int + DISPLAY_NAME_FIELD_NUMBER: builtins.int + DESCRIPTION_FIELD_NUMBER: builtins.int + EXPIRY_TIME_FIELD_NUMBER: builtins.int + DISABLED_FIELD_NUMBER: builtins.int + owner_id: builtins.str + """The id of the owner to create the API key for. + The owner id is immutable. Once set during creation, it cannot be changed. + The owner id is the id of the user when the owner type is 'user'. + The owner id is the id of the service account when the owner type is 'service-account'. + """ + owner_type: builtins.str + """The type of the owner to create the API key for. + The owner type is immutable. Once set during creation, it cannot be changed. + Possible values: user, service-account. + """ + display_name: builtins.str + """The display name of the API key.""" + description: builtins.str + """The description of the API key.""" + @property + def expiry_time(self) -> google.protobuf.timestamp_pb2.Timestamp: + """The expiry time of the API key.""" + disabled: builtins.bool + """True if the API key is disabled.""" + def __init__( + self, + *, + owner_id: builtins.str = ..., + owner_type: builtins.str = ..., + display_name: builtins.str = ..., + description: builtins.str = ..., + expiry_time: google.protobuf.timestamp_pb2.Timestamp | None = ..., + disabled: builtins.bool = ..., + ) -> None: ... + def HasField( + self, field_name: typing_extensions.Literal["expiry_time", b"expiry_time"] + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "description", + b"description", + "disabled", + b"disabled", + "display_name", + b"display_name", + "expiry_time", + b"expiry_time", + "owner_id", + b"owner_id", + "owner_type", + b"owner_type", + ], + ) -> None: ... + +global___ApiKeySpec = ApiKeySpec diff --git a/temporalio/api/cloud/namespace/__init__.py b/temporalio/api/cloud/namespace/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/temporalio/api/cloud/namespace/v1/__init__.py b/temporalio/api/cloud/namespace/v1/__init__.py new file mode 100644 index 00000000..ba2de1fe --- /dev/null +++ b/temporalio/api/cloud/namespace/v1/__init__.py @@ -0,0 +1,27 @@ +from .message_pb2 import ( + ApiKeyAuthSpec, + AWSPrivateLinkInfo, + CertificateFilterSpec, + CodecServerSpec, + Endpoints, + Limits, + MtlsAuthSpec, + Namespace, + NamespaceRegionStatus, + NamespaceSpec, + PrivateConnectivity, +) + +__all__ = [ + "AWSPrivateLinkInfo", + "ApiKeyAuthSpec", + "CertificateFilterSpec", + "CodecServerSpec", + "Endpoints", + "Limits", + "MtlsAuthSpec", + "Namespace", + "NamespaceRegionStatus", + "NamespaceSpec", + "PrivateConnectivity", +] diff --git a/temporalio/api/cloud/namespace/v1/message_pb2.py b/temporalio/api/cloud/namespace/v1/message_pb2.py new file mode 100644 index 00000000..05329795 --- /dev/null +++ b/temporalio/api/cloud/namespace/v1/message_pb2.py @@ -0,0 +1,213 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: temporal/api/cloud/namespace/v1/message.proto +"""Generated protocol buffer code.""" + +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database + +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( + b'\n-temporal/api/cloud/namespace/v1/message.proto\x12\x1ftemporal.api.cloud.namespace.v1\x1a\x1fgoogle/protobuf/timestamp.proto"\x81\x01\n\x15\x43\x65rtificateFilterSpec\x12\x13\n\x0b\x63ommon_name\x18\x01 \x01(\t\x12\x14\n\x0corganization\x18\x02 \x01(\t\x12\x1b\n\x13organizational_unit\x18\x03 \x01(\t\x12 \n\x18subject_alternative_name\x18\x04 \x01(\t"\x90\x01\n\x0cMtlsAuthSpec\x12\x1a\n\x12\x61\x63\x63\x65pted_client_ca\x18\x01 \x01(\t\x12S\n\x13\x63\x65rtificate_filters\x18\x02 \x03(\x0b\x32\x36.temporal.api.cloud.namespace.v1.CertificateFilterSpec\x12\x0f\n\x07\x65nabled\x18\x03 \x01(\x08"!\n\x0e\x41piKeyAuthSpec\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08"h\n\x0f\x43odecServerSpec\x12\x10\n\x08\x65ndpoint\x18\x01 \x01(\t\x12\x19\n\x11pass_access_token\x18\x02 \x01(\x08\x12(\n include_cross_origin_credentials\x18\x03 \x01(\x08"\xc4\x03\n\rNamespaceSpec\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07regions\x18\x02 \x03(\t\x12\x16\n\x0eretention_days\x18\x03 \x01(\x05\x12@\n\tmtls_auth\x18\x04 \x01(\x0b\x32-.temporal.api.cloud.namespace.v1.MtlsAuthSpec\x12\x45\n\x0c\x61pi_key_auth\x18\x07 \x01(\x0b\x32/.temporal.api.cloud.namespace.v1.ApiKeyAuthSpec\x12l\n\x18\x63ustom_search_attributes\x18\x05 \x03(\x0b\x32J.temporal.api.cloud.namespace.v1.NamespaceSpec.CustomSearchAttributesEntry\x12\x46\n\x0c\x63odec_server\x18\x06 \x01(\x0b\x32\x30.temporal.api.cloud.namespace.v1.CodecServerSpec\x1a=\n\x1b\x43ustomSearchAttributesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01"Q\n\tEndpoints\x12\x13\n\x0bweb_address\x18\x01 \x01(\t\x12\x19\n\x11mtls_grpc_address\x18\x02 \x01(\t\x12\x14\n\x0cgrpc_address\x18\x03 \x01(\t"*\n\x06Limits\x12 \n\x18\x61\x63tions_per_second_limit\x18\x01 \x01(\x05"X\n\x12\x41WSPrivateLinkInfo\x12\x1e\n\x16\x61llowed_principal_arns\x18\x01 \x03(\t\x12"\n\x1avpc_endpoint_service_names\x18\x02 \x03(\t"t\n\x13PrivateConnectivity\x12\x0e\n\x06region\x18\x01 \x01(\t\x12M\n\x10\x61ws_private_link\x18\x02 \x01(\x0b\x32\x33.temporal.api.cloud.namespace.v1.AWSPrivateLinkInfo"\xb2\x05\n\tNamespace\x12\x11\n\tnamespace\x18\x01 \x01(\t\x12\x18\n\x10resource_version\x18\x02 \x01(\t\x12<\n\x04spec\x18\x03 \x01(\x0b\x32..temporal.api.cloud.namespace.v1.NamespaceSpec\x12\r\n\x05state\x18\x04 \x01(\t\x12\x1a\n\x12\x61sync_operation_id\x18\x05 \x01(\t\x12=\n\tendpoints\x18\x06 \x01(\x0b\x32*.temporal.api.cloud.namespace.v1.Endpoints\x12\x15\n\ractive_region\x18\x07 \x01(\t\x12\x37\n\x06limits\x18\x08 \x01(\x0b\x32\'.temporal.api.cloud.namespace.v1.Limits\x12T\n\x16private_connectivities\x18\t \x03(\x0b\x32\x34.temporal.api.cloud.namespace.v1.PrivateConnectivity\x12\x30\n\x0c\x63reated_time\x18\n \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x36\n\x12last_modified_time\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12S\n\rregion_status\x18\x0c \x03(\x0b\x32<.temporal.api.cloud.namespace.v1.Namespace.RegionStatusEntry\x1ak\n\x11RegionStatusEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x45\n\x05value\x18\x02 \x01(\x0b\x32\x36.temporal.api.cloud.namespace.v1.NamespaceRegionStatus:\x02\x38\x01"B\n\x15NamespaceRegionStatus\x12\r\n\x05state\x18\x01 \x01(\t\x12\x1a\n\x12\x61sync_operation_id\x18\x02 \x01(\tB\xb1\x01\n"io.temporal.api.cloud.namespace.v1B\x0cMessageProtoP\x01Z/go.temporal.io/api/cloud/namespace/v1;namespace\xaa\x02!Temporalio.Api.Cloud.Namespace.V1\xea\x02%Temporalio::Api::Cloud::Namespace::V1b\x06proto3' +) + + +_CERTIFICATEFILTERSPEC = DESCRIPTOR.message_types_by_name["CertificateFilterSpec"] +_MTLSAUTHSPEC = DESCRIPTOR.message_types_by_name["MtlsAuthSpec"] +_APIKEYAUTHSPEC = DESCRIPTOR.message_types_by_name["ApiKeyAuthSpec"] +_CODECSERVERSPEC = DESCRIPTOR.message_types_by_name["CodecServerSpec"] +_NAMESPACESPEC = DESCRIPTOR.message_types_by_name["NamespaceSpec"] +_NAMESPACESPEC_CUSTOMSEARCHATTRIBUTESENTRY = _NAMESPACESPEC.nested_types_by_name[ + "CustomSearchAttributesEntry" +] +_ENDPOINTS = DESCRIPTOR.message_types_by_name["Endpoints"] +_LIMITS = DESCRIPTOR.message_types_by_name["Limits"] +_AWSPRIVATELINKINFO = DESCRIPTOR.message_types_by_name["AWSPrivateLinkInfo"] +_PRIVATECONNECTIVITY = DESCRIPTOR.message_types_by_name["PrivateConnectivity"] +_NAMESPACE = DESCRIPTOR.message_types_by_name["Namespace"] +_NAMESPACE_REGIONSTATUSENTRY = _NAMESPACE.nested_types_by_name["RegionStatusEntry"] +_NAMESPACEREGIONSTATUS = DESCRIPTOR.message_types_by_name["NamespaceRegionStatus"] +CertificateFilterSpec = _reflection.GeneratedProtocolMessageType( + "CertificateFilterSpec", + (_message.Message,), + { + "DESCRIPTOR": _CERTIFICATEFILTERSPEC, + "__module__": "temporal.api.cloud.namespace.v1.message_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.namespace.v1.CertificateFilterSpec) + }, +) +_sym_db.RegisterMessage(CertificateFilterSpec) + +MtlsAuthSpec = _reflection.GeneratedProtocolMessageType( + "MtlsAuthSpec", + (_message.Message,), + { + "DESCRIPTOR": _MTLSAUTHSPEC, + "__module__": "temporal.api.cloud.namespace.v1.message_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.namespace.v1.MtlsAuthSpec) + }, +) +_sym_db.RegisterMessage(MtlsAuthSpec) + +ApiKeyAuthSpec = _reflection.GeneratedProtocolMessageType( + "ApiKeyAuthSpec", + (_message.Message,), + { + "DESCRIPTOR": _APIKEYAUTHSPEC, + "__module__": "temporal.api.cloud.namespace.v1.message_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.namespace.v1.ApiKeyAuthSpec) + }, +) +_sym_db.RegisterMessage(ApiKeyAuthSpec) + +CodecServerSpec = _reflection.GeneratedProtocolMessageType( + "CodecServerSpec", + (_message.Message,), + { + "DESCRIPTOR": _CODECSERVERSPEC, + "__module__": "temporal.api.cloud.namespace.v1.message_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.namespace.v1.CodecServerSpec) + }, +) +_sym_db.RegisterMessage(CodecServerSpec) + +NamespaceSpec = _reflection.GeneratedProtocolMessageType( + "NamespaceSpec", + (_message.Message,), + { + "CustomSearchAttributesEntry": _reflection.GeneratedProtocolMessageType( + "CustomSearchAttributesEntry", + (_message.Message,), + { + "DESCRIPTOR": _NAMESPACESPEC_CUSTOMSEARCHATTRIBUTESENTRY, + "__module__": "temporal.api.cloud.namespace.v1.message_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.namespace.v1.NamespaceSpec.CustomSearchAttributesEntry) + }, + ), + "DESCRIPTOR": _NAMESPACESPEC, + "__module__": "temporal.api.cloud.namespace.v1.message_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.namespace.v1.NamespaceSpec) + }, +) +_sym_db.RegisterMessage(NamespaceSpec) +_sym_db.RegisterMessage(NamespaceSpec.CustomSearchAttributesEntry) + +Endpoints = _reflection.GeneratedProtocolMessageType( + "Endpoints", + (_message.Message,), + { + "DESCRIPTOR": _ENDPOINTS, + "__module__": "temporal.api.cloud.namespace.v1.message_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.namespace.v1.Endpoints) + }, +) +_sym_db.RegisterMessage(Endpoints) + +Limits = _reflection.GeneratedProtocolMessageType( + "Limits", + (_message.Message,), + { + "DESCRIPTOR": _LIMITS, + "__module__": "temporal.api.cloud.namespace.v1.message_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.namespace.v1.Limits) + }, +) +_sym_db.RegisterMessage(Limits) + +AWSPrivateLinkInfo = _reflection.GeneratedProtocolMessageType( + "AWSPrivateLinkInfo", + (_message.Message,), + { + "DESCRIPTOR": _AWSPRIVATELINKINFO, + "__module__": "temporal.api.cloud.namespace.v1.message_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.namespace.v1.AWSPrivateLinkInfo) + }, +) +_sym_db.RegisterMessage(AWSPrivateLinkInfo) + +PrivateConnectivity = _reflection.GeneratedProtocolMessageType( + "PrivateConnectivity", + (_message.Message,), + { + "DESCRIPTOR": _PRIVATECONNECTIVITY, + "__module__": "temporal.api.cloud.namespace.v1.message_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.namespace.v1.PrivateConnectivity) + }, +) +_sym_db.RegisterMessage(PrivateConnectivity) + +Namespace = _reflection.GeneratedProtocolMessageType( + "Namespace", + (_message.Message,), + { + "RegionStatusEntry": _reflection.GeneratedProtocolMessageType( + "RegionStatusEntry", + (_message.Message,), + { + "DESCRIPTOR": _NAMESPACE_REGIONSTATUSENTRY, + "__module__": "temporal.api.cloud.namespace.v1.message_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.namespace.v1.Namespace.RegionStatusEntry) + }, + ), + "DESCRIPTOR": _NAMESPACE, + "__module__": "temporal.api.cloud.namespace.v1.message_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.namespace.v1.Namespace) + }, +) +_sym_db.RegisterMessage(Namespace) +_sym_db.RegisterMessage(Namespace.RegionStatusEntry) + +NamespaceRegionStatus = _reflection.GeneratedProtocolMessageType( + "NamespaceRegionStatus", + (_message.Message,), + { + "DESCRIPTOR": _NAMESPACEREGIONSTATUS, + "__module__": "temporal.api.cloud.namespace.v1.message_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.namespace.v1.NamespaceRegionStatus) + }, +) +_sym_db.RegisterMessage(NamespaceRegionStatus) + +if _descriptor._USE_C_DESCRIPTORS == False: + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = b'\n"io.temporal.api.cloud.namespace.v1B\014MessageProtoP\001Z/go.temporal.io/api/cloud/namespace/v1;namespace\252\002!Temporalio.Api.Cloud.Namespace.V1\352\002%Temporalio::Api::Cloud::Namespace::V1' + _NAMESPACESPEC_CUSTOMSEARCHATTRIBUTESENTRY._options = None + _NAMESPACESPEC_CUSTOMSEARCHATTRIBUTESENTRY._serialized_options = b"8\001" + _NAMESPACE_REGIONSTATUSENTRY._options = None + _NAMESPACE_REGIONSTATUSENTRY._serialized_options = b"8\001" + _CERTIFICATEFILTERSPEC._serialized_start = 116 + _CERTIFICATEFILTERSPEC._serialized_end = 245 + _MTLSAUTHSPEC._serialized_start = 248 + _MTLSAUTHSPEC._serialized_end = 392 + _APIKEYAUTHSPEC._serialized_start = 394 + _APIKEYAUTHSPEC._serialized_end = 427 + _CODECSERVERSPEC._serialized_start = 429 + _CODECSERVERSPEC._serialized_end = 533 + _NAMESPACESPEC._serialized_start = 536 + _NAMESPACESPEC._serialized_end = 988 + _NAMESPACESPEC_CUSTOMSEARCHATTRIBUTESENTRY._serialized_start = 927 + _NAMESPACESPEC_CUSTOMSEARCHATTRIBUTESENTRY._serialized_end = 988 + _ENDPOINTS._serialized_start = 990 + _ENDPOINTS._serialized_end = 1071 + _LIMITS._serialized_start = 1073 + _LIMITS._serialized_end = 1115 + _AWSPRIVATELINKINFO._serialized_start = 1117 + _AWSPRIVATELINKINFO._serialized_end = 1205 + _PRIVATECONNECTIVITY._serialized_start = 1207 + _PRIVATECONNECTIVITY._serialized_end = 1323 + _NAMESPACE._serialized_start = 1326 + _NAMESPACE._serialized_end = 2016 + _NAMESPACE_REGIONSTATUSENTRY._serialized_start = 1909 + _NAMESPACE_REGIONSTATUSENTRY._serialized_end = 2016 + _NAMESPACEREGIONSTATUS._serialized_start = 2018 + _NAMESPACEREGIONSTATUS._serialized_end = 2084 +# @@protoc_insertion_point(module_scope) diff --git a/temporalio/api/cloud/namespace/v1/message_pb2.pyi b/temporalio/api/cloud/namespace/v1/message_pb2.pyi new file mode 100644 index 00000000..d22c79e8 --- /dev/null +++ b/temporalio/api/cloud/namespace/v1/message_pb2.pyi @@ -0,0 +1,585 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" + +import builtins +import collections.abc +import sys + +import google.protobuf.descriptor +import google.protobuf.internal.containers +import google.protobuf.message +import google.protobuf.timestamp_pb2 + +if sys.version_info >= (3, 8): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class CertificateFilterSpec(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + COMMON_NAME_FIELD_NUMBER: builtins.int + ORGANIZATION_FIELD_NUMBER: builtins.int + ORGANIZATIONAL_UNIT_FIELD_NUMBER: builtins.int + SUBJECT_ALTERNATIVE_NAME_FIELD_NUMBER: builtins.int + common_name: builtins.str + """The common_name in the certificate. + Optional, default is empty. + """ + organization: builtins.str + """The organization in the certificate. + Optional, default is empty. + """ + organizational_unit: builtins.str + """The organizational_unit in the certificate. + Optional, default is empty. + """ + subject_alternative_name: builtins.str + """The subject_alternative_name in the certificate. + Optional, default is empty. + """ + def __init__( + self, + *, + common_name: builtins.str = ..., + organization: builtins.str = ..., + organizational_unit: builtins.str = ..., + subject_alternative_name: builtins.str = ..., + ) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "common_name", + b"common_name", + "organization", + b"organization", + "organizational_unit", + b"organizational_unit", + "subject_alternative_name", + b"subject_alternative_name", + ], + ) -> None: ... + +global___CertificateFilterSpec = CertificateFilterSpec + +class MtlsAuthSpec(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ACCEPTED_CLIENT_CA_FIELD_NUMBER: builtins.int + CERTIFICATE_FILTERS_FIELD_NUMBER: builtins.int + ENABLED_FIELD_NUMBER: builtins.int + accepted_client_ca: builtins.str + """The base64 encoded ca cert(s) in PEM format that the clients can use for authentication and authorization. + This must only be one value, but the CA can have a chain. + + (-- api-linter: core::0140::base64=disabled --) + """ + @property + def certificate_filters( + self, + ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ + global___CertificateFilterSpec + ]: + """Certificate filters which, if specified, only allow connections from client certificates whose distinguished name properties match at least one of the filters. + This allows limiting access to specific end-entity certificates. + Optional, default is empty. + """ + enabled: builtins.bool + """Flag to enable mTLS auth (default: disabled). + Note: disabling mTLS auth will cause existing mTLS connections to fail. + temporal:versioning:min_version=2024-05-13-00 + """ + def __init__( + self, + *, + accepted_client_ca: builtins.str = ..., + certificate_filters: collections.abc.Iterable[global___CertificateFilterSpec] + | None = ..., + enabled: builtins.bool = ..., + ) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "accepted_client_ca", + b"accepted_client_ca", + "certificate_filters", + b"certificate_filters", + "enabled", + b"enabled", + ], + ) -> None: ... + +global___MtlsAuthSpec = MtlsAuthSpec + +class ApiKeyAuthSpec(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ENABLED_FIELD_NUMBER: builtins.int + enabled: builtins.bool + """Flag to enable API key auth (default: disabled). + Note: disabling API key auth will cause existing API key connections to fail. + """ + def __init__( + self, + *, + enabled: builtins.bool = ..., + ) -> None: ... + def ClearField( + self, field_name: typing_extensions.Literal["enabled", b"enabled"] + ) -> None: ... + +global___ApiKeyAuthSpec = ApiKeyAuthSpec + +class CodecServerSpec(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ENDPOINT_FIELD_NUMBER: builtins.int + PASS_ACCESS_TOKEN_FIELD_NUMBER: builtins.int + INCLUDE_CROSS_ORIGIN_CREDENTIALS_FIELD_NUMBER: builtins.int + endpoint: builtins.str + """The codec server endpoint.""" + pass_access_token: builtins.bool + """Whether to pass the user access token with your endpoint.""" + include_cross_origin_credentials: builtins.bool + """Whether to include cross-origin credentials.""" + def __init__( + self, + *, + endpoint: builtins.str = ..., + pass_access_token: builtins.bool = ..., + include_cross_origin_credentials: builtins.bool = ..., + ) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "endpoint", + b"endpoint", + "include_cross_origin_credentials", + b"include_cross_origin_credentials", + "pass_access_token", + b"pass_access_token", + ], + ) -> None: ... + +global___CodecServerSpec = CodecServerSpec + +class NamespaceSpec(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class CustomSearchAttributesEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.str + value: builtins.str + def __init__( + self, + *, + key: builtins.str = ..., + value: builtins.str = ..., + ) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal["key", b"key", "value", b"value"], + ) -> None: ... + + NAME_FIELD_NUMBER: builtins.int + REGIONS_FIELD_NUMBER: builtins.int + RETENTION_DAYS_FIELD_NUMBER: builtins.int + MTLS_AUTH_FIELD_NUMBER: builtins.int + API_KEY_AUTH_FIELD_NUMBER: builtins.int + CUSTOM_SEARCH_ATTRIBUTES_FIELD_NUMBER: builtins.int + CODEC_SERVER_FIELD_NUMBER: builtins.int + name: builtins.str + """The name to use for the namespace. + This will create a namespace that's available at '..tmprl.cloud:7233'. + The name is immutable. Once set, it cannot be changed. + """ + @property + def regions( + self, + ) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + """The ids of the regions where the namespace should be available. + The GetRegions API can be used to get the list of valid region ids. + Specifying more than one region makes the namespace "global", which is currently a preview only feature with restricted access. + Please reach out to Temporal support for more information on global namespaces. + When provisioned the global namespace will be active on the first region in the list and passive on the rest. + Number of supported regions is 2. + The regions is immutable. Once set, it cannot be changed. + Example: ["aws-us-west-2"]. + """ + retention_days: builtins.int + """The number of days the workflows data will be retained for. + Changes to the retention period may impact your storage costs. + Any changes to the retention period will be applied to all new running workflows. + """ + @property + def mtls_auth(self) -> global___MtlsAuthSpec: + """The mTLS auth configuration for the namespace. + If unspecified, mTLS will be disabled. + """ + @property + def api_key_auth(self) -> global___ApiKeyAuthSpec: + """The API key auth configuration for the namespace. + If unspecified, API keys will be disabled. + temporal:versioning:min_version=2024-05-13-00 + """ + @property + def custom_search_attributes( + self, + ) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: + """The custom search attributes to use for the namespace. + The name of the attribute is the key and the type is the value. + Supported attribute types: text, keyword, int, double, bool, datetime, keyword_list. + NOTE: currently deleting a search attribute is not supported. + Optional, default is empty. + """ + @property + def codec_server(self) -> global___CodecServerSpec: + """Codec server spec used by UI to decode payloads for all users interacting with this namespace. + Optional, default is unset. + """ + def __init__( + self, + *, + name: builtins.str = ..., + regions: collections.abc.Iterable[builtins.str] | None = ..., + retention_days: builtins.int = ..., + mtls_auth: global___MtlsAuthSpec | None = ..., + api_key_auth: global___ApiKeyAuthSpec | None = ..., + custom_search_attributes: collections.abc.Mapping[builtins.str, builtins.str] + | None = ..., + codec_server: global___CodecServerSpec | None = ..., + ) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal[ + "api_key_auth", + b"api_key_auth", + "codec_server", + b"codec_server", + "mtls_auth", + b"mtls_auth", + ], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "api_key_auth", + b"api_key_auth", + "codec_server", + b"codec_server", + "custom_search_attributes", + b"custom_search_attributes", + "mtls_auth", + b"mtls_auth", + "name", + b"name", + "regions", + b"regions", + "retention_days", + b"retention_days", + ], + ) -> None: ... + +global___NamespaceSpec = NamespaceSpec + +class Endpoints(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + WEB_ADDRESS_FIELD_NUMBER: builtins.int + MTLS_GRPC_ADDRESS_FIELD_NUMBER: builtins.int + GRPC_ADDRESS_FIELD_NUMBER: builtins.int + web_address: builtins.str + """The web UI address.""" + mtls_grpc_address: builtins.str + """The gRPC address for mTLS client connections (may be empty if mTLS is disabled).""" + grpc_address: builtins.str + """The gRPC address for API key client connections (may be empty if API keys are disabled).""" + def __init__( + self, + *, + web_address: builtins.str = ..., + mtls_grpc_address: builtins.str = ..., + grpc_address: builtins.str = ..., + ) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "grpc_address", + b"grpc_address", + "mtls_grpc_address", + b"mtls_grpc_address", + "web_address", + b"web_address", + ], + ) -> None: ... + +global___Endpoints = Endpoints + +class Limits(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ACTIONS_PER_SECOND_LIMIT_FIELD_NUMBER: builtins.int + actions_per_second_limit: builtins.int + """The number of actions per second (APS) that is currently allowed for the namespace. + The namespace may be throttled if its APS exceeds the limit. + """ + def __init__( + self, + *, + actions_per_second_limit: builtins.int = ..., + ) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "actions_per_second_limit", b"actions_per_second_limit" + ], + ) -> None: ... + +global___Limits = Limits + +class AWSPrivateLinkInfo(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ALLOWED_PRINCIPAL_ARNS_FIELD_NUMBER: builtins.int + VPC_ENDPOINT_SERVICE_NAMES_FIELD_NUMBER: builtins.int + @property + def allowed_principal_arns( + self, + ) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + """The list of principal arns that are allowed to access the namespace on the private link.""" + @property + def vpc_endpoint_service_names( + self, + ) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + """The list of vpc endpoint service names that are associated with the namespace.""" + def __init__( + self, + *, + allowed_principal_arns: collections.abc.Iterable[builtins.str] | None = ..., + vpc_endpoint_service_names: collections.abc.Iterable[builtins.str] | None = ..., + ) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "allowed_principal_arns", + b"allowed_principal_arns", + "vpc_endpoint_service_names", + b"vpc_endpoint_service_names", + ], + ) -> None: ... + +global___AWSPrivateLinkInfo = AWSPrivateLinkInfo + +class PrivateConnectivity(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + REGION_FIELD_NUMBER: builtins.int + AWS_PRIVATE_LINK_FIELD_NUMBER: builtins.int + region: builtins.str + """The id of the region where the private connectivity applies.""" + @property + def aws_private_link(self) -> global___AWSPrivateLinkInfo: + """The AWS PrivateLink info. + This will only be set for an aws region. + """ + def __init__( + self, + *, + region: builtins.str = ..., + aws_private_link: global___AWSPrivateLinkInfo | None = ..., + ) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal["aws_private_link", b"aws_private_link"], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "aws_private_link", b"aws_private_link", "region", b"region" + ], + ) -> None: ... + +global___PrivateConnectivity = PrivateConnectivity + +class Namespace(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class RegionStatusEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.str + @property + def value(self) -> global___NamespaceRegionStatus: ... + def __init__( + self, + *, + key: builtins.str = ..., + value: global___NamespaceRegionStatus | None = ..., + ) -> None: ... + def HasField( + self, field_name: typing_extensions.Literal["value", b"value"] + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal["key", b"key", "value", b"value"], + ) -> None: ... + + NAMESPACE_FIELD_NUMBER: builtins.int + RESOURCE_VERSION_FIELD_NUMBER: builtins.int + SPEC_FIELD_NUMBER: builtins.int + STATE_FIELD_NUMBER: builtins.int + ASYNC_OPERATION_ID_FIELD_NUMBER: builtins.int + ENDPOINTS_FIELD_NUMBER: builtins.int + ACTIVE_REGION_FIELD_NUMBER: builtins.int + LIMITS_FIELD_NUMBER: builtins.int + PRIVATE_CONNECTIVITIES_FIELD_NUMBER: builtins.int + CREATED_TIME_FIELD_NUMBER: builtins.int + LAST_MODIFIED_TIME_FIELD_NUMBER: builtins.int + REGION_STATUS_FIELD_NUMBER: builtins.int + namespace: builtins.str + """The namespace identifier.""" + resource_version: builtins.str + """The current version of the namespace specification. + The next update operation will have to include this version. + """ + @property + def spec(self) -> global___NamespaceSpec: + """The namespace specification.""" + state: builtins.str + """The current state of the namespace.""" + async_operation_id: builtins.str + """The id of the async operation that is creating/updating/deleting the namespace, if any.""" + @property + def endpoints(self) -> global___Endpoints: + """The endpoints for the namespace.""" + active_region: builtins.str + """The currently active region for the namespace.""" + @property + def limits(self) -> global___Limits: + """The limits set on the namespace currently.""" + @property + def private_connectivities( + self, + ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ + global___PrivateConnectivity + ]: + """The private connectivities for the namespace, if any.""" + @property + def created_time(self) -> google.protobuf.timestamp_pb2.Timestamp: + """The date and time when the namespace was created.""" + @property + def last_modified_time(self) -> google.protobuf.timestamp_pb2.Timestamp: + """The date and time when the namespace was last modified. + Will not be set if the namespace has never been modified. + """ + @property + def region_status( + self, + ) -> google.protobuf.internal.containers.MessageMap[ + builtins.str, global___NamespaceRegionStatus + ]: + """The status of each region where the namespace is available. + The id of the region is the key and the status is the value of the map. + """ + def __init__( + self, + *, + namespace: builtins.str = ..., + resource_version: builtins.str = ..., + spec: global___NamespaceSpec | None = ..., + state: builtins.str = ..., + async_operation_id: builtins.str = ..., + endpoints: global___Endpoints | None = ..., + active_region: builtins.str = ..., + limits: global___Limits | None = ..., + private_connectivities: collections.abc.Iterable[global___PrivateConnectivity] + | None = ..., + created_time: google.protobuf.timestamp_pb2.Timestamp | None = ..., + last_modified_time: google.protobuf.timestamp_pb2.Timestamp | None = ..., + region_status: collections.abc.Mapping[ + builtins.str, global___NamespaceRegionStatus + ] + | None = ..., + ) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal[ + "created_time", + b"created_time", + "endpoints", + b"endpoints", + "last_modified_time", + b"last_modified_time", + "limits", + b"limits", + "spec", + b"spec", + ], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "active_region", + b"active_region", + "async_operation_id", + b"async_operation_id", + "created_time", + b"created_time", + "endpoints", + b"endpoints", + "last_modified_time", + b"last_modified_time", + "limits", + b"limits", + "namespace", + b"namespace", + "private_connectivities", + b"private_connectivities", + "region_status", + b"region_status", + "resource_version", + b"resource_version", + "spec", + b"spec", + "state", + b"state", + ], + ) -> None: ... + +global___Namespace = Namespace + +class NamespaceRegionStatus(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + STATE_FIELD_NUMBER: builtins.int + ASYNC_OPERATION_ID_FIELD_NUMBER: builtins.int + state: builtins.str + """The current state of the namespace region. + Possible values: adding, active, passive, removing, failed. + For any failed state, reach out to Temporal Cloud support for remediation. + """ + async_operation_id: builtins.str + """The id of the async operation that is making changes to where the namespace is available, if any.""" + def __init__( + self, + *, + state: builtins.str = ..., + async_operation_id: builtins.str = ..., + ) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "async_operation_id", b"async_operation_id", "state", b"state" + ], + ) -> None: ... + +global___NamespaceRegionStatus = NamespaceRegionStatus diff --git a/temporalio/api/cloud/operation/__init__.py b/temporalio/api/cloud/operation/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/temporalio/api/cloud/operation/v1/__init__.py b/temporalio/api/cloud/operation/v1/__init__.py new file mode 100644 index 00000000..41bdf7e4 --- /dev/null +++ b/temporalio/api/cloud/operation/v1/__init__.py @@ -0,0 +1,5 @@ +from .message_pb2 import AsyncOperation + +__all__ = [ + "AsyncOperation", +] diff --git a/temporalio/api/cloud/operation/v1/message_pb2.py b/temporalio/api/cloud/operation/v1/message_pb2.py new file mode 100644 index 00000000..ba088c33 --- /dev/null +++ b/temporalio/api/cloud/operation/v1/message_pb2.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: temporal/api/cloud/operation/v1/message.proto +"""Generated protocol buffer code.""" + +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database + +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import any_pb2 as google_dot_protobuf_dot_any__pb2 +from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 +from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( + b'\n-temporal/api/cloud/operation/v1/message.proto\x12\x1ftemporal.api.cloud.operation.v1\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x19google/protobuf/any.proto"\xa2\x02\n\x0e\x41syncOperation\x12\n\n\x02id\x18\x01 \x01(\t\x12\r\n\x05state\x18\x02 \x01(\t\x12\x31\n\x0e\x63heck_duration\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x16\n\x0eoperation_type\x18\x04 \x01(\t\x12-\n\x0foperation_input\x18\x05 \x01(\x0b\x32\x14.google.protobuf.Any\x12\x16\n\x0e\x66\x61ilure_reason\x18\x06 \x01(\t\x12\x30\n\x0cstarted_time\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x31\n\rfinished_time\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\xb1\x01\n"io.temporal.api.cloud.operation.v1B\x0cMessageProtoP\x01Z/go.temporal.io/api/cloud/operation/v1;operation\xaa\x02!Temporalio.Api.Cloud.Operation.V1\xea\x02%Temporalio::Api::Cloud::Operation::V1b\x06proto3' +) + + +_ASYNCOPERATION = DESCRIPTOR.message_types_by_name["AsyncOperation"] +AsyncOperation = _reflection.GeneratedProtocolMessageType( + "AsyncOperation", + (_message.Message,), + { + "DESCRIPTOR": _ASYNCOPERATION, + "__module__": "temporal.api.cloud.operation.v1.message_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.operation.v1.AsyncOperation) + }, +) +_sym_db.RegisterMessage(AsyncOperation) + +if _descriptor._USE_C_DESCRIPTORS == False: + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = b'\n"io.temporal.api.cloud.operation.v1B\014MessageProtoP\001Z/go.temporal.io/api/cloud/operation/v1;operation\252\002!Temporalio.Api.Cloud.Operation.V1\352\002%Temporalio::Api::Cloud::Operation::V1' + _ASYNCOPERATION._serialized_start = 175 + _ASYNCOPERATION._serialized_end = 465 +# @@protoc_insertion_point(module_scope) diff --git a/temporalio/api/cloud/operation/v1/message_pb2.pyi b/temporalio/api/cloud/operation/v1/message_pb2.pyi new file mode 100644 index 00000000..507a305f --- /dev/null +++ b/temporalio/api/cloud/operation/v1/message_pb2.pyi @@ -0,0 +1,105 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" + +import builtins +import sys + +import google.protobuf.any_pb2 +import google.protobuf.descriptor +import google.protobuf.duration_pb2 +import google.protobuf.message +import google.protobuf.timestamp_pb2 + +if sys.version_info >= (3, 8): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class AsyncOperation(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ID_FIELD_NUMBER: builtins.int + STATE_FIELD_NUMBER: builtins.int + CHECK_DURATION_FIELD_NUMBER: builtins.int + OPERATION_TYPE_FIELD_NUMBER: builtins.int + OPERATION_INPUT_FIELD_NUMBER: builtins.int + FAILURE_REASON_FIELD_NUMBER: builtins.int + STARTED_TIME_FIELD_NUMBER: builtins.int + FINISHED_TIME_FIELD_NUMBER: builtins.int + id: builtins.str + """The operation id""" + state: builtins.str + """The current state of this operation + Possible values are: pending, in_progress, failed, cancelled, fulfilled + """ + @property + def check_duration(self) -> google.protobuf.duration_pb2.Duration: + """The recommended duration to check back for an update in the operation's state""" + operation_type: builtins.str + """The type of operation being performed""" + @property + def operation_input(self) -> google.protobuf.any_pb2.Any: + """The input to the operation being performed + + (-- api-linter: core::0146::any=disabled --) + """ + failure_reason: builtins.str + """If the operation failed, the reason for the failure""" + @property + def started_time(self) -> google.protobuf.timestamp_pb2.Timestamp: + """The date and time when the operation initiated""" + @property + def finished_time(self) -> google.protobuf.timestamp_pb2.Timestamp: + """The date and time when the operation completed""" + def __init__( + self, + *, + id: builtins.str = ..., + state: builtins.str = ..., + check_duration: google.protobuf.duration_pb2.Duration | None = ..., + operation_type: builtins.str = ..., + operation_input: google.protobuf.any_pb2.Any | None = ..., + failure_reason: builtins.str = ..., + started_time: google.protobuf.timestamp_pb2.Timestamp | None = ..., + finished_time: google.protobuf.timestamp_pb2.Timestamp | None = ..., + ) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal[ + "check_duration", + b"check_duration", + "finished_time", + b"finished_time", + "operation_input", + b"operation_input", + "started_time", + b"started_time", + ], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "check_duration", + b"check_duration", + "failure_reason", + b"failure_reason", + "finished_time", + b"finished_time", + "id", + b"id", + "operation_input", + b"operation_input", + "operation_type", + b"operation_type", + "started_time", + b"started_time", + "state", + b"state", + ], + ) -> None: ... + +global___AsyncOperation = AsyncOperation diff --git a/temporalio/api/cloud/region/__init__.py b/temporalio/api/cloud/region/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/temporalio/api/cloud/region/v1/__init__.py b/temporalio/api/cloud/region/v1/__init__.py new file mode 100644 index 00000000..59aeb5d2 --- /dev/null +++ b/temporalio/api/cloud/region/v1/__init__.py @@ -0,0 +1,5 @@ +from .message_pb2 import Region + +__all__ = [ + "Region", +] diff --git a/temporalio/api/cloud/region/v1/message_pb2.py b/temporalio/api/cloud/region/v1/message_pb2.py new file mode 100644 index 00000000..95a1240c --- /dev/null +++ b/temporalio/api/cloud/region/v1/message_pb2.py @@ -0,0 +1,39 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: temporal/api/cloud/region/v1/message.proto +"""Generated protocol buffer code.""" + +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database + +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( + b'\n*temporal/api/cloud/region/v1/message.proto\x12\x1ctemporal.api.cloud.region.v1"]\n\x06Region\x12\n\n\x02id\x18\x01 \x01(\t\x12\x16\n\x0e\x63loud_provider\x18\x02 \x01(\t\x12\x1d\n\x15\x63loud_provider_region\x18\x03 \x01(\t\x12\x10\n\x08location\x18\x04 \x01(\tB\xa2\x01\n\x1fio.temporal.api.cloud.region.v1B\x0cMessageProtoP\x01Z)go.temporal.io/api/cloud/region/v1;region\xaa\x02\x1eTemporalio.Api.Cloud.Region.V1\xea\x02"Temporalio::Api::Cloud::Region::V1b\x06proto3' +) + + +_REGION = DESCRIPTOR.message_types_by_name["Region"] +Region = _reflection.GeneratedProtocolMessageType( + "Region", + (_message.Message,), + { + "DESCRIPTOR": _REGION, + "__module__": "temporal.api.cloud.region.v1.message_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.cloud.region.v1.Region) + }, +) +_sym_db.RegisterMessage(Region) + +if _descriptor._USE_C_DESCRIPTORS == False: + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = b'\n\037io.temporal.api.cloud.region.v1B\014MessageProtoP\001Z)go.temporal.io/api/cloud/region/v1;region\252\002\036Temporalio.Api.Cloud.Region.V1\352\002"Temporalio::Api::Cloud::Region::V1' + _REGION._serialized_start = 76 + _REGION._serialized_end = 169 +# @@protoc_insertion_point(module_scope) diff --git a/temporalio/api/cloud/region/v1/message_pb2.pyi b/temporalio/api/cloud/region/v1/message_pb2.pyi new file mode 100644 index 00000000..4d18780b --- /dev/null +++ b/temporalio/api/cloud/region/v1/message_pb2.pyi @@ -0,0 +1,58 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" + +import builtins +import sys + +import google.protobuf.descriptor +import google.protobuf.message + +if sys.version_info >= (3, 8): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class Region(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ID_FIELD_NUMBER: builtins.int + CLOUD_PROVIDER_FIELD_NUMBER: builtins.int + CLOUD_PROVIDER_REGION_FIELD_NUMBER: builtins.int + LOCATION_FIELD_NUMBER: builtins.int + id: builtins.str + """The id of the temporal cloud region.""" + cloud_provider: builtins.str + """The name of the cloud provider that's hosting the region. + Currently only "aws" is supported. + """ + cloud_provider_region: builtins.str + """The region identifier as defined by the cloud provider.""" + location: builtins.str + """The human readable location of the region.""" + def __init__( + self, + *, + id: builtins.str = ..., + cloud_provider: builtins.str = ..., + cloud_provider_region: builtins.str = ..., + location: builtins.str = ..., + ) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "cloud_provider", + b"cloud_provider", + "cloud_provider_region", + b"cloud_provider_region", + "id", + b"id", + "location", + b"location", + ], + ) -> None: ... + +global___Region = Region diff --git a/temporalio/bridge/client.py b/temporalio/bridge/client.py index 4cfc3067..ddcee444 100644 --- a/temporalio/bridge/client.py +++ b/temporalio/bridge/client.py @@ -137,6 +137,8 @@ async def call( resp_fut = self._ref.call_workflow_service(call) elif service == "operator": resp_fut = self._ref.call_operator_service(call) + elif service == "cloud": + resp_fut = self._ref.call_cloud_service(call) elif service == "test": resp_fut = self._ref.call_test_service(call) elif service == "health": diff --git a/temporalio/bridge/sdk-core b/temporalio/bridge/sdk-core index 0fe5cb40..f14a3b81 160000 --- a/temporalio/bridge/sdk-core +++ b/temporalio/bridge/sdk-core @@ -1 +1 @@ -Subproject commit 0fe5cb404d4ae3ca18f21bf38e7e49f09953d229 +Subproject commit f14a3b81b63bf78d0c7c2d9cfe40cd469c069df6 diff --git a/temporalio/bridge/src/client.rs b/temporalio/bridge/src/client.rs index ab3bf3ae..c67abe13 100644 --- a/temporalio/bridge/src/client.rs +++ b/temporalio/bridge/src/client.rs @@ -5,8 +5,9 @@ use std::str::FromStr; use std::time::Duration; use temporal_client::{ ClientKeepAliveConfig as CoreClientKeepAliveConfig, ClientOptions, ClientOptionsBuilder, - ConfiguredClient, HealthService, HttpConnectProxyOptions, OperatorService, RetryClient, - RetryConfig, TemporalServiceClientWithMetrics, TestService, TlsConfig, WorkflowService, + CloudService, ConfiguredClient, HealthService, HttpConnectProxyOptions, OperatorService, + RetryClient, RetryConfig, TemporalServiceClientWithMetrics, TestService, TlsConfig, + WorkflowService, }; use tonic::metadata::MetadataKey; use url::Url; @@ -106,6 +107,16 @@ macro_rules! rpc_call { }; } +macro_rules! rpc_call_on_trait { + ($retry_client:ident, $call:ident, $trait:tt, $call_name:ident) => { + if $call.retry { + rpc_resp($trait::$call_name(&mut $retry_client, rpc_req($call)?).await) + } else { + rpc_resp($trait::$call_name(&mut $retry_client.into_inner(), rpc_req($call)?).await) + } + }; +} + #[pymethods] impl ClientRef { fn update_metadata(&self, headers: HashMap) { @@ -260,7 +271,9 @@ impl ClientRef { "terminate_workflow_execution" => { rpc_call!(retry_client, call, terminate_workflow_execution) } - "update_namespace" => rpc_call!(retry_client, call, update_namespace), + "update_namespace" => { + rpc_call_on_trait!(retry_client, call, WorkflowService, update_namespace) + } "update_schedule" => rpc_call!(retry_client, call, update_schedule), "update_workflow_execution" => { rpc_call!(retry_client, call, update_workflow_execution) @@ -294,7 +307,9 @@ impl ClientRef { rpc_call!(retry_client, call, add_search_attributes) } "create_nexus_endpoint" => rpc_call!(retry_client, call, create_nexus_endpoint), - "delete_namespace" => rpc_call!(retry_client, call, delete_namespace), + "delete_namespace" => { + rpc_call_on_trait!(retry_client, call, OperatorService, delete_namespace) + } "delete_nexus_endpoint" => rpc_call!(retry_client, call, delete_nexus_endpoint), "get_nexus_endpoint" => rpc_call!(retry_client, call, get_nexus_endpoint), "list_clusters" => rpc_call!(retry_client, call, list_clusters), @@ -321,6 +336,67 @@ impl ClientRef { }) } + fn call_cloud_service<'p>(&self, py: Python<'p>, call: RpcCall) -> PyResult<&'p PyAny> { + let mut retry_client = self.retry_client.clone(); + self.runtime.future_into_py(py, async move { + let bytes = match call.rpc.as_str() { + "add_namespace_region" => rpc_call!(retry_client, call, add_namespace_region), + "create_api_key" => rpc_call!(retry_client, call, create_api_key), + "create_namespace" => rpc_call!(retry_client, call, create_namespace), + "create_service_account" => rpc_call!(retry_client, call, create_service_account), + "create_user_group" => rpc_call!(retry_client, call, create_user_group), + "create_user" => rpc_call!(retry_client, call, create_user), + "delete_api_key" => rpc_call!(retry_client, call, delete_api_key), + "delete_namespace" => { + rpc_call_on_trait!(retry_client, call, CloudService, delete_namespace) + } + "delete_service_account" => rpc_call!(retry_client, call, delete_service_account), + "delete_user_group" => rpc_call!(retry_client, call, delete_user_group), + "delete_user" => rpc_call!(retry_client, call, delete_user), + "failover_namespace_region" => { + rpc_call!(retry_client, call, failover_namespace_region) + } + "get_api_key" => rpc_call!(retry_client, call, get_api_key), + "get_api_keys" => rpc_call!(retry_client, call, get_api_keys), + "get_async_operation" => rpc_call!(retry_client, call, get_async_operation), + "get_namespace" => rpc_call!(retry_client, call, get_namespace), + "get_namespaces" => rpc_call!(retry_client, call, get_namespaces), + "get_region" => rpc_call!(retry_client, call, get_region), + "get_regions" => rpc_call!(retry_client, call, get_regions), + "get_service_account" => rpc_call!(retry_client, call, get_service_account), + "get_service_accounts" => rpc_call!(retry_client, call, get_service_accounts), + "get_user_group" => rpc_call!(retry_client, call, get_user_group), + "get_user_groups" => rpc_call!(retry_client, call, get_user_groups), + "get_user" => rpc_call!(retry_client, call, get_user), + "get_users" => rpc_call!(retry_client, call, get_users), + "rename_custom_search_attribute" => { + rpc_call!(retry_client, call, rename_custom_search_attribute) + } + "set_user_group_namespace_access" => { + rpc_call!(retry_client, call, set_user_group_namespace_access) + } + "set_user_namespace_access" => { + rpc_call!(retry_client, call, set_user_namespace_access) + } + "update_api_key" => rpc_call!(retry_client, call, update_api_key), + "update_namespace" => { + rpc_call_on_trait!(retry_client, call, CloudService, update_namespace) + } + "update_service_account" => rpc_call!(retry_client, call, update_service_account), + "update_user_group" => rpc_call!(retry_client, call, update_user_group), + "update_user" => rpc_call!(retry_client, call, update_user), + _ => { + return Err(PyValueError::new_err(format!( + "Unknown RPC call {}", + call.rpc + ))) + } + }?; + let bytes: &[u8] = &bytes; + Ok(Python::with_gil(|py| bytes.into_py(py))) + }) + } + fn call_test_service<'p>(&self, py: Python<'p>, call: RpcCall) -> PyResult<&'p PyAny> { let mut retry_client = self.retry_client.clone(); self.runtime.future_into_py(py, async move { diff --git a/temporalio/client.py b/temporalio/client.py index 4edbbfca..ae5fd08f 100644 --- a/temporalio/client.py +++ b/temporalio/client.py @@ -6086,3 +6086,161 @@ def _to_proto(self) -> temporalio.api.enums.v1.TaskReachability.ValueType: return ( temporalio.api.enums.v1.TaskReachability.TASK_REACHABILITY_UNSPECIFIED ) + + +class CloudOperationsClient: + """Client for accessing Temporal Cloud Operations API. + + .. warning:: + This client and the API is experimental + + Most users will use :py:meth:`connect` to create a client. The + :py:attr:`cloud_service` property provides access to a raw gRPC cloud + service client. + + Clients are not thread-safe and should only be used in the event loop they + are first connected in. If a client needs to be used from another thread + than where it was created, make sure the event loop where it was created is + captured, and then call :py:func:`asyncio.run_coroutine_threadsafe` with the + client call and that event loop. + + Clients do not work across forks since runtimes do not work across forks. + """ + + @staticmethod + async def connect( + *, + api_key: Optional[str] = None, + version: Optional[str] = None, + target_host: str = "saas-api.tmprl.cloud:443", + tls: Union[bool, TLSConfig] = True, + retry_config: Optional[RetryConfig] = None, + keep_alive_config: Optional[KeepAliveConfig] = KeepAliveConfig.default, + rpc_metadata: Mapping[str, str] = {}, + identity: Optional[str] = None, + lazy: bool = False, + runtime: Optional[temporalio.runtime.Runtime] = None, + http_connect_proxy_config: Optional[HttpConnectProxyConfig] = None, + ) -> CloudOperationsClient: + """Connect to a Temporal Cloud Operations API. + + .. warning:: + This client and the API is experimental + + Args: + api_key: API key for Temporal. This becomes the "Authorization" + HTTP header with "Bearer " prepended. This is only set if RPC + metadata doesn't already have an "authorization" key. This is + essentially required for access to the cloud API. + version: Version header for safer mutations. May or may not be + required depending on cloud settings. + target_host: ``host:port`` for the Temporal server. The default is + to the common cloud endpoint. + tls: If true, the default, use system default TLS configuration. If + false, the default, do not use TLS. If TLS configuration + present, that TLS configuration will be used. The default is + usually required to access the API. + retry_config: Retry configuration for direct service calls (when + opted in) or all high-level calls made by this client (which all + opt-in to retries by default). If unset, a default retry + configuration is used. + keep_alive_config: Keep-alive configuration for the client + connection. Default is to check every 30s and kill the + connection if a response doesn't come back in 15s. Can be set to + ``None`` to disable. + rpc_metadata: Headers to use for all calls to the server. Keys here + can be overriden by per-call RPC metadata keys. + identity: Identity for this client. If unset, a default is created + based on the version of the SDK. + lazy: If true, the client will not connect until the first call is + attempted or a worker is created with it. Lazy clients cannot be + used for workers. + runtime: The runtime for this client, or the default if unset. + http_connect_proxy_config: Configuration for HTTP CONNECT proxy. + """ + # Add version if given + if version: + rpc_metadata = dict(rpc_metadata) + rpc_metadata["temporal-cloud-api-version"] = version + connect_config = temporalio.service.ConnectConfig( + target_host=target_host, + api_key=api_key, + tls=tls, + retry_config=retry_config, + keep_alive_config=keep_alive_config, + rpc_metadata=rpc_metadata, + identity=identity or "", + lazy=lazy, + runtime=runtime, + http_connect_proxy_config=http_connect_proxy_config, + ) + return CloudOperationsClient( + await temporalio.service.ServiceClient.connect(connect_config) + ) + + def __init__( + self, + service_client: temporalio.service.ServiceClient, + ): + """Create a Temporal Cloud Operations client from a service client. + + .. warning:: + This client and the API is experimental + + Args: + service_client: Existing service client to use. + """ + self._service_client = service_client + + @property + def service_client(self) -> temporalio.service.ServiceClient: + """Raw gRPC service client.""" + return self._service_client + + @property + def cloud_service(self) -> temporalio.service.CloudService: + """Raw gRPC cloud service client.""" + return self._service_client.cloud_service + + @property + def identity(self) -> str: + """Identity used in calls by this client.""" + return self._service_client.config.identity + + @property + def rpc_metadata(self) -> Mapping[str, str]: + """Headers for every call made by this client. + + Do not use mutate this mapping. Rather, set this property with an + entirely new mapping to change the headers. This may include the + ``temporal-cloud-api-version`` header if set. + """ + return self.service_client.config.rpc_metadata + + @rpc_metadata.setter + def rpc_metadata(self, value: Mapping[str, str]) -> None: + """Update the headers for this client. + + Do not mutate this mapping after set. Rather, set an entirely new + mapping if changes are needed. Currently this must be set with the + ``temporal-cloud-api-version`` header if it is needed. + """ + # Update config and perform update + self.service_client.config.rpc_metadata = value + self.service_client.update_rpc_metadata(value) + + @property + def api_key(self) -> Optional[str]: + """API key for every call made by this client.""" + return self.service_client.config.api_key + + @api_key.setter + def api_key(self, value: Optional[str]) -> None: + """Update the API key for this client. + + This is only set if RPCmetadata doesn't already have an "authorization" + key. + """ + # Update config and perform update + self.service_client.config.api_key = value + self.service_client.update_api_key(value) diff --git a/temporalio/service.py b/temporalio/service.py index c5b8cce9..42ee6c76 100644 --- a/temporalio/service.py +++ b/temporalio/service.py @@ -16,6 +16,7 @@ import google.protobuf.empty_pb2 import google.protobuf.message +import temporalio.api.cloud.cloudservice.v1 import temporalio.api.common.v1 import temporalio.api.operatorservice.v1 import temporalio.api.testservice.v1 @@ -213,6 +214,7 @@ def __init__(self, config: ConnectConfig) -> None: self.config = config self.workflow_service = WorkflowService(self) self.operator_service = OperatorService(self) + self.cloud_service = CloudService(self) self.test_service = TestService(self) self._check_health_call = self._new_call( "check", @@ -695,6 +697,212 @@ def __init__(self, client: ServiceClient) -> None: ) +class CloudService: + """Client to the Temporal server's cloud service.""" + + def __init__(self, client: ServiceClient) -> None: + """Initialize the cloud service.""" + clv1 = temporalio.api.cloud.cloudservice.v1 + self.add_namespace_region = client._new_call( + "add_namespace_region", + clv1.AddNamespaceRegionRequest, + clv1.AddNamespaceRegionResponse, + service="cloud", + ) + self.create_api_key = client._new_call( + "create_api_key", + clv1.CreateApiKeyRequest, + clv1.CreateApiKeyResponse, + service="cloud", + ) + self.create_namespace = client._new_call( + "create_namespace", + clv1.CreateNamespaceRequest, + clv1.CreateNamespaceResponse, + service="cloud", + ) + self.create_service_account = client._new_call( + "create_service_account", + clv1.CreateServiceAccountRequest, + clv1.CreateServiceAccountResponse, + service="cloud", + ) + self.create_user_group = client._new_call( + "create_user_group", + clv1.CreateUserGroupRequest, + clv1.CreateUserGroupResponse, + service="cloud", + ) + self.create_user = client._new_call( + "create_user", + clv1.CreateUserRequest, + clv1.CreateUserResponse, + service="cloud", + ) + self.delete_api_key = client._new_call( + "delete_api_key", + clv1.DeleteApiKeyRequest, + clv1.DeleteApiKeyResponse, + service="cloud", + ) + self.delete_namespace = client._new_call( + "delete_namespace", + clv1.DeleteNamespaceRequest, + clv1.DeleteNamespaceResponse, + service="cloud", + ) + self.delete_service_account = client._new_call( + "delete_service_account", + clv1.DeleteServiceAccountRequest, + clv1.DeleteServiceAccountResponse, + service="cloud", + ) + self.delete_user_group = client._new_call( + "delete_user_group", + clv1.DeleteUserGroupRequest, + clv1.DeleteUserGroupResponse, + service="cloud", + ) + self.delete_user = client._new_call( + "delete_user", + clv1.DeleteUserRequest, + clv1.DeleteUserResponse, + service="cloud", + ) + self.failover_namespace_region = client._new_call( + "failover_namespace_region", + clv1.FailoverNamespaceRegionRequest, + clv1.FailoverNamespaceRegionResponse, + service="cloud", + ) + self.get_api_key = client._new_call( + "get_api_key", + clv1.GetApiKeyRequest, + clv1.GetApiKeyResponse, + service="cloud", + ) + self.get_api_keys = client._new_call( + "get_api_keys", + clv1.GetApiKeysRequest, + clv1.GetApiKeysResponse, + service="cloud", + ) + self.get_async_operation = client._new_call( + "get_async_operation", + clv1.GetAsyncOperationRequest, + clv1.GetAsyncOperationResponse, + service="cloud", + ) + self.get_namespace = client._new_call( + "get_namespace", + clv1.GetNamespaceRequest, + clv1.GetNamespaceResponse, + service="cloud", + ) + self.get_namespaces = client._new_call( + "get_namespaces", + clv1.GetNamespacesRequest, + clv1.GetNamespacesResponse, + service="cloud", + ) + self.get_region = client._new_call( + "get_region", + clv1.GetRegionRequest, + clv1.GetRegionResponse, + service="cloud", + ) + self.get_regions = client._new_call( + "get_regions", + clv1.GetRegionsRequest, + clv1.GetRegionsResponse, + service="cloud", + ) + self.get_service_account = client._new_call( + "get_service_account", + clv1.GetServiceAccountRequest, + clv1.GetServiceAccountResponse, + service="cloud", + ) + self.get_service_accounts = client._new_call( + "get_service_accounts", + clv1.GetServiceAccountsRequest, + clv1.GetServiceAccountsResponse, + service="cloud", + ) + self.get_user_group = client._new_call( + "get_user_group", + clv1.GetUserGroupRequest, + clv1.GetUserGroupResponse, + service="cloud", + ) + self.get_user_groups = client._new_call( + "get_user_groups", + clv1.GetUserGroupsRequest, + clv1.GetUserGroupsResponse, + service="cloud", + ) + self.get_user = client._new_call( + "get_user", + clv1.GetUserRequest, + clv1.GetUserResponse, + service="cloud", + ) + self.get_users = client._new_call( + "get_users", + clv1.GetUsersRequest, + clv1.GetUsersResponse, + service="cloud", + ) + self.rename_custom_search_attribute = client._new_call( + "rename_custom_search_attribute", + clv1.RenameCustomSearchAttributeRequest, + clv1.RenameCustomSearchAttributeResponse, + service="cloud", + ) + self.set_user_group_namespace_access = client._new_call( + "set_user_group_namespace_access", + clv1.SetUserGroupNamespaceAccessRequest, + clv1.SetUserGroupNamespaceAccessResponse, + service="cloud", + ) + self.set_user_namespace_access = client._new_call( + "set_user_namespace_access", + clv1.SetUserNamespaceAccessRequest, + clv1.SetUserNamespaceAccessResponse, + service="cloud", + ) + self.update_api_key = client._new_call( + "update_api_key", + clv1.UpdateApiKeyRequest, + clv1.UpdateApiKeyResponse, + service="cloud", + ) + self.update_namespace = client._new_call( + "update_namespace", + clv1.UpdateNamespaceRequest, + clv1.UpdateNamespaceResponse, + service="cloud", + ) + self.update_service_account = client._new_call( + "update_service_account", + clv1.UpdateServiceAccountRequest, + clv1.UpdateServiceAccountResponse, + service="cloud", + ) + self.update_user_group = client._new_call( + "update_user_group", + clv1.UpdateUserGroupRequest, + clv1.UpdateUserGroupResponse, + service="cloud", + ) + self.update_user = client._new_call( + "update_user", + clv1.UpdateUserRequest, + clv1.UpdateUserResponse, + service="cloud", + ) + + class TestService: """Client to the Temporal test server's test service.""" diff --git a/tests/test_client.py b/tests/test_client.py index d4019554..d596facb 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -12,6 +12,7 @@ import temporalio.common import temporalio.exceptions from temporalio import workflow +from temporalio.api.cloud.cloudservice.v1 import GetNamespaceRequest from temporalio.api.enums.v1 import ( CancelExternalWorkflowExecutionFailedCause, ContinueAsNewInitiator, @@ -35,6 +36,7 @@ BuildIdOpPromoteSetByBuildId, CancelWorkflowInput, Client, + CloudOperationsClient, Interceptor, OutboundInterceptor, QueryWorkflowInput, @@ -1241,3 +1243,16 @@ async def test_build_id_interactions(client: Client, env: WorkflowEnvironment): ] assert reachability.build_id_reachability["1.0"].task_queue_reachability[tq] == [] assert reachability.build_id_reachability["1.1"].task_queue_reachability[tq] == [] + + +async def test_cloud_client_simple(): + if "TEMPORAL_CLIENT_CLOUD_API_KEY" not in os.environ: + pytest.skip("No cloud API key") + client = await CloudOperationsClient.connect( + api_key=os.environ["TEMPORAL_CLIENT_CLOUD_API_KEY"], + version=os.environ["TEMPORAL_CLIENT_CLOUD_API_VERSION"], + ) + result = await client.cloud_service.get_namespace( + GetNamespaceRequest(namespace=os.environ["TEMPORAL_CLIENT_CLOUD_NAMESPACE"]) + ) + assert os.environ["TEMPORAL_CLIENT_CLOUD_NAMESPACE"] == result.namespace.namespace diff --git a/tests/test_service.py b/tests/test_service.py index 573c7dc0..374ae086 100644 --- a/tests/test_service.py +++ b/tests/test_service.py @@ -9,6 +9,7 @@ import pytest import temporalio +import temporalio.api.cloud.cloudservice.v1 import temporalio.api.errordetails.v1 import temporalio.api.operatorservice.v1 import temporalio.api.testservice.v1 @@ -57,6 +58,11 @@ def assert_all_calls_present( temporalio.api.operatorservice.v1, temporalio.api.operatorservice.v1.OperatorServiceStub, ) + assert_all_calls_present( + client.service_client.cloud_service, + temporalio.api.cloud.cloudservice.v1, + temporalio.api.cloud.cloudservice.v1.CloudServiceStub, + ) assert_all_calls_present( client.test_service, temporalio.api.testservice.v1,