diff --git a/scalekit/client.py b/scalekit/client.py index dc2f98a..9e27693 100644 --- a/scalekit/client.py +++ b/scalekit/client.py @@ -15,6 +15,7 @@ from scalekit.organization import OrganizationClient from scalekit.directory import DirectoryClient from scalekit.users import UserClient +from scalekit.role import RoleClient from scalekit.common.scalekit import ( AuthorizationUrlOptions, CodeAuthenticationOptions, @@ -25,7 +26,7 @@ from scalekit.constants.user import id_token_claim_to_user_map AUTHORIZE_ENDPOINT = "oauth/authorize" -LOGOUT_ENDPOINT = "end_session" +LOGOUT_ENDPOINT = "oidc/logout" webhook_tolerance_in_seconds = timedelta(minutes=5) webhook_signature_version = "v1" @@ -61,6 +62,7 @@ def __init__(self, env_url: str, client_id: str, client_secret: str): self.directory = DirectoryClient(self.core_client) self.m2m_client = M2MClient(self.core_client) self.users = UserClient(self.core_client) + self.roles = RoleClient(self.core_client) except Exception as exp: raise exp diff --git a/scalekit/role.py b/scalekit/role.py new file mode 100644 index 0000000..f80a464 --- /dev/null +++ b/scalekit/role.py @@ -0,0 +1,143 @@ +from typing import Optional + +from scalekit.core import CoreClient +from scalekit.v1.roles.roles_pb2 import * +from scalekit.v1.roles.roles_pb2_grpc import RolesServiceStub + + +class RoleClient: + """Class definition for Role Client""" + + def __init__(self, core_client: CoreClient): + """ + Initializer for Role Client + + :param core_client : CoreClient Object + :type : ``` obj ``` + :returns + None + """ + self.core_client = core_client + self.role_service = RolesServiceStub( + self.core_client.grpc_secure_channel + ) + + def create_role( + self, + env_id: str, + role: CreateRole + ) -> CreateRoleResponse: + """ + Method to create a new role in the environment + + :param env_id : Environment id to create role for + :type : ``` str ``` + :param role : CreateRole object with expected values for role creation + :type : ``` obj ``` + + :returns: + Create Role Response + """ + return self.core_client.grpc_exec( + self.role_service.CreateRole.with_call, + CreateRoleRequest( + env_id=env_id, + role=role + ), + ) + + def get_role(self, env_id: str, role_id: str) -> GetRoleResponse: + """ + Method to get role by ID + + :param env_id : Environment id + :type : ``` str ``` + :param role_id : Role id to get role details + :type : ``` str ``` + + :returns: + Get Role Response + """ + return self.core_client.grpc_exec( + self.role_service.GetRole.with_call, + GetRoleRequest( + env_id=env_id, + id=role_id + ), + ) + + def list_roles(self, env_id: str) -> ListRolesResponse: + """ + Method to list all roles in environment + + :param env_id : Environment id to list roles for + :type : ``` str ``` + + :returns: + List Roles Response + """ + return self.core_client.grpc_exec( + self.role_service.ListRoles.with_call, + ListRolesRequest(env_id=env_id), + ) + + def update_role( + self, + env_id: str, + role_id: str, + role: UpdateRole + ) -> UpdateRoleResponse: + """ + Method to update an existing role by ID + + :param env_id : Environment id + :type : ``` str ``` + :param role_id : Role id to update + :type : ``` str ``` + :param role : UpdateRole object with expected values for role update + :type : ``` obj ``` + + :returns: + Update Role Response + """ + return self.core_client.grpc_exec( + self.role_service.UpdateRole.with_call, + UpdateRoleRequest( + env_id=env_id, + id=role_id, + role=role + ), + ) + + def delete_role( + self, + env_id: str, + role_id: str, + reassign_role_id: Optional[str] = None + ): + """ + Method to delete role by ID + + :param env_id : Environment id + :type : ``` str ``` + :param role_id : Role id to be deleted + :type : ``` str ``` + :param reassign_role_id: Role ID to reassign users to when deleting this role + :type : ``` str ``` + + :returns: + None + """ + request = DeleteRoleRequest( + env_id=env_id, + id=role_id + ) + if reassign_role_id: + request.reassign_role_id = reassign_role_id + + return self.core_client.grpc_exec( + self.role_service.DeleteRole.with_call, + request, + ) + + \ No newline at end of file diff --git a/scalekit/v1/auditlogs/__init__.py b/scalekit/v1/auditlogs/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/scalekit/v1/auditlogs/auditlogs_pb2.py b/scalekit/v1/auditlogs/auditlogs_pb2.py new file mode 100644 index 0000000..9d609f7 --- /dev/null +++ b/scalekit/v1/auditlogs/auditlogs_pb2.py @@ -0,0 +1,39 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: scalekit/v1/auditlogs/auditlogs.proto +# Protobuf Python Version: 5.26.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from buf.validate import validate_pb2 as buf_dot_validate_dot_validate__pb2 +from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 +from scalekit.v1.options import options_pb2 as scalekit_dot_v1_dot_options_dot_options__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%scalekit/v1/auditlogs/auditlogs.proto\x12\x15scalekit.v1.auditlogs\x1a\x1b\x62uf/validate/validate.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a!scalekit/v1/options/options.proto\"\xf0\x01\n\x12ListAuthLogRequest\x12\x1b\n\tpage_size\x18\x01 \x01(\rR\x08pageSize\x12\x1d\n\npage_token\x18\x02 \x01(\tR\tpageToken\x12\x14\n\x05\x65mail\x18\x03 \x01(\tR\x05\x65mail\x12\x16\n\x06status\x18\x04 \x01(\tR\x06status\x12\x39\n\nstart_time\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tstartTime\x12\x35\n\x08\x65nd_time\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x07\x65ndTime\"\xa7\x01\n\x13ListAuthLogResponse\x12&\n\x0fnext_page_token\x18\x01 \x01(\tR\rnextPageToken\x12\x1d\n\ntotal_size\x18\x02 \x01(\rR\ttotalSize\x12I\n\x0c\x61uthRequests\x18\x03 \x03(\x0b\x32%.scalekit.v1.auditlogs.AuthLogRequestR\x0c\x61uthRequests\"\xd3\x02\n\x0e\x41uthLogRequest\x12\'\n\x0forganization_id\x18\x01 \x01(\tR\x0eorganizationId\x12%\n\x0e\x65nvironment_id\x18\x02 \x01(\tR\renvironmentId\x12#\n\rconnection_id\x18\x03 \x01(\tR\x0c\x63onnectionId\x12&\n\x0f\x61uth_request_id\x18\x04 \x01(\tR\rauthRequestId\x12\x14\n\x05\x65mail\x18\x05 \x01(\tR\x05\x65mail\x12\'\n\x0f\x63onnection_type\x18\x06 \x01(\tR\x0e\x63onnectionType\x12/\n\x13\x63onnection_provider\x18\x07 \x01(\tR\x12\x63onnectionProvider\x12\x16\n\x06status\x18\x08 \x01(\tR\x06status\x12\x1c\n\ttimestamp\x18\t \x01(\tR\ttimestamp2\xb2\x01\n\x10\x41uditLogsService\x12\x9d\x01\n\x10ListAuthRequests\x12).scalekit.v1.auditlogs.ListAuthLogRequest\x1a*.scalekit.v1.auditlogs.ListAuthLogResponse\"2\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02&\x12$/api/v1/logs/authentication/requestsB5Z3github.com/scalekit-inc/scalekit/pkg/grpc/auditlogsb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'scalekit.v1.auditlogs.auditlogs_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'Z3github.com/scalekit-inc/scalekit/pkg/grpc/auditlogs' + _globals['_AUDITLOGSSERVICE'].methods_by_name['ListAuthRequests']._loaded_options = None + _globals['_AUDITLOGSSERVICE'].methods_by_name['ListAuthRequests']._serialized_options = b'\202\265\030\002\030T\202\323\344\223\002&\022$/api/v1/logs/authentication/requests' + _globals['_LISTAUTHLOGREQUEST']._serialized_start=192 + _globals['_LISTAUTHLOGREQUEST']._serialized_end=432 + _globals['_LISTAUTHLOGRESPONSE']._serialized_start=435 + _globals['_LISTAUTHLOGRESPONSE']._serialized_end=602 + _globals['_AUTHLOGREQUEST']._serialized_start=605 + _globals['_AUTHLOGREQUEST']._serialized_end=944 + _globals['_AUDITLOGSSERVICE']._serialized_start=947 + _globals['_AUDITLOGSSERVICE']._serialized_end=1125 +# @@protoc_insertion_point(module_scope) diff --git a/scalekit/v1/auditlogs/auditlogs_pb2.pyi b/scalekit/v1/auditlogs/auditlogs_pb2.pyi new file mode 100644 index 0000000..3687510 --- /dev/null +++ b/scalekit/v1/auditlogs/auditlogs_pb2.pyi @@ -0,0 +1,58 @@ +from buf.validate import validate_pb2 as _validate_pb2 +from google.api import annotations_pb2 as _annotations_pb2 +from google.protobuf import timestamp_pb2 as _timestamp_pb2 +from scalekit.v1.options import options_pb2 as _options_pb2 +from google.protobuf.internal import containers as _containers +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union + +DESCRIPTOR: _descriptor.FileDescriptor + +class ListAuthLogRequest(_message.Message): + __slots__ = ("page_size", "page_token", "email", "status", "start_time", "end_time") + PAGE_SIZE_FIELD_NUMBER: _ClassVar[int] + PAGE_TOKEN_FIELD_NUMBER: _ClassVar[int] + EMAIL_FIELD_NUMBER: _ClassVar[int] + STATUS_FIELD_NUMBER: _ClassVar[int] + START_TIME_FIELD_NUMBER: _ClassVar[int] + END_TIME_FIELD_NUMBER: _ClassVar[int] + page_size: int + page_token: str + email: str + status: str + start_time: _timestamp_pb2.Timestamp + end_time: _timestamp_pb2.Timestamp + def __init__(self, page_size: _Optional[int] = ..., page_token: _Optional[str] = ..., email: _Optional[str] = ..., status: _Optional[str] = ..., start_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., end_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ... + +class ListAuthLogResponse(_message.Message): + __slots__ = ("next_page_token", "total_size", "authRequests") + NEXT_PAGE_TOKEN_FIELD_NUMBER: _ClassVar[int] + TOTAL_SIZE_FIELD_NUMBER: _ClassVar[int] + AUTHREQUESTS_FIELD_NUMBER: _ClassVar[int] + next_page_token: str + total_size: int + authRequests: _containers.RepeatedCompositeFieldContainer[AuthLogRequest] + def __init__(self, next_page_token: _Optional[str] = ..., total_size: _Optional[int] = ..., authRequests: _Optional[_Iterable[_Union[AuthLogRequest, _Mapping]]] = ...) -> None: ... + +class AuthLogRequest(_message.Message): + __slots__ = ("organization_id", "environment_id", "connection_id", "auth_request_id", "email", "connection_type", "connection_provider", "status", "timestamp") + ORGANIZATION_ID_FIELD_NUMBER: _ClassVar[int] + ENVIRONMENT_ID_FIELD_NUMBER: _ClassVar[int] + CONNECTION_ID_FIELD_NUMBER: _ClassVar[int] + AUTH_REQUEST_ID_FIELD_NUMBER: _ClassVar[int] + EMAIL_FIELD_NUMBER: _ClassVar[int] + CONNECTION_TYPE_FIELD_NUMBER: _ClassVar[int] + CONNECTION_PROVIDER_FIELD_NUMBER: _ClassVar[int] + STATUS_FIELD_NUMBER: _ClassVar[int] + TIMESTAMP_FIELD_NUMBER: _ClassVar[int] + organization_id: str + environment_id: str + connection_id: str + auth_request_id: str + email: str + connection_type: str + connection_provider: str + status: str + timestamp: str + def __init__(self, organization_id: _Optional[str] = ..., environment_id: _Optional[str] = ..., connection_id: _Optional[str] = ..., auth_request_id: _Optional[str] = ..., email: _Optional[str] = ..., connection_type: _Optional[str] = ..., connection_provider: _Optional[str] = ..., status: _Optional[str] = ..., timestamp: _Optional[str] = ...) -> None: ... diff --git a/scalekit/v1/auditlogs/auditlogs_pb2_grpc.py b/scalekit/v1/auditlogs/auditlogs_pb2_grpc.py new file mode 100644 index 0000000..e740717 --- /dev/null +++ b/scalekit/v1/auditlogs/auditlogs_pb2_grpc.py @@ -0,0 +1,66 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc + +from scalekit.v1.auditlogs import auditlogs_pb2 as scalekit_dot_v1_dot_auditlogs_dot_auditlogs__pb2 + + +class AuditLogsServiceStub(object): + """Missing associated documentation comment in .proto file.""" + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.ListAuthRequests = channel.unary_unary( + '/scalekit.v1.auditlogs.AuditLogsService/ListAuthRequests', + request_serializer=scalekit_dot_v1_dot_auditlogs_dot_auditlogs__pb2.ListAuthLogRequest.SerializeToString, + response_deserializer=scalekit_dot_v1_dot_auditlogs_dot_auditlogs__pb2.ListAuthLogResponse.FromString, + ) + + +class AuditLogsServiceServicer(object): + """Missing associated documentation comment in .proto file.""" + + def ListAuthRequests(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + +def add_AuditLogsServiceServicer_to_server(servicer, server): + rpc_method_handlers = { + 'ListAuthRequests': grpc.unary_unary_rpc_method_handler( + servicer.ListAuthRequests, + request_deserializer=scalekit_dot_v1_dot_auditlogs_dot_auditlogs__pb2.ListAuthLogRequest.FromString, + response_serializer=scalekit_dot_v1_dot_auditlogs_dot_auditlogs__pb2.ListAuthLogResponse.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'scalekit.v1.auditlogs.AuditLogsService', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) + + + # This class is part of an EXPERIMENTAL API. +class AuditLogsService(object): + """Missing associated documentation comment in .proto file.""" + + @staticmethod + def ListAuthRequests(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/scalekit.v1.auditlogs.AuditLogsService/ListAuthRequests', + scalekit_dot_v1_dot_auditlogs_dot_auditlogs__pb2.ListAuthLogRequest.SerializeToString, + scalekit_dot_v1_dot_auditlogs_dot_auditlogs__pb2.ListAuthLogResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) diff --git a/scalekit/v1/auth/auth_pb2.py b/scalekit/v1/auth/auth_pb2.py index afe355a..f375a14 100644 --- a/scalekit/v1/auth/auth_pb2.py +++ b/scalekit/v1/auth/auth_pb2.py @@ -25,7 +25,7 @@ from scalekit.v1.options import options_pb2 as scalekit_dot_v1_dot_options_dot_options__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1bscalekit/v1/auth/auth.proto\x12\x10scalekit.v1.auth\x1a\x1b\x62uf/validate/validate.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1bgoogle/api/visibility.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a.protoc-gen-openapiv2/options/annotations.proto\x1a!scalekit/v1/commons/commons.proto\x1a)scalekit/v1/connections/connections.proto\x1a!scalekit/v1/options/options.proto\"Z\n\x17ListAuthMethodsResponse\x12?\n\x0c\x61uth_methods\x18\x01 \x03(\x0b\x32\x1c.scalekit.v1.auth.AuthMethodR\x0b\x61uthMethods\"\xc1\x05\n\nAuthMethod\x12}\n\rconnection_id\x18\x01 \x01(\tBX\x92\x41L22Unique identifier for the connection to be toggledJ\x16\"conn_121312434123312\"\xbaH\x06r\x04\x10\x01\x18 R\x0c\x63onnectionId\x12P\n\x0f\x63onnection_type\x18\x02 \x01(\x0e\x32\'.scalekit.v1.connections.ConnectionTypeR\x0e\x63onnectionType\x12G\n\x08provider\x18\x03 \x01(\x0e\x32+.scalekit.v1.connections.ConnectionProviderR\x08provider\x12\x93\x01\n\x13\x61uth_initiation_uri\x18\x04 \x01(\tBc\x92\x41V2\x1eURI to initiate the connectionJ4\"https://sso.acmecorp.com/sso/v1/oidc/conn_123/init\"\xbaH\x07r\x05\x10\x01\x18\xff\x01R\x11\x61uthInitiationUri\x12z\n\x11passwordless_type\x18\x05 \x01(\x0e\x32).scalekit.v1.connections.PasswordlessTypeB\x1d\x92\x41\x1a\x32\x11Passwordless typeJ\x05\"OTP\"H\x00R\x10passwordlessType\x88\x01\x01\x12W\n\x15\x63ode_challenge_length\x18\x06 \x01(\rB\x1e\x92\x41\x1b\x32\x16Length of the OTP codeJ\x01\x36H\x01R\x13\x63odeChallengeLength\x88\x01\x01\x42\x14\n\x12_passwordless_typeB\x18\n\x16_code_challenge_length\"m\n\x1a\x44iscoveryAuthMethodRequest\x12O\n\x11\x64iscovery_request\x18\x02 \x01(\x0b\x32\".scalekit.v1.auth.DiscoveryRequestR\x10\x64iscoveryRequest\"\xb3\x01\n\x10\x44iscoveryRequest\x12\x63\n\x05\x65mail\x18\x01 \x01(\tBM\x92\x41\x41\x32*user identifier like email or phone numberJ\x13\"john@acmecorp.com\"\xbaH\x06r\x04\x10\x03\x18\x64R\x05\x65mail\x12:\n\x06intent\x18\x02 \x01(\x0e\x32\x18.scalekit.v1.auth.IntentB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x06intent\"\\\n\x1b\x44iscoveryAuthMethodResponse\x12=\n\x0b\x61uth_method\x18\x01 \x01(\x0b\x32\x1c.scalekit.v1.auth.AuthMethodR\nauthMethod\"\x1e\n\x1cGetAuthCustomizationsRequest\"o\n\x1dGetAuthCustomizationsResponse\x12N\n\x16\x63ustomization_settings\x18\x02 \x01(\x0b\x32\x17.google.protobuf.StructR\x15\x63ustomizationSettings\"N\n\x17GetAuthFeaturesResponse\x12\x33\n\x08\x66\x65\x61tures\x18\x01 \x01(\x0b\x32\x17.google.protobuf.StructR\x08\x66\x65\x61tures\"R\n\x19VerifyPasswordLessRequest\x12\x35\n\x07otp_req\x18\x02 \x01(\x0b\x32\x1c.scalekit.v1.auth.OTPRequestR\x06otpReq\"\x1c\n\x1aVerifyPasswordLessResponse\"i\n\nOTPRequest\x12[\n\x0e\x63ode_challenge\x18\x01 \x01(\tB4\x92\x41(2\x1cOTP sent to the user\'s emailJ\x08\"123456\"\xbaH\x06r\x04\x10\x05\x18\x06R\rcodeChallenge\"\xd4\x01\n\x1dListUserOrganizationsResponse\x12\x44\n\rorganizations\x18\x01 \x03(\x0b\x32\x1e.scalekit.v1.auth.OrganizationR\rorganizations\x12\x31\n\x04user\x18\x02 \x01(\x0b\x32\x1d.scalekit.v1.auth.UserDetailsR\x04user\x12:\n\x06intent\x18\x03 \x01(\x0e\x32\x18.scalekit.v1.auth.IntentB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x06intent\"_\n\x0cOrganization\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12+\n\x11membership_status\x18\x03 \x01(\tR\x10membershipStatus\"_\n\x0bUserDetails\x12\x14\n\x05\x65mail\x18\x01 \x01(\tR\x05\x65mail\x12\x1d\n\nfirst_name\x18\x02 \x01(\tR\tfirstName\x12\x1b\n\tlast_name\x18\x03 \x01(\tR\x08lastName\"\xc4\x01\n\x19SignupOrganizationRequest\x12+\n\x11organization_name\x18\x01 \x01(\tR\x10organizationName\x12\x1d\n\nfirst_name\x18\x02 \x01(\tR\tfirstName\x12\x1b\n\tlast_name\x18\x03 \x01(\tR\x08lastName\x12\x1b\n\tfull_name\x18\x04 \x01(\tR\x08\x66ullName\x12!\n\x0cphone_number\x18\x05 \x01(\tR\x0bphoneNumber\"r\n\x1aSignupOrganizationResponse\x12\'\n\x0forganization_id\x18\x01 \x01(\tR\x0eorganizationId\x12+\n\x11organization_name\x18\x02 \x01(\tR\x10organizationName\"\xd6\x02\n\x1dUpdateLoginUserDetailsRequest\x12v\n\rconnection_id\x18\x01 \x01(\tBQ\x92\x41\x45\x32+Connection ID. Unique ID for the connectionJ\x16\"conn_121312434123312\"\xbaH\x06r\x04\x10\x01\x18 R\x0c\x63onnectionId\x12\x90\x01\n\x10login_request_id\x18\x02 \x01(\tBf\x92\x41]2BLogin Request ID that was shared as part of authorization initiateJ\x17\"lri_73415099636808061\"\xbaH\x03\xc8\x01\x01R\x0eloginRequestId\x12*\n\x04user\x18\x03 \x01(\x0b\x32\x16.scalekit.v1.auth.UserR\x04user\"\x90\x0c\n\x04User\x12\x83\x01\n\x03sub\x18\x01 \x01(\tBq\x92\x41g2WSubject identifier for the user (typically a unique user ID from the identity provider)J\x0c\"1234567890\"\xbaH\x04r\x02\x10\x01R\x03sub\x12R\n\x05\x65mail\x18\x02 \x01(\tB<\x92\x41\x32\x32\x1cUser\'s primary email addressJ\x12\"user@example.com\"\xbaH\x04r\x02\x10\x01R\x05\x65mail\x12=\n\ngiven_name\x18\x03 \x01(\tB\x1e\x92\x41\x1b\x32\x11User\'s first nameJ\x06\"John\"R\tgivenName\x12=\n\x0b\x66\x61mily_name\x18\x04 \x01(\tB\x1c\x92\x41\x19\x32\x10User\'s last nameJ\x05\"Doe\"R\nfamilyName\x12\x88\x01\n\x0e\x65mail_verified\x18\x05 \x01(\x08\x42\x61\x92\x41^2VIndicates whether the user\'s email address has been verified by the identity provider.J\x04trueR\remailVerified\x12\x63\n\x0cphone_number\x18\x06 \x01(\tB@\x92\x41=2,User\'s primary phone number in E.164 format.J\r\"+1234567890\"R\x0bphoneNumber\x12\x95\x01\n\x15phone_number_verified\x18\x07 \x01(\x08\x42\x61\x92\x41^2UIndicates whether the user\'s phone number has been verified by the identity provider.J\x05\x66\x61lseR\x13phoneNumberVerified\x12\x42\n\x04name\x18\x08 \x01(\tB.\x92\x41+2\x1d\x46ull display name of the userJ\n\"John Doe\"R\x04name\x12\x62\n\x12preferred_username\x18\t \x01(\tB3\x92\x41\x30\x32#User\'s preferred username or handleJ\t\"johndoe\"R\x11preferredUsername\x12\x62\n\x07picture\x18\n \x01(\tBH\x92\x41\x45\x32!URL to the user\'s profile pictureJ \"https://example.com/avatar.jpg\"R\x07picture\x12X\n\x06gender\x18\x0b \x01(\tB@\x92\x41=23User\'s gender as reported by the identity provider.J\x06\"male\"R\x06gender\x12\x65\n\x06locale\x18\x0c \x01(\tBM\x92\x41J2?User\'s locale or language preference (IETF BCP 47 language tag)J\x07\"en-US\"R\x06locale\x12\x66\n\x06groups\x18\r \x03(\tBN\x92\x41K2/List of group names or IDs the user belongs to.J\x18[\"admins\", \"developers\"]R\x06groups\x12\xf2\x01\n\x11\x63ustom_attributes\x18\x0e \x01(\x0b\x32\x17.google.protobuf.StructB\xab\x01\x92\x41\xa7\x01\x32mCustom attributes for the user, represented as a key-value map. Used for additional identity provider claims.J6{\"department\": \"Engineering\", \"employee_id\": \"E12345\"}R\x10\x63ustomAttributes\"R\n\x14GetAuthStateResponse\x12:\n\nauth_state\x18\x01 \x01(\x0e\x32\x1b.scalekit.v1.auth.AuthStateR\tauthState*:\n\x06Intent\x12\x16\n\x12INTENT_UNSPECIFIED\x10\x00\x12\x0b\n\x07sign_in\x10\x01\x12\x0b\n\x07sign_up\x10\x02*u\n\tAuthState\x12\x12\n\x0e\x41UTHENTICATION\x10\x00\x12\x19\n\x15ORGANIZATION_SWITCHER\x10\x01\x12 \n\x1cORGANIZATION_SWITCHER_SIGNUP\x10\x02\x12\x17\n\x13ORGANIZATION_SIGNUP\x10\x03\x32\xa7\x0e\n\x0b\x41uthService\x12w\n\x0fListAuthMethods\x12\x16.google.protobuf.Empty\x1a).scalekit.v1.auth.ListAuthMethodsResponse\"!\x82\xb5\x18\x02\x18\x01\x82\xd3\xe4\x93\x02\x15\x12\x13/api/v1/authmethods\x12\xab\x01\n\x13\x44iscoveryAuthMethod\x12,.scalekit.v1.auth.DiscoveryAuthMethodRequest\x1a-.scalekit.v1.auth.DiscoveryAuthMethodResponse\"7\x82\xb5\x18\x02\x18\x01\x82\xd3\xe4\x93\x02+\"\x16/api/v1/auth:discovery:\x11\x64iscovery_request\x12\xab\x01\n\x15VerifyPasswordLessOtp\x12+.scalekit.v1.auth.VerifyPasswordLessRequest\x1a,.scalekit.v1.auth.VerifyPasswordLessResponse\"7\x82\xb5\x18\x02\x18\x01\x82\xd3\xe4\x93\x02+\" /api/v1/auth/passwordless:verify:\x07otp_req\x12t\n\x12ResendPasswordless\x12\x16.google.protobuf.Empty\x1a\x16.google.protobuf.Empty\".\x82\xb5\x18\x02\x18\x01\x82\xd3\xe4\x93\x02\"\" /api/v1/auth/passwordless:resend\x12\x8a\x01\n\x15ListUserOrganizations\x12\x16.google.protobuf.Empty\x1a/.scalekit.v1.auth.ListUserOrganizationsResponse\"(\x82\xb5\x18\x02\x18\x01\x82\xd3\xe4\x93\x02\x1c\x12\x1a/api/v1/auth:organizations\x12\x95\x01\n\x12SignupOrganization\x12+.scalekit.v1.auth.SignupOrganizationRequest\x1a,.scalekit.v1.auth.SignupOrganizationResponse\"$\x82\xb5\x18\x02\x18\x01\x82\xd3\xe4\x93\x02\x18\"\x13/api/v1/auth:signup:\x01*\x12p\n\x0cGetAuthState\x12\x16.google.protobuf.Empty\x1a&.scalekit.v1.auth.GetAuthStateResponse\" \x82\xb5\x18\x02\x18\x01\x82\xd3\xe4\x93\x02\x14\x12\x12/api/v1/auth/state\x12[\n\x06Logout\x12\x16.google.protobuf.Empty\x1a\x16.google.protobuf.Empty\"!\x82\xb5\x18\x02\x18\x01\x82\xd3\xe4\x93\x02\x15\"\x13/api/v1/auth/logout\x12h\n\x10GetActiveSession\x12\x16.google.protobuf.Empty\x1a\x16.google.protobuf.Empty\"$\x82\xb5\x18\x02\x18\x01\x82\xd3\xe4\x93\x02\x18\x12\x16/api/v1/session:active\x12\xa3\x01\n\x15GetAuthCustomizations\x12..scalekit.v1.auth.GetAuthCustomizationsRequest\x1a/.scalekit.v1.auth.GetAuthCustomizationsResponse\")\x82\xb5\x18\x02\x18\x01\x82\xd3\xe4\x93\x02\x1d\x12\x1b/api/v1/auth:customizations\x12y\n\x0fGetAuthFeatures\x12\x16.google.protobuf.Empty\x1a).scalekit.v1.auth.GetAuthFeaturesResponse\"#\x82\xb5\x18\x02\x18\x01\x82\xd3\xe4\x93\x02\x17\x12\x15/api/v1/auth:features\x12\xcd\x02\n\x16UpdateLoginUserDetails\x12/.scalekit.v1.auth.UpdateLoginUserDetailsRequest\x1a\x16.google.protobuf.Empty\"\xe9\x01\x92\x41z\n\x0b\x43onnections\x12%Update User Details for login request\x1a%Update User Details for login requestJ\x1d\n\x03\x32\x30\x30\x12\x16\n\x14\x44\x65leted Successfully\x82\xb5\x18\x02\x18\x04\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02Q\"I/api/v1/connections/{connection_id}/auth-requests/{login_request_id}/user:\x04userB0Z.github.com/scalekit-inc/scalekit/pkg/grpc/authb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1bscalekit/v1/auth/auth.proto\x12\x10scalekit.v1.auth\x1a\x1b\x62uf/validate/validate.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1bgoogle/api/visibility.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a.protoc-gen-openapiv2/options/annotations.proto\x1a!scalekit/v1/commons/commons.proto\x1a)scalekit/v1/connections/connections.proto\x1a!scalekit/v1/options/options.proto\"Z\n\x17ListAuthMethodsResponse\x12?\n\x0c\x61uth_methods\x18\x01 \x03(\x0b\x32\x1c.scalekit.v1.auth.AuthMethodR\x0b\x61uthMethods\"\xc1\x05\n\nAuthMethod\x12}\n\rconnection_id\x18\x01 \x01(\tBX\x92\x41L22Unique identifier for the connection to be toggledJ\x16\"conn_121312434123312\"\xbaH\x06r\x04\x10\x01\x18 R\x0c\x63onnectionId\x12P\n\x0f\x63onnection_type\x18\x02 \x01(\x0e\x32\'.scalekit.v1.connections.ConnectionTypeR\x0e\x63onnectionType\x12G\n\x08provider\x18\x03 \x01(\x0e\x32+.scalekit.v1.connections.ConnectionProviderR\x08provider\x12\x93\x01\n\x13\x61uth_initiation_uri\x18\x04 \x01(\tBc\x92\x41V2\x1eURI to initiate the connectionJ4\"https://sso.acmecorp.com/sso/v1/oidc/conn_123/init\"\xbaH\x07r\x05\x10\x01\x18\xff\x01R\x11\x61uthInitiationUri\x12z\n\x11passwordless_type\x18\x05 \x01(\x0e\x32).scalekit.v1.connections.PasswordlessTypeB\x1d\x92\x41\x1a\x32\x11Passwordless typeJ\x05\"OTP\"H\x00R\x10passwordlessType\x88\x01\x01\x12W\n\x15\x63ode_challenge_length\x18\x06 \x01(\rB\x1e\x92\x41\x1b\x32\x16Length of the OTP codeJ\x01\x36H\x01R\x13\x63odeChallengeLength\x88\x01\x01\x42\x14\n\x12_passwordless_typeB\x18\n\x16_code_challenge_length\"m\n\x1a\x44iscoveryAuthMethodRequest\x12O\n\x11\x64iscovery_request\x18\x02 \x01(\x0b\x32\".scalekit.v1.auth.DiscoveryRequestR\x10\x64iscoveryRequest\"\xb3\x01\n\x10\x44iscoveryRequest\x12\x63\n\x05\x65mail\x18\x01 \x01(\tBM\x92\x41\x41\x32*user identifier like email or phone numberJ\x13\"john@acmecorp.com\"\xbaH\x06r\x04\x10\x03\x18\x64R\x05\x65mail\x12:\n\x06intent\x18\x02 \x01(\x0e\x32\x18.scalekit.v1.auth.IntentB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x06intent\"\\\n\x1b\x44iscoveryAuthMethodResponse\x12=\n\x0b\x61uth_method\x18\x01 \x01(\x0b\x32\x1c.scalekit.v1.auth.AuthMethodR\nauthMethod\"\x1e\n\x1cGetAuthCustomizationsRequest\"o\n\x1dGetAuthCustomizationsResponse\x12N\n\x16\x63ustomization_settings\x18\x02 \x01(\x0b\x32\x17.google.protobuf.StructR\x15\x63ustomizationSettings\"N\n\x17GetAuthFeaturesResponse\x12\x33\n\x08\x66\x65\x61tures\x18\x01 \x01(\x0b\x32\x17.google.protobuf.StructR\x08\x66\x65\x61tures\"R\n\x19VerifyPasswordLessRequest\x12\x35\n\x07otp_req\x18\x02 \x01(\x0b\x32\x1c.scalekit.v1.auth.OTPRequestR\x06otpReq\"\x1c\n\x1aVerifyPasswordLessResponse\"i\n\nOTPRequest\x12[\n\x0e\x63ode_challenge\x18\x01 \x01(\tB4\x92\x41(2\x1cOTP sent to the user\'s emailJ\x08\"123456\"\xbaH\x06r\x04\x10\x05\x18\x06R\rcodeChallenge\"\xd4\x01\n\x1dListUserOrganizationsResponse\x12\x44\n\rorganizations\x18\x01 \x03(\x0b\x32\x1e.scalekit.v1.auth.OrganizationR\rorganizations\x12\x31\n\x04user\x18\x02 \x01(\x0b\x32\x1d.scalekit.v1.auth.UserDetailsR\x04user\x12:\n\x06intent\x18\x03 \x01(\x0e\x32\x18.scalekit.v1.auth.IntentB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x06intent\"_\n\x0cOrganization\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12+\n\x11membership_status\x18\x03 \x01(\tR\x10membershipStatus\"_\n\x0bUserDetails\x12\x14\n\x05\x65mail\x18\x01 \x01(\tR\x05\x65mail\x12\x1d\n\nfirst_name\x18\x02 \x01(\tR\tfirstName\x12\x1b\n\tlast_name\x18\x03 \x01(\tR\x08lastName\"\xc4\x01\n\x19SignupOrganizationRequest\x12+\n\x11organization_name\x18\x01 \x01(\tR\x10organizationName\x12\x1d\n\nfirst_name\x18\x02 \x01(\tR\tfirstName\x12\x1b\n\tlast_name\x18\x03 \x01(\tR\x08lastName\x12\x1b\n\tfull_name\x18\x04 \x01(\tR\x08\x66ullName\x12!\n\x0cphone_number\x18\x05 \x01(\tR\x0bphoneNumber\"r\n\x1aSignupOrganizationResponse\x12\'\n\x0forganization_id\x18\x01 \x01(\tR\x0eorganizationId\x12+\n\x11organization_name\x18\x02 \x01(\tR\x10organizationName\"\xd6\x02\n\x1dUpdateLoginUserDetailsRequest\x12v\n\rconnection_id\x18\x01 \x01(\tBQ\x92\x41\x45\x32+Connection ID. Unique ID for the connectionJ\x16\"conn_121312434123312\"\xbaH\x06r\x04\x10\x01\x18 R\x0c\x63onnectionId\x12\x90\x01\n\x10login_request_id\x18\x02 \x01(\tBf\x92\x41]2BLogin Request ID that was shared as part of authorization initiateJ\x17\"lri_73415099636808061\"\xbaH\x03\xc8\x01\x01R\x0eloginRequestId\x12*\n\x04user\x18\x03 \x01(\x0b\x32\x16.scalekit.v1.auth.UserR\x04user\"\x90\x0c\n\x04User\x12\x83\x01\n\x03sub\x18\x01 \x01(\tBq\x92\x41g2WSubject identifier for the user (typically a unique user ID from the identity provider)J\x0c\"1234567890\"\xbaH\x04r\x02\x10\x01R\x03sub\x12R\n\x05\x65mail\x18\x02 \x01(\tB<\x92\x41\x32\x32\x1cUser\'s primary email addressJ\x12\"user@example.com\"\xbaH\x04r\x02\x10\x01R\x05\x65mail\x12=\n\ngiven_name\x18\x03 \x01(\tB\x1e\x92\x41\x1b\x32\x11User\'s first nameJ\x06\"John\"R\tgivenName\x12=\n\x0b\x66\x61mily_name\x18\x04 \x01(\tB\x1c\x92\x41\x19\x32\x10User\'s last nameJ\x05\"Doe\"R\nfamilyName\x12\x88\x01\n\x0e\x65mail_verified\x18\x05 \x01(\x08\x42\x61\x92\x41^2VIndicates whether the user\'s email address has been verified by the identity provider.J\x04trueR\remailVerified\x12\x63\n\x0cphone_number\x18\x06 \x01(\tB@\x92\x41=2,User\'s primary phone number in E.164 format.J\r\"+1234567890\"R\x0bphoneNumber\x12\x95\x01\n\x15phone_number_verified\x18\x07 \x01(\x08\x42\x61\x92\x41^2UIndicates whether the user\'s phone number has been verified by the identity provider.J\x05\x66\x61lseR\x13phoneNumberVerified\x12\x42\n\x04name\x18\x08 \x01(\tB.\x92\x41+2\x1d\x46ull display name of the userJ\n\"John Doe\"R\x04name\x12\x62\n\x12preferred_username\x18\t \x01(\tB3\x92\x41\x30\x32#User\'s preferred username or handleJ\t\"johndoe\"R\x11preferredUsername\x12\x62\n\x07picture\x18\n \x01(\tBH\x92\x41\x45\x32!URL to the user\'s profile pictureJ \"https://example.com/avatar.jpg\"R\x07picture\x12X\n\x06gender\x18\x0b \x01(\tB@\x92\x41=23User\'s gender as reported by the identity provider.J\x06\"male\"R\x06gender\x12\x65\n\x06locale\x18\x0c \x01(\tBM\x92\x41J2?User\'s locale or language preference (IETF BCP 47 language tag)J\x07\"en-US\"R\x06locale\x12\x66\n\x06groups\x18\r \x03(\tBN\x92\x41K2/List of group names or IDs the user belongs to.J\x18[\"admins\", \"developers\"]R\x06groups\x12\xf2\x01\n\x11\x63ustom_attributes\x18\x0e \x01(\x0b\x32\x17.google.protobuf.StructB\xab\x01\x92\x41\xa7\x01\x32mCustom attributes for the user, represented as a key-value map. Used for additional identity provider claims.J6{\"department\": \"Engineering\", \"employee_id\": \"E12345\"}R\x10\x63ustomAttributes\"R\n\x14GetAuthStateResponse\x12:\n\nauth_state\x18\x01 \x01(\x0e\x32\x1b.scalekit.v1.auth.AuthStateR\tauthState*:\n\x06Intent\x12\x16\n\x12INTENT_UNSPECIFIED\x10\x00\x12\x0b\n\x07sign_in\x10\x01\x12\x0b\n\x07sign_up\x10\x02*\x9e\x03\n\tAuthState\x12\x1a\n\x16\x41UTH_STATE_UNSPECIFIED\x10\x00\x12\x1e\n\x1a\x41UTHENTICATION_IN_PROGRESS\x10\x01\x12\x19\n\x15ORGANIZATION_SWITCHER\x10\x02\x12\x19\n\x15ORGANIZATION_SELECTED\x10\x03\x12\x17\n\x13ORGANIZATION_SIGNUP\x10\x04\x12 \n\x1cORGANIZATION_SWITCHER_SIGNUP\x10\x05\x12\x1c\n\x18OTP_VERIFICATION_PENDING\x10\x06\x12\x13\n\x0fMAGIC_LINK_SENT\x10\x07\x12&\n\"LINK_SENT_OTP_VERIFICATION_PENDING\x10\x08\x12\x10\n\x0cOTP_VERIFIED\x10\t\x12\x11\n\rLINK_VERIFIED\x10\n\x12\x15\n\x11SSO_AUTHENTICATED\x10\x0b\x12\x14\n\x10ORG_USER_CREATED\x10\x0c\x12\x1c\n\x18\x41UTHENTICATION_COMPLETED\x10\r\x12\x19\n\x15\x41UTHENTICATION_FAILED\x10\x0e\x32\xa7\x0e\n\x0b\x41uthService\x12w\n\x0fListAuthMethods\x12\x16.google.protobuf.Empty\x1a).scalekit.v1.auth.ListAuthMethodsResponse\"!\x82\xb5\x18\x02\x18\x01\x82\xd3\xe4\x93\x02\x15\x12\x13/api/v1/authmethods\x12\xab\x01\n\x13\x44iscoveryAuthMethod\x12,.scalekit.v1.auth.DiscoveryAuthMethodRequest\x1a-.scalekit.v1.auth.DiscoveryAuthMethodResponse\"7\x82\xb5\x18\x02\x18\x01\x82\xd3\xe4\x93\x02+\"\x16/api/v1/auth:discovery:\x11\x64iscovery_request\x12\xab\x01\n\x15VerifyPasswordLessOtp\x12+.scalekit.v1.auth.VerifyPasswordLessRequest\x1a,.scalekit.v1.auth.VerifyPasswordLessResponse\"7\x82\xb5\x18\x02\x18\x01\x82\xd3\xe4\x93\x02+\" /api/v1/auth/passwordless:verify:\x07otp_req\x12t\n\x12ResendPasswordless\x12\x16.google.protobuf.Empty\x1a\x16.google.protobuf.Empty\".\x82\xb5\x18\x02\x18\x01\x82\xd3\xe4\x93\x02\"\" /api/v1/auth/passwordless:resend\x12\x8a\x01\n\x15ListUserOrganizations\x12\x16.google.protobuf.Empty\x1a/.scalekit.v1.auth.ListUserOrganizationsResponse\"(\x82\xb5\x18\x02\x18\x01\x82\xd3\xe4\x93\x02\x1c\x12\x1a/api/v1/auth:organizations\x12\x95\x01\n\x12SignupOrganization\x12+.scalekit.v1.auth.SignupOrganizationRequest\x1a,.scalekit.v1.auth.SignupOrganizationResponse\"$\x82\xb5\x18\x02\x18\x01\x82\xd3\xe4\x93\x02\x18\"\x13/api/v1/auth:signup:\x01*\x12p\n\x0cGetAuthState\x12\x16.google.protobuf.Empty\x1a&.scalekit.v1.auth.GetAuthStateResponse\" \x82\xb5\x18\x02\x18\x01\x82\xd3\xe4\x93\x02\x14\x12\x12/api/v1/auth/state\x12[\n\x06Logout\x12\x16.google.protobuf.Empty\x1a\x16.google.protobuf.Empty\"!\x82\xb5\x18\x02\x18\x01\x82\xd3\xe4\x93\x02\x15\"\x13/api/v1/auth/logout\x12h\n\x10GetActiveSession\x12\x16.google.protobuf.Empty\x1a\x16.google.protobuf.Empty\"$\x82\xb5\x18\x02\x18\x01\x82\xd3\xe4\x93\x02\x18\x12\x16/api/v1/session:active\x12\xa3\x01\n\x15GetAuthCustomizations\x12..scalekit.v1.auth.GetAuthCustomizationsRequest\x1a/.scalekit.v1.auth.GetAuthCustomizationsResponse\")\x82\xb5\x18\x02\x18\x01\x82\xd3\xe4\x93\x02\x1d\x12\x1b/api/v1/auth:customizations\x12y\n\x0fGetAuthFeatures\x12\x16.google.protobuf.Empty\x1a).scalekit.v1.auth.GetAuthFeaturesResponse\"#\x82\xb5\x18\x02\x18\x01\x82\xd3\xe4\x93\x02\x17\x12\x15/api/v1/auth:features\x12\xcd\x02\n\x16UpdateLoginUserDetails\x12/.scalekit.v1.auth.UpdateLoginUserDetailsRequest\x1a\x16.google.protobuf.Empty\"\xe9\x01\x92\x41z\n\x0b\x43onnections\x12%Update User Details for login request\x1a%Update User Details for login requestJ\x1d\n\x03\x32\x30\x30\x12\x16\n\x14\x44\x65leted Successfully\x82\xb5\x18\x02\x18\x04\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02Q\"I/api/v1/connections/{connection_id}/auth-requests/{login_request_id}/user:\x04userB0Z.github.com/scalekit-inc/scalekit/pkg/grpc/authb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -107,8 +107,8 @@ _globals['_AUTHSERVICE'].methods_by_name['UpdateLoginUserDetails']._serialized_options = b'\222Az\n\013Connections\022%Update User Details for login request\032%Update User Details for login requestJ\035\n\003200\022\026\n\024Deleted Successfully\202\265\030\002\030\004\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\002Q\"I/api/v1/connections/{connection_id}/auth-requests/{login_request_id}/user:\004user' _globals['_INTENT']._serialized_start=4764 _globals['_INTENT']._serialized_end=4822 - _globals['_AUTHSTATE']._serialized_start=4824 - _globals['_AUTHSTATE']._serialized_end=4941 + _globals['_AUTHSTATE']._serialized_start=4825 + _globals['_AUTHSTATE']._serialized_end=5239 _globals['_LISTAUTHMETHODSRESPONSE']._serialized_start=423 _globals['_LISTAUTHMETHODSRESPONSE']._serialized_end=513 _globals['_AUTHMETHOD']._serialized_start=516 @@ -147,6 +147,6 @@ _globals['_USER']._serialized_end=4678 _globals['_GETAUTHSTATERESPONSE']._serialized_start=4680 _globals['_GETAUTHSTATERESPONSE']._serialized_end=4762 - _globals['_AUTHSERVICE']._serialized_start=4944 - _globals['_AUTHSERVICE']._serialized_end=6775 + _globals['_AUTHSERVICE']._serialized_start=5242 + _globals['_AUTHSERVICE']._serialized_end=7073 # @@protoc_insertion_point(module_scope) diff --git a/scalekit/v1/auth/auth_pb2.pyi b/scalekit/v1/auth/auth_pb2.pyi index 4186178..2c4523c 100644 --- a/scalekit/v1/auth/auth_pb2.pyi +++ b/scalekit/v1/auth/auth_pb2.pyi @@ -25,17 +25,39 @@ class Intent(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): class AuthState(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): __slots__ = () - AUTHENTICATION: _ClassVar[AuthState] + AUTH_STATE_UNSPECIFIED: _ClassVar[AuthState] + AUTHENTICATION_IN_PROGRESS: _ClassVar[AuthState] ORGANIZATION_SWITCHER: _ClassVar[AuthState] - ORGANIZATION_SWITCHER_SIGNUP: _ClassVar[AuthState] + ORGANIZATION_SELECTED: _ClassVar[AuthState] ORGANIZATION_SIGNUP: _ClassVar[AuthState] + ORGANIZATION_SWITCHER_SIGNUP: _ClassVar[AuthState] + OTP_VERIFICATION_PENDING: _ClassVar[AuthState] + MAGIC_LINK_SENT: _ClassVar[AuthState] + LINK_SENT_OTP_VERIFICATION_PENDING: _ClassVar[AuthState] + OTP_VERIFIED: _ClassVar[AuthState] + LINK_VERIFIED: _ClassVar[AuthState] + SSO_AUTHENTICATED: _ClassVar[AuthState] + ORG_USER_CREATED: _ClassVar[AuthState] + AUTHENTICATION_COMPLETED: _ClassVar[AuthState] + AUTHENTICATION_FAILED: _ClassVar[AuthState] INTENT_UNSPECIFIED: Intent sign_in: Intent sign_up: Intent -AUTHENTICATION: AuthState +AUTH_STATE_UNSPECIFIED: AuthState +AUTHENTICATION_IN_PROGRESS: AuthState ORGANIZATION_SWITCHER: AuthState -ORGANIZATION_SWITCHER_SIGNUP: AuthState +ORGANIZATION_SELECTED: AuthState ORGANIZATION_SIGNUP: AuthState +ORGANIZATION_SWITCHER_SIGNUP: AuthState +OTP_VERIFICATION_PENDING: AuthState +MAGIC_LINK_SENT: AuthState +LINK_SENT_OTP_VERIFICATION_PENDING: AuthState +OTP_VERIFIED: AuthState +LINK_VERIFIED: AuthState +SSO_AUTHENTICATED: AuthState +ORG_USER_CREATED: AuthState +AUTHENTICATION_COMPLETED: AuthState +AUTHENTICATION_FAILED: AuthState class ListAuthMethodsResponse(_message.Message): __slots__ = ("auth_methods",) diff --git a/scalekit/v1/clients/clients_pb2.py b/scalekit/v1/clients/clients_pb2.py index 46c3e7c..79c8475 100644 --- a/scalekit/v1/clients/clients_pb2.py +++ b/scalekit/v1/clients/clients_pb2.py @@ -21,12 +21,13 @@ from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 from google.protobuf import field_mask_pb2 as google_dot_protobuf_dot_field__mask__pb2 from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 +from google.protobuf import wrappers_pb2 as google_dot_protobuf_dot_wrappers__pb2 from protoc_gen_openapiv2.options import annotations_pb2 as protoc__gen__openapiv2_dot_options_dot_annotations__pb2 from scalekit.v1.commons import commons_pb2 as scalekit_dot_v1_dot_commons_dot_commons__pb2 from scalekit.v1.options import options_pb2 as scalekit_dot_v1_dot_options_dot_options__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!scalekit/v1/clients/clients.proto\x12\x13scalekit.v1.clients\x1a\x1b\x62uf/validate/validate.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1bgoogle/api/visibility.proto\x1a\x19google/protobuf/any.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a google/protobuf/field_mask.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a.protoc-gen-openapiv2/options/annotations.proto\x1a!scalekit/v1/commons/commons.proto\x1a!scalekit/v1/options/options.proto\"\x99\x01\n\x18\x43reateApplicationRequest\x12}\n\x0b\x61pplication\x18\x01 \x01(\x0b\x32&.scalekit.v1.clients.CreateApplicationB3\x92\x41*2(Details of the application to be created\xbaH\x03\xc8\x01\x01R\x0b\x61pplication\"\x86\t\n\x11\x43reateApplication\x12\x88\x01\n\x10\x61pplication_type\x18\x01 \x01(\x0e\x32$.scalekit.v1.clients.ApplicationTypeB7\x92\x41.2%Type of the application to be createdJ\x05\"WEB\"\xbaH\x03\xc8\x01\x01R\x0f\x61pplicationType\x12\x65\n\x0bthird_party\x18\x02 \x01(\x08\x42\x44\x92\x41\x41\x32\x39Indicates if the application is a first-party applicationJ\x04trueR\nthirdParty\x12Q\n\x04name\x18\x03 \x01(\tB=\x92\x41/2\x17Name of the applicationJ\x14\"My API Application\"\xbaH\x08r\x03\x18\x80\x01\xc8\x01\x01R\x04name\x12\x8c\x01\n\x0b\x64\x65scription\x18\x04 \x01(\tBj\x92\x41_2\x1e\x44\x65scription of the applicationJ=\"Application for accessing your organization\'s API resources\"\xbaH\x05r\x03\x18\x80\x04R\x0b\x64\x65scription\x12\xb9\x01\n\x0bresource_id\x18\x05 \x01(\tB\x97\x01\x92\x41\x89\x01\x32gResource identifier for the application. This could be the URL used to access the application resourcesJ\x1e\"https://resource.example.com\"\xbaH\x07r\x05\x10\x01\x18\x80\x04R\nresourceId\x12g\n\x13\x61\x63\x63\x65ss_token_expiry\x18\x06 \x01(\x03\x42\x37\x92\x41\x34\x32,Expiry time in seconds for the access token.J\x04\x33\x36\x30\x30R\x11\x61\x63\x63\x65ssTokenExpiry\x12k\n\x14refresh_token_expiry\x18\x07 \x01(\x03\x42\x39\x92\x41\x36\x32-Expiry time in seconds for the refresh token.J\x05\x38\x36\x34\x30\x30R\x12refreshTokenExpiry\x12\xa4\x01\n!allow_dynamic_client_registration\x18\x08 \x01(\x08\x42Y\x92\x41P2HIndicates if dynamic client registration is allowed for this applicationJ\x04true\xbaH\x03\xc8\x01\x01R\x1e\x61llowDynamicClientRegistration\x12\x64\n\x08logo_uri\x18\t \x01(\tBI\x92\x41>2\x1cLogo URI for the applicationJ\x1e\"https://example.com/logo.png\"\xbaH\x05r\x03\x18\x80\x04R\x07logoUri\"\x8b\x06\n\x11\x41pplicationClient\x12\x44\n\x04name\x18\x01 \x01(\tB0\x92\x41%2\x12Name of the clientJ\x0f\"My API Client\"\xbaH\x05r\x03\x18\x80\x01R\x04name\x12\x82\x01\n\x0b\x64\x65scription\x18\x02 \x01(\tB`\x92\x41U2\x19\x44\x65scription of the clientJ8\"Client for accessing your organization\'s API resources\"\xbaH\x05r\x03\x18\x80\x04R\x0b\x64\x65scription\x12\x38\n\x06scopes\x18\x03 \x03(\tB \x92\x41\x1d\x32\x1bOAuth scopes for the clientR\x06scopes\x12\x62\n\x08\x61udience\x18\x04 \x03(\tBF\x92\x41\x43\x32$OAuth audience values for the clientJ\x1b[\"https://api.example.com\"]R\x08\x61udience\x12\xc6\x01\n\rcustom_claims\x18\x05 \x03(\x0b\x32 .scalekit.v1.clients.CustomClaimB\x7f\x92\x41|2zCustom claims to be included in access tokens. Please keep this to the essentials as this increases the size of the token.R\x0c\x63ustomClaims\x12_\n\x06\x65xpiry\x18\x06 \x01(\x03\x42G\x92\x41\x44\x322\x1cLogo URI for the applicationJ\x1e\"https://example.com/logo.png\"\xbaH\x05r\x03\x18\x80\x04R\x07logoUri\x12g\n\x13\x61\x63\x63\x65ss_token_expiry\x18\t \x01(\x03\x42\x37\x92\x41\x34\x32,Expiry time in seconds for the access token.J\x04\x33\x36\x30\x30R\x11\x61\x63\x63\x65ssTokenExpiry\x12k\n\x14refresh_token_expiry\x18\n \x01(\x03\x42\x39\x92\x41\x36\x32-Expiry time in seconds for the refresh token.J\x05\x38\x36\x34\x30\x30R\x12refreshTokenExpiry\x12\x88\x01\n\x0b\x63reate_time\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.TimestampBK\x92\x41H2*Timestamp when the application was createdJ\x1a\"2024-01-05T14:48:00.000Z\"R\ncreateTime\x12\x8d\x01\n\x0bupdate_time\x18\x0c \x01(\x0b\x32\x1a.google.protobuf.TimestampBP\x92\x41M2/Timestamp when the application was last updatedJ\x1a\"2024-01-05T14:48:00.000Z\"R\nupdateTime\"\xfb\x01\n\x15RegisterClientRequest\x12r\n\x06\x61pp_id\x18\x01 \x01(\tB[\x92\x41\x46\x32+Unique identifier of the client applicationJ\x17\"app_69388798466720005\"\xbaH\x0fr\n\x10\x01\x18 :\x04\x61pp_\xc8\x01\x01R\x05\x61ppId\x12n\n\x06\x63lient\x18\x02 \x01(\x0b\x32#.scalekit.v1.clients.RegisterClientB1\x92\x41(2&Details of the client to be registered\xbaH\x03\xc8\x01\x01R\x06\x63lient\"\x94\x06\n\x0eRegisterClient\x12Q\n\x0b\x63lient_name\x18\x01 \x01(\tB0\x92\x41%2\x12Name of the clientJ\x0f\"My API Client\"\xbaH\x05r\x03\x18\x80\x01R\nclientName\x12\x82\x01\n\x0b\x64\x65scription\x18\x02 \x01(\tB`\x92\x41U2\x19\x44\x65scription of the clientJ8\"Client for accessing your organization\'s API resources\"\xbaH\x05r\x03\x18\x80\x04R\x0b\x64\x65scription\x12\x65\n\rredirect_uris\x18\x03 \x03(\tB@\x92\x41=2\x1bRedirect URI for the clientJ\x1e\"https://example.com/callback\"R\x0credirectUris\x12Y\n\x05scope\x18\x04 \x03(\tBC\x92\x41@2\x1bOAuth scopes for the clientJ![\"read:users\", \"write:resources\"]R\x05scope\x12T\n\nclient_uri\x18\x05 \x01(\tB5\x92\x41\x32\x32\x19\x43lient URI for the clientJ\x15\"https://example.com\"R\tclientUri\x12W\n\x08logo_uri\x18\x06 \x01(\tB<\x92\x41\x39\x32\x17Logo URI for the clientJ\x1e\"https://example.com/logo.png\"R\x07logoUri\x12\\\n\x07tos_uri\x18\x07 \x01(\tBC\x92\x41@2#Terms of Service URI for the clientJ\x19\"https://example.com/tos\"R\x06tosUri\x12[\n\npolicy_uri\x18\x08 \x01(\tB<\x92\x41\x39\x32\x19Policy URI for the clientJ\x1c\"https://example.com/policy\"R\tpolicyUri\"\xf5\x14\n\x16RegisterClientResponse\x12\xfc\x01\n\tclient_id\x18\x01 \x01(\tB\xde\x01\x92\x41\xda\x01\x32\xbc\x01The unique identifier for this M2M client. This ID is used to identify the client in API requests and logs. It is automatically generated when the client is created and cannot be modified.J\x19\"m2morg_1231234233424344\"R\x08\x63lientId\x12\xb3\x02\n\x07secrets\x18\x02 \x03(\x0b\x32!.scalekit.v1.clients.ClientSecretB\xf5\x01\x92\x41\xf1\x01\x32\xee\x01List of client secrets associated with this client. Each secret can be used for authentication, but only the most recently created secret is typically active. Secrets are stored securely and their values are never returned after creation.R\x07secrets\x12\xa2\x01\n\x04name\x18\x03 \x01(\tB\x8d\x01\x92\x41\x89\x01\x32\x62The display name of the M2M client. This name helps identify the client in the dashboard and logs.J#\"GitHub Actions Deployment Service\"R\x04name\x12\xda\x01\n\x0b\x64\x65scription\x18\x04 \x01(\tB\xb7\x01\x92\x41\xb3\x01\x32{A detailed description of the client\'s purpose and usage. This helps administrators understand what the client is used for.J4\"Service account for automated deployment processes\"R\x0b\x64\x65scription\x12\xd5\x01\n\x0b\x63reate_time\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x97\x01\x92\x41\x93\x01\x32uThe timestamp when this M2M client was created. This field is automatically set by the server and cannot be modified.J\x1a\"2024-01-05T14:48:00.000Z\"R\ncreateTime\x12\xf4\x01\n\x0bupdate_time\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\xb6\x01\x92\x41\xb2\x01\x32\x93\x01The timestamp when this M2M client was last updated. This field is automatically updated by the server whenever the client\'s configuration changes.J\x1a\"2024-01-05T14:48:00.000Z\"R\nupdateTime\x12\xc1\x01\n\x06scopes\x18\x07 \x03(\tB\xa8\x01\x92\x41\xa4\x01\x32uThe OAuth 2.0 scopes granted to this client. These scopes determine what resources and actions the client can access.J+[\"deploy:applications\", \"read:deployments\"]R\x06scopes\x12\xc7\x01\n\x08\x61udience\x18\x08 \x03(\tB\xaa\x01\x92\x41\xa6\x01\x32\x86\x01The intended recipients of access tokens issued to this client. Each audience value should be a URI that identifies an API or service.J\x1b[\"https://api.example.com\"]R\x08\x61udience\x12\xec\x01\n\rcustom_claims\x18\t \x03(\x0b\x32 .scalekit.v1.clients.CustomClaimB\xa4\x01\x92\x41\xa0\x01\x32\x9d\x01\x41\x64\x64itional claims included in access tokens issued to this client. These claims provide context about the client and can be used for authorization decisions.R\x0c\x63ustomClaims\x12\xb2\x01\n\x06\x65xpiry\x18\n \x01(\x03\x42\x99\x01\x92\x41\x95\x01\x32\x8c\x01The lifetime of access tokens issued to this client, in seconds. This determines how long a token remains valid before it must be refreshed.J\x04\x33\x36\x30\x30R\x06\x65xpiry\x12\xd0\x01\n\x0e\x61pplication_id\x18\x0b \x01(\tB\xa8\x01\x92\x41\xa4\x01\x32\x89\x01The ID of the application associated with this M2M client. This field is used to link the client to a specific application in the system.J\x16\"app_1231234233424344\"R\rapplicationId\x12\xcf\x01\n\rredirect_uris\x18\x0c \x03(\tB\xa9\x01\x92\x41\xa5\x01\x32\x82\x01The redirect URI for this M2M client. This URI is used in the OAuth 2.0 authorization flow to redirect users after authentication.J\x1e\"https://example.com/callback\"R\x0credirectUris\"\xd0\x02\n\x17ListApplicationsRequest\x12~\n\x10\x61pplication_type\x18\x01 \x01(\x0e\x32$.scalekit.v1.clients.ApplicationTypeB-\x92\x41$2\x1b\x46ilter applications by typeJ\x05\"WEB\"\xbaH\x03\xc8\x01\x01R\x0f\x61pplicationType\x12]\n\npage_token\x18\x02 \x01(\tB>\x92\x41;2\"Token for the next page of resultsJ\x15\"next_page_token_123\"R\tpageToken\x12V\n\tpage_size\x18\x03 \x01(\rB9\x92\x41/2)Number of applications to return per pageJ\x02\x32\x30\xbaH\x04*\x02\x18\x1eR\x08pageSize\"\x98\x02\n\x18ListApplicationsResponse\x12J\n\ntotal_size\x18\x01 \x01(\rB+\x92\x41(2&Total number of applications availableR\ttotalSize\x12O\n\x0fnext_page_token\x18\x02 \x01(\tB\'\x92\x41$2\"Token for the next page of resultsR\rnextPageToken\x12_\n\x0c\x61pplications\x18\x03 \x03(\x0b\x32 .scalekit.v1.clients.ApplicationB\x19\x92\x41\x16\x32\x14List of applicationsR\x0c\x61pplications\"\x8a\x02\n\x18UpdateApplicationRequest\x12|\n\x0e\x61pplication_id\x18\x01 \x01(\tBU\x92\x41I2.Unique identifier of the application to updateJ\x17\"app_69388798466720005\"\xbaH\x06r\x04\x10\x01\x18 R\rapplicationId\x12p\n\x0b\x61pplication\x18\x02 \x01(\x0b\x32&.scalekit.v1.clients.UpdateApplicationB&\x92\x41\x1d\x32\x1bUpdated application details\xbaH\x03\xc8\x01\x01R\x0b\x61pplication\"\x9b\x07\n\x11UpdateApplication\x12V\n\x04name\x18\x01 \x01(\tBB\x92\x41\x37\x32\x17Name of the applicationJ\x1c\"My Updated API Application\"\xbaH\x05r\x03\x18\x80\x01R\x04name\x12\x94\x01\n\x0b\x64\x65scription\x18\x02 \x01(\tBr\x92\x41g2\x1e\x44\x65scription of the applicationJE\"Updated application for accessing your organization\'s API resources\"\xbaH\x05r\x03\x18\x80\x04R\x0b\x64\x65scription\x12\xb9\x01\n\x0bresource_id\x18\x03 \x01(\tB\x97\x01\x92\x41\x89\x01\x32gResource identifier for the application. This could be the URL used to access the application resourcesJ\x1e\"https://resource.example.com\"\xbaH\x07r\x05\x10\x01\x18\x80\x04R\nresourceId\x12g\n\x13\x61\x63\x63\x65ss_token_expiry\x18\x04 \x01(\x03\x42\x37\x92\x41\x34\x32,Expiry time in seconds for the access token.J\x04\x33\x36\x30\x30R\x11\x61\x63\x63\x65ssTokenExpiry\x12k\n\x14refresh_token_expiry\x18\x05 \x01(\x03\x42\x39\x92\x41\x36\x32-Expiry time in seconds for the refresh token.J\x05\x38\x36\x34\x30\x30R\x12refreshTokenExpiry\x12\x9e\x01\n!allow_dynamic_client_registration\x18\x06 \x01(\x08\x42S\x92\x41P2HIndicates if dynamic client registration is allowed for this applicationJ\x04trueR\x1e\x61llowDynamicClientRegistration\x12\x64\n\x08logo_uri\x18\x07 \x01(\tBI\x92\x41>2\x1cLogo URI for the applicationJ\x1e\"https://example.com/logo.png\"\xbaH\x05r\x03\x18\x80\x04R\x07logoUri\"\x88\x01\n\x19UpdateApplicationResponse\x12k\n\x0b\x61pplication\x18\x01 \x01(\x0b\x32 .scalekit.v1.clients.ApplicationB\'\x92\x41$2\"Details of the updated applicationR\x0b\x61pplication\"\x8b\x02\n\x1e\x43reateApplicationClientRequest\x12y\n\x0e\x61pplication_id\x18\x01 \x01(\tBR\x92\x41\x46\x32+Unique identifier of the client applicationJ\x17\"app_69388798466720005\"\xbaH\x06r\x04\x10\x01\x18 R\rapplicationId\x12n\n\x06\x63lient\x18\x02 \x01(\x0b\x32&.scalekit.v1.clients.ApplicationClientB.\x92\x41%2#Details of the client to be created\xbaH\x03\xc8\x01\x01R\x06\x63lient\"\xfb\x01\n\x1f\x43reateApplicationClientResponse\x12Z\n\x06\x63lient\x18\x01 \x01(\x0b\x32\x1e.scalekit.v1.clients.M2MClientB\"\x92\x41\x1f\x32\x1d\x44\x65tails of the created clientR\x06\x63lient\x12|\n\x0cplain_secret\x18\x02 \x01(\tBY\x92\x41V24Client secret value (only returned once at creation)J\x1e\"CdExsdErfccxDDssddfffgfeFHH1\"R\x0bplainSecret\"\xa5\x02\n\x1bGetApplicationClientRequest\x12~\n\x0e\x61pplication_id\x18\x01 \x01(\tBW\x92\x41K27Unique identifier of the client application to retrieveJ\x10\"skc_1234567890\"\xbaH\x06r\x04\x10\x01\x18 R\rapplicationId\x12\x85\x01\n\tclient_id\x18\x02 \x01(\tBh\x92\x41\\2?Unique identifier of the client associated with the applicationJ\x19\"m2morg_1231234233424344\"\xbaH\x06r\x04\x10\x01\x18 R\x08\x63lientId\"\xeb\x01\n\x1cGetApplicationClientResponse\x12m\n\x0b\x61pplication\x18\x01 \x01(\x0b\x32 .scalekit.v1.clients.ApplicationB)\x92\x41&2$Details of the requested applicationR\x0b\x61pplication\x12\\\n\x06\x63lient\x18\x02 \x01(\x0b\x32\x1e.scalekit.v1.clients.M2MClientB$\x92\x41!2\x1f\x44\x65tails of the requested clientR\x06\x63lient\"\x8e\x02\n\x1f\x43reateOrganizationClientRequest\x12z\n\x0forganization_id\x18\x01 \x01(\tBQ\x92\x41?2%Unique identifier of the organizationJ\x16\"org_1231234233424344\"\xbaH\x0cr\n\x10\x01\x18 :\x04org_R\x0eorganizationId\x12o\n\x06\x63lient\x18\x02 \x01(\x0b\x32\'.scalekit.v1.clients.OrganizationClientB.\x92\x41%2#Details of the client to be created\xbaH\x03\xc8\x01\x01R\x06\x63lient\"\xb4\r\n\x12OrganizationClient\x12\xe7\x01\n\x04name\x18\x01 \x01(\tB\xd2\x01\x92\x41\xc6\x01\x32\x9e\x01\x41 descriptive name for the API client that helps identify its purpose. This name is displayed in the dashboard and logs. Must be between 1 and 128 characters.J#\"GitHub Actions Deployment Service\"\xbaH\x05r\x03\x18\x80\x01R\x04name\x12\x8b\x02\n\x0b\x64\x65scription\x18\x02 \x01(\tB\xe8\x01\x92\x41\xdc\x01\x32\x8e\x01\x41 detailed explanation of the client\'s purpose and usage. This helps administrators understand what the client is used for and who manages it.JI\"Service account for GitHub Actions to deploy applications to production\"\xbaH\x05r\x03\x18\x80\x04R\x0b\x64\x65scription\x12\x98\x02\n\x06scopes\x18\x03 \x03(\tB\xff\x01\x92\x41\xfb\x01\x32\xcb\x01OAuth 2.0 scopes that define the permissions granted to this client. Each scope represents a specific permission or set of permissions. The client can only access resources that match its granted scopes.J+[\"deploy:applications\", \"read:deployments\"]R\x06scopes\x12\x9e\x02\n\x08\x61udience\x18\x04 \x03(\tB\x81\x02\x92\x41\xfd\x01\x32\xa8\x01The intended recipients of the access tokens issued to this client. Each audience value should be a URI that identifies the API or service that will validate the token.JP[\"https://api.example.com/api/analytics\", \"https://deployment-api.acmecorp.com\"]R\x08\x61udience\x12\x82\x03\n\rcustom_claims\x18\x05 \x03(\x0b\x32 .scalekit.v1.clients.CustomClaimB\xba\x02\x92\x41\xb6\x02\x32\xd7\x01\x41\x64\x64itional claims to be included in access tokens issued to this client. These claims provide context about the client and can be used for authorization decisions. Keep claims minimal to avoid increasing token size.JZ[{\"key\": \"environment\", \"value\": \"production\"}, {\"key\": \"service\", \"value\": \"deployment\"}]R\x0c\x63ustomClaims\x12\xe4\x01\n\x06\x65xpiry\x18\x06 \x01(\x03\x42\xcb\x01\x92\x41\xc7\x01\x32\xbe\x01The lifetime of access tokens issued to this client, in seconds. This value determines how long a token remains valid before it must be refreshed. Defaults to 3600 (1 hour) if not specified.J\x04\x33\x36\x30\x30R\x06\x65xpiry\"\xfc\x01\n CreateOrganizationClientResponse\x12Z\n\x06\x63lient\x18\x01 \x01(\x0b\x32\x1e.scalekit.v1.clients.M2MClientB\"\x92\x41\x1f\x32\x1d\x44\x65tails of the created clientR\x06\x63lient\x12|\n\x0cplain_secret\x18\x02 \x01(\tBY\x92\x41V24Client secret value (only returned once at creation)J\x1e\"CdExsdErfccxDDssddfffgfeFHH1\"R\x0bplainSecret\"\xf9\x02\n\x1fUpdateOrganizationClientRequest\x12z\n\x0forganization_id\x18\x01 \x01(\tBQ\x92\x41?2%Unique identifier of the organizationJ\x16\"org_1231234233424344\"\xbaH\x0cr\n\x10\x01\x18 :\x04org_R\x0eorganizationId\x12n\n\tclient_id\x18\x02 \x01(\tBQ\x92\x41<2\x1fUnique identifier of the clientJ\x19\"m2morg_1231234233424344\"\xbaH\x0fr\r\x10\x01\x18 :\x07m2morg_R\x08\x63lientId\x12j\n\x06\x63lient\x18\x03 \x01(\x0b\x32\'.scalekit.v1.clients.OrganizationClientB)\x92\x41 2\x1eUpdated details for the client\xbaH\x03\xc8\x01\x01R\x06\x63lient\"~\n UpdateOrganizationClientResponse\x12Z\n\x06\x63lient\x18\x01 \x01(\x0b\x32\x1e.scalekit.v1.clients.M2MClientB\"\x92\x41\x1f\x32\x1dUpdated details of the clientR\x06\x63lient\"\xe2\x16\n\tM2MClient\x12\xfc\x01\n\tclient_id\x18\x01 \x01(\tB\xde\x01\x92\x41\xda\x01\x32\xbc\x01The unique identifier for this API client. This ID is used to identify the client in API requests and logs. It is automatically generated when the client is created and cannot be modified.J\x19\"m2morg_1231234233424344\"R\x08\x63lientId\x12\xb3\x02\n\x07secrets\x18\x02 \x03(\x0b\x32!.scalekit.v1.clients.ClientSecretB\xf5\x01\x92\x41\xf1\x01\x32\xee\x01List of client secrets associated with this client. Each secret can be used for authentication, but only the most recently created secret is typically active. Secrets are stored securely and their values are never returned after creation.R\x07secrets\x12\xa2\x01\n\x04name\x18\x03 \x01(\tB\x8d\x01\x92\x41\x89\x01\x32\x62The display name of the API client. This name helps identify the client in the dashboard and logs.J#\"GitHub Actions Deployment Service\"R\x04name\x12\xda\x01\n\x0b\x64\x65scription\x18\x04 \x01(\tB\xb7\x01\x92\x41\xb3\x01\x32{A detailed description of the client\'s purpose and usage. This helps administrators understand what the client is used for.J4\"Service account for automated deployment processes\"R\x0b\x64\x65scription\x12\xf7\x01\n\x0forganization_id\x18\x05 \x01(\tB\xcd\x01\x92\x41\xc9\x01\x32\xae\x01The ID of the organization that owns this API client. This ID is used to associate the client with the correct organization and enforce organization-specific access controls.J\x16\"org_1231234233424344\"R\x0eorganizationId\x12\xd5\x01\n\x0b\x63reate_time\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x97\x01\x92\x41\x93\x01\x32uThe timestamp when this API client was created. This field is automatically set by the server and cannot be modified.J\x1a\"2024-01-05T14:48:00.000Z\"R\ncreateTime\x12\xf4\x01\n\x0bupdate_time\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\xb6\x01\x92\x41\xb2\x01\x32\x93\x01The timestamp when this API client was last updated. This field is automatically updated by the server whenever the client\'s configuration changes.J\x1a\"2024-01-05T14:48:00.000Z\"R\nupdateTime\x12\xc1\x01\n\x06scopes\x18\x08 \x03(\tB\xa8\x01\x92\x41\xa4\x01\x32uThe OAuth 2.0 scopes granted to this client. These scopes determine what resources and actions the client can access.J+[\"deploy:applications\", \"read:deployments\"]R\x06scopes\x12\xc7\x01\n\x08\x61udience\x18\t \x03(\tB\xaa\x01\x92\x41\xa6\x01\x32\x86\x01The intended recipients of access tokens issued to this client. Each audience value should be a URI that identifies an API or service.J\x1b[\"https://api.example.com\"]R\x08\x61udience\x12\xec\x01\n\rcustom_claims\x18\n \x03(\x0b\x32 .scalekit.v1.clients.CustomClaimB\xa4\x01\x92\x41\xa0\x01\x32\x9d\x01\x41\x64\x64itional claims included in access tokens issued to this client. These claims provide context about the client and can be used for authorization decisions.R\x0c\x63ustomClaims\x12\xb2\x01\n\x06\x65xpiry\x18\x0b \x01(\x03\x42\x99\x01\x92\x41\x95\x01\x32\x8c\x01The lifetime of access tokens issued to this client, in seconds. This determines how long a token remains valid before it must be refreshed.J\x04\x33\x36\x30\x30R\x06\x65xpiry\x12\xd0\x01\n\x0e\x61pplication_id\x18\x0c \x01(\tB\xa8\x01\x92\x41\xa4\x01\x32\x89\x01The ID of the application associated with this API client. This field is used to link the client to a specific application in the system.J\x16\"app_1231234233424344\"R\rapplicationId\x12\xcf\x01\n\rredirect_uris\x18\r \x03(\tB\xa9\x01\x92\x41\xa5\x01\x32\x82\x01The redirect URI for this API client. This URI is used in the OAuth 2.0 authorization flow to redirect users after authentication.J\x1e\"https://example.com/callback\"R\x0credirectUris\"\x8e\x02\n\x1cGetOrganizationClientRequest\x12z\n\x0forganization_id\x18\x01 \x01(\tBQ\x92\x41?2%Unique identifier of the organizationJ\x16\"org_1231234233424344\"\xbaH\x0cr\n\x10\x01\x18 :\x04org_R\x0eorganizationId\x12r\n\tclient_id\x18\x02 \x01(\tBU\x92\x41@2#Unique identifier of the API clientJ\x19\"m2morg_1231234233424344\"\xbaH\x0fr\r\x10\x01\x18 :\x07m2morg_R\x08\x63lientId\"\x97\x02\n%CreateOrganizationClientSecretRequest\x12z\n\x0forganization_id\x18\x01 \x01(\tBQ\x92\x41?2%Unique identifier of the organizationJ\x16\"org_1231234233424344\"\xbaH\x0cr\n\x10\x01\x18 :\x04org_R\x0eorganizationId\x12r\n\tclient_id\x18\x02 \x01(\tBU\x92\x41@2#Unique identifier of the API clientJ\x19\"m2morg_1231234233424344\"\xbaH\x0fr\r\x10\x01\x18 :\x07m2morg_R\x08\x63lientId\"\x8b\x02\n&CreateOrganizationClientSecretResponse\x12{\n\x0cplain_secret\x18\x01 \x01(\tBX\x92\x41U24Client secret value (only returned once at creation)J\x1d\"m2morg_client_secret_xyz123\"R\x0bplainSecret\x12\x64\n\x06secret\x18\x02 \x01(\x0b\x32!.scalekit.v1.clients.ClientSecretB)\x92\x41&2$Details of the created client secretR\x06secret\"\x82\x03\n%DeleteOrganizationClientSecretRequest\x12z\n\x0forganization_id\x18\x01 \x01(\tBQ\x92\x41?2%Unique identifier of the organizationJ\x16\"org_1231234233424344\"\xbaH\x0cr\n\x10\x01\x18 :\x04org_R\x0eorganizationId\x12r\n\tclient_id\x18\x02 \x01(\tBU\x92\x41@2#Unique identifier of the API clientJ\x19\"m2morg_1231234233424344\"\xbaH\x0fr\r\x10\x01\x18 :\x07m2morg_R\x08\x63lientId\x12i\n\tsecret_id\x18\x03 \x01(\tBL\x92\x41@2&Unique identifier of the client secretJ\x16\"sec_1231234233424344\"\xbaH\x06r\x04\x10\x01\x18 R\x08secretId\"}\n\x1dGetOrganizationClientResponse\x12\\\n\x06\x63lient\x18\x01 \x01(\x0b\x32\x1e.scalekit.v1.clients.M2MClientB$\x92\x41!2\x1f\x44\x65tails of the requested clientR\x06\x63lient\"\xd4\x02\n\x0b\x43ustomClaim\x12\xb7\x01\n\x03key\x18\x01 \x01(\tB\xa4\x01\x92\x41\x96\x01\x32\x84\x01The name of the custom claim. Must be between 1 and 128 characters. Use descriptive names that clearly indicate the claim\'s purpose.J\r\"environment\"\xbaH\x07r\x05\x10\x01\x18\x80\x01R\x03key\x12\x8a\x01\n\x05value\x18\x02 \x01(\tBt\x92\x41q2aThe value of the custom claim. This value will be included in access tokens issued to the client.J\x0c\"production\"R\x05value\"\x83\x03\n\x1f\x44\x65leteOrganizationClientRequest\x12\xb0\x01\n\x0forganization_id\x18\x01 \x01(\tB\x86\x01\x92\x41t2ZUnique identifier of the organization that owns the client. Must start with \'org_\' prefix.J\x16\"org_1231234233424344\"\xbaH\x0cr\n\x10\x01\x18 :\x04org_R\x0eorganizationId\x12\xac\x01\n\tclient_id\x18\x02 \x01(\tB\x8e\x01\x92\x41y2\\Unique identifier of the API client to permanently delete. Must start with \'m2morg_\' prefix.J\x19\"m2morg_1231234233424344\"\xbaH\x0fr\r\x10\x01\x18 :\x07m2morg_R\x08\x63lientId\"\xa8\x01\n\x10GetClientRequest\x12\x93\x01\n\tclient_id\x18\x01 \x01(\tBv\x92\x41j2VUnique identifier of the client application to retrieve. Must be 1-32 characters long.J\x10\"skc_1234567890\"\xbaH\x06r\x04\x10\x01\x18 R\x08\x63lientId\"\xf8\x01\n\x11GetClientResponse\x12\xe2\x01\n\x06\x63lient\x18\x01 \x01(\x0b\x32\x1b.scalekit.v1.clients.ClientB\xac\x01\x92\x41\xa8\x01\x32\xa5\x01\x43omplete client configuration including authentication settings, redirect URIs, and secrets. This contains all current settings for the requested client application.R\x06\x63lient\"\xf0\x01\n\x12ListClientsRequest\x12\xd9\x01\n\x14include_plain_secret\x18\x01 \x01(\x08\x42\xa6\x01\x92\x41\xa2\x01\x32\x98\x01Whether to include plain secret values in the response. Should only be enabled during initial creation as secrets should be securely stored immediately.J\x05\x66\x61lseR\x12includePlainSecret\"\xbb\x02\n\x13ListClientsResponse\x12]\n\ntotal_size\x18\x01 \x01(\rB>\x92\x41;25Total number of client applications in the workspace.J\x02\x31\x32R\ttotalSize\x12\xc4\x01\n\x07\x63lients\x18\x02 \x03(\x0b\x32\x1b.scalekit.v1.clients.ClientB\x8c\x01\x92\x41\x88\x01\x32\x85\x01List of client application configurations matching the query criteria. Each client includes its metadata and authentication settings.R\x07\x63lients\"\xfa\x03\n\x13UpdateClientRequest\x12}\n\tclient_id\x18\x01 \x01(\tB`\x92\x41T2:Unique identifier of the registered application to update.J\x16\"skc_01H9XPQR7ZY2AJKL\"\xbaH\x06r\x04\x10\x01\x18 R\x08\x63lientId\x12\x9f\x02\n\x06\x63lient\x18\x02 \x01(\x0b\x32!.scalekit.v1.clients.UpdateClientB\xe3\x01\x92\x41\xd9\x01\x32\x62\x41pplication configuration parameters to update. Contains redirect URIs and authentication settingsJs{\"redirect_uris\": [\"https://app.example.com/callback\"], \"default_redirect_uri\": \"https://app.example.com/callback\"}\xbaH\x03\xc8\x01\x01R\x06\x63lient\x12\x42\n\x04mask\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.FieldMaskB\x12\xe0\x41\x03\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEWR\x04mask\"\xa8\x10\n\x0cUpdateClient\x12\x9e\x02\n\rredirect_uris\x18\x02 \x03(\tB\xf8\x01\x92\x41\xe5\x01\x32\x9c\x01List of allowed redirect URIs for OAuth 2.0 authorization flows. Each URI must be valid and use HTTPS in production environments. Maximum of 5 URIs allowed.JD[\"https://app.example.com/callback\", \"https://dev.example.com/auth\"]\xbaH\x0c\x92\x01\t\x18\x01\"\x05r\x03\x88\x01\x01R\x0credirectUris\x12\x9b\x02\n\x14\x64\x65\x66\x61ult_redirect_uri\x18\x03 \x01(\tB\xe3\x01\x92\x41\xa7\x01\x32\x80\x01Primary redirect URI used when none is specified in authorization requests. Must exactly match one of the URIs in redirect_uris.J\"\"https://app.example.com/callback\"\xbaH5\xba\x01\x32\n\tvalid_uri\x12\x17uri must be a valid URI\x1a\x0cthis.isUri()H\x00R\x12\x64\x65\x66\x61ultRedirectUri\x88\x01\x01\x12\xc3\x02\n\x18\x62\x61\x63k_channel_logout_uris\x18\x04 \x03(\tB\x89\x02\x92\x41\xf6\x01\x32\x95\x01HTTPS endpoints for receiving back-channel logout notifications. Required for implementing application-initiated logout flows and session management.J\\[\"https://app.example.com/backchannel-logout\", \"https://app.example.com/backchannel-logout\"]\xbaH\x0c\x92\x01\t\x18\x01\"\x05r\x03\x88\x01\x01R\x15\x62\x61\x63kChannelLogoutUris\x12\xb6\x02\n\x19post_logout_redirect_uris\x18\x05 \x03(\tB\xfa\x01\x92\x41\xe7\x01\x32\x9c\x01\x41llowed URIs for post-logout redirection. These URIs are used when a user is redirected after logout. Must use HTTPS and conform to security specifications.JF[\"https://app.example.com/logged-out\", \"https://app.example.com/home\"]\xbaH\x0c\x92\x01\t\x18\x01\"\x05r\x03\x88\x01\x01R\x16postLogoutRedirectUris\x12\xff\x01\n\x12initiate_login_uri\x18\x06 \x01(\tB\xcb\x01\x92\x41\xc7\x01\x32\xa3\x01Pre-configured URI for initiating login flows. This URI is used to start authentication flows programmatically. Must use HTTPS protocol and contain a valid domain.J\x1f\"https://app.example.com/login\"H\x01R\x10initiateLoginUri\x88\x01\x01\x12\xa3\x02\n\x0fpost_login_uris\x18\x07 \x03(\tB\xfa\x01\x92\x41\xe7\x01\x32\x9e\x01List of allowed post login URIs for OAuth 2.0 authorization flows. Each URI must be valid and use HTTPS in production environments. Maximum of 5 URIs allowed.JD[\"https://app.example.com/callback\", \"https://dev.example.com/auth\"]\xbaH\x0c\x92\x01\t\x18\x01\"\x05r\x03\x88\x01\x01R\rpostLoginUris:\x81\x02\x92\x41\xfd\x01\n\xbd\x01*\x1bUpdate Client Configuration2\x9d\x01Parameters for updating an API client application\'s configuration. This allows modification of redirect URIs, logout settings, and other security parameters.*;\n\x11\x41PI Documentation\x12&https://docs.scalekit.com/m2m/overviewB\x17\n\x15_default_redirect_uriB\x15\n\x13_initiate_login_uri\"\xa8\x01\n\x14UpdateClientResponse\x12\x8f\x01\n\x06\x63lient\x18\x01 \x01(\x0b\x32\x1b.scalekit.v1.clients.ClientBZ\x92\x41W2UUpdated application configuration with all current settings reflected in the responseR\x06\x63lient\"\xae\x01\n\x19\x43reateClientSecretRequest\x12\x90\x01\n\tclient_id\x18\x01 \x01(\tBs\x92\x41g2MUnique identifier of the client application for which to create a new secret.J\x16\"skc_01H9XPQR7ZY2AJKL\"\xbaH\x06r\x04\x10\x01\x18 R\x08\x63lientId\"\xad\x03\n\x1a\x43reateClientSecretResponse\x12\xc6\x01\n\x0cplain_secret\x18\x01 \x01(\tB\xa2\x01\x92\x41\x9e\x01\x32\x84\x01Plaintext secret value. This value is only returned once at creation time and must be stored securely. It cannot be retrieved again.J\x15\"sec_plaintext123456\"R\x0bplainSecret\x12\xc5\x01\n\x06secret\x18\x02 \x01(\x0b\x32!.scalekit.v1.clients.ClientSecretB\x89\x01\x92\x41\x85\x01\x32\x82\x01Metadata about the newly created secret, including its ID, creation time, and status. Does not include the plaintext secret value.R\x06secret\"\x83\x05\n\x19UpdateClientSecretRequest\x12\x8f\x01\n\tclient_id\x18\x01 \x01(\tBr\x92\x41\x66\x32LUnique identifier of the client application containing the secret to update.J\x16\"skc_01H9XPQR7ZY2AJKL\"\xbaH\x06r\x04\x10\x01\x18 R\x08\x63lientId\x12\xab\x01\n\tsecret_id\x18\x02 \x01(\tB\x8d\x01\x92\x41\x80\x01\x32\x66Unique identifier of the client secret to update. This references a specific secret within the client.J\x16\"sec_01H9XPQR7ZY2AJKL\"\xbaH\x06r\x04\x10\x01\x18 R\x08secretId\x12\xb0\x01\n\x06secret\x18\x03 \x01(\x0b\x32\'.scalekit.v1.clients.UpdateClientSecretBo\x92\x41\x66\x32\x64Updated settings for the secret. Currently supports modifying the secret\'s status (active/inactive).\xbaH\x03\xc8\x01\x01R\x06secret\x12s\n\x04mask\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.FieldMaskBC\x92\x41@2>Specifies which fields to update. System-controlled parameter.R\x04mask\"\xea\x01\n\x12UpdateClientSecret\x12\xd3\x01\n\x06status\x18\x01 \x01(\x0e\x32\'.scalekit.v1.clients.ClientSecretStatusB\x91\x01\x92\x41\x8d\x01\x32\x82\x01Status to set for the client secret. Set to ACTIVE to enable the secret for authentication, or INACTIVE to temporarily disable it.J\x06\x41\x43TIVER\x06status\"\xe7\x01\n\x1aUpdateClientSecretResponse\x12\xc8\x01\n\x06secret\x18\x01 \x01(\x0b\x32!.scalekit.v1.clients.ClientSecretB\x8c\x01\x92\x41\x88\x01\x32\x85\x01Updated secret metadata, reflecting the changes made by the update operation. Note that the plaintext secret value is never returned.R\x06secret\"\xd2\x02\n\x19\x44\x65leteClientSecretRequest\x12\x8f\x01\n\tclient_id\x18\x01 \x01(\tBr\x92\x41\x66\x32LUnique identifier of the client application containing the secret to delete.J\x16\"skc_01H9XPQR7ZY2AJKL\"\xbaH\x06r\x04\x10\x01\x18 R\x08\x63lientId\x12\xa2\x01\n\tsecret_id\x18\x02 \x01(\tB\x84\x01\x92\x41x2^Unique identifier of the client secret to permanently delete. This operation cannot be undone.J\x16\"sec_01H9XPQR7ZY2AJKL\"\xbaH\x06r\x04\x10\x01\x18 R\x08secretId\"\xe7\x19\n\x06\x43lient\x12\xe2\x01\n\x02id\x18\x01 \x01(\tB\xd1\x01\x92\x41\xcd\x01\x32\xb2\x01Unique identifier for the client application. This ID is automatically generated when the client is created and cannot be modified. Used in API requests and authentication flows.J\x16\"skc_1234abcd5678efgh\"R\x02id\x12\xd7\x01\n\x05keyId\x18\x02 \x01(\tB\xc0\x01\x92\x41\xbc\x01\x32\xa1\x01Identifier for the cryptographic key pair used to sign tokens. This key is used for JWT signing operations. Keys can be rotated by generating new client secrets.J\x16\"key_9876zyxw5432vuts\"R\x05keyId\x12\xf0\x01\n\x0b\x63reate_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\xb2\x01\x92\x41\xae\x01\x32\x8f\x01Timestamp indicating when the client configuration was initially created. This field is automatically set by the server and cannot be modified.J\x1a\"2024-01-05T14:48:00.000Z\"R\ncreateTime\x12\x81\x02\n\x0bupdate_time\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\xc3\x01\x92\x41\xbf\x01\x32\xa0\x01Timestamp of the last modification to the client configuration. This field is automatically updated by the server whenever any aspect of the client is modified.J\x1a\"2024-01-10T09:12:00.000Z\"R\nupdateTime\x12\xd5\x02\n\rredirect_uris\x18\x05 \x03(\tB\xaf\x02\x92\x41\xab\x02\x32\xdb\x01List of allowed redirect URIs for OAuth 2.0 authorization flows. These URIs must use HTTPS protocol in production environments and comply with RFC 6749. Users will be redirected to one of these URIs after authorization.JK[\"https://auth.your-app.com/callback\", \"https://scalekit.example.org/auth\"]R\x0credirectUris\x12\x80\x02\n\x14\x64\x65\x66\x61ult_redirect_uri\x18\x06 \x01(\tB\xcd\x01\x92\x41\xc9\x01\x32\xa0\x01Primary redirect URI used when none is explicitly specified in authorization requests. This URI must exactly match one of the entries in the redirect_uris list.J$\"https://auth.your-app.com/callback\"R\x12\x64\x65\x66\x61ultRedirectUri\x12\xa5\x02\n\x07secrets\x18\x07 \x03(\x0b\x32!.scalekit.v1.clients.ClientSecretB\xe7\x01\x92\x41\xe3\x01\x32\xe0\x01List of client secrets used for authentication. Each secret is stored securely using one-way hashing (bcrypt). The plaintext secret values are only displayed during initial creation and must be stored securely by the client.R\x07secrets\x12\xa3\x02\n\x19post_logout_redirect_uris\x18\x08 \x03(\tB\xe7\x01\x92\x41\xe3\x01\x32\xba\x01\x41llowed URIs for post-logout redirection. These URIs are used when a user is redirected after signing out. Must use HTTPS and conform to OpenID Connect Session Management specifications.J$[\"https://auth.your-app.com/logout\"]R\x16postLogoutRedirectUris\x12\xc9\x02\n\x18\x62\x61\x63k_channel_logout_uris\x18\t \x03(\tB\x8f\x02\x92\x41\x8b\x02\x32\xd8\x01HTTPS endpoint for receiving back-channel logout notifications. This URI is called by the authentication server when a session expires or is terminated. Required for implementing relying party-initiated logout flows.J.\"https://auth.your-app.com/backchannel-logout\"R\x15\x62\x61\x63kChannelLogoutUris\x12\xa0\x02\n\x12initiate_login_uri\x18\n \x01(\tB\xf1\x01\x92\x41\xed\x01\x32\xbf\x01Pre-configured URI for initiating login flows programmatically. This URI must use the HTTPS scheme and contain a valid domain. Used for starting authentication flows without user interaction.J)\"https://auth.your-app.com/initiate-auth\"R\x10initiateLoginUri\x12\xd8\x02\n\x0fpost_login_uris\x18\x0b \x03(\tB\xaf\x02\x92\x41\xab\x02\x32\xdb\x01List of allowed redirect URIs for OAuth 2.0 authorization flows. These URIs must use HTTPS protocol in production environments and comply with RFC 6749. Users will be redirected to one of these URIs after authorization.JK[\"https://auth.your-app.com/callback\", \"https://scalekit.example.org/auth\"]R\rpostLoginUris:\xb3\x01\x92\x41\xaf\x01\n\xac\x01*\x12\x43lient Application2\x95\x01\x43onfiguration for an API client application registered with Scalekit. Contains authentication settings, redirect URIs, and other security parameters.\"\xbf\x13\n\x0c\x43lientSecret\x12\xd5\x01\n\x02id\x18\x01 \x01(\tB\xc4\x01\x92\x41\xc0\x01\x32\xa5\x01The unique identifier for this client secret. This ID is used to reference the secret in API requests for management operations like updating or deleting the secret.J\x16\"sec_1234abcd5678efgh\"R\x02id\x12\xd1\x01\n\x0b\x63reate_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x93\x01\x92\x41\x8f\x01\x32qThe timestamp when this secret was created. This field is automatically set by the server and cannot be modified.J\x1a\"2024-01-05T14:48:00.000Z\"R\ncreateTime\x12\x86\x02\n\x0bupdate_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\xc8\x01\x92\x41\xc4\x01\x32\xa5\x01The timestamp when this secret was last updated. This field is automatically updated by the server when the secret\'s status changes or other properties are modified.J\x1a\"2024-01-10T09:12:00.000Z\"R\nupdateTime\x12\x82\x02\n\rsecret_suffix\x18\x04 \x01(\tB\xdc\x01\x92\x41\xd8\x01\x32\xcd\x01\x41 suffix that helps identify this secret. This is the last few characters of the full secret value but is not sufficient for authentication. Helps identify which secret is being used in logs and debugging.J\x06\"xyzw\"R\x0csecretSuffix\x12\xc9\x01\n\ncreated_by\x18\x05 \x01(\tB\xa4\x01\x92\x41\xa0\x01\x32\x8f\x01The identifier of the user or system that created this secret. This field helps track who created the secret for audit and compliance purposes.J\x0c\"user_12345\"H\x00R\tcreatedBy\x88\x01\x01\x12\x84\x02\n\x06status\x18\x06 \x01(\x0e\x32\'.scalekit.v1.clients.ClientSecretStatusB\xc2\x01\x92\x41\xbe\x01\x32\xb1\x01The current status of this secret. A secret must be ACTIVE to be used for authentication. INACTIVE secrets cannot be used for authentication but are retained for audit purposes.J\x08\"ACTIVE\"R\x06status\x12\x8c\x02\n\x0b\x65xpire_time\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\xce\x01\x92\x41\xca\x01\x32\xab\x01The timestamp when this secret will expire. After this time, the secret cannot be used for authentication regardless of its status. If not set, the secret does not expire.J\x1a\"2025-01-05T14:48:00.000Z\"R\nexpireTime\x12\xa6\x02\n\x0elast_used_time\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\xe3\x01\x92\x41\xdf\x01\x32\xc0\x01The timestamp when this secret was last used for authentication. This field helps track secret usage for security monitoring and identifying unused secrets that may be candidates for rotation.J\x1a\"2024-02-15T10:30:00.000Z\"R\x0clastUsedTime\x12\xb3\x02\n\x0cplain_secret\x18\t \x01(\tB\x8a\x02\x92\x41\x86\x02\x32\xd7\x01The full plaintext secret value. This field is only populated when the secret is first created and is never stored by the server. It must be securely stored by the client application as it cannot be retrieved again.J*\"sec_1234567890abcdefghijklmnopqrstuvwxyz\"H\x01R\x0bplainSecret\x88\x01\x01:\x93\x01\x92\x41\x8f\x01\n\x8c\x01*\rClient Secret2{A secure credential used for authenticating an API client. Each client can have multiple secrets for key rotation purposes.B\r\n\x0b_created_byB\x0f\n\r_plain_secret\"w\n\x05Scope\x12 \n\x04name\x18\x01 \x01(\tB\x0c\xbaH\tr\x04\x10\x01\x18\x64\xc8\x01\x01R\x04name\x12*\n\x0b\x64\x65scription\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\x18\xd0\x0fR\x0b\x64\x65scription\x12 \n\x07\x65nabled\x18\x03 \x01(\x08\x42\x06\xbaH\x03\xc8\x01\x01R\x07\x65nabled\"q\n\x0b\x43reateScope\x12\x36\n\x04name\x18\x01 \x01(\tB\"\xbaH\x1fr\x1a\x10\x01\x18\x64\x32\x14^[a-zA-Z0-9:]{1,64}$\xc8\x01\x01R\x04name\x12*\n\x0b\x64\x65scription\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\x18\xd0\x0fR\x0b\x64\x65scription\"{\n\x12\x43reateScopeRequest\x12%\n\x06\x65nv_id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x05\x65nvId\x12>\n\x05scope\x18\x02 \x01(\x0b\x32 .scalekit.v1.clients.CreateScopeB\x06\xbaH\x03\xc8\x01\x01R\x05scope\"G\n\x13\x43reateScopeResponse\x12\x30\n\x05scope\x18\x01 \x01(\x0b\x32\x1a.scalekit.v1.clients.ScopeR\x05scope\":\n\x11ListScopesRequest\x12%\n\x06\x65nv_id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x05\x65nvId\"H\n\x12ListScopesResponse\x12\x32\n\x06scopes\x18\x01 \x03(\x0b\x32\x1a.scalekit.v1.clients.ScopeR\x06scopes\"\xfc\x03\n\x19GetConsentDetailsResponse\x12m\n\x0b\x61pplication\x18\x01 \x01(\x0b\x32 .scalekit.v1.clients.ApplicationB)\x92\x41&2$Details of the requested applicationR\x0b\x61pplication\x12[\n\x04user\x18\x02 \x01(\x0b\x32\x19.scalekit.v1.clients.UserB,\x92\x41)2\'Details of the user who granted consentR\x04user\x12u\n\x06\x63lient\x18\x03 \x01(\x0b\x32\".scalekit.v1.clients.ConsentClientB9\x92\x41\x36\x32\x34\x44\x65tails of the client application requesting consentR\x06\x63lient\x12\x9b\x01\n\x06scopes\x18\x04 \x03(\x0b\x32!.scalekit.v1.clients.ConsentScopeB`\x92\x41]2[List of scopes for which consent was granted. Each scope includes its name and description.R\x06scopes\"\xd0\x01\n\rConsentClient\x12r\n\x04name\x18\x01 \x01(\tB^\x92\x41R2>Unique identifier of the client application requesting consentJ\x10\"skc_1234567890\"\xbaH\x06r\x04\x10\x01\x18 R\x04name\x12(\n\x0bprivacy_uri\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x18\x64R\nprivacyUri\x12!\n\x07tos_uri\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\x18\xd0\x0fR\x06tosUri\"\\\n\x0c\x43onsentScope\x12 \n\x04name\x18\x01 \x01(\tB\x0c\xbaH\tr\x04\x10\x01\x18\x64\xc8\x01\x01R\x04name\x12*\n\x0b\x64\x65scription\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\x18\xd0\x0fR\x0b\x64\x65scription\"r\n\x04User\x12j\n\x05\x65mail\x18\x01 \x01(\tBT\x92\x41Q28Email address of the user. Must be a valid email format.J\x15\x61lice.doe@example.comR\x05\x65mail*q\n\x0f\x41pplicationType\x12 \n\x1c\x41PPLICATION_TYPE_UNSPECIFIED\x10\x00\x12\x07\n\x03WEB\x10\x01\x12\n\n\x06MOBILE\x10\x02\x12\x0b\n\x07\x44\x45SKTOP\x10\x03\x12\n\n\x06SERVER\x10\x04\x12\x0e\n\nMCP_SERVER\x10\x05*.\n\x12\x43lientSecretStatus\x12\n\n\x06\x41\x43TIVE\x10\x00\x12\x0c\n\x08INACTIVE\x10\x01\x32\x8fo\n\rClientService\x12\xd6\x02\n\nListClient\x12\'.scalekit.v1.clients.ListClientsRequest\x1a(.scalekit.v1.clients.ListClientsResponse\"\xf4\x01\x92\x41\xc4\x01\n\x08\x41PI Auth\x12\x10List API clients\x1aGRetrieves a paginated list of API client applications in the workspace.J]\n\x03\x32\x30\x30\x12V\n&List of clients returned successfully.\x12,\n*\x1a(.scalekit.v1.clients.ListClientsResponse\x82\xb5\x18\x02\x18P\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x11\x12\x0f/api/v1/clients\x12\xff\x04\n\tGetClient\x12%.scalekit.v1.clients.GetClientRequest\x1a&.scalekit.v1.clients.GetClientResponse\"\xa2\x04\x92\x41\xe6\x03\n\x0e\x43lient Configs\x12\x18Get Client Configuration\x1a\xf4\x01Retrieves the complete configuration for an API client, including authentication settings, scopes, and custom claims. Use this endpoint to view or verify client settings, such as allowed redirect URIs, audience values, and token expiration timeJ\xc2\x01\n\x03\x32\x30\x30\x12\xba\x01\n\x8b\x01\x43lient configuration retrieved successfully. Returns full client metadata including scopes, audience, custom claims, and security settings.\x12*\n(\x1a&.scalekit.v1.clients.GetClientResponse\x82\xb5\x18\x02\x18T\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x1d\x12\x1b/api/v1/clients/{client_id}\x12\xca\x05\n\x0cUpdateClient\x12(.scalekit.v1.clients.UpdateClientRequest\x1a).scalekit.v1.clients.UpdateClientResponse\"\xe4\x04\x92\x41\xa0\x04\n\x0e\x43lient Configs\x12\x1bUpdate Client Configuration\x1a\xb7\x02Updates the configuration settings for an API client. This endpoint allows you to modify client properties such as redirect URIs, scopes, audience values, and custom claims. Required fields include redirect_uris and default_redirect_uri. Note that client_id and create_time are immutable and cannot be modified.J\xb6\x01\n\x03\x32\x30\x31\x12\xae\x01\n}Client configuration updated successfully. Returns the updated client resource with new update_time and all current settings.\x12-\n+\x1a).scalekit.v1.clients.UpdateClientResponse\x82\xb5\x18\x02\x18T\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02%2\x1b/api/v1/clients/{client_id}:\x06\x63lient\x12\xa4\x05\n\x12\x43reateClientSecret\x12..scalekit.v1.clients.CreateClientSecretRequest\x1a/.scalekit.v1.clients.CreateClientSecretResponse\"\xac\x04\x92\x41\xe8\x03\n\x0e\x43lient Configs\x12\x14\x43reate Client Secret\x1a\x82\x02Generates a new client secret for an API client. This endpoint creates a secure credential that can be used for OAuth 2.0 client credentials flow. The plain secret is only returned once during creation and should be stored securely by the client application.J\xba\x01\n\x03\x32\x30\x31\x12\xb2\x01\n{Client secret created successfully. Returns the new secret ID and the plain secret value (only available at creation time).\x12\x33\n1\x1a/.scalekit.v1.clients.CreateClientSecretResponse\x82\xb5\x18\x02\x18T\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02%\"#/api/v1/clients/{client_id}/secrets\x12\xca\x05\n\x12UpdateClientSecret\x12..scalekit.v1.clients.UpdateClientSecretRequest\x1a/.scalekit.v1.clients.UpdateClientSecretResponse\"\xd2\x04\x92\x41\xbf\x03\n\x0e\x43lient Configs\x12\x14Update Client Secret\x1a\xfd\x01Updates the status of a client secret. This endpoint allows you to activate or deactivate a client secret. Use this to rotate secrets or revoke access for compromised credentials. The secret value itself cannot be modified - create a new secret instead.J\x96\x01\n\x03\x32\x30\x30\x12\x8e\x01\nWClient secret updated successfully. Returns the updated secret with its current status.\x12\x33\n1\x1a/.scalekit.v1.clients.UpdateClientSecretResponse\x82\xb5\x18\x02\x18T\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02t\x1a//api/v1/clients/{client_id}/secrets/{secret_id}:\x06secretZ92//api/v1/clients/{client_id}/secrets/{secret_id}:\x06secret\x12\xec\x03\n\x12\x44\x65leteClientSecret\x12..scalekit.v1.clients.DeleteClientSecretRequest\x1a\x16.google.protobuf.Empty\"\x8d\x03\x92\x41\xbd\x02\n\x0e\x43lient Configs\x12\x18\x44\x65lete API client secret\x1a\xca\x01Permanently deletes an API client secret. This operation cannot be undone. Use this endpoint to remove compromised or unused secrets. After deletion, the secret can no longer be used for authentication.JD\n\x03\x32\x30\x30\x12=\n;Client secret successfully deleted and no longer accessible\x82\xb5\x18\x02\x18T\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x31*//api/v1/clients/{client_id}/secrets/{secret_id}\x12\xee\n\n\x18\x43reateOrganizationClient\x12\x34.scalekit.v1.clients.CreateOrganizationClientRequest\x1a\x35.scalekit.v1.clients.CreateOrganizationClientResponse\"\xe4\t\x92\x41\x9b\t\n\x08\x41PI Auth\x12\x1e\x43reate organization API client\x1arCreates a new API client for an organization. Returns the client details and a plain secret (available only once).J\x9e\x02\n\x03\x32\x30\x31\x12\x96\x02\n\xd8\x01\x41PI client created successfully. Returns the client ID and plain secret (only available at creation time). The client can be configured with scopes, audience values, and custom claims for fine-grained access control.\x12\x39\n7\x1a\x35.scalekit.v1.clients.CreateOrganizationClientResponsej\xd9\x05\n\rx-codeSamples\x12\xc7\x05\x32\xc4\x05\n\xc1\x05*\xbe\x05\n\x15\n\x05label\x12\x0c\x1a\nPython SDK\n\x10\n\x04lang\x12\x08\x1a\x06python\n\x92\x05\n\x06source\x12\x87\x05\x1a\x84\x05\x66rom scalekit.v1.clients.clients_pb2 import OrganizationClient\n\nm2m_client = OrganizationClient(\n name=\"GitHub Actions Deployment Service\",\n description=\"Service account for GitHub Actions to deploy applications to production\",\n custom_claims=[\n {\"key\": \"github_repository\", \"value\": \"acmecorp/inventory-service\"},\n {\"key\": \"environment\", \"value\": \"production_us\"}\n ],\n scopes=[\"deploy:applications\", \"read:deployments\"],\n audience=[\"deployment-api.acmecorp.com\"],\n expiry=3600\n)\n\nresponse = sc.m2m_client.create_organization_client(\n organization_id=\"SCALEKIT_ORGANIZATION_ID\",\n m2m_client=m2m_client\n)\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02\x39\"//api/v1/organizations/{organization_id}/clients:\x06\x63lient\x12\xa2\x07\n\x15GetOrganizationClient\x12\x31.scalekit.v1.clients.GetOrganizationClientRequest\x1a\x32.scalekit.v1.clients.GetOrganizationClientResponse\"\xa1\x06\x92\x41\xd4\x05\n\x08\x41PI Auth\x12\x1bGet organization API client\x1a>Retrieves details of a specific API client in an organization.J\xfd\x01\n\x03\x32\x30\x30\x12\xf5\x01\n\xba\x01Returns the complete API client configuration, including all current settings and a list of active secrets. Note that secret values are not included in the response for security reasons.\x12\x36\n4\x1a\x32.scalekit.v1.clients.GetOrganizationClientResponsej\xea\x02\n\rx-codeSamples\x12\xd8\x02\x32\xd5\x02\n\xd2\x02*\xcf\x02\n\x15\n\x05label\x12\x0c\x1a\nPython SDK\n\x10\n\x04lang\x12\x08\x1a\x06python\n\xa3\x02\n\x06source\x12\x98\x02\x1a\x95\x02# Get client ID from environment variables\norg_id = \'SCALEKIT_ORGANIZATION_ID\'\nclient_id = os.environ[\'M2M_CLIENT_ID\']\n\n# Fetch client details for the specified organization\nresponse = sc.m2m_client.get_organization_client(\n organization_id=org_id,\n client_id=client_id\n)\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02=\x12;/api/v1/organizations/{organization_id}/clients/{client_id}\x12\xbf\x08\n\x1e\x43reateOrganizationClientSecret\x12:.scalekit.v1.clients.CreateOrganizationClientSecretRequest\x1a;.scalekit.v1.clients.CreateOrganizationClientSecretResponse\"\xa3\x07\x92\x41\xce\x06\n\x08\x41PI Auth\x12%Create organization API client secret\x1a\x64\x43reates a new secret for an organization API client. Returns the plain secret (available only once).J\xfe\x01\n\x03\x32\x30\x31\x12\xf6\x01\n\xb2\x01\x43lient secret created successfully. Returns the new secret ID and the plain secret value (only available at creation time). The secret can be used immediately for authentication.\x12?\n=\x1a;.scalekit.v1.clients.CreateOrganizationClientSecretResponsej\xb3\x03\n\rx-codeSamples\x12\xa1\x03\x32\x9e\x03\n\x9b\x03*\x98\x03\n\x15\n\x05label\x12\x0c\x1a\nPython SDK\n\x10\n\x04lang\x12\x08\x1a\x06python\n\xec\x02\n\x06source\x12\xe1\x02\x1a\xde\x02# Get client ID from environment variables\norg_id = \'SCALEKIT_ORGANIZATION_ID\'\nclient_id = os.environ[\'M2M_CLIENT_ID\']\n\n# Add a new secret to the specified client\nresponse = sc.m2m_client.add_organization_client_secret(\n organization_id=org_id,\n client_id=client_id\n)\n\n# Extract the secret ID from the response\nsecret_id = response[0].secret.id\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02\x45\"C/api/v1/organizations/{organization_id}/clients/{client_id}/secrets\x12\xed\x06\n\x1e\x44\x65leteOrganizationClientSecret\x12:.scalekit.v1.clients.DeleteOrganizationClientSecretRequest\x1a\x16.google.protobuf.Empty\"\xf6\x05\x92\x41\x95\x05\n\x08\x41PI Auth\x12%Delete organization API client secret\x1a^Permanently deletes a secret from an organization API client. This operation cannot be undone.JD\n\x03\x32\x30\x30\x12=\n;Client secret successfully deleted and no longer accessiblej\xbb\x03\n\rx-codeSamples\x12\xa9\x03\x32\xa6\x03\n\xa3\x03*\xa0\x03\n\x15\n\x05label\x12\x0c\x1a\nPython SDK\n\x10\n\x04lang\x12\x08\x1a\x06python\n\xf4\x02\n\x06source\x12\xe9\x02\x1a\xe6\x02# Get client and secret IDs from environment variables\norg_id = \'\'\nclient_id = os.environ[\'M2M_CLIENT_ID\']\nsecret_id = os.environ[\'M2M_SECRET_ID\']\n\n# Remove the specified secret from the client\nresponse = sc.m2m_client.remove_organization_client_secret(\n organization_id=org_id,\n client_id=client_id,\n secret_id=secret_id\n)\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02Q*O/api/v1/organizations/{organization_id}/clients/{client_id}/secrets/{secret_id}\x12\xd6\t\n\x18UpdateOrganizationClient\x12\x34.scalekit.v1.clients.UpdateOrganizationClientRequest\x1a\x35.scalekit.v1.clients.UpdateOrganizationClientResponse\"\xcc\x08\x92\x41\xf7\x07\n\x08\x41PI Auth\x12\x1eUpdate organization API client\x1aPUpdates an existing organization API client. Only specified fields are modified.J\xe4\x01\n\x03\x32\x30\x30\x12\xdc\x01\n\x9e\x01Returns the updated organization API client with all current details reflected in the response, including modified scopes, audience values, and custom claims.\x12\x39\n7\x1a\x35.scalekit.v1.clients.UpdateOrganizationClientResponsej\x91\x05\n\rx-codeSamples\x12\xff\x04\x32\xfc\x04\n\xf9\x04*\xf6\x04\n\x15\n\x05label\x12\x0c\x1a\nPython SDK\n\x10\n\x04lang\x12\x08\x1a\x06python\n\xca\x04\n\x06source\x12\xbf\x04\x1a\xbc\x04\x66rom scalekit.v1.clients.clients_pb2 import OrganizationClient\n\norg_id = \'\'\nclient_id = os.environ[\'M2M_CLIENT_ID\']\n\nupdate_m2m_client = OrganizationClient(\n description=\"Service account for GitHub Actions to deploy applications to production_eu\",\n custom_claims=[\n {\"key\": \"github_repository\", \"value\": \"acmecorp/inventory\"},\n {\"key\": \"environment\", \"value\": \"production_eu\"}\n ]\n)\n\nresponse = sc.m2m_client.update_organization_client(\n organization_id=org_id,\n client_id=client_id,\n m2m_client=update_m2m_client\n)\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02\x45\x32;/api/v1/organizations/{organization_id}/clients/{client_id}:\x06\x63lient\x12\x93\x07\n\x18\x44\x65leteOrganizationClient\x12\x34.scalekit.v1.clients.DeleteOrganizationClientRequest\x1a\x16.google.protobuf.Empty\"\xa8\x06\x92\x41\xdb\x05\n\x08\x41PI Auth\x12\x1e\x44\x65lete organization API client\x1a\xee\x01Permanently deletes an API client from an organization. This operation cannot be undone and will revoke all access for the client. All associated secrets will also be invalidated. Use this endpoint to remove unused or compromised clients.JN\n\x03\x32\x30\x30\x12G\nEOrganization API client successfully deleted and no longer accessiblej\xed\x02\n\rx-codeSamples\x12\xdb\x02\x32\xd8\x02\n\xd5\x02*\xd2\x02\n\x15\n\x05label\x12\x0c\x1a\nPython SDK\n\x10\n\x04lang\x12\x08\x1a\x06python\n\xa6\x02\n\x06source\x12\x9b\x02\x1a\x98\x02# Get client ID from environment variables\norg_id = \'\'\nclient_id = os.environ[\'M2M_CLIENT_ID\']\n\n# Delete the specified client from the organization\nresponse = sc.m2m_client.delete_organization_client(\n organization_id=org_id,\n client_id=client_id\n)\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02=*;/api/v1/organizations/{organization_id}/clients/{client_id}\x12\xc5\x03\n\x11\x43reateApplication\x12-.scalekit.v1.clients.CreateApplicationRequest\x1a..scalekit.v1.clients.CreateApplicationResponse\"\xd0\x02\x92\x41\x8e\x02\n\x08\x41PI Auth\x12\x12\x43reate application\x1a\x62\x43reates a new API client application. The response includes the application ID and other metadata.J\x89\x01\n\x03\x32\x30\x31\x12\x81\x01\nKApplication created successfully. Returns the created application resource.\x12\x32\n0\x1a..scalekit.v1.clients.CreateApplicationResponse\x82\xb5\x18\x02\x18T\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02#\"\x14/api/v1/applications:\x0b\x61pplication\x12\x91\x03\n\x0eGetApplication\x12*.scalekit.v1.clients.GetApplicationRequest\x1a+.scalekit.v1.clients.GetApplicationResponse\"\xa5\x02\x92\x41\xdf\x01\n\x08\x41PI Auth\x12\x0fGet application\x1a\x37Retrieves details of a specific API client application.J\x88\x01\n\x03\x32\x30\x30\x12\x80\x01\nMApplication details retrieved successfully. Returns the application resource.\x12/\n-\x1a+.scalekit.v1.clients.GetApplicationResponse\x82\xb5\x18\x02\x18T\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\'\x12%/api/v1/applications/{application_id}\x12\xe5\x02\n\x10ListApplications\x12,.scalekit.v1.clients.ListApplicationsRequest\x1a-.scalekit.v1.clients.ListApplicationsResponse\"\xf3\x01\x92\x41\xbe\x01\n\x08\x41PI Auth\x12\x11List applications\x1a\x36Retrieves a paginated list of API client applications.Jg\n\x03\x32\x30\x30\x12`\n+List of applications returned successfully.\x12\x31\n/\x1a-.scalekit.v1.clients.ListApplicationsResponse\x82\xb5\x18\x02\x18T\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x16\x12\x14/api/v1/applications\x12\xc3\x03\n\x11UpdateApplication\x12-.scalekit.v1.clients.UpdateApplicationRequest\x1a..scalekit.v1.clients.UpdateApplicationResponse\"\xce\x02\x92\x41\xfb\x01\n\x08\x41PI Auth\x12\x12Update application\x1aOUpdates an existing API client application. Only specified fields are modified.J\x89\x01\n\x03\x32\x30\x30\x12\x81\x01\nKApplication updated successfully. Returns the updated application resource.\x12\x32\n0\x1a..scalekit.v1.clients.UpdateApplicationResponse\x82\xb5\x18\x02\x18T\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x34\x32%/api/v1/applications/{application_id}:\x0b\x61pplication\x12\x98\x04\n\x17\x43reateApplicationClient\x12\x33.scalekit.v1.clients.CreateApplicationClientRequest\x1a\x34.scalekit.v1.clients.CreateApplicationClientResponse\"\x91\x03\x92\x41\xbb\x02\n\x08\x41PI Auth\x12\x1d\x43reate application API client\x1azCreates a new API client for an existing application. Returns the client details and a plain secret (available only once).J\x93\x01\n\x03\x32\x30\x31\x12\x8b\x01\nOClient created successfully. Returns the client configuration and plain secret.\x12\x38\n6\x1a\x34.scalekit.v1.clients.CreateApplicationClientResponse\x82\xb5\x18\x02\x18T\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x37\"-/api/v1/applications/{application_id}/clients:\x06\x63lient\x12\xe6\x03\n\x14GetApplicationClient\x12\x30.scalekit.v1.clients.GetApplicationClientRequest\x1a\x31.scalekit.v1.clients.GetApplicationClientResponse\"\xe8\x02\x92\x41\x8e\x02\n\x08\x41PI Auth\x12\x1aGet application API client\x1aJRetrieves details of a specific API client associated with an application.J\x99\x01\n\x03\x32\x30\x30\x12\x91\x01\nXClient details retrieved successfully. Returns the application and client configuration.\x12\x35\n3\x1a\x31.scalekit.v1.clients.GetApplicationClientResponse\x82\xb5\x18\x02\x18T\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02;\x12\x39/api/v1/applications/{application_id}/clients/{client_id}\x12\x88\x04\n\x0eRegisterClient\x12*.scalekit.v1.clients.RegisterClientRequest\x1a+.scalekit.v1.clients.RegisterClientResponse\"\x9c\x03\x92\x41\xc5\x02\n\x08\x41PI Auth\x12\x13Register API client\x1a\x87\x01Registers a new API client under an existing application using dynamic client registration. Returns the created client and its secrets.J\x99\x01\n\x03\x32\x30\x31\x12\x91\x01\n^Client registered successfully. Returns client details and plain secret (available only once).\x12/\n-\x1a+.scalekit.v1.clients.RegisterClientResponse\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x38\"./api/v1/applications/{app_id}/clients:register:\x06\x63lient\x12\xaa\x01\n\x0b\x43reateScope\x12\'.scalekit.v1.clients.CreateScopeRequest\x1a(.scalekit.v1.clients.CreateScopeResponse\"H\x82\xb5\x18\x02\x18P\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02-\"$/api/v1/environments/{env_id}/scopes:\x05scope\x12\xa0\x01\n\nListScopes\x12&.scalekit.v1.clients.ListScopesRequest\x1a\'.scalekit.v1.clients.ListScopesResponse\"A\x82\xb5\x18\x02\x18p\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02&\x12$/api/v1/environments/{env_id}/scopes\x12\x97\x01\n\x11GetConsentDetails\x12\x16.google.protobuf.Empty\x1a..scalekit.v1.clients.GetConsentDetailsResponse\":\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x1f\x12\x1d/api/v1/oauth/consent/details\x1a\xb8\x03\x92\x41\xb4\x03\n\x08\x41PI Auth\x12\xfd\x02\x45ndpoints for managing API client applications. API clients enable secure, automated interactions between software systems without human intervention. Each client is uniquely identified by a `client_id` and can be configured with authentication settings, redirect URIs, and security parameters. Use these endpoints to create, manage, and configure API clients for your API clients.\x1a(\x12&https://docs.scalekit.com/m2m/overviewB3Z1github.com/scalekit-inc/scalekit/pkg/grpc/clientsb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!scalekit/v1/clients/clients.proto\x12\x13scalekit.v1.clients\x1a\x1b\x62uf/validate/validate.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1bgoogle/api/visibility.proto\x1a\x19google/protobuf/any.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a google/protobuf/field_mask.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/wrappers.proto\x1a.protoc-gen-openapiv2/options/annotations.proto\x1a!scalekit/v1/commons/commons.proto\x1a!scalekit/v1/options/options.proto\"\x8a\x01\n\x15\x43reateResourceRequest\x12q\n\x08resource\x18\x01 \x01(\x0b\x32#.scalekit.v1.clients.CreateResourceB0\x92\x41\'2%Details of the resource to be created\xbaH\x03\xc8\x01\x01R\x08resource\"\xb0\t\n\x0e\x43reateResource\x12|\n\rresource_type\x18\x01 \x01(\x0e\x32!.scalekit.v1.clients.ResourceTypeB4\x92\x41+2\"Type of the resource to be createdJ\x05\"WEB\"\xbaH\x03\xc8\x01\x01R\x0cresourceType\x12_\n\x0bthird_party\x18\x02 \x01(\x08\x42>\x92\x41;23Indicates if the resource is a first-party resourceJ\x04trueR\nthirdParty\x12K\n\x04name\x18\x03 \x01(\tB7\x92\x41)2\x14Name of the resourceJ\x11\"My API Resource\"\xbaH\x08r\x03\x18\x80\x01\xc8\x01\x01R\x04name\x12\x86\x01\n\x0b\x64\x65scription\x18\x04 \x01(\tBd\x92\x41Y2\x1b\x44\x65scription of the resourceJ:\"Resource for accessing your organization\'s API resources\"\xbaH\x05r\x03\x18\x80\x04R\x0b\x64\x65scription\x12\xb3\x01\n\x0bresource_id\x18\x05 \x01(\tB\x91\x01\x92\x41\x83\x01\x32\x61Resource identifier for the resource. This could be the URL used to access the resource resourcesJ\x1e\"https://resource.example.com\"\xbaH\x07r\x05\x10\x01\x18\x80\x04R\nresourceId\x12g\n\x13\x61\x63\x63\x65ss_token_expiry\x18\x06 \x01(\x03\x42\x37\x92\x41\x34\x32,Expiry time in seconds for the access token.J\x04\x33\x36\x30\x30R\x11\x61\x63\x63\x65ssTokenExpiry\x12k\n\x14refresh_token_expiry\x18\x07 \x01(\x03\x42\x39\x92\x41\x36\x32-Expiry time in seconds for the refresh token.J\x05\x38\x36\x34\x30\x30R\x12refreshTokenExpiry\x12\x9f\x01\n#disable_dynamic_client_registration\x18\x08 \x01(\x08\x42P\x92\x41M2EIndicates if dynamic client registration is allowed for this resourceJ\x04trueR disableDynamicClientRegistration\x12\x61\n\x08logo_uri\x18\t \x01(\tBF\x92\x41;2\x19Logo URI for the resourceJ\x1e\"https://example.com/logo.png\"\xbaH\x05r\x03\x18\x80\x04R\x07logoUri\x12X\n\x08provider\x18\n \x01(\tB<\x92\x41\x31\x32$Connection provider for the resourceJ\t\"DESCOPE\"\xbaH\x05r\x03\x18\x80\x04R\x08provider\"\x88\x06\n\x0eResourceClient\x12\x44\n\x04name\x18\x01 \x01(\tB0\x92\x41%2\x12Name of the clientJ\x0f\"My API Client\"\xbaH\x05r\x03\x18\x80\x01R\x04name\x12\x82\x01\n\x0b\x64\x65scription\x18\x02 \x01(\tB`\x92\x41U2\x19\x44\x65scription of the clientJ8\"Client for accessing your organization\'s API resources\"\xbaH\x05r\x03\x18\x80\x04R\x0b\x64\x65scription\x12\x38\n\x06scopes\x18\x03 \x03(\tB \x92\x41\x1d\x32\x1bOAuth scopes for the clientR\x06scopes\x12\x62\n\x08\x61udience\x18\x04 \x03(\tBF\x92\x41\x43\x32$OAuth audience values for the clientJ\x1b[\"https://api.example.com\"]R\x08\x61udience\x12\xc6\x01\n\rcustom_claims\x18\x05 \x03(\x0b\x32 .scalekit.v1.clients.CustomClaimB\x7f\x92\x41|2zCustom claims to be included in access tokens. Please keep this to the essentials as this increases the size of the token.R\x0c\x63ustomClaims\x12_\n\x06\x65xpiry\x18\x06 \x01(\x03\x42G\x92\x41\x44\x32\x92\x41;2\"Token for the next page of resultsJ\x15\"next_page_token_123\"R\tpageToken\x12S\n\tpage_size\x18\x03 \x01(\rB6\x92\x41,2&Number of resources to return per pageJ\x02\x32\x30\xbaH\x04*\x02\x18\x1eR\x08pageSize\"\x86\x02\n\x15ListResourcesResponse\x12G\n\ntotal_size\x18\x01 \x01(\rB(\x92\x41%2#Total number of resources availableR\ttotalSize\x12O\n\x0fnext_page_token\x18\x02 \x01(\tB\'\x92\x41$2\"Token for the next page of resultsR\rnextPageToken\x12S\n\tresources\x18\x03 \x03(\x0b\x32\x1d.scalekit.v1.clients.ResourceB\x16\x92\x41\x13\x32\x11List of resourcesR\tresources\"\xf2\x01\n\x15UpdateResourceRequest\x12s\n\x0bresource_id\x18\x01 \x01(\tBR\x92\x41\x46\x32+Unique identifier of the resource to updateJ\x17\"app_69388798466720005\"\xbaH\x06r\x04\x10\x01\x18 R\nresourceId\x12\x64\n\x08resource\x18\x02 \x01(\x0b\x32#.scalekit.v1.clients.UpdateResourceB#\x92\x41\x1a\x32\x18Updated resource details\xbaH\x03\xc8\x01\x01R\x08resource\"\xde\x07\n\x0eUpdateResource\x12P\n\x04name\x18\x01 \x01(\tB<\x92\x41\x31\x32\x14Name of the resourceJ\x19\"My Updated API Resource\"\xbaH\x05r\x03\x18\x80\x01R\x04name\x12\x8e\x01\n\x0b\x64\x65scription\x18\x02 \x01(\tBl\x92\x41\x61\x32\x1b\x44\x65scription of the resourceJB\"Updated resource for accessing your organization\'s API resources\"\xbaH\x05r\x03\x18\x80\x04R\x0b\x64\x65scription\x12\xb3\x01\n\x0bresource_id\x18\x03 \x01(\tB\x91\x01\x92\x41\x83\x01\x32\x61Resource identifier for the resource. This could be the URL used to access the resource resourcesJ\x1e\"https://resource.example.com\"\xbaH\x07r\x05\x10\x01\x18\x80\x04R\nresourceId\x12g\n\x13\x61\x63\x63\x65ss_token_expiry\x18\x04 \x01(\x03\x42\x37\x92\x41\x34\x32,Expiry time in seconds for the access token.J\x04\x33\x36\x30\x30R\x11\x61\x63\x63\x65ssTokenExpiry\x12k\n\x14refresh_token_expiry\x18\x05 \x01(\x03\x42\x39\x92\x41\x36\x32-Expiry time in seconds for the refresh token.J\x05\x38\x36\x34\x30\x30R\x12refreshTokenExpiry\x12\x9f\x01\n#disable_dynamic_client_registration\x18\x06 \x01(\x08\x42P\x92\x41M2EIndicates if dynamic client registration is allowed for this resourceJ\x04trueR disableDynamicClientRegistration\x12\x61\n\x08logo_uri\x18\x07 \x01(\tBF\x92\x41;2\x19Logo URI for the resourceJ\x1e\"https://example.com/logo.png\"\xbaH\x05r\x03\x18\x80\x04R\x07logoUri\x12X\n\x08provider\x18\n \x01(\tB<\x92\x41\x31\x32$Connection provider for the resourceJ\t\"DESCOPE\"\xbaH\x05r\x03\x18\x80\x04R\x08provider\"y\n\x16UpdateResourceResponse\x12_\n\x08resource\x18\x01 \x01(\x0b\x32\x1d.scalekit.v1.clients.ResourceB$\x92\x41!2\x1f\x44\x65tails of the updated resourceR\x08resource\"\xfc\x01\n\x1b\x43reateResourceClientRequest\x12p\n\x0bresource_id\x18\x01 \x01(\tBO\x92\x41\x43\x32(Unique identifier of the client resourceJ\x17\"app_69388798466720005\"\xbaH\x06r\x04\x10\x01\x18 R\nresourceId\x12k\n\x06\x63lient\x18\x02 \x01(\x0b\x32#.scalekit.v1.clients.ResourceClientB.\x92\x41%2#Details of the client to be created\xbaH\x03\xc8\x01\x01R\x06\x63lient\"\xf8\x01\n\x1c\x43reateResourceClientResponse\x12Z\n\x06\x63lient\x18\x01 \x01(\x0b\x32\x1e.scalekit.v1.clients.M2MClientB\"\x92\x41\x1f\x32\x1d\x44\x65tails of the created clientR\x06\x63lient\x12|\n\x0cplain_secret\x18\x02 \x01(\tBY\x92\x41V24Client secret value (only returned once at creation)J\x1e\"CdExsdErfccxDDssddfffgfeFHH1\"R\x0bplainSecret\"\x96\x02\n\x18GetResourceClientRequest\x12u\n\x0bresource_id\x18\x01 \x01(\tBT\x92\x41H24Unique identifier of the client resource to retrieveJ\x10\"skc_1234567890\"\xbaH\x06r\x04\x10\x01\x18 R\nresourceId\x12\x82\x01\n\tclient_id\x18\x02 \x01(\tBe\x92\x41Y2Specifies which fields to update. System-controlled parameter.R\x04mask\"\xea\x01\n\x12UpdateClientSecret\x12\xd3\x01\n\x06status\x18\x01 \x01(\x0e\x32\'.scalekit.v1.clients.ClientSecretStatusB\x91\x01\x92\x41\x8d\x01\x32\x82\x01Status to set for the client secret. Set to ACTIVE to enable the secret for authentication, or INACTIVE to temporarily disable it.J\x06\x41\x43TIVER\x06status\"\xe7\x01\n\x1aUpdateClientSecretResponse\x12\xc8\x01\n\x06secret\x18\x01 \x01(\x0b\x32!.scalekit.v1.clients.ClientSecretB\x8c\x01\x92\x41\x88\x01\x32\x85\x01Updated secret metadata, reflecting the changes made by the update operation. Note that the plaintext secret value is never returned.R\x06secret\"\xd2\x02\n\x19\x44\x65leteClientSecretRequest\x12\x8f\x01\n\tclient_id\x18\x01 \x01(\tBr\x92\x41\x66\x32LUnique identifier of the client application containing the secret to delete.J\x16\"skc_01H9XPQR7ZY2AJKL\"\xbaH\x06r\x04\x10\x01\x18 R\x08\x63lientId\x12\xa2\x01\n\tsecret_id\x18\x02 \x01(\tB\x84\x01\x92\x41x2^Unique identifier of the client secret to permanently delete. This operation cannot be undone.J\x16\"sec_01H9XPQR7ZY2AJKL\"\xbaH\x06r\x04\x10\x01\x18 R\x08secretId\"\xe7\x19\n\x06\x43lient\x12\xe2\x01\n\x02id\x18\x01 \x01(\tB\xd1\x01\x92\x41\xcd\x01\x32\xb2\x01Unique identifier for the client application. This ID is automatically generated when the client is created and cannot be modified. Used in API requests and authentication flows.J\x16\"skc_1234abcd5678efgh\"R\x02id\x12\xd7\x01\n\x05keyId\x18\x02 \x01(\tB\xc0\x01\x92\x41\xbc\x01\x32\xa1\x01Identifier for the cryptographic key pair used to sign tokens. This key is used for JWT signing operations. Keys can be rotated by generating new client secrets.J\x16\"key_9876zyxw5432vuts\"R\x05keyId\x12\xf0\x01\n\x0b\x63reate_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\xb2\x01\x92\x41\xae\x01\x32\x8f\x01Timestamp indicating when the client configuration was initially created. This field is automatically set by the server and cannot be modified.J\x1a\"2024-01-05T14:48:00.000Z\"R\ncreateTime\x12\x81\x02\n\x0bupdate_time\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\xc3\x01\x92\x41\xbf\x01\x32\xa0\x01Timestamp of the last modification to the client configuration. This field is automatically updated by the server whenever any aspect of the client is modified.J\x1a\"2024-01-10T09:12:00.000Z\"R\nupdateTime\x12\xd5\x02\n\rredirect_uris\x18\x05 \x03(\tB\xaf\x02\x92\x41\xab\x02\x32\xdb\x01List of allowed redirect URIs for OAuth 2.0 authorization flows. These URIs must use HTTPS protocol in production environments and comply with RFC 6749. Users will be redirected to one of these URIs after authorization.JK[\"https://auth.your-app.com/callback\", \"https://scalekit.example.org/auth\"]R\x0credirectUris\x12\x80\x02\n\x14\x64\x65\x66\x61ult_redirect_uri\x18\x06 \x01(\tB\xcd\x01\x92\x41\xc9\x01\x32\xa0\x01Primary redirect URI used when none is explicitly specified in authorization requests. This URI must exactly match one of the entries in the redirect_uris list.J$\"https://auth.your-app.com/callback\"R\x12\x64\x65\x66\x61ultRedirectUri\x12\xa5\x02\n\x07secrets\x18\x07 \x03(\x0b\x32!.scalekit.v1.clients.ClientSecretB\xe7\x01\x92\x41\xe3\x01\x32\xe0\x01List of client secrets used for authentication. Each secret is stored securely using one-way hashing (bcrypt). The plaintext secret values are only displayed during initial creation and must be stored securely by the client.R\x07secrets\x12\xa3\x02\n\x19post_logout_redirect_uris\x18\x08 \x03(\tB\xe7\x01\x92\x41\xe3\x01\x32\xba\x01\x41llowed URIs for post-logout redirection. These URIs are used when a user is redirected after signing out. Must use HTTPS and conform to OpenID Connect Session Management specifications.J$[\"https://auth.your-app.com/logout\"]R\x16postLogoutRedirectUris\x12\xc9\x02\n\x18\x62\x61\x63k_channel_logout_uris\x18\t \x03(\tB\x8f\x02\x92\x41\x8b\x02\x32\xd8\x01HTTPS endpoint for receiving back-channel logout notifications. This URI is called by the authentication server when a session expires or is terminated. Required for implementing relying party-initiated logout flows.J.\"https://auth.your-app.com/backchannel-logout\"R\x15\x62\x61\x63kChannelLogoutUris\x12\xa0\x02\n\x12initiate_login_uri\x18\n \x01(\tB\xf1\x01\x92\x41\xed\x01\x32\xbf\x01Pre-configured URI for initiating login flows programmatically. This URI must use the HTTPS scheme and contain a valid domain. Used for starting authentication flows without user interaction.J)\"https://auth.your-app.com/initiate-auth\"R\x10initiateLoginUri\x12\xd8\x02\n\x0fpost_login_uris\x18\x0b \x03(\tB\xaf\x02\x92\x41\xab\x02\x32\xdb\x01List of allowed redirect URIs for OAuth 2.0 authorization flows. These URIs must use HTTPS protocol in production environments and comply with RFC 6749. Users will be redirected to one of these URIs after authorization.JK[\"https://auth.your-app.com/callback\", \"https://scalekit.example.org/auth\"]R\rpostLoginUris:\xb3\x01\x92\x41\xaf\x01\n\xac\x01*\x12\x43lient Application2\x95\x01\x43onfiguration for an API client application registered with Scalekit. Contains authentication settings, redirect URIs, and other security parameters.\"\xbf\x13\n\x0c\x43lientSecret\x12\xd5\x01\n\x02id\x18\x01 \x01(\tB\xc4\x01\x92\x41\xc0\x01\x32\xa5\x01The unique identifier for this client secret. This ID is used to reference the secret in API requests for management operations like updating or deleting the secret.J\x16\"sec_1234abcd5678efgh\"R\x02id\x12\xd1\x01\n\x0b\x63reate_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x93\x01\x92\x41\x8f\x01\x32qThe timestamp when this secret was created. This field is automatically set by the server and cannot be modified.J\x1a\"2024-01-05T14:48:00.000Z\"R\ncreateTime\x12\x86\x02\n\x0bupdate_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\xc8\x01\x92\x41\xc4\x01\x32\xa5\x01The timestamp when this secret was last updated. This field is automatically updated by the server when the secret\'s status changes or other properties are modified.J\x1a\"2024-01-10T09:12:00.000Z\"R\nupdateTime\x12\x82\x02\n\rsecret_suffix\x18\x04 \x01(\tB\xdc\x01\x92\x41\xd8\x01\x32\xcd\x01\x41 suffix that helps identify this secret. This is the last few characters of the full secret value but is not sufficient for authentication. Helps identify which secret is being used in logs and debugging.J\x06\"xyzw\"R\x0csecretSuffix\x12\xc9\x01\n\ncreated_by\x18\x05 \x01(\tB\xa4\x01\x92\x41\xa0\x01\x32\x8f\x01The identifier of the user or system that created this secret. This field helps track who created the secret for audit and compliance purposes.J\x0c\"user_12345\"H\x00R\tcreatedBy\x88\x01\x01\x12\x84\x02\n\x06status\x18\x06 \x01(\x0e\x32\'.scalekit.v1.clients.ClientSecretStatusB\xc2\x01\x92\x41\xbe\x01\x32\xb1\x01The current status of this secret. A secret must be ACTIVE to be used for authentication. INACTIVE secrets cannot be used for authentication but are retained for audit purposes.J\x08\"ACTIVE\"R\x06status\x12\x8c\x02\n\x0b\x65xpire_time\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\xce\x01\x92\x41\xca\x01\x32\xab\x01The timestamp when this secret will expire. After this time, the secret cannot be used for authentication regardless of its status. If not set, the secret does not expire.J\x1a\"2025-01-05T14:48:00.000Z\"R\nexpireTime\x12\xa6\x02\n\x0elast_used_time\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\xe3\x01\x92\x41\xdf\x01\x32\xc0\x01The timestamp when this secret was last used for authentication. This field helps track secret usage for security monitoring and identifying unused secrets that may be candidates for rotation.J\x1a\"2024-02-15T10:30:00.000Z\"R\x0clastUsedTime\x12\xb3\x02\n\x0cplain_secret\x18\t \x01(\tB\x8a\x02\x92\x41\x86\x02\x32\xd7\x01The full plaintext secret value. This field is only populated when the secret is first created and is never stored by the server. It must be securely stored by the client application as it cannot be retrieved again.J*\"sec_1234567890abcdefghijklmnopqrstuvwxyz\"H\x01R\x0bplainSecret\x88\x01\x01:\x93\x01\x92\x41\x8f\x01\n\x8c\x01*\rClient Secret2{A secure credential used for authenticating an API client. Each client can have multiple secrets for key rotation purposes.B\r\n\x0b_created_byB\x0f\n\r_plain_secret\"w\n\x05Scope\x12 \n\x04name\x18\x01 \x01(\tB\x0c\xbaH\tr\x04\x10\x01\x18\x64\xc8\x01\x01R\x04name\x12*\n\x0b\x64\x65scription\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\x18\xd0\x0fR\x0b\x64\x65scription\x12 \n\x07\x65nabled\x18\x03 \x01(\x08\x42\x06\xbaH\x03\xc8\x01\x01R\x07\x65nabled\"q\n\x0b\x43reateScope\x12\x36\n\x04name\x18\x01 \x01(\tB\"\xbaH\x1fr\x1a\x10\x01\x18\x64\x32\x14^[a-zA-Z0-9:]{1,64}$\xc8\x01\x01R\x04name\x12*\n\x0b\x64\x65scription\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\x18\xd0\x0fR\x0b\x64\x65scription\"{\n\x12\x43reateScopeRequest\x12%\n\x06\x65nv_id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x05\x65nvId\x12>\n\x05scope\x18\x02 \x01(\x0b\x32 .scalekit.v1.clients.CreateScopeB\x06\xbaH\x03\xc8\x01\x01R\x05scope\"G\n\x13\x43reateScopeResponse\x12\x30\n\x05scope\x18\x01 \x01(\x0b\x32\x1a.scalekit.v1.clients.ScopeR\x05scope\":\n\x11ListScopesRequest\x12%\n\x06\x65nv_id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x05\x65nvId\"H\n\x12ListScopesResponse\x12\x32\n\x06scopes\x18\x01 \x03(\x0b\x32\x1a.scalekit.v1.clients.ScopeR\x06scopes\"\xdc\x04\n\x19GetConsentDetailsResponse\x12m\n\x0b\x61pplication\x18\x01 \x01(\x0b\x32 .scalekit.v1.clients.ApplicationB)\x92\x41&2$Details of the requested applicationR\x0b\x61pplication\x12\x61\n\x08resource\x18\x02 \x01(\x0b\x32\x1d.scalekit.v1.clients.ResourceB&\x92\x41#2!Details of the requested resourceR\x08resource\x12[\n\x04user\x18\x03 \x01(\x0b\x32\x19.scalekit.v1.clients.UserB,\x92\x41)2\'Details of the user who granted consentR\x04user\x12r\n\x06\x63lient\x18\x04 \x01(\x0b\x32\".scalekit.v1.clients.ConsentClientB6\x92\x41\x33\x32\x31\x44\x65tails of the client resource requesting consentR\x06\x63lient\x12\x9b\x01\n\x06scopes\x18\x05 \x03(\x0b\x32!.scalekit.v1.clients.ConsentScopeB`\x92\x41]2[List of scopes for which consent was granted. Each scope includes its name and description.R\x06scopes\"\xcd\x01\n\rConsentClient\x12o\n\x04name\x18\x01 \x01(\tB[\x92\x41O2;Unique identifier of the client resource requesting consentJ\x10\"skc_1234567890\"\xbaH\x06r\x04\x10\x01\x18 R\x04name\x12(\n\x0bprivacy_uri\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x18\x64R\nprivacyUri\x12!\n\x07tos_uri\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\x18\xd0\x0fR\x06tosUri\"\\\n\x0c\x43onsentScope\x12 \n\x04name\x18\x01 \x01(\tB\x0c\xbaH\tr\x04\x10\x01\x18\x64\xc8\x01\x01R\x04name\x12*\n\x0b\x64\x65scription\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\x18\xd0\x0fR\x0b\x64\x65scription\"r\n\x04User\x12j\n\x05\x65mail\x18\x01 \x01(\tBT\x92\x41Q28Email address of the user. Must be a valid email format.J\x15\x61lice.doe@example.comR\x05\x65mail*k\n\x0cResourceType\x12\x1d\n\x19RESOURCE_TYPE_UNSPECIFIED\x10\x00\x12\x07\n\x03WEB\x10\x01\x12\n\n\x06MOBILE\x10\x02\x12\x0b\n\x07\x44\x45SKTOP\x10\x03\x12\n\n\x06SERVER\x10\x04\x12\x0e\n\nMCP_SERVER\x10\x05*.\n\x12\x43lientSecretStatus\x12\n\n\x06\x41\x43TIVE\x10\x00\x12\x0c\n\x08INACTIVE\x10\x01\x32\xaeq\n\rClientService\x12\xd6\x02\n\nListClient\x12\'.scalekit.v1.clients.ListClientsRequest\x1a(.scalekit.v1.clients.ListClientsResponse\"\xf4\x01\x92\x41\xc4\x01\n\x08\x41PI Auth\x12\x10List API clients\x1aGRetrieves a paginated list of API client applications in the workspace.J]\n\x03\x32\x30\x30\x12V\n&List of clients returned successfully.\x12,\n*\x1a(.scalekit.v1.clients.ListClientsResponse\x82\xb5\x18\x02\x18P\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x11\x12\x0f/api/v1/clients\x12\xcc\x05\n\tGetClient\x12%.scalekit.v1.clients.GetClientRequest\x1a&.scalekit.v1.clients.GetClientResponse\"\xef\x04\x92\x41\xb3\x04\n\x0e\x43lient Configs\x12\x18Get Client Configuration\x1a\xc1\x02Retrieves the complete configuration for an M2M client, including authentication settings, scopes, and custom claims. Use this endpoint to view or verify client settings, such as allowed redirect URIs, audience values, and token expiration times. The response includes all current client metadata and security parameters.J\xc2\x01\n\x03\x32\x30\x30\x12\xba\x01\n\x8b\x01\x43lient configuration retrieved successfully. Returns full client metadata including scopes, audience, custom claims, and security settings.\x12*\n(\x1a&.scalekit.v1.clients.GetClientResponse\x82\xb5\x18\x02\x18T\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x1d\x12\x1b/api/v1/clients/{client_id}\x12\xca\x05\n\x0cUpdateClient\x12(.scalekit.v1.clients.UpdateClientRequest\x1a).scalekit.v1.clients.UpdateClientResponse\"\xe4\x04\x92\x41\xa0\x04\n\x0e\x43lient Configs\x12\x1bUpdate Client Configuration\x1a\xb7\x02Updates the configuration settings for an M2M client. This endpoint allows you to modify client properties such as redirect URIs, scopes, audience values, and custom claims. Required fields include redirect_uris and default_redirect_uri. Note that client_id and create_time are immutable and cannot be modified.J\xb6\x01\n\x03\x32\x30\x31\x12\xae\x01\n}Client configuration updated successfully. Returns the updated client resource with new update_time and all current settings.\x12-\n+\x1a).scalekit.v1.clients.UpdateClientResponse\x82\xb5\x18\x02\x18T\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02%2\x1b/api/v1/clients/{client_id}:\x06\x63lient\x12\xa4\x05\n\x12\x43reateClientSecret\x12..scalekit.v1.clients.CreateClientSecretRequest\x1a/.scalekit.v1.clients.CreateClientSecretResponse\"\xac\x04\x92\x41\xe8\x03\n\x0e\x43lient Configs\x12\x14\x43reate Client Secret\x1a\x82\x02Generates a new client secret for an API client. This endpoint creates a secure credential that can be used for OAuth 2.0 client credentials flow. The plain secret is only returned once during creation and should be stored securely by the client application.J\xba\x01\n\x03\x32\x30\x31\x12\xb2\x01\n{Client secret created successfully. Returns the new secret ID and the plain secret value (only available at creation time).\x12\x33\n1\x1a/.scalekit.v1.clients.CreateClientSecretResponse\x82\xb5\x18\x02\x18T\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02%\"#/api/v1/clients/{client_id}/secrets\x12\xca\x05\n\x12UpdateClientSecret\x12..scalekit.v1.clients.UpdateClientSecretRequest\x1a/.scalekit.v1.clients.UpdateClientSecretResponse\"\xd2\x04\x92\x41\xbf\x03\n\x0e\x43lient Configs\x12\x14Update Client Secret\x1a\xfd\x01Updates the status of a client secret. This endpoint allows you to activate or deactivate a client secret. Use this to rotate secrets or revoke access for compromised credentials. The secret value itself cannot be modified - create a new secret instead.J\x96\x01\n\x03\x32\x30\x30\x12\x8e\x01\nWClient secret updated successfully. Returns the updated secret with its current status.\x12\x33\n1\x1a/.scalekit.v1.clients.UpdateClientSecretResponse\x82\xb5\x18\x02\x18T\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02t\x1a//api/v1/clients/{client_id}/secrets/{secret_id}:\x06secretZ92//api/v1/clients/{client_id}/secrets/{secret_id}:\x06secret\x12\xe3\x03\n\x12\x44\x65leteClientSecret\x12..scalekit.v1.clients.DeleteClientSecretRequest\x1a\x16.google.protobuf.Empty\"\x84\x03\x92\x41\xb4\x02\n\x0e\x43lient Configs\x12\x14\x44\x65lete Client Secret\x1a\xc5\x01Permanently deletes a client secret. This operation cannot be undone. Use this endpoint to remove compromised or unused secrets. After deletion, the secret can no longer be used for authentication.JD\n\x03\x32\x30\x30\x12=\n;Client secret successfully deleted and no longer accessible\x82\xb5\x18\x02\x18T\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x31*//api/v1/clients/{client_id}/secrets/{secret_id}\x12\xee\n\n\x18\x43reateOrganizationClient\x12\x34.scalekit.v1.clients.CreateOrganizationClientRequest\x1a\x35.scalekit.v1.clients.CreateOrganizationClientResponse\"\xe4\t\x92\x41\x9b\t\n\x08\x41PI Auth\x12\x1e\x43reate organization API client\x1arCreates a new API client for an organization. Returns the client details and a plain secret (available only once).J\x9e\x02\n\x03\x32\x30\x31\x12\x96\x02\n\xd8\x01\x41PI client created successfully. Returns the client ID and plain secret (only available at creation time). The client can be configured with scopes, audience values, and custom claims for fine-grained access control.\x12\x39\n7\x1a\x35.scalekit.v1.clients.CreateOrganizationClientResponsej\xd9\x05\n\rx-codeSamples\x12\xc7\x05\x32\xc4\x05\n\xc1\x05*\xbe\x05\n\x15\n\x05label\x12\x0c\x1a\nPython SDK\n\x10\n\x04lang\x12\x08\x1a\x06python\n\x92\x05\n\x06source\x12\x87\x05\x1a\x84\x05\x66rom scalekit.v1.clients.clients_pb2 import OrganizationClient\n\nm2m_client = OrganizationClient(\n name=\"GitHub Actions Deployment Service\",\n description=\"Service account for GitHub Actions to deploy applications to production\",\n custom_claims=[\n {\"key\": \"github_repository\", \"value\": \"acmecorp/inventory-service\"},\n {\"key\": \"environment\", \"value\": \"production_us\"}\n ],\n scopes=[\"deploy:applications\", \"read:deployments\"],\n audience=[\"deployment-api.acmecorp.com\"],\n expiry=3600\n)\n\nresponse = sc.m2m_client.create_organization_client(\n organization_id=\"SCALEKIT_ORGANIZATION_ID\",\n m2m_client=m2m_client\n)\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02\x39\"//api/v1/organizations/{organization_id}/clients:\x06\x63lient\x12\xa2\x07\n\x15GetOrganizationClient\x12\x31.scalekit.v1.clients.GetOrganizationClientRequest\x1a\x32.scalekit.v1.clients.GetOrganizationClientResponse\"\xa1\x06\x92\x41\xd4\x05\n\x08\x41PI Auth\x12\x1bGet organization API client\x1a>Retrieves details of a specific API client in an organization.J\xfd\x01\n\x03\x32\x30\x30\x12\xf5\x01\n\xba\x01Returns the complete API client configuration, including all current settings and a list of active secrets. Note that secret values are not included in the response for security reasons.\x12\x36\n4\x1a\x32.scalekit.v1.clients.GetOrganizationClientResponsej\xea\x02\n\rx-codeSamples\x12\xd8\x02\x32\xd5\x02\n\xd2\x02*\xcf\x02\n\x15\n\x05label\x12\x0c\x1a\nPython SDK\n\x10\n\x04lang\x12\x08\x1a\x06python\n\xa3\x02\n\x06source\x12\x98\x02\x1a\x95\x02# Get client ID from environment variables\norg_id = \'SCALEKIT_ORGANIZATION_ID\'\nclient_id = os.environ[\'M2M_CLIENT_ID\']\n\n# Fetch client details for the specified organization\nresponse = sc.m2m_client.get_organization_client(\n organization_id=org_id,\n client_id=client_id\n)\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02=\x12;/api/v1/organizations/{organization_id}/clients/{client_id}\x12\xbf\x08\n\x1e\x43reateOrganizationClientSecret\x12:.scalekit.v1.clients.CreateOrganizationClientSecretRequest\x1a;.scalekit.v1.clients.CreateOrganizationClientSecretResponse\"\xa3\x07\x92\x41\xce\x06\n\x08\x41PI Auth\x12%Create organization API client secret\x1a\x64\x43reates a new secret for an organization API client. Returns the plain secret (available only once).J\xfe\x01\n\x03\x32\x30\x31\x12\xf6\x01\n\xb2\x01\x43lient secret created successfully. Returns the new secret ID and the plain secret value (only available at creation time). The secret can be used immediately for authentication.\x12?\n=\x1a;.scalekit.v1.clients.CreateOrganizationClientSecretResponsej\xb3\x03\n\rx-codeSamples\x12\xa1\x03\x32\x9e\x03\n\x9b\x03*\x98\x03\n\x15\n\x05label\x12\x0c\x1a\nPython SDK\n\x10\n\x04lang\x12\x08\x1a\x06python\n\xec\x02\n\x06source\x12\xe1\x02\x1a\xde\x02# Get client ID from environment variables\norg_id = \'SCALEKIT_ORGANIZATION_ID\'\nclient_id = os.environ[\'M2M_CLIENT_ID\']\n\n# Add a new secret to the specified client\nresponse = sc.m2m_client.add_organization_client_secret(\n organization_id=org_id,\n client_id=client_id\n)\n\n# Extract the secret ID from the response\nsecret_id = response[0].secret.id\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02\x45\"C/api/v1/organizations/{organization_id}/clients/{client_id}/secrets\x12\xed\x06\n\x1e\x44\x65leteOrganizationClientSecret\x12:.scalekit.v1.clients.DeleteOrganizationClientSecretRequest\x1a\x16.google.protobuf.Empty\"\xf6\x05\x92\x41\x95\x05\n\x08\x41PI Auth\x12%Delete organization API client secret\x1a^Permanently deletes a secret from an organization API client. This operation cannot be undone.JD\n\x03\x32\x30\x30\x12=\n;Client secret successfully deleted and no longer accessiblej\xbb\x03\n\rx-codeSamples\x12\xa9\x03\x32\xa6\x03\n\xa3\x03*\xa0\x03\n\x15\n\x05label\x12\x0c\x1a\nPython SDK\n\x10\n\x04lang\x12\x08\x1a\x06python\n\xf4\x02\n\x06source\x12\xe9\x02\x1a\xe6\x02# Get client and secret IDs from environment variables\norg_id = \'\'\nclient_id = os.environ[\'M2M_CLIENT_ID\']\nsecret_id = os.environ[\'M2M_SECRET_ID\']\n\n# Remove the specified secret from the client\nresponse = sc.m2m_client.remove_organization_client_secret(\n organization_id=org_id,\n client_id=client_id,\n secret_id=secret_id\n)\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02Q*O/api/v1/organizations/{organization_id}/clients/{client_id}/secrets/{secret_id}\x12\xd6\t\n\x18UpdateOrganizationClient\x12\x34.scalekit.v1.clients.UpdateOrganizationClientRequest\x1a\x35.scalekit.v1.clients.UpdateOrganizationClientResponse\"\xcc\x08\x92\x41\xf7\x07\n\x08\x41PI Auth\x12\x1eUpdate organization API client\x1aPUpdates an existing organization API client. Only specified fields are modified.J\xe4\x01\n\x03\x32\x30\x30\x12\xdc\x01\n\x9e\x01Returns the updated organization API client with all current details reflected in the response, including modified scopes, audience values, and custom claims.\x12\x39\n7\x1a\x35.scalekit.v1.clients.UpdateOrganizationClientResponsej\x91\x05\n\rx-codeSamples\x12\xff\x04\x32\xfc\x04\n\xf9\x04*\xf6\x04\n\x15\n\x05label\x12\x0c\x1a\nPython SDK\n\x10\n\x04lang\x12\x08\x1a\x06python\n\xca\x04\n\x06source\x12\xbf\x04\x1a\xbc\x04\x66rom scalekit.v1.clients.clients_pb2 import OrganizationClient\n\norg_id = \'\'\nclient_id = os.environ[\'M2M_CLIENT_ID\']\n\nupdate_m2m_client = OrganizationClient(\n description=\"Service account for GitHub Actions to deploy applications to production_eu\",\n custom_claims=[\n {\"key\": \"github_repository\", \"value\": \"acmecorp/inventory\"},\n {\"key\": \"environment\", \"value\": \"production_eu\"}\n ]\n)\n\nresponse = sc.m2m_client.update_organization_client(\n organization_id=org_id,\n client_id=client_id,\n m2m_client=update_m2m_client\n)\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02\x45\x32;/api/v1/organizations/{organization_id}/clients/{client_id}:\x06\x63lient\x12\x93\x07\n\x18\x44\x65leteOrganizationClient\x12\x34.scalekit.v1.clients.DeleteOrganizationClientRequest\x1a\x16.google.protobuf.Empty\"\xa8\x06\x92\x41\xdb\x05\n\x08\x41PI Auth\x12\x1e\x44\x65lete organization API client\x1a\xee\x01Permanently deletes an API client from an organization. This operation cannot be undone and will revoke all access for the client. All associated secrets will also be invalidated. Use this endpoint to remove unused or compromised clients.JN\n\x03\x32\x30\x30\x12G\nEOrganization API client successfully deleted and no longer accessiblej\xed\x02\n\rx-codeSamples\x12\xdb\x02\x32\xd8\x02\n\xd5\x02*\xd2\x02\n\x15\n\x05label\x12\x0c\x1a\nPython SDK\n\x10\n\x04lang\x12\x08\x1a\x06python\n\xa6\x02\n\x06source\x12\x9b\x02\x1a\x98\x02# Get client ID from environment variables\norg_id = \'\'\nclient_id = os.environ[\'M2M_CLIENT_ID\']\n\n# Delete the specified client from the organization\nresponse = sc.m2m_client.delete_organization_client(\n organization_id=org_id,\n client_id=client_id\n)\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02=*;/api/v1/organizations/{organization_id}/clients/{client_id}\x12\x95\x03\n\x0e\x43reateResource\x12*.scalekit.v1.clients.CreateResourceRequest\x1a+.scalekit.v1.clients.CreateResourceResponse\"\xa9\x02\x92\x41\xed\x01\n\x08\x41PI Auth\x12\x0f\x43reate Resource\x1aXCreates a new client resource. The response includes the resource ID and other metadata.Jv\n\x03\x32\x30\x31\x12o\nResource details retrieved successfully. Returns the resource.\x12,\n*\x1a(.scalekit.v1.clients.GetResourceResponse\x82\xb5\x18\x02\x18T\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02!\x12\x1f/api/v1/resources/{resource_id}\x12\xd3\x02\n\rListResources\x12).scalekit.v1.clients.ListResourcesRequest\x1a*.scalekit.v1.clients.ListResourcesResponse\"\xea\x01\x92\x41\xb8\x01\n\x08\x41PI Auth\x12\x11List applications\x1a\x36Retrieves a paginated list of API client applications.Ja\n\x03\x32\x30\x30\x12Z\n(List of resources returned successfully.\x12.\n,\x1a*.scalekit.v1.clients.ListResourcesResponse\x82\xb5\x18\x02\x18T\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x13\x12\x11/api/v1/resources\x12\x93\x03\n\x0eUpdateResource\x12*.scalekit.v1.clients.UpdateResourceRequest\x1a+.scalekit.v1.clients.UpdateResourceResponse\"\xa7\x02\x92\x41\xdd\x01\n\x08\x41PI Auth\x12\x0fUpdate Resource\x1aHUpdates an existing client resource. Only specified fields are modified.Jv\n\x03\x32\x30\x30\x12o\nResource details retrieved successfully. Returns the resource.\x12,\n*\x1a(.scalekit.v1.clients.GetResourceResponse\x82\xb5\x18\x02\x18T\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x31\x1a//api/v1/resources/{resource_id}/provider:delete\x12\xf5\x03\n\x14\x43reateResourceClient\x12\x30.scalekit.v1.clients.CreateResourceClientRequest\x1a\x31.scalekit.v1.clients.CreateResourceClientResponse\"\xf7\x02\x92\x41\xa7\x02\n\x08\x41PI Auth\x12\x16\x43reate Resource Client\x1apCreates a new API client under the specified resource. Returns client details and the plain secret (shown once).J\x90\x01\n\x03\x32\x30\x31\x12\x88\x01\nOClient created successfully. Returns the client configuration and plain secret.\x12\x35\n3\x1a\x31.scalekit.v1.clients.CreateResourceClientResponse\x82\xb5\x18\x02\x18T\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x31\"\'/api/v1/resources/{resource_id}/clients:\x06\x63lient\x12\xce\x03\n\x11GetResourceClient\x12-.scalekit.v1.clients.GetResourceClientRequest\x1a..scalekit.v1.clients.GetResourceClientResponse\"\xd9\x02\x92\x41\x85\x02\n\x08\x41PI Auth\x12\x17Get Resource API Client\x1aJRetrieves details of a specific API client associated with an application.J\x93\x01\n\x03\x32\x30\x30\x12\x8b\x01\nUClient details retrieved successfully. Returns the resource and client configuration.\x12\x32\n0\x1a..scalekit.v1.clients.GetResourceClientResponse\x82\xb5\x18\x02\x18T\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x35\x12\x33/api/v1/resources/{resource_id}/clients/{client_id}\x12\x82\x04\n\x0eRegisterClient\x12*.scalekit.v1.clients.RegisterClientRequest\x1a+.scalekit.v1.clients.RegisterClientResponse\"\x96\x03\x92\x41\xc2\x02\n\x08\x41PI Auth\x12\x13Register API client\x1a\x84\x01Registers a new API client under an existing resource using dynamic client registration. Returns the created client and its secrets.J\x99\x01\n\x03\x32\x30\x31\x12\x91\x01\n^Client registered successfully. Returns client details and plain secret (available only once).\x12/\n-\x1a+.scalekit.v1.clients.RegisterClientResponse\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x35\"+/api/v1/resources/{app_id}/clients:register:\x06\x63lient\x12\xaa\x01\n\x0b\x43reateScope\x12\'.scalekit.v1.clients.CreateScopeRequest\x1a(.scalekit.v1.clients.CreateScopeResponse\"H\x82\xb5\x18\x02\x18P\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02-\"$/api/v1/environments/{env_id}/scopes:\x05scope\x12\xa0\x01\n\nListScopes\x12&.scalekit.v1.clients.ListScopesRequest\x1a\'.scalekit.v1.clients.ListScopesResponse\"A\x82\xb5\x18\x02\x18p\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02&\x12$/api/v1/environments/{env_id}/scopes\x12\x97\x01\n\x11GetConsentDetails\x12\x16.google.protobuf.Empty\x1a..scalekit.v1.clients.GetConsentDetailsResponse\":\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x1f\x12\x1d/api/v1/oauth/consent/details\x1a\xb8\x03\x92\x41\xb4\x03\n\x08\x41PI Auth\x12\xfd\x02\x45ndpoints for managing API client applications. API clients enable secure, automated interactions between software systems without human intervention. Each client is uniquely identified by a `client_id` and can be configured with authentication settings, redirect URIs, and security parameters. Use these endpoints to create, manage, and configure API clients for your API clients.\x1a(\x12&https://docs.scalekit.com/m2m/overviewB3Z1github.com/scalekit-inc/scalekit/pkg/grpc/clientsb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -34,72 +35,104 @@ if not _descriptor._USE_C_DESCRIPTORS: _globals['DESCRIPTOR']._loaded_options = None _globals['DESCRIPTOR']._serialized_options = b'Z1github.com/scalekit-inc/scalekit/pkg/grpc/clients' - _globals['_CREATEAPPLICATIONREQUEST'].fields_by_name['application']._loaded_options = None - _globals['_CREATEAPPLICATIONREQUEST'].fields_by_name['application']._serialized_options = b'\222A*2(Details of the application to be created\272H\003\310\001\001' - _globals['_CREATEAPPLICATION'].fields_by_name['application_type']._loaded_options = None - _globals['_CREATEAPPLICATION'].fields_by_name['application_type']._serialized_options = b'\222A.2%Type of the application to be createdJ\005\"WEB\"\272H\003\310\001\001' - _globals['_CREATEAPPLICATION'].fields_by_name['third_party']._loaded_options = None - _globals['_CREATEAPPLICATION'].fields_by_name['third_party']._serialized_options = b'\222AA29Indicates if the application is a first-party applicationJ\004true' - _globals['_CREATEAPPLICATION'].fields_by_name['name']._loaded_options = None - _globals['_CREATEAPPLICATION'].fields_by_name['name']._serialized_options = b'\222A/2\027Name of the applicationJ\024\"My API Application\"\272H\010r\003\030\200\001\310\001\001' - _globals['_CREATEAPPLICATION'].fields_by_name['description']._loaded_options = None - _globals['_CREATEAPPLICATION'].fields_by_name['description']._serialized_options = b'\222A_2\036Description of the applicationJ=\"Application for accessing your organization\'s API resources\"\272H\005r\003\030\200\004' - _globals['_CREATEAPPLICATION'].fields_by_name['resource_id']._loaded_options = None - _globals['_CREATEAPPLICATION'].fields_by_name['resource_id']._serialized_options = b'\222A\211\0012gResource identifier for the application. This could be the URL used to access the application resourcesJ\036\"https://resource.example.com\"\272H\007r\005\020\001\030\200\004' - _globals['_CREATEAPPLICATION'].fields_by_name['access_token_expiry']._loaded_options = None - _globals['_CREATEAPPLICATION'].fields_by_name['access_token_expiry']._serialized_options = b'\222A42,Expiry time in seconds for the access token.J\0043600' - _globals['_CREATEAPPLICATION'].fields_by_name['refresh_token_expiry']._loaded_options = None - _globals['_CREATEAPPLICATION'].fields_by_name['refresh_token_expiry']._serialized_options = b'\222A62-Expiry time in seconds for the refresh token.J\00586400' - _globals['_CREATEAPPLICATION'].fields_by_name['allow_dynamic_client_registration']._loaded_options = None - _globals['_CREATEAPPLICATION'].fields_by_name['allow_dynamic_client_registration']._serialized_options = b'\222AP2HIndicates if dynamic client registration is allowed for this applicationJ\004true\272H\003\310\001\001' - _globals['_CREATEAPPLICATION'].fields_by_name['logo_uri']._loaded_options = None - _globals['_CREATEAPPLICATION'].fields_by_name['logo_uri']._serialized_options = b'\222A>2\034Logo URI for the applicationJ\036\"https://example.com/logo.png\"\272H\005r\003\030\200\004' - _globals['_APPLICATIONCLIENT'].fields_by_name['name']._loaded_options = None - _globals['_APPLICATIONCLIENT'].fields_by_name['name']._serialized_options = b'\222A%2\022Name of the clientJ\017\"My API Client\"\272H\005r\003\030\200\001' - _globals['_APPLICATIONCLIENT'].fields_by_name['description']._loaded_options = None - _globals['_APPLICATIONCLIENT'].fields_by_name['description']._serialized_options = b'\222AU2\031Description of the clientJ8\"Client for accessing your organization\'s API resources\"\272H\005r\003\030\200\004' - _globals['_APPLICATIONCLIENT'].fields_by_name['scopes']._loaded_options = None - _globals['_APPLICATIONCLIENT'].fields_by_name['scopes']._serialized_options = b'\222A\0352\033OAuth scopes for the client' - _globals['_APPLICATIONCLIENT'].fields_by_name['audience']._loaded_options = None - _globals['_APPLICATIONCLIENT'].fields_by_name['audience']._serialized_options = b'\222AC2$OAuth audience values for the clientJ\033[\"https://api.example.com\"]' - _globals['_APPLICATIONCLIENT'].fields_by_name['custom_claims']._loaded_options = None - _globals['_APPLICATIONCLIENT'].fields_by_name['custom_claims']._serialized_options = b'\222A|2zCustom claims to be included in access tokens. Please keep this to the essentials as this increases the size of the token.' - _globals['_APPLICATIONCLIENT'].fields_by_name['expiry']._loaded_options = None - _globals['_APPLICATIONCLIENT'].fields_by_name['expiry']._serialized_options = b'\222AD22\034Logo URI for the applicationJ\036\"https://example.com/logo.png\"\272H\005r\003\030\200\004' + _globals['_APPLICATION'].fields_by_name['logo_uri']._serialized_options = b'\222A;2\031Logo URI for the resourceJ\036\"https://example.com/logo.png\"\272H\005r\003\030\200\004' _globals['_APPLICATION'].fields_by_name['access_token_expiry']._loaded_options = None _globals['_APPLICATION'].fields_by_name['access_token_expiry']._serialized_options = b'\222A42,Expiry time in seconds for the access token.J\0043600' _globals['_APPLICATION'].fields_by_name['refresh_token_expiry']._loaded_options = None _globals['_APPLICATION'].fields_by_name['refresh_token_expiry']._serialized_options = b'\222A62-Expiry time in seconds for the refresh token.J\00586400' _globals['_APPLICATION'].fields_by_name['create_time']._loaded_options = None - _globals['_APPLICATION'].fields_by_name['create_time']._serialized_options = b'\222AH2*Timestamp when the application was createdJ\032\"2024-01-05T14:48:00.000Z\"' + _globals['_APPLICATION'].fields_by_name['create_time']._serialized_options = b'\222AE2\'Timestamp when the resource was createdJ\032\"2024-01-05T14:48:00.000Z\"' _globals['_APPLICATION'].fields_by_name['update_time']._loaded_options = None - _globals['_APPLICATION'].fields_by_name['update_time']._serialized_options = b'\222AM2/Timestamp when the application was last updatedJ\032\"2024-01-05T14:48:00.000Z\"' + _globals['_APPLICATION'].fields_by_name['update_time']._serialized_options = b'\222AJ2,Timestamp when the resource was last updatedJ\032\"2024-01-05T14:48:00.000Z\"' + _globals['_APPLICATION'].fields_by_name['provider']._loaded_options = None + _globals['_APPLICATION'].fields_by_name['provider']._serialized_options = b'\222A12$Connection provider for the resourceJ\t\"DESCOPE\"\272H\005r\003\030\200\004' + _globals['_RESOURCE'].fields_by_name['id']._loaded_options = None + _globals['_RESOURCE'].fields_by_name['id']._serialized_options = b'\222As2XUnique identifier for the resource. Automatically generated upon creation and immutable.J\027\"app_69388798466720005\"' + _globals['_RESOURCE'].fields_by_name['name']._loaded_options = None + _globals['_RESOURCE'].fields_by_name['name']._serialized_options = b'\222A)2\024Name of the resourceJ\021\"My API Resource\"\272H\005r\003\030\200\001' + _globals['_RESOURCE'].fields_by_name['resource_id']._loaded_options = None + _globals['_RESOURCE'].fields_by_name['resource_id']._serialized_options = b'\222A\204\0012bResource identifier for the resource. This could be the URL used to access the resource resourcesJ\036\"https://resource.example.com\"\272H\007r\005\020\001\030\200\004' + _globals['_RESOURCE'].fields_by_name['description']._loaded_options = None + _globals['_RESOURCE'].fields_by_name['description']._serialized_options = b'\222AY2\033Description of the resourceJ:\"Resource for accessing your organization\'s API resources\"\272H\005r\003\030\200\004' + _globals['_RESOURCE'].fields_by_name['resource_type']._loaded_options = None + _globals['_RESOURCE'].fields_by_name['resource_type']._serialized_options = b'\222A\0352\024Type of the resourceJ\005\"WEB\"\272H\003\310\001\001' + _globals['_RESOURCE'].fields_by_name['third_party']._loaded_options = None + _globals['_RESOURCE'].fields_by_name['third_party']._serialized_options = b'\222A;23Indicates if the resource is a first-party resourceJ\004true\272H\003\310\001\001' + _globals['_RESOURCE'].fields_by_name['disable_dynamic_client_registration']._loaded_options = None + _globals['_RESOURCE'].fields_by_name['disable_dynamic_client_registration']._serialized_options = b'\222AM2EIndicates if dynamic client registration is allowed for this resourceJ\004true\272H\003\310\001\001' + _globals['_RESOURCE'].fields_by_name['logo_uri']._loaded_options = None + _globals['_RESOURCE'].fields_by_name['logo_uri']._serialized_options = b'\222A;2\031Logo URI for the resourceJ\036\"https://example.com/logo.png\"\272H\005r\003\030\200\004' + _globals['_RESOURCE'].fields_by_name['access_token_expiry']._loaded_options = None + _globals['_RESOURCE'].fields_by_name['access_token_expiry']._serialized_options = b'\222A42,Expiry time in seconds for the access token.J\0043600' + _globals['_RESOURCE'].fields_by_name['refresh_token_expiry']._loaded_options = None + _globals['_RESOURCE'].fields_by_name['refresh_token_expiry']._serialized_options = b'\222A62-Expiry time in seconds for the refresh token.J\00586400' + _globals['_RESOURCE'].fields_by_name['create_time']._loaded_options = None + _globals['_RESOURCE'].fields_by_name['create_time']._serialized_options = b'\222AE2\'Timestamp when the resource was createdJ\032\"2024-01-05T14:48:00.000Z\"' + _globals['_RESOURCE'].fields_by_name['update_time']._loaded_options = None + _globals['_RESOURCE'].fields_by_name['update_time']._serialized_options = b'\222AJ2,Timestamp when the resource was last updatedJ\032\"2024-01-05T14:48:00.000Z\"' + _globals['_RESOURCE'].fields_by_name['provider']._loaded_options = None + _globals['_RESOURCE'].fields_by_name['provider']._serialized_options = b'\222A12$Connection provider for the resourceJ\t\"DESCOPE\"\272H\005r\003\030\200\004' _globals['_REGISTERCLIENTREQUEST'].fields_by_name['app_id']._loaded_options = None - _globals['_REGISTERCLIENTREQUEST'].fields_by_name['app_id']._serialized_options = b'\222AF2+Unique identifier of the client applicationJ\027\"app_69388798466720005\"\272H\017r\n\020\001\030 :\004app_\310\001\001' + _globals['_REGISTERCLIENTREQUEST'].fields_by_name['app_id']._serialized_options = b'\222AC2(Unique identifier of the client resourceJ\027\"app_69388798466720005\"\272H\017r\n\020\001\030 :\004app_\310\001\001' _globals['_REGISTERCLIENTREQUEST'].fields_by_name['client']._loaded_options = None _globals['_REGISTERCLIENTREQUEST'].fields_by_name['client']._serialized_options = b'\222A(2&Details of the client to be registered\272H\003\310\001\001' _globals['_REGISTERCLIENT'].fields_by_name['client_name']._loaded_options = None @@ -131,65 +164,67 @@ _globals['_REGISTERCLIENTRESPONSE'].fields_by_name['update_time']._loaded_options = None _globals['_REGISTERCLIENTRESPONSE'].fields_by_name['update_time']._serialized_options = b'\222A\262\0012\223\001The timestamp when this M2M client was last updated. This field is automatically updated by the server whenever the client\'s configuration changes.J\032\"2024-01-05T14:48:00.000Z\"' _globals['_REGISTERCLIENTRESPONSE'].fields_by_name['scopes']._loaded_options = None - _globals['_REGISTERCLIENTRESPONSE'].fields_by_name['scopes']._serialized_options = b'\222A\244\0012uThe OAuth 2.0 scopes granted to this client. These scopes determine what resources and actions the client can access.J+[\"deploy:applications\", \"read:deployments\"]' + _globals['_REGISTERCLIENTRESPONSE'].fields_by_name['scopes']._serialized_options = b'\222A\241\0012uThe OAuth 2.0 scopes granted to this client. These scopes determine what resources and actions the client can access.J([\"deploy:resources\", \"read:deployments\"]' _globals['_REGISTERCLIENTRESPONSE'].fields_by_name['audience']._loaded_options = None _globals['_REGISTERCLIENTRESPONSE'].fields_by_name['audience']._serialized_options = b'\222A\246\0012\206\001The intended recipients of access tokens issued to this client. Each audience value should be a URI that identifies an API or service.J\033[\"https://api.example.com\"]' _globals['_REGISTERCLIENTRESPONSE'].fields_by_name['custom_claims']._loaded_options = None _globals['_REGISTERCLIENTRESPONSE'].fields_by_name['custom_claims']._serialized_options = b'\222A\240\0012\235\001Additional claims included in access tokens issued to this client. These claims provide context about the client and can be used for authorization decisions.' _globals['_REGISTERCLIENTRESPONSE'].fields_by_name['expiry']._loaded_options = None _globals['_REGISTERCLIENTRESPONSE'].fields_by_name['expiry']._serialized_options = b'\222A\225\0012\214\001The lifetime of access tokens issued to this client, in seconds. This determines how long a token remains valid before it must be refreshed.J\0043600' - _globals['_REGISTERCLIENTRESPONSE'].fields_by_name['application_id']._loaded_options = None - _globals['_REGISTERCLIENTRESPONSE'].fields_by_name['application_id']._serialized_options = b'\222A\244\0012\211\001The ID of the application associated with this M2M client. This field is used to link the client to a specific application in the system.J\026\"app_1231234233424344\"' + _globals['_REGISTERCLIENTRESPONSE'].fields_by_name['resource_id']._loaded_options = None + _globals['_REGISTERCLIENTRESPONSE'].fields_by_name['resource_id']._serialized_options = b'\222A\236\0012\203\001The ID of the resource associated with this M2M client. This field is used to link the client to a specific resource in the system.J\026\"app_1231234233424344\"' _globals['_REGISTERCLIENTRESPONSE'].fields_by_name['redirect_uris']._loaded_options = None _globals['_REGISTERCLIENTRESPONSE'].fields_by_name['redirect_uris']._serialized_options = b'\222A\245\0012\202\001The redirect URI for this M2M client. This URI is used in the OAuth 2.0 authorization flow to redirect users after authentication.J\036\"https://example.com/callback\"' - _globals['_LISTAPPLICATIONSREQUEST'].fields_by_name['application_type']._loaded_options = None - _globals['_LISTAPPLICATIONSREQUEST'].fields_by_name['application_type']._serialized_options = b'\222A$2\033Filter applications by typeJ\005\"WEB\"\272H\003\310\001\001' - _globals['_LISTAPPLICATIONSREQUEST'].fields_by_name['page_token']._loaded_options = None - _globals['_LISTAPPLICATIONSREQUEST'].fields_by_name['page_token']._serialized_options = b'\222A;2\"Token for the next page of resultsJ\025\"next_page_token_123\"' - _globals['_LISTAPPLICATIONSREQUEST'].fields_by_name['page_size']._loaded_options = None - _globals['_LISTAPPLICATIONSREQUEST'].fields_by_name['page_size']._serialized_options = b'\222A/2)Number of applications to return per pageJ\00220\272H\004*\002\030\036' - _globals['_LISTAPPLICATIONSRESPONSE'].fields_by_name['total_size']._loaded_options = None - _globals['_LISTAPPLICATIONSRESPONSE'].fields_by_name['total_size']._serialized_options = b'\222A(2&Total number of applications available' - _globals['_LISTAPPLICATIONSRESPONSE'].fields_by_name['next_page_token']._loaded_options = None - _globals['_LISTAPPLICATIONSRESPONSE'].fields_by_name['next_page_token']._serialized_options = b'\222A$2\"Token for the next page of results' - _globals['_LISTAPPLICATIONSRESPONSE'].fields_by_name['applications']._loaded_options = None - _globals['_LISTAPPLICATIONSRESPONSE'].fields_by_name['applications']._serialized_options = b'\222A\0262\024List of applications' - _globals['_UPDATEAPPLICATIONREQUEST'].fields_by_name['application_id']._loaded_options = None - _globals['_UPDATEAPPLICATIONREQUEST'].fields_by_name['application_id']._serialized_options = b'\222AI2.Unique identifier of the application to updateJ\027\"app_69388798466720005\"\272H\006r\004\020\001\030 ' - _globals['_UPDATEAPPLICATIONREQUEST'].fields_by_name['application']._loaded_options = None - _globals['_UPDATEAPPLICATIONREQUEST'].fields_by_name['application']._serialized_options = b'\222A\0352\033Updated application details\272H\003\310\001\001' - _globals['_UPDATEAPPLICATION'].fields_by_name['name']._loaded_options = None - _globals['_UPDATEAPPLICATION'].fields_by_name['name']._serialized_options = b'\222A72\027Name of the applicationJ\034\"My Updated API Application\"\272H\005r\003\030\200\001' - _globals['_UPDATEAPPLICATION'].fields_by_name['description']._loaded_options = None - _globals['_UPDATEAPPLICATION'].fields_by_name['description']._serialized_options = b'\222Ag2\036Description of the applicationJE\"Updated application for accessing your organization\'s API resources\"\272H\005r\003\030\200\004' - _globals['_UPDATEAPPLICATION'].fields_by_name['resource_id']._loaded_options = None - _globals['_UPDATEAPPLICATION'].fields_by_name['resource_id']._serialized_options = b'\222A\211\0012gResource identifier for the application. This could be the URL used to access the application resourcesJ\036\"https://resource.example.com\"\272H\007r\005\020\001\030\200\004' - _globals['_UPDATEAPPLICATION'].fields_by_name['access_token_expiry']._loaded_options = None - _globals['_UPDATEAPPLICATION'].fields_by_name['access_token_expiry']._serialized_options = b'\222A42,Expiry time in seconds for the access token.J\0043600' - _globals['_UPDATEAPPLICATION'].fields_by_name['refresh_token_expiry']._loaded_options = None - _globals['_UPDATEAPPLICATION'].fields_by_name['refresh_token_expiry']._serialized_options = b'\222A62-Expiry time in seconds for the refresh token.J\00586400' - _globals['_UPDATEAPPLICATION'].fields_by_name['allow_dynamic_client_registration']._loaded_options = None - _globals['_UPDATEAPPLICATION'].fields_by_name['allow_dynamic_client_registration']._serialized_options = b'\222AP2HIndicates if dynamic client registration is allowed for this applicationJ\004true' - _globals['_UPDATEAPPLICATION'].fields_by_name['logo_uri']._loaded_options = None - _globals['_UPDATEAPPLICATION'].fields_by_name['logo_uri']._serialized_options = b'\222A>2\034Logo URI for the applicationJ\036\"https://example.com/logo.png\"\272H\005r\003\030\200\004' - _globals['_UPDATEAPPLICATIONRESPONSE'].fields_by_name['application']._loaded_options = None - _globals['_UPDATEAPPLICATIONRESPONSE'].fields_by_name['application']._serialized_options = b'\222A$2\"Details of the updated application' - _globals['_CREATEAPPLICATIONCLIENTREQUEST'].fields_by_name['application_id']._loaded_options = None - _globals['_CREATEAPPLICATIONCLIENTREQUEST'].fields_by_name['application_id']._serialized_options = b'\222AF2+Unique identifier of the client applicationJ\027\"app_69388798466720005\"\272H\006r\004\020\001\030 ' - _globals['_CREATEAPPLICATIONCLIENTREQUEST'].fields_by_name['client']._loaded_options = None - _globals['_CREATEAPPLICATIONCLIENTREQUEST'].fields_by_name['client']._serialized_options = b'\222A%2#Details of the client to be created\272H\003\310\001\001' - _globals['_CREATEAPPLICATIONCLIENTRESPONSE'].fields_by_name['client']._loaded_options = None - _globals['_CREATEAPPLICATIONCLIENTRESPONSE'].fields_by_name['client']._serialized_options = b'\222A\0372\035Details of the created client' - _globals['_CREATEAPPLICATIONCLIENTRESPONSE'].fields_by_name['plain_secret']._loaded_options = None - _globals['_CREATEAPPLICATIONCLIENTRESPONSE'].fields_by_name['plain_secret']._serialized_options = b'\222AV24Client secret value (only returned once at creation)J\036\"CdExsdErfccxDDssddfffgfeFHH1\"' - _globals['_GETAPPLICATIONCLIENTREQUEST'].fields_by_name['application_id']._loaded_options = None - _globals['_GETAPPLICATIONCLIENTREQUEST'].fields_by_name['application_id']._serialized_options = b'\222AK27Unique identifier of the client application to retrieveJ\020\"skc_1234567890\"\272H\006r\004\020\001\030 ' - _globals['_GETAPPLICATIONCLIENTREQUEST'].fields_by_name['client_id']._loaded_options = None - _globals['_GETAPPLICATIONCLIENTREQUEST'].fields_by_name['client_id']._serialized_options = b'\222A\\2?Unique identifier of the client associated with the applicationJ\031\"m2morg_1231234233424344\"\272H\006r\004\020\001\030 ' - _globals['_GETAPPLICATIONCLIENTRESPONSE'].fields_by_name['application']._loaded_options = None - _globals['_GETAPPLICATIONCLIENTRESPONSE'].fields_by_name['application']._serialized_options = b'\222A&2$Details of the requested application' - _globals['_GETAPPLICATIONCLIENTRESPONSE'].fields_by_name['client']._loaded_options = None - _globals['_GETAPPLICATIONCLIENTRESPONSE'].fields_by_name['client']._serialized_options = b'\222A!2\037Details of the requested client' + _globals['_LISTRESOURCESREQUEST'].fields_by_name['resource_type']._loaded_options = None + _globals['_LISTRESOURCESREQUEST'].fields_by_name['resource_type']._serialized_options = b'\222A!2\030Filter resources by typeJ\005\"WEB\"\272H\003\310\001\001' + _globals['_LISTRESOURCESREQUEST'].fields_by_name['page_token']._loaded_options = None + _globals['_LISTRESOURCESREQUEST'].fields_by_name['page_token']._serialized_options = b'\222A;2\"Token for the next page of resultsJ\025\"next_page_token_123\"' + _globals['_LISTRESOURCESREQUEST'].fields_by_name['page_size']._loaded_options = None + _globals['_LISTRESOURCESREQUEST'].fields_by_name['page_size']._serialized_options = b'\222A,2&Number of resources to return per pageJ\00220\272H\004*\002\030\036' + _globals['_LISTRESOURCESRESPONSE'].fields_by_name['total_size']._loaded_options = None + _globals['_LISTRESOURCESRESPONSE'].fields_by_name['total_size']._serialized_options = b'\222A%2#Total number of resources available' + _globals['_LISTRESOURCESRESPONSE'].fields_by_name['next_page_token']._loaded_options = None + _globals['_LISTRESOURCESRESPONSE'].fields_by_name['next_page_token']._serialized_options = b'\222A$2\"Token for the next page of results' + _globals['_LISTRESOURCESRESPONSE'].fields_by_name['resources']._loaded_options = None + _globals['_LISTRESOURCESRESPONSE'].fields_by_name['resources']._serialized_options = b'\222A\0232\021List of resources' + _globals['_UPDATERESOURCEREQUEST'].fields_by_name['resource_id']._loaded_options = None + _globals['_UPDATERESOURCEREQUEST'].fields_by_name['resource_id']._serialized_options = b'\222AF2+Unique identifier of the resource to updateJ\027\"app_69388798466720005\"\272H\006r\004\020\001\030 ' + _globals['_UPDATERESOURCEREQUEST'].fields_by_name['resource']._loaded_options = None + _globals['_UPDATERESOURCEREQUEST'].fields_by_name['resource']._serialized_options = b'\222A\0322\030Updated resource details\272H\003\310\001\001' + _globals['_UPDATERESOURCE'].fields_by_name['name']._loaded_options = None + _globals['_UPDATERESOURCE'].fields_by_name['name']._serialized_options = b'\222A12\024Name of the resourceJ\031\"My Updated API Resource\"\272H\005r\003\030\200\001' + _globals['_UPDATERESOURCE'].fields_by_name['description']._loaded_options = None + _globals['_UPDATERESOURCE'].fields_by_name['description']._serialized_options = b'\222Aa2\033Description of the resourceJB\"Updated resource for accessing your organization\'s API resources\"\272H\005r\003\030\200\004' + _globals['_UPDATERESOURCE'].fields_by_name['resource_id']._loaded_options = None + _globals['_UPDATERESOURCE'].fields_by_name['resource_id']._serialized_options = b'\222A\203\0012aResource identifier for the resource. This could be the URL used to access the resource resourcesJ\036\"https://resource.example.com\"\272H\007r\005\020\001\030\200\004' + _globals['_UPDATERESOURCE'].fields_by_name['access_token_expiry']._loaded_options = None + _globals['_UPDATERESOURCE'].fields_by_name['access_token_expiry']._serialized_options = b'\222A42,Expiry time in seconds for the access token.J\0043600' + _globals['_UPDATERESOURCE'].fields_by_name['refresh_token_expiry']._loaded_options = None + _globals['_UPDATERESOURCE'].fields_by_name['refresh_token_expiry']._serialized_options = b'\222A62-Expiry time in seconds for the refresh token.J\00586400' + _globals['_UPDATERESOURCE'].fields_by_name['disable_dynamic_client_registration']._loaded_options = None + _globals['_UPDATERESOURCE'].fields_by_name['disable_dynamic_client_registration']._serialized_options = b'\222AM2EIndicates if dynamic client registration is allowed for this resourceJ\004true' + _globals['_UPDATERESOURCE'].fields_by_name['logo_uri']._loaded_options = None + _globals['_UPDATERESOURCE'].fields_by_name['logo_uri']._serialized_options = b'\222A;2\031Logo URI for the resourceJ\036\"https://example.com/logo.png\"\272H\005r\003\030\200\004' + _globals['_UPDATERESOURCE'].fields_by_name['provider']._loaded_options = None + _globals['_UPDATERESOURCE'].fields_by_name['provider']._serialized_options = b'\222A12$Connection provider for the resourceJ\t\"DESCOPE\"\272H\005r\003\030\200\004' + _globals['_UPDATERESOURCERESPONSE'].fields_by_name['resource']._loaded_options = None + _globals['_UPDATERESOURCERESPONSE'].fields_by_name['resource']._serialized_options = b'\222A!2\037Details of the updated resource' + _globals['_CREATERESOURCECLIENTREQUEST'].fields_by_name['resource_id']._loaded_options = None + _globals['_CREATERESOURCECLIENTREQUEST'].fields_by_name['resource_id']._serialized_options = b'\222AC2(Unique identifier of the client resourceJ\027\"app_69388798466720005\"\272H\006r\004\020\001\030 ' + _globals['_CREATERESOURCECLIENTREQUEST'].fields_by_name['client']._loaded_options = None + _globals['_CREATERESOURCECLIENTREQUEST'].fields_by_name['client']._serialized_options = b'\222A%2#Details of the client to be created\272H\003\310\001\001' + _globals['_CREATERESOURCECLIENTRESPONSE'].fields_by_name['client']._loaded_options = None + _globals['_CREATERESOURCECLIENTRESPONSE'].fields_by_name['client']._serialized_options = b'\222A\0372\035Details of the created client' + _globals['_CREATERESOURCECLIENTRESPONSE'].fields_by_name['plain_secret']._loaded_options = None + _globals['_CREATERESOURCECLIENTRESPONSE'].fields_by_name['plain_secret']._serialized_options = b'\222AV24Client secret value (only returned once at creation)J\036\"CdExsdErfccxDDssddfffgfeFHH1\"' + _globals['_GETRESOURCECLIENTREQUEST'].fields_by_name['resource_id']._loaded_options = None + _globals['_GETRESOURCECLIENTREQUEST'].fields_by_name['resource_id']._serialized_options = b'\222AH24Unique identifier of the client resource to retrieveJ\020\"skc_1234567890\"\272H\006r\004\020\001\030 ' + _globals['_GETRESOURCECLIENTREQUEST'].fields_by_name['client_id']._loaded_options = None + _globals['_GETRESOURCECLIENTREQUEST'].fields_by_name['client_id']._serialized_options = b'\222AY2Unique identifier of the client application requesting consentJ\020\"skc_1234567890\"\272H\006r\004\020\001\030 ' + _globals['_CONSENTCLIENT'].fields_by_name['name']._serialized_options = b'\222AO2;Unique identifier of the client resource requesting consentJ\020\"skc_1234567890\"\272H\006r\004\020\001\030 ' _globals['_CONSENTCLIENT'].fields_by_name['privacy_uri']._loaded_options = None _globals['_CONSENTCLIENT'].fields_by_name['privacy_uri']._serialized_options = b'\272H\004r\002\030d' _globals['_CONSENTCLIENT'].fields_by_name['tos_uri']._loaded_options = None @@ -411,15 +448,15 @@ _globals['_CLIENTSERVICE'].methods_by_name['ListClient']._loaded_options = None _globals['_CLIENTSERVICE'].methods_by_name['ListClient']._serialized_options = b'\222A\304\001\n\010API Auth\022\020List API clients\032GRetrieves a paginated list of API client applications in the workspace.J]\n\003200\022V\n&List of clients returned successfully.\022,\n*\032(.scalekit.v1.clients.ListClientsResponse\202\265\030\002\030P\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\002\021\022\017/api/v1/clients' _globals['_CLIENTSERVICE'].methods_by_name['GetClient']._loaded_options = None - _globals['_CLIENTSERVICE'].methods_by_name['GetClient']._serialized_options = b'\222A\346\003\n\016Client Configs\022\030Get Client Configuration\032\364\001Retrieves the complete configuration for an API client, including authentication settings, scopes, and custom claims. Use this endpoint to view or verify client settings, such as allowed redirect URIs, audience values, and token expiration timeJ\302\001\n\003200\022\272\001\n\213\001Client configuration retrieved successfully. Returns full client metadata including scopes, audience, custom claims, and security settings.\022*\n(\032&.scalekit.v1.clients.GetClientResponse\202\265\030\002\030T\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\002\035\022\033/api/v1/clients/{client_id}' + _globals['_CLIENTSERVICE'].methods_by_name['GetClient']._serialized_options = b'\222A\263\004\n\016Client Configs\022\030Get Client Configuration\032\301\002Retrieves the complete configuration for an M2M client, including authentication settings, scopes, and custom claims. Use this endpoint to view or verify client settings, such as allowed redirect URIs, audience values, and token expiration times. The response includes all current client metadata and security parameters.J\302\001\n\003200\022\272\001\n\213\001Client configuration retrieved successfully. Returns full client metadata including scopes, audience, custom claims, and security settings.\022*\n(\032&.scalekit.v1.clients.GetClientResponse\202\265\030\002\030T\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\002\035\022\033/api/v1/clients/{client_id}' _globals['_CLIENTSERVICE'].methods_by_name['UpdateClient']._loaded_options = None - _globals['_CLIENTSERVICE'].methods_by_name['UpdateClient']._serialized_options = b'\222A\240\004\n\016Client Configs\022\033Update Client Configuration\032\267\002Updates the configuration settings for an API client. This endpoint allows you to modify client properties such as redirect URIs, scopes, audience values, and custom claims. Required fields include redirect_uris and default_redirect_uri. Note that client_id and create_time are immutable and cannot be modified.J\266\001\n\003201\022\256\001\n}Client configuration updated successfully. Returns the updated client resource with new update_time and all current settings.\022-\n+\032).scalekit.v1.clients.UpdateClientResponse\202\265\030\002\030T\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\002%2\033/api/v1/clients/{client_id}:\006client' + _globals['_CLIENTSERVICE'].methods_by_name['UpdateClient']._serialized_options = b'\222A\240\004\n\016Client Configs\022\033Update Client Configuration\032\267\002Updates the configuration settings for an M2M client. This endpoint allows you to modify client properties such as redirect URIs, scopes, audience values, and custom claims. Required fields include redirect_uris and default_redirect_uri. Note that client_id and create_time are immutable and cannot be modified.J\266\001\n\003201\022\256\001\n}Client configuration updated successfully. Returns the updated client resource with new update_time and all current settings.\022-\n+\032).scalekit.v1.clients.UpdateClientResponse\202\265\030\002\030T\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\002%2\033/api/v1/clients/{client_id}:\006client' _globals['_CLIENTSERVICE'].methods_by_name['CreateClientSecret']._loaded_options = None _globals['_CLIENTSERVICE'].methods_by_name['CreateClientSecret']._serialized_options = b'\222A\350\003\n\016Client Configs\022\024Create Client Secret\032\202\002Generates a new client secret for an API client. This endpoint creates a secure credential that can be used for OAuth 2.0 client credentials flow. The plain secret is only returned once during creation and should be stored securely by the client application.J\272\001\n\003201\022\262\001\n{Client secret created successfully. Returns the new secret ID and the plain secret value (only available at creation time).\0223\n1\032/.scalekit.v1.clients.CreateClientSecretResponse\202\265\030\002\030T\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\002%\"#/api/v1/clients/{client_id}/secrets' _globals['_CLIENTSERVICE'].methods_by_name['UpdateClientSecret']._loaded_options = None _globals['_CLIENTSERVICE'].methods_by_name['UpdateClientSecret']._serialized_options = b'\222A\277\003\n\016Client Configs\022\024Update Client Secret\032\375\001Updates the status of a client secret. This endpoint allows you to activate or deactivate a client secret. Use this to rotate secrets or revoke access for compromised credentials. The secret value itself cannot be modified - create a new secret instead.J\226\001\n\003200\022\216\001\nWClient secret updated successfully. Returns the updated secret with its current status.\0223\n1\032/.scalekit.v1.clients.UpdateClientSecretResponse\202\265\030\002\030T\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\002t\032//api/v1/clients/{client_id}/secrets/{secret_id}:\006secretZ92//api/v1/clients/{client_id}/secrets/{secret_id}:\006secret' _globals['_CLIENTSERVICE'].methods_by_name['DeleteClientSecret']._loaded_options = None - _globals['_CLIENTSERVICE'].methods_by_name['DeleteClientSecret']._serialized_options = b'\222A\275\002\n\016Client Configs\022\030Delete API client secret\032\312\001Permanently deletes an API client secret. This operation cannot be undone. Use this endpoint to remove compromised or unused secrets. After deletion, the secret can no longer be used for authentication.JD\n\003200\022=\n;Client secret successfully deleted and no longer accessible\202\265\030\002\030T\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\0021*//api/v1/clients/{client_id}/secrets/{secret_id}' + _globals['_CLIENTSERVICE'].methods_by_name['DeleteClientSecret']._serialized_options = b'\222A\264\002\n\016Client Configs\022\024Delete Client Secret\032\305\001Permanently deletes a client secret. This operation cannot be undone. Use this endpoint to remove compromised or unused secrets. After deletion, the secret can no longer be used for authentication.JD\n\003200\022=\n;Client secret successfully deleted and no longer accessible\202\265\030\002\030T\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\0021*//api/v1/clients/{client_id}/secrets/{secret_id}' _globals['_CLIENTSERVICE'].methods_by_name['CreateOrganizationClient']._loaded_options = None _globals['_CLIENTSERVICE'].methods_by_name['CreateOrganizationClient']._serialized_options = b'\222A\233\t\n\010API Auth\022\036Create organization API client\032rCreates a new API client for an organization. Returns the client details and a plain secret (available only once).J\236\002\n\003201\022\226\002\n\330\001API client created successfully. Returns the client ID and plain secret (only available at creation time). The client can be configured with scopes, audience values, and custom claims for fine-grained access control.\0229\n7\0325.scalekit.v1.clients.CreateOrganizationClientResponsej\331\005\n\rx-codeSamples\022\307\0052\304\005\n\301\005*\276\005\n\025\n\005label\022\014\032\nPython SDK\n\020\n\004lang\022\010\032\006python\n\222\005\n\006source\022\207\005\032\204\005from scalekit.v1.clients.clients_pb2 import OrganizationClient\n\nm2m_client = OrganizationClient(\n name=\"GitHub Actions Deployment Service\",\n description=\"Service account for GitHub Actions to deploy applications to production\",\n custom_claims=[\n {\"key\": \"github_repository\", \"value\": \"acmecorp/inventory-service\"},\n {\"key\": \"environment\", \"value\": \"production_us\"}\n ],\n scopes=[\"deploy:applications\", \"read:deployments\"],\n audience=[\"deployment-api.acmecorp.com\"],\n expiry=3600\n)\n\nresponse = sc.m2m_client.create_organization_client(\n organization_id=\"SCALEKIT_ORGANIZATION_ID\",\n m2m_client=m2m_client\n)\202\265\030\002\030T\202\323\344\223\0029\"//api/v1/organizations/{organization_id}/clients:\006client' _globals['_CLIENTSERVICE'].methods_by_name['GetOrganizationClient']._loaded_options = None @@ -432,144 +469,150 @@ _globals['_CLIENTSERVICE'].methods_by_name['UpdateOrganizationClient']._serialized_options = b'\222A\367\007\n\010API Auth\022\036Update organization API client\032PUpdates an existing organization API client. Only specified fields are modified.J\344\001\n\003200\022\334\001\n\236\001Returns the updated organization API client with all current details reflected in the response, including modified scopes, audience values, and custom claims.\0229\n7\0325.scalekit.v1.clients.UpdateOrganizationClientResponsej\221\005\n\rx-codeSamples\022\377\0042\374\004\n\371\004*\366\004\n\025\n\005label\022\014\032\nPython SDK\n\020\n\004lang\022\010\032\006python\n\312\004\n\006source\022\277\004\032\274\004from scalekit.v1.clients.clients_pb2 import OrganizationClient\n\norg_id = \'\'\nclient_id = os.environ[\'M2M_CLIENT_ID\']\n\nupdate_m2m_client = OrganizationClient(\n description=\"Service account for GitHub Actions to deploy applications to production_eu\",\n custom_claims=[\n {\"key\": \"github_repository\", \"value\": \"acmecorp/inventory\"},\n {\"key\": \"environment\", \"value\": \"production_eu\"}\n ]\n)\n\nresponse = sc.m2m_client.update_organization_client(\n organization_id=org_id,\n client_id=client_id,\n m2m_client=update_m2m_client\n)\202\265\030\002\030T\202\323\344\223\002E2;/api/v1/organizations/{organization_id}/clients/{client_id}:\006client' _globals['_CLIENTSERVICE'].methods_by_name['DeleteOrganizationClient']._loaded_options = None _globals['_CLIENTSERVICE'].methods_by_name['DeleteOrganizationClient']._serialized_options = b'\222A\333\005\n\010API Auth\022\036Delete organization API client\032\356\001Permanently deletes an API client from an organization. This operation cannot be undone and will revoke all access for the client. All associated secrets will also be invalidated. Use this endpoint to remove unused or compromised clients.JN\n\003200\022G\nEOrganization API client successfully deleted and no longer accessiblej\355\002\n\rx-codeSamples\022\333\0022\330\002\n\325\002*\322\002\n\025\n\005label\022\014\032\nPython SDK\n\020\n\004lang\022\010\032\006python\n\246\002\n\006source\022\233\002\032\230\002# Get client ID from environment variables\norg_id = \'\'\nclient_id = os.environ[\'M2M_CLIENT_ID\']\n\n# Delete the specified client from the organization\nresponse = sc.m2m_client.delete_organization_client(\n organization_id=org_id,\n client_id=client_id\n)\202\265\030\002\030T\202\323\344\223\002=*;/api/v1/organizations/{organization_id}/clients/{client_id}' - _globals['_CLIENTSERVICE'].methods_by_name['CreateApplication']._loaded_options = None - _globals['_CLIENTSERVICE'].methods_by_name['CreateApplication']._serialized_options = b'\222A\216\002\n\010API Auth\022\022Create application\032bCreates a new API client application. The response includes the application ID and other metadata.J\211\001\n\003201\022\201\001\nKApplication created successfully. Returns the created application resource.\0222\n0\032..scalekit.v1.clients.CreateApplicationResponse\202\265\030\002\030T\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\002#\"\024/api/v1/applications:\013application' - _globals['_CLIENTSERVICE'].methods_by_name['GetApplication']._loaded_options = None - _globals['_CLIENTSERVICE'].methods_by_name['GetApplication']._serialized_options = b'\222A\337\001\n\010API Auth\022\017Get application\0327Retrieves details of a specific API client application.J\210\001\n\003200\022\200\001\nMApplication details retrieved successfully. Returns the application resource.\022/\n-\032+.scalekit.v1.clients.GetApplicationResponse\202\265\030\002\030T\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\002\'\022%/api/v1/applications/{application_id}' - _globals['_CLIENTSERVICE'].methods_by_name['ListApplications']._loaded_options = None - _globals['_CLIENTSERVICE'].methods_by_name['ListApplications']._serialized_options = b'\222A\276\001\n\010API Auth\022\021List applications\0326Retrieves a paginated list of API client applications.Jg\n\003200\022`\n+List of applications returned successfully.\0221\n/\032-.scalekit.v1.clients.ListApplicationsResponse\202\265\030\002\030T\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\002\026\022\024/api/v1/applications' - _globals['_CLIENTSERVICE'].methods_by_name['UpdateApplication']._loaded_options = None - _globals['_CLIENTSERVICE'].methods_by_name['UpdateApplication']._serialized_options = b'\222A\373\001\n\010API Auth\022\022Update application\032OUpdates an existing API client application. Only specified fields are modified.J\211\001\n\003200\022\201\001\nKApplication updated successfully. Returns the updated application resource.\0222\n0\032..scalekit.v1.clients.UpdateApplicationResponse\202\265\030\002\030T\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\00242%/api/v1/applications/{application_id}:\013application' - _globals['_CLIENTSERVICE'].methods_by_name['CreateApplicationClient']._loaded_options = None - _globals['_CLIENTSERVICE'].methods_by_name['CreateApplicationClient']._serialized_options = b'\222A\273\002\n\010API Auth\022\035Create application API client\032zCreates a new API client for an existing application. Returns the client details and a plain secret (available only once).J\223\001\n\003201\022\213\001\nOClient created successfully. Returns the client configuration and plain secret.\0228\n6\0324.scalekit.v1.clients.CreateApplicationClientResponse\202\265\030\002\030T\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\0027\"-/api/v1/applications/{application_id}/clients:\006client' - _globals['_CLIENTSERVICE'].methods_by_name['GetApplicationClient']._loaded_options = None - _globals['_CLIENTSERVICE'].methods_by_name['GetApplicationClient']._serialized_options = b'\222A\216\002\n\010API Auth\022\032Get application API client\032JRetrieves details of a specific API client associated with an application.J\231\001\n\003200\022\221\001\nXClient details retrieved successfully. Returns the application and client configuration.\0225\n3\0321.scalekit.v1.clients.GetApplicationClientResponse\202\265\030\002\030T\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\002;\0229/api/v1/applications/{application_id}/clients/{client_id}' + _globals['_CLIENTSERVICE'].methods_by_name['CreateResource']._loaded_options = None + _globals['_CLIENTSERVICE'].methods_by_name['CreateResource']._serialized_options = b'\222A\355\001\n\010API Auth\022\017Create Resource\032XCreates a new client resource. The response includes the resource ID and other metadata.Jv\n\003201\022o\nResource details retrieved successfully. Returns the resource.\022,\n*\032(.scalekit.v1.clients.GetResourceResponse\202\265\030\002\030T\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\002!\022\037/api/v1/resources/{resource_id}' + _globals['_CLIENTSERVICE'].methods_by_name['ListResources']._loaded_options = None + _globals['_CLIENTSERVICE'].methods_by_name['ListResources']._serialized_options = b'\222A\270\001\n\010API Auth\022\021List applications\0326Retrieves a paginated list of API client applications.Ja\n\003200\022Z\n(List of resources returned successfully.\022.\n,\032*.scalekit.v1.clients.ListResourcesResponse\202\265\030\002\030T\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\002\023\022\021/api/v1/resources' + _globals['_CLIENTSERVICE'].methods_by_name['UpdateResource']._loaded_options = None + _globals['_CLIENTSERVICE'].methods_by_name['UpdateResource']._serialized_options = b'\222A\335\001\n\010API Auth\022\017Update Resource\032HUpdates an existing client resource. Only specified fields are modified.Jv\n\003200\022o\nResource details retrieved successfully. Returns the resource.\022,\n*\032(.scalekit.v1.clients.GetResourceResponse\202\265\030\002\030T\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\0021\032//api/v1/resources/{resource_id}/provider:delete' + _globals['_CLIENTSERVICE'].methods_by_name['CreateResourceClient']._loaded_options = None + _globals['_CLIENTSERVICE'].methods_by_name['CreateResourceClient']._serialized_options = b'\222A\247\002\n\010API Auth\022\026Create Resource Client\032pCreates a new API client under the specified resource. Returns client details and the plain secret (shown once).J\220\001\n\003201\022\210\001\nOClient created successfully. Returns the client configuration and plain secret.\0225\n3\0321.scalekit.v1.clients.CreateResourceClientResponse\202\265\030\002\030T\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\0021\"\'/api/v1/resources/{resource_id}/clients:\006client' + _globals['_CLIENTSERVICE'].methods_by_name['GetResourceClient']._loaded_options = None + _globals['_CLIENTSERVICE'].methods_by_name['GetResourceClient']._serialized_options = b'\222A\205\002\n\010API Auth\022\027Get Resource API Client\032JRetrieves details of a specific API client associated with an application.J\223\001\n\003200\022\213\001\nUClient details retrieved successfully. Returns the resource and client configuration.\0222\n0\032..scalekit.v1.clients.GetResourceClientResponse\202\265\030\002\030T\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\0025\0223/api/v1/resources/{resource_id}/clients/{client_id}' _globals['_CLIENTSERVICE'].methods_by_name['RegisterClient']._loaded_options = None - _globals['_CLIENTSERVICE'].methods_by_name['RegisterClient']._serialized_options = b'\222A\305\002\n\010API Auth\022\023Register API client\032\207\001Registers a new API client under an existing application using dynamic client registration. Returns the created client and its secrets.J\231\001\n\003201\022\221\001\n^Client registered successfully. Returns client details and plain secret (available only once).\022/\n-\032+.scalekit.v1.clients.RegisterClientResponse\202\265\030\002\030\001\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\0028\"./api/v1/applications/{app_id}/clients:register:\006client' + _globals['_CLIENTSERVICE'].methods_by_name['RegisterClient']._serialized_options = b'\222A\302\002\n\010API Auth\022\023Register API client\032\204\001Registers a new API client under an existing resource using dynamic client registration. Returns the created client and its secrets.J\231\001\n\003201\022\221\001\n^Client registered successfully. Returns client details and plain secret (available only once).\022/\n-\032+.scalekit.v1.clients.RegisterClientResponse\202\265\030\002\030\001\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\0025\"+/api/v1/resources/{app_id}/clients:register:\006client' _globals['_CLIENTSERVICE'].methods_by_name['CreateScope']._loaded_options = None _globals['_CLIENTSERVICE'].methods_by_name['CreateScope']._serialized_options = b'\202\265\030\002\030P\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\002-\"$/api/v1/environments/{env_id}/scopes:\005scope' _globals['_CLIENTSERVICE'].methods_by_name['ListScopes']._loaded_options = None _globals['_CLIENTSERVICE'].methods_by_name['ListScopes']._serialized_options = b'\202\265\030\002\030p\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\002&\022$/api/v1/environments/{env_id}/scopes' _globals['_CLIENTSERVICE'].methods_by_name['GetConsentDetails']._loaded_options = None _globals['_CLIENTSERVICE'].methods_by_name['GetConsentDetails']._serialized_options = b'\202\265\030\002\030\001\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\002\037\022\035/api/v1/oauth/consent/details' - _globals['_APPLICATIONTYPE']._serialized_start=32167 - _globals['_APPLICATIONTYPE']._serialized_end=32280 - _globals['_CLIENTSECRETSTATUS']._serialized_start=32282 - _globals['_CLIENTSECRETSTATUS']._serialized_end=32328 - _globals['_CREATEAPPLICATIONREQUEST']._serialized_start=453 - _globals['_CREATEAPPLICATIONREQUEST']._serialized_end=606 - _globals['_CREATEAPPLICATION']._serialized_start=609 - _globals['_CREATEAPPLICATION']._serialized_end=1767 - _globals['_APPLICATIONCLIENT']._serialized_start=1770 - _globals['_APPLICATIONCLIENT']._serialized_end=2549 - _globals['_CREATEAPPLICATIONRESPONSE']._serialized_start=2552 - _globals['_CREATEAPPLICATIONRESPONSE']._serialized_end=2688 - _globals['_GETAPPLICATIONREQUEST']._serialized_start=2691 - _globals['_GETAPPLICATIONREQUEST']._serialized_end=2850 - _globals['_GETAPPLICATIONRESPONSE']._serialized_start=2853 - _globals['_GETAPPLICATIONRESPONSE']._serialized_end=2988 - _globals['_APPLICATION']._serialized_start=2991 - _globals['_APPLICATION']._serialized_end=4555 - _globals['_REGISTERCLIENTREQUEST']._serialized_start=4558 - _globals['_REGISTERCLIENTREQUEST']._serialized_end=4809 - _globals['_REGISTERCLIENT']._serialized_start=4812 - _globals['_REGISTERCLIENT']._serialized_end=5600 - _globals['_REGISTERCLIENTRESPONSE']._serialized_start=5603 - _globals['_REGISTERCLIENTRESPONSE']._serialized_end=8280 - _globals['_LISTAPPLICATIONSREQUEST']._serialized_start=8283 - _globals['_LISTAPPLICATIONSREQUEST']._serialized_end=8619 - _globals['_LISTAPPLICATIONSRESPONSE']._serialized_start=8622 - _globals['_LISTAPPLICATIONSRESPONSE']._serialized_end=8902 - _globals['_UPDATEAPPLICATIONREQUEST']._serialized_start=8905 - _globals['_UPDATEAPPLICATIONREQUEST']._serialized_end=9171 - _globals['_UPDATEAPPLICATION']._serialized_start=9174 - _globals['_UPDATEAPPLICATION']._serialized_end=10097 - _globals['_UPDATEAPPLICATIONRESPONSE']._serialized_start=10100 - _globals['_UPDATEAPPLICATIONRESPONSE']._serialized_end=10236 - _globals['_CREATEAPPLICATIONCLIENTREQUEST']._serialized_start=10239 - _globals['_CREATEAPPLICATIONCLIENTREQUEST']._serialized_end=10506 - _globals['_CREATEAPPLICATIONCLIENTRESPONSE']._serialized_start=10509 - _globals['_CREATEAPPLICATIONCLIENTRESPONSE']._serialized_end=10760 - _globals['_GETAPPLICATIONCLIENTREQUEST']._serialized_start=10763 - _globals['_GETAPPLICATIONCLIENTREQUEST']._serialized_end=11056 - _globals['_GETAPPLICATIONCLIENTRESPONSE']._serialized_start=11059 - _globals['_GETAPPLICATIONCLIENTRESPONSE']._serialized_end=11294 - _globals['_CREATEORGANIZATIONCLIENTREQUEST']._serialized_start=11297 - _globals['_CREATEORGANIZATIONCLIENTREQUEST']._serialized_end=11567 - _globals['_ORGANIZATIONCLIENT']._serialized_start=11570 - _globals['_ORGANIZATIONCLIENT']._serialized_end=13286 - _globals['_CREATEORGANIZATIONCLIENTRESPONSE']._serialized_start=13289 - _globals['_CREATEORGANIZATIONCLIENTRESPONSE']._serialized_end=13541 - _globals['_UPDATEORGANIZATIONCLIENTREQUEST']._serialized_start=13544 - _globals['_UPDATEORGANIZATIONCLIENTREQUEST']._serialized_end=13921 - _globals['_UPDATEORGANIZATIONCLIENTRESPONSE']._serialized_start=13923 - _globals['_UPDATEORGANIZATIONCLIENTRESPONSE']._serialized_end=14049 - _globals['_M2MCLIENT']._serialized_start=14052 - _globals['_M2MCLIENT']._serialized_end=16966 - _globals['_GETORGANIZATIONCLIENTREQUEST']._serialized_start=16969 - _globals['_GETORGANIZATIONCLIENTREQUEST']._serialized_end=17239 - _globals['_CREATEORGANIZATIONCLIENTSECRETREQUEST']._serialized_start=17242 - _globals['_CREATEORGANIZATIONCLIENTSECRETREQUEST']._serialized_end=17521 - _globals['_CREATEORGANIZATIONCLIENTSECRETRESPONSE']._serialized_start=17524 - _globals['_CREATEORGANIZATIONCLIENTSECRETRESPONSE']._serialized_end=17791 - _globals['_DELETEORGANIZATIONCLIENTSECRETREQUEST']._serialized_start=17794 - _globals['_DELETEORGANIZATIONCLIENTSECRETREQUEST']._serialized_end=18180 - _globals['_GETORGANIZATIONCLIENTRESPONSE']._serialized_start=18182 - _globals['_GETORGANIZATIONCLIENTRESPONSE']._serialized_end=18307 - _globals['_CUSTOMCLAIM']._serialized_start=18310 - _globals['_CUSTOMCLAIM']._serialized_end=18650 - _globals['_DELETEORGANIZATIONCLIENTREQUEST']._serialized_start=18653 - _globals['_DELETEORGANIZATIONCLIENTREQUEST']._serialized_end=19040 - _globals['_GETCLIENTREQUEST']._serialized_start=19043 - _globals['_GETCLIENTREQUEST']._serialized_end=19211 - _globals['_GETCLIENTRESPONSE']._serialized_start=19214 - _globals['_GETCLIENTRESPONSE']._serialized_end=19462 - _globals['_LISTCLIENTSREQUEST']._serialized_start=19465 - _globals['_LISTCLIENTSREQUEST']._serialized_end=19705 - _globals['_LISTCLIENTSRESPONSE']._serialized_start=19708 - _globals['_LISTCLIENTSRESPONSE']._serialized_end=20023 - _globals['_UPDATECLIENTREQUEST']._serialized_start=20026 - _globals['_UPDATECLIENTREQUEST']._serialized_end=20532 - _globals['_UPDATECLIENT']._serialized_start=20535 - _globals['_UPDATECLIENT']._serialized_end=22623 - _globals['_UPDATECLIENTRESPONSE']._serialized_start=22626 - _globals['_UPDATECLIENTRESPONSE']._serialized_end=22794 - _globals['_CREATECLIENTSECRETREQUEST']._serialized_start=22797 - _globals['_CREATECLIENTSECRETREQUEST']._serialized_end=22971 - _globals['_CREATECLIENTSECRETRESPONSE']._serialized_start=22974 - _globals['_CREATECLIENTSECRETRESPONSE']._serialized_end=23403 - _globals['_UPDATECLIENTSECRETREQUEST']._serialized_start=23406 - _globals['_UPDATECLIENTSECRETREQUEST']._serialized_end=24049 - _globals['_UPDATECLIENTSECRET']._serialized_start=24052 - _globals['_UPDATECLIENTSECRET']._serialized_end=24286 - _globals['_UPDATECLIENTSECRETRESPONSE']._serialized_start=24289 - _globals['_UPDATECLIENTSECRETRESPONSE']._serialized_end=24520 - _globals['_DELETECLIENTSECRETREQUEST']._serialized_start=24523 - _globals['_DELETECLIENTSECRETREQUEST']._serialized_end=24861 - _globals['_CLIENT']._serialized_start=24864 - _globals['_CLIENT']._serialized_end=28167 - _globals['_CLIENTSECRET']._serialized_start=28170 - _globals['_CLIENTSECRET']._serialized_end=30665 - _globals['_SCOPE']._serialized_start=30667 - _globals['_SCOPE']._serialized_end=30786 - _globals['_CREATESCOPE']._serialized_start=30788 - _globals['_CREATESCOPE']._serialized_end=30901 - _globals['_CREATESCOPEREQUEST']._serialized_start=30903 - _globals['_CREATESCOPEREQUEST']._serialized_end=31026 - _globals['_CREATESCOPERESPONSE']._serialized_start=31028 - _globals['_CREATESCOPERESPONSE']._serialized_end=31099 - _globals['_LISTSCOPESREQUEST']._serialized_start=31101 - _globals['_LISTSCOPESREQUEST']._serialized_end=31159 - _globals['_LISTSCOPESRESPONSE']._serialized_start=31161 - _globals['_LISTSCOPESRESPONSE']._serialized_end=31233 - _globals['_GETCONSENTDETAILSRESPONSE']._serialized_start=31236 - _globals['_GETCONSENTDETAILSRESPONSE']._serialized_end=31744 - _globals['_CONSENTCLIENT']._serialized_start=31747 - _globals['_CONSENTCLIENT']._serialized_end=31955 - _globals['_CONSENTSCOPE']._serialized_start=31957 - _globals['_CONSENTSCOPE']._serialized_end=32049 - _globals['_USER']._serialized_start=32051 - _globals['_USER']._serialized_end=32165 - _globals['_CLIENTSERVICE']._serialized_start=32331 - _globals['_CLIENTSERVICE']._serialized_end=46554 + _globals['_RESOURCETYPE']._serialized_start=33979 + _globals['_RESOURCETYPE']._serialized_end=34086 + _globals['_CLIENTSECRETSTATUS']._serialized_start=34088 + _globals['_CLIENTSECRETSTATUS']._serialized_end=34134 + _globals['_CREATERESOURCEREQUEST']._serialized_start=485 + _globals['_CREATERESOURCEREQUEST']._serialized_end=623 + _globals['_CREATERESOURCE']._serialized_start=626 + _globals['_CREATERESOURCE']._serialized_end=1826 + _globals['_RESOURCECLIENT']._serialized_start=1829 + _globals['_RESOURCECLIENT']._serialized_end=2605 + _globals['_CREATERESOURCERESPONSE']._serialized_start=2607 + _globals['_CREATERESOURCERESPONSE']._serialized_end=2728 + _globals['_GETRESOURCEREQUEST']._serialized_start=2731 + _globals['_GETRESOURCEREQUEST']._serialized_end=2877 + _globals['_GETRESOURCERESPONSE']._serialized_start=2879 + _globals['_GETRESOURCERESPONSE']._serialized_end=2999 + _globals['_DELETERESOURCEPROVIDERREQUEST']._serialized_start=3002 + _globals['_DELETERESOURCEPROVIDERREQUEST']._serialized_end=3159 + _globals['_APPLICATION']._serialized_start=3162 + _globals['_APPLICATION']._serialized_end=4775 + _globals['_RESOURCE']._serialized_start=4778 + _globals['_RESOURCE']._serialized_end=6382 + _globals['_REGISTERCLIENTREQUEST']._serialized_start=6385 + _globals['_REGISTERCLIENTREQUEST']._serialized_end=6633 + _globals['_REGISTERCLIENT']._serialized_start=6636 + _globals['_REGISTERCLIENT']._serialized_end=7424 + _globals['_REGISTERCLIENTRESPONSE']._serialized_start=7427 + _globals['_REGISTERCLIENTRESPONSE']._serialized_end=10089 + _globals['_LISTRESOURCESREQUEST']._serialized_start=10092 + _globals['_LISTRESOURCESREQUEST']._serialized_end=10410 + _globals['_LISTRESOURCESRESPONSE']._serialized_start=10413 + _globals['_LISTRESOURCESRESPONSE']._serialized_end=10675 + _globals['_UPDATERESOURCEREQUEST']._serialized_start=10678 + _globals['_UPDATERESOURCEREQUEST']._serialized_end=10920 + _globals['_UPDATERESOURCE']._serialized_start=10923 + _globals['_UPDATERESOURCE']._serialized_end=11913 + _globals['_UPDATERESOURCERESPONSE']._serialized_start=11915 + _globals['_UPDATERESOURCERESPONSE']._serialized_end=12036 + _globals['_CREATERESOURCECLIENTREQUEST']._serialized_start=12039 + _globals['_CREATERESOURCECLIENTREQUEST']._serialized_end=12291 + _globals['_CREATERESOURCECLIENTRESPONSE']._serialized_start=12294 + _globals['_CREATERESOURCECLIENTRESPONSE']._serialized_end=12542 + _globals['_GETRESOURCECLIENTREQUEST']._serialized_start=12545 + _globals['_GETRESOURCECLIENTREQUEST']._serialized_end=12823 + _globals['_GETRESOURCECLIENTRESPONSE']._serialized_start=12826 + _globals['_GETRESOURCECLIENTRESPONSE']._serialized_end=13046 + _globals['_CREATEORGANIZATIONCLIENTREQUEST']._serialized_start=13049 + _globals['_CREATEORGANIZATIONCLIENTREQUEST']._serialized_end=13319 + _globals['_ORGANIZATIONCLIENT']._serialized_start=13322 + _globals['_ORGANIZATIONCLIENT']._serialized_end=15032 + _globals['_CREATEORGANIZATIONCLIENTRESPONSE']._serialized_start=15035 + _globals['_CREATEORGANIZATIONCLIENTRESPONSE']._serialized_end=15287 + _globals['_UPDATEORGANIZATIONCLIENTREQUEST']._serialized_start=15290 + _globals['_UPDATEORGANIZATIONCLIENTREQUEST']._serialized_end=15667 + _globals['_UPDATEORGANIZATIONCLIENTRESPONSE']._serialized_start=15669 + _globals['_UPDATEORGANIZATIONCLIENTRESPONSE']._serialized_end=15795 + _globals['_M2MCLIENT']._serialized_start=15798 + _globals['_M2MCLIENT']._serialized_end=18697 + _globals['_GETORGANIZATIONCLIENTREQUEST']._serialized_start=18700 + _globals['_GETORGANIZATIONCLIENTREQUEST']._serialized_end=18970 + _globals['_CREATEORGANIZATIONCLIENTSECRETREQUEST']._serialized_start=18973 + _globals['_CREATEORGANIZATIONCLIENTSECRETREQUEST']._serialized_end=19252 + _globals['_CREATEORGANIZATIONCLIENTSECRETRESPONSE']._serialized_start=19255 + _globals['_CREATEORGANIZATIONCLIENTSECRETRESPONSE']._serialized_end=19522 + _globals['_DELETEORGANIZATIONCLIENTSECRETREQUEST']._serialized_start=19525 + _globals['_DELETEORGANIZATIONCLIENTSECRETREQUEST']._serialized_end=19911 + _globals['_GETORGANIZATIONCLIENTRESPONSE']._serialized_start=19913 + _globals['_GETORGANIZATIONCLIENTRESPONSE']._serialized_end=20038 + _globals['_CUSTOMCLAIM']._serialized_start=20041 + _globals['_CUSTOMCLAIM']._serialized_end=20381 + _globals['_DELETEORGANIZATIONCLIENTREQUEST']._serialized_start=20384 + _globals['_DELETEORGANIZATIONCLIENTREQUEST']._serialized_end=20771 + _globals['_GETCLIENTREQUEST']._serialized_start=20774 + _globals['_GETCLIENTREQUEST']._serialized_end=20939 + _globals['_GETCLIENTRESPONSE']._serialized_start=20942 + _globals['_GETCLIENTRESPONSE']._serialized_end=21187 + _globals['_LISTCLIENTSREQUEST']._serialized_start=21190 + _globals['_LISTCLIENTSREQUEST']._serialized_end=21430 + _globals['_LISTCLIENTSRESPONSE']._serialized_start=21433 + _globals['_LISTCLIENTSRESPONSE']._serialized_end=21742 + _globals['_UPDATECLIENTREQUEST']._serialized_start=21745 + _globals['_UPDATECLIENTREQUEST']._serialized_end=22251 + _globals['_UPDATECLIENT']._serialized_start=22254 + _globals['_UPDATECLIENT']._serialized_end=24342 + _globals['_UPDATECLIENTRESPONSE']._serialized_start=24345 + _globals['_UPDATECLIENTRESPONSE']._serialized_end=24513 + _globals['_CREATECLIENTSECRETREQUEST']._serialized_start=24516 + _globals['_CREATECLIENTSECRETREQUEST']._serialized_end=24690 + _globals['_CREATECLIENTSECRETRESPONSE']._serialized_start=24693 + _globals['_CREATECLIENTSECRETRESPONSE']._serialized_end=25122 + _globals['_UPDATECLIENTSECRETREQUEST']._serialized_start=25125 + _globals['_UPDATECLIENTSECRETREQUEST']._serialized_end=25768 + _globals['_UPDATECLIENTSECRET']._serialized_start=25771 + _globals['_UPDATECLIENTSECRET']._serialized_end=26005 + _globals['_UPDATECLIENTSECRETRESPONSE']._serialized_start=26008 + _globals['_UPDATECLIENTSECRETRESPONSE']._serialized_end=26239 + _globals['_DELETECLIENTSECRETREQUEST']._serialized_start=26242 + _globals['_DELETECLIENTSECRETREQUEST']._serialized_end=26580 + _globals['_CLIENT']._serialized_start=26583 + _globals['_CLIENT']._serialized_end=29886 + _globals['_CLIENTSECRET']._serialized_start=29889 + _globals['_CLIENTSECRET']._serialized_end=32384 + _globals['_SCOPE']._serialized_start=32386 + _globals['_SCOPE']._serialized_end=32505 + _globals['_CREATESCOPE']._serialized_start=32507 + _globals['_CREATESCOPE']._serialized_end=32620 + _globals['_CREATESCOPEREQUEST']._serialized_start=32622 + _globals['_CREATESCOPEREQUEST']._serialized_end=32745 + _globals['_CREATESCOPERESPONSE']._serialized_start=32747 + _globals['_CREATESCOPERESPONSE']._serialized_end=32818 + _globals['_LISTSCOPESREQUEST']._serialized_start=32820 + _globals['_LISTSCOPESREQUEST']._serialized_end=32878 + _globals['_LISTSCOPESRESPONSE']._serialized_start=32880 + _globals['_LISTSCOPESRESPONSE']._serialized_end=32952 + _globals['_GETCONSENTDETAILSRESPONSE']._serialized_start=32955 + _globals['_GETCONSENTDETAILSRESPONSE']._serialized_end=33559 + _globals['_CONSENTCLIENT']._serialized_start=33562 + _globals['_CONSENTCLIENT']._serialized_end=33767 + _globals['_CONSENTSCOPE']._serialized_start=33769 + _globals['_CONSENTSCOPE']._serialized_end=33861 + _globals['_USER']._serialized_start=33863 + _globals['_USER']._serialized_end=33977 + _globals['_CLIENTSERVICE']._serialized_start=34137 + _globals['_CLIENTSERVICE']._serialized_end=48647 # @@protoc_insertion_point(module_scope) diff --git a/scalekit/v1/clients/clients_pb2.pyi b/scalekit/v1/clients/clients_pb2.pyi index 0351cab..4c1e2f7 100644 --- a/scalekit/v1/clients/clients_pb2.pyi +++ b/scalekit/v1/clients/clients_pb2.pyi @@ -7,6 +7,7 @@ from google.protobuf import duration_pb2 as _duration_pb2 from google.protobuf import empty_pb2 as _empty_pb2 from google.protobuf import field_mask_pb2 as _field_mask_pb2 from google.protobuf import timestamp_pb2 as _timestamp_pb2 +from google.protobuf import wrappers_pb2 as _wrappers_pb2 from protoc_gen_openapiv2.options import annotations_pb2 as _annotations_pb2_1 from scalekit.v1.commons import commons_pb2 as _commons_pb2 from scalekit.v1.options import options_pb2 as _options_pb2 @@ -18,57 +19,59 @@ from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Map DESCRIPTOR: _descriptor.FileDescriptor -class ApplicationType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): +class ResourceType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): __slots__ = () - APPLICATION_TYPE_UNSPECIFIED: _ClassVar[ApplicationType] - WEB: _ClassVar[ApplicationType] - MOBILE: _ClassVar[ApplicationType] - DESKTOP: _ClassVar[ApplicationType] - SERVER: _ClassVar[ApplicationType] - MCP_SERVER: _ClassVar[ApplicationType] + RESOURCE_TYPE_UNSPECIFIED: _ClassVar[ResourceType] + WEB: _ClassVar[ResourceType] + MOBILE: _ClassVar[ResourceType] + DESKTOP: _ClassVar[ResourceType] + SERVER: _ClassVar[ResourceType] + MCP_SERVER: _ClassVar[ResourceType] class ClientSecretStatus(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): __slots__ = () ACTIVE: _ClassVar[ClientSecretStatus] INACTIVE: _ClassVar[ClientSecretStatus] -APPLICATION_TYPE_UNSPECIFIED: ApplicationType -WEB: ApplicationType -MOBILE: ApplicationType -DESKTOP: ApplicationType -SERVER: ApplicationType -MCP_SERVER: ApplicationType +RESOURCE_TYPE_UNSPECIFIED: ResourceType +WEB: ResourceType +MOBILE: ResourceType +DESKTOP: ResourceType +SERVER: ResourceType +MCP_SERVER: ResourceType ACTIVE: ClientSecretStatus INACTIVE: ClientSecretStatus -class CreateApplicationRequest(_message.Message): - __slots__ = ("application",) - APPLICATION_FIELD_NUMBER: _ClassVar[int] - application: CreateApplication - def __init__(self, application: _Optional[_Union[CreateApplication, _Mapping]] = ...) -> None: ... +class CreateResourceRequest(_message.Message): + __slots__ = ("resource",) + RESOURCE_FIELD_NUMBER: _ClassVar[int] + resource: CreateResource + def __init__(self, resource: _Optional[_Union[CreateResource, _Mapping]] = ...) -> None: ... -class CreateApplication(_message.Message): - __slots__ = ("application_type", "third_party", "name", "description", "resource_id", "access_token_expiry", "refresh_token_expiry", "allow_dynamic_client_registration", "logo_uri") - APPLICATION_TYPE_FIELD_NUMBER: _ClassVar[int] +class CreateResource(_message.Message): + __slots__ = ("resource_type", "third_party", "name", "description", "resource_id", "access_token_expiry", "refresh_token_expiry", "disable_dynamic_client_registration", "logo_uri", "provider") + RESOURCE_TYPE_FIELD_NUMBER: _ClassVar[int] THIRD_PARTY_FIELD_NUMBER: _ClassVar[int] NAME_FIELD_NUMBER: _ClassVar[int] DESCRIPTION_FIELD_NUMBER: _ClassVar[int] RESOURCE_ID_FIELD_NUMBER: _ClassVar[int] ACCESS_TOKEN_EXPIRY_FIELD_NUMBER: _ClassVar[int] REFRESH_TOKEN_EXPIRY_FIELD_NUMBER: _ClassVar[int] - ALLOW_DYNAMIC_CLIENT_REGISTRATION_FIELD_NUMBER: _ClassVar[int] + DISABLE_DYNAMIC_CLIENT_REGISTRATION_FIELD_NUMBER: _ClassVar[int] LOGO_URI_FIELD_NUMBER: _ClassVar[int] - application_type: ApplicationType + PROVIDER_FIELD_NUMBER: _ClassVar[int] + resource_type: ResourceType third_party: bool name: str description: str resource_id: str access_token_expiry: int refresh_token_expiry: int - allow_dynamic_client_registration: bool + disable_dynamic_client_registration: bool logo_uri: str - def __init__(self, application_type: _Optional[_Union[ApplicationType, str]] = ..., third_party: bool = ..., name: _Optional[str] = ..., description: _Optional[str] = ..., resource_id: _Optional[str] = ..., access_token_expiry: _Optional[int] = ..., refresh_token_expiry: _Optional[int] = ..., allow_dynamic_client_registration: bool = ..., logo_uri: _Optional[str] = ...) -> None: ... + provider: str + def __init__(self, resource_type: _Optional[_Union[ResourceType, str]] = ..., third_party: bool = ..., name: _Optional[str] = ..., description: _Optional[str] = ..., resource_id: _Optional[str] = ..., access_token_expiry: _Optional[int] = ..., refresh_token_expiry: _Optional[int] = ..., disable_dynamic_client_registration: bool = ..., logo_uri: _Optional[str] = ..., provider: _Optional[str] = ...) -> None: ... -class ApplicationClient(_message.Message): +class ResourceClient(_message.Message): __slots__ = ("name", "description", "scopes", "audience", "custom_claims", "expiry", "redirect_uri") NAME_FIELD_NUMBER: _ClassVar[int] DESCRIPTION_FIELD_NUMBER: _ClassVar[int] @@ -86,51 +89,89 @@ class ApplicationClient(_message.Message): redirect_uri: str def __init__(self, name: _Optional[str] = ..., description: _Optional[str] = ..., scopes: _Optional[_Iterable[str]] = ..., audience: _Optional[_Iterable[str]] = ..., custom_claims: _Optional[_Iterable[_Union[CustomClaim, _Mapping]]] = ..., expiry: _Optional[int] = ..., redirect_uri: _Optional[str] = ...) -> None: ... -class CreateApplicationResponse(_message.Message): - __slots__ = ("application",) - APPLICATION_FIELD_NUMBER: _ClassVar[int] - application: Application - def __init__(self, application: _Optional[_Union[Application, _Mapping]] = ...) -> None: ... +class CreateResourceResponse(_message.Message): + __slots__ = ("resource",) + RESOURCE_FIELD_NUMBER: _ClassVar[int] + resource: Resource + def __init__(self, resource: _Optional[_Union[Resource, _Mapping]] = ...) -> None: ... + +class GetResourceRequest(_message.Message): + __slots__ = ("resource_id",) + RESOURCE_ID_FIELD_NUMBER: _ClassVar[int] + resource_id: str + def __init__(self, resource_id: _Optional[str] = ...) -> None: ... -class GetApplicationRequest(_message.Message): - __slots__ = ("application_id",) - APPLICATION_ID_FIELD_NUMBER: _ClassVar[int] - application_id: str - def __init__(self, application_id: _Optional[str] = ...) -> None: ... +class GetResourceResponse(_message.Message): + __slots__ = ("resource",) + RESOURCE_FIELD_NUMBER: _ClassVar[int] + resource: Resource + def __init__(self, resource: _Optional[_Union[Resource, _Mapping]] = ...) -> None: ... -class GetApplicationResponse(_message.Message): - __slots__ = ("application",) - APPLICATION_FIELD_NUMBER: _ClassVar[int] - application: Application - def __init__(self, application: _Optional[_Union[Application, _Mapping]] = ...) -> None: ... +class DeleteResourceProviderRequest(_message.Message): + __slots__ = ("resource_id",) + RESOURCE_ID_FIELD_NUMBER: _ClassVar[int] + resource_id: str + def __init__(self, resource_id: _Optional[str] = ...) -> None: ... class Application(_message.Message): - __slots__ = ("id", "name", "resource_id", "description", "application_type", "third_party", "allow_dynamic_client_registration", "logo_uri", "access_token_expiry", "refresh_token_expiry", "create_time", "update_time") + __slots__ = ("id", "name", "resource_id", "description", "application_type", "third_party", "disable_dynamic_client_registration", "logo_uri", "access_token_expiry", "refresh_token_expiry", "create_time", "update_time", "provider") ID_FIELD_NUMBER: _ClassVar[int] NAME_FIELD_NUMBER: _ClassVar[int] RESOURCE_ID_FIELD_NUMBER: _ClassVar[int] DESCRIPTION_FIELD_NUMBER: _ClassVar[int] APPLICATION_TYPE_FIELD_NUMBER: _ClassVar[int] THIRD_PARTY_FIELD_NUMBER: _ClassVar[int] - ALLOW_DYNAMIC_CLIENT_REGISTRATION_FIELD_NUMBER: _ClassVar[int] + DISABLE_DYNAMIC_CLIENT_REGISTRATION_FIELD_NUMBER: _ClassVar[int] + LOGO_URI_FIELD_NUMBER: _ClassVar[int] + ACCESS_TOKEN_EXPIRY_FIELD_NUMBER: _ClassVar[int] + REFRESH_TOKEN_EXPIRY_FIELD_NUMBER: _ClassVar[int] + CREATE_TIME_FIELD_NUMBER: _ClassVar[int] + UPDATE_TIME_FIELD_NUMBER: _ClassVar[int] + PROVIDER_FIELD_NUMBER: _ClassVar[int] + id: str + name: str + resource_id: str + description: str + application_type: ResourceType + third_party: bool + disable_dynamic_client_registration: bool + logo_uri: str + access_token_expiry: int + refresh_token_expiry: int + create_time: _timestamp_pb2.Timestamp + update_time: _timestamp_pb2.Timestamp + provider: str + def __init__(self, id: _Optional[str] = ..., name: _Optional[str] = ..., resource_id: _Optional[str] = ..., description: _Optional[str] = ..., application_type: _Optional[_Union[ResourceType, str]] = ..., third_party: bool = ..., disable_dynamic_client_registration: bool = ..., logo_uri: _Optional[str] = ..., access_token_expiry: _Optional[int] = ..., refresh_token_expiry: _Optional[int] = ..., create_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., update_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., provider: _Optional[str] = ...) -> None: ... + +class Resource(_message.Message): + __slots__ = ("id", "name", "resource_id", "description", "resource_type", "third_party", "disable_dynamic_client_registration", "logo_uri", "access_token_expiry", "refresh_token_expiry", "create_time", "update_time", "provider") + ID_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + RESOURCE_ID_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + RESOURCE_TYPE_FIELD_NUMBER: _ClassVar[int] + THIRD_PARTY_FIELD_NUMBER: _ClassVar[int] + DISABLE_DYNAMIC_CLIENT_REGISTRATION_FIELD_NUMBER: _ClassVar[int] LOGO_URI_FIELD_NUMBER: _ClassVar[int] ACCESS_TOKEN_EXPIRY_FIELD_NUMBER: _ClassVar[int] REFRESH_TOKEN_EXPIRY_FIELD_NUMBER: _ClassVar[int] CREATE_TIME_FIELD_NUMBER: _ClassVar[int] UPDATE_TIME_FIELD_NUMBER: _ClassVar[int] + PROVIDER_FIELD_NUMBER: _ClassVar[int] id: str name: str resource_id: str description: str - application_type: ApplicationType + resource_type: ResourceType third_party: bool - allow_dynamic_client_registration: bool + disable_dynamic_client_registration: bool logo_uri: str access_token_expiry: int refresh_token_expiry: int create_time: _timestamp_pb2.Timestamp update_time: _timestamp_pb2.Timestamp - def __init__(self, id: _Optional[str] = ..., name: _Optional[str] = ..., resource_id: _Optional[str] = ..., description: _Optional[str] = ..., application_type: _Optional[_Union[ApplicationType, str]] = ..., third_party: bool = ..., allow_dynamic_client_registration: bool = ..., logo_uri: _Optional[str] = ..., access_token_expiry: _Optional[int] = ..., refresh_token_expiry: _Optional[int] = ..., create_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., update_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ... + provider: str + def __init__(self, id: _Optional[str] = ..., name: _Optional[str] = ..., resource_id: _Optional[str] = ..., description: _Optional[str] = ..., resource_type: _Optional[_Union[ResourceType, str]] = ..., third_party: bool = ..., disable_dynamic_client_registration: bool = ..., logo_uri: _Optional[str] = ..., access_token_expiry: _Optional[int] = ..., refresh_token_expiry: _Optional[int] = ..., create_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., update_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., provider: _Optional[str] = ...) -> None: ... class RegisterClientRequest(_message.Message): __slots__ = ("app_id", "client") @@ -153,15 +194,15 @@ class RegisterClient(_message.Message): client_name: str description: str redirect_uris: _containers.RepeatedScalarFieldContainer[str] - scope: _containers.RepeatedScalarFieldContainer[str] + scope: str client_uri: str logo_uri: str tos_uri: str policy_uri: str - def __init__(self, client_name: _Optional[str] = ..., description: _Optional[str] = ..., redirect_uris: _Optional[_Iterable[str]] = ..., scope: _Optional[_Iterable[str]] = ..., client_uri: _Optional[str] = ..., logo_uri: _Optional[str] = ..., tos_uri: _Optional[str] = ..., policy_uri: _Optional[str] = ...) -> None: ... + def __init__(self, client_name: _Optional[str] = ..., description: _Optional[str] = ..., redirect_uris: _Optional[_Iterable[str]] = ..., scope: _Optional[str] = ..., client_uri: _Optional[str] = ..., logo_uri: _Optional[str] = ..., tos_uri: _Optional[str] = ..., policy_uri: _Optional[str] = ...) -> None: ... class RegisterClientResponse(_message.Message): - __slots__ = ("client_id", "secrets", "name", "description", "create_time", "update_time", "scopes", "audience", "custom_claims", "expiry", "application_id", "redirect_uris") + __slots__ = ("client_id", "secrets", "name", "description", "create_time", "update_time", "scopes", "audience", "custom_claims", "expiry", "resource_id", "redirect_uris") CLIENT_ID_FIELD_NUMBER: _ClassVar[int] SECRETS_FIELD_NUMBER: _ClassVar[int] NAME_FIELD_NUMBER: _ClassVar[int] @@ -172,7 +213,7 @@ class RegisterClientResponse(_message.Message): AUDIENCE_FIELD_NUMBER: _ClassVar[int] CUSTOM_CLAIMS_FIELD_NUMBER: _ClassVar[int] EXPIRY_FIELD_NUMBER: _ClassVar[int] - APPLICATION_ID_FIELD_NUMBER: _ClassVar[int] + RESOURCE_ID_FIELD_NUMBER: _ClassVar[int] REDIRECT_URIS_FIELD_NUMBER: _ClassVar[int] client_id: str secrets: _containers.RepeatedCompositeFieldContainer[ClientSecret] @@ -184,71 +225,73 @@ class RegisterClientResponse(_message.Message): audience: _containers.RepeatedScalarFieldContainer[str] custom_claims: _containers.RepeatedCompositeFieldContainer[CustomClaim] expiry: int - application_id: str + resource_id: str redirect_uris: _containers.RepeatedScalarFieldContainer[str] - def __init__(self, client_id: _Optional[str] = ..., secrets: _Optional[_Iterable[_Union[ClientSecret, _Mapping]]] = ..., name: _Optional[str] = ..., description: _Optional[str] = ..., create_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., update_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., scopes: _Optional[_Iterable[str]] = ..., audience: _Optional[_Iterable[str]] = ..., custom_claims: _Optional[_Iterable[_Union[CustomClaim, _Mapping]]] = ..., expiry: _Optional[int] = ..., application_id: _Optional[str] = ..., redirect_uris: _Optional[_Iterable[str]] = ...) -> None: ... + def __init__(self, client_id: _Optional[str] = ..., secrets: _Optional[_Iterable[_Union[ClientSecret, _Mapping]]] = ..., name: _Optional[str] = ..., description: _Optional[str] = ..., create_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., update_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., scopes: _Optional[_Iterable[str]] = ..., audience: _Optional[_Iterable[str]] = ..., custom_claims: _Optional[_Iterable[_Union[CustomClaim, _Mapping]]] = ..., expiry: _Optional[int] = ..., resource_id: _Optional[str] = ..., redirect_uris: _Optional[_Iterable[str]] = ...) -> None: ... -class ListApplicationsRequest(_message.Message): - __slots__ = ("application_type", "page_token", "page_size") - APPLICATION_TYPE_FIELD_NUMBER: _ClassVar[int] +class ListResourcesRequest(_message.Message): + __slots__ = ("resource_type", "page_token", "page_size") + RESOURCE_TYPE_FIELD_NUMBER: _ClassVar[int] PAGE_TOKEN_FIELD_NUMBER: _ClassVar[int] PAGE_SIZE_FIELD_NUMBER: _ClassVar[int] - application_type: ApplicationType + resource_type: ResourceType page_token: str page_size: int - def __init__(self, application_type: _Optional[_Union[ApplicationType, str]] = ..., page_token: _Optional[str] = ..., page_size: _Optional[int] = ...) -> None: ... + def __init__(self, resource_type: _Optional[_Union[ResourceType, str]] = ..., page_token: _Optional[str] = ..., page_size: _Optional[int] = ...) -> None: ... -class ListApplicationsResponse(_message.Message): - __slots__ = ("total_size", "next_page_token", "applications") +class ListResourcesResponse(_message.Message): + __slots__ = ("total_size", "next_page_token", "resources") TOTAL_SIZE_FIELD_NUMBER: _ClassVar[int] NEXT_PAGE_TOKEN_FIELD_NUMBER: _ClassVar[int] - APPLICATIONS_FIELD_NUMBER: _ClassVar[int] + RESOURCES_FIELD_NUMBER: _ClassVar[int] total_size: int next_page_token: str - applications: _containers.RepeatedCompositeFieldContainer[Application] - def __init__(self, total_size: _Optional[int] = ..., next_page_token: _Optional[str] = ..., applications: _Optional[_Iterable[_Union[Application, _Mapping]]] = ...) -> None: ... + resources: _containers.RepeatedCompositeFieldContainer[Resource] + def __init__(self, total_size: _Optional[int] = ..., next_page_token: _Optional[str] = ..., resources: _Optional[_Iterable[_Union[Resource, _Mapping]]] = ...) -> None: ... -class UpdateApplicationRequest(_message.Message): - __slots__ = ("application_id", "application") - APPLICATION_ID_FIELD_NUMBER: _ClassVar[int] - APPLICATION_FIELD_NUMBER: _ClassVar[int] - application_id: str - application: UpdateApplication - def __init__(self, application_id: _Optional[str] = ..., application: _Optional[_Union[UpdateApplication, _Mapping]] = ...) -> None: ... +class UpdateResourceRequest(_message.Message): + __slots__ = ("resource_id", "resource") + RESOURCE_ID_FIELD_NUMBER: _ClassVar[int] + RESOURCE_FIELD_NUMBER: _ClassVar[int] + resource_id: str + resource: UpdateResource + def __init__(self, resource_id: _Optional[str] = ..., resource: _Optional[_Union[UpdateResource, _Mapping]] = ...) -> None: ... -class UpdateApplication(_message.Message): - __slots__ = ("name", "description", "resource_id", "access_token_expiry", "refresh_token_expiry", "allow_dynamic_client_registration", "logo_uri") +class UpdateResource(_message.Message): + __slots__ = ("name", "description", "resource_id", "access_token_expiry", "refresh_token_expiry", "disable_dynamic_client_registration", "logo_uri", "provider") NAME_FIELD_NUMBER: _ClassVar[int] DESCRIPTION_FIELD_NUMBER: _ClassVar[int] RESOURCE_ID_FIELD_NUMBER: _ClassVar[int] ACCESS_TOKEN_EXPIRY_FIELD_NUMBER: _ClassVar[int] REFRESH_TOKEN_EXPIRY_FIELD_NUMBER: _ClassVar[int] - ALLOW_DYNAMIC_CLIENT_REGISTRATION_FIELD_NUMBER: _ClassVar[int] + DISABLE_DYNAMIC_CLIENT_REGISTRATION_FIELD_NUMBER: _ClassVar[int] LOGO_URI_FIELD_NUMBER: _ClassVar[int] + PROVIDER_FIELD_NUMBER: _ClassVar[int] name: str description: str resource_id: str access_token_expiry: int refresh_token_expiry: int - allow_dynamic_client_registration: bool + disable_dynamic_client_registration: bool logo_uri: str - def __init__(self, name: _Optional[str] = ..., description: _Optional[str] = ..., resource_id: _Optional[str] = ..., access_token_expiry: _Optional[int] = ..., refresh_token_expiry: _Optional[int] = ..., allow_dynamic_client_registration: bool = ..., logo_uri: _Optional[str] = ...) -> None: ... + provider: str + def __init__(self, name: _Optional[str] = ..., description: _Optional[str] = ..., resource_id: _Optional[str] = ..., access_token_expiry: _Optional[int] = ..., refresh_token_expiry: _Optional[int] = ..., disable_dynamic_client_registration: bool = ..., logo_uri: _Optional[str] = ..., provider: _Optional[str] = ...) -> None: ... -class UpdateApplicationResponse(_message.Message): - __slots__ = ("application",) - APPLICATION_FIELD_NUMBER: _ClassVar[int] - application: Application - def __init__(self, application: _Optional[_Union[Application, _Mapping]] = ...) -> None: ... +class UpdateResourceResponse(_message.Message): + __slots__ = ("resource",) + RESOURCE_FIELD_NUMBER: _ClassVar[int] + resource: Resource + def __init__(self, resource: _Optional[_Union[Resource, _Mapping]] = ...) -> None: ... -class CreateApplicationClientRequest(_message.Message): - __slots__ = ("application_id", "client") - APPLICATION_ID_FIELD_NUMBER: _ClassVar[int] +class CreateResourceClientRequest(_message.Message): + __slots__ = ("resource_id", "client") + RESOURCE_ID_FIELD_NUMBER: _ClassVar[int] CLIENT_FIELD_NUMBER: _ClassVar[int] - application_id: str - client: ApplicationClient - def __init__(self, application_id: _Optional[str] = ..., client: _Optional[_Union[ApplicationClient, _Mapping]] = ...) -> None: ... + resource_id: str + client: ResourceClient + def __init__(self, resource_id: _Optional[str] = ..., client: _Optional[_Union[ResourceClient, _Mapping]] = ...) -> None: ... -class CreateApplicationClientResponse(_message.Message): +class CreateResourceClientResponse(_message.Message): __slots__ = ("client", "plain_secret") CLIENT_FIELD_NUMBER: _ClassVar[int] PLAIN_SECRET_FIELD_NUMBER: _ClassVar[int] @@ -256,21 +299,21 @@ class CreateApplicationClientResponse(_message.Message): plain_secret: str def __init__(self, client: _Optional[_Union[M2MClient, _Mapping]] = ..., plain_secret: _Optional[str] = ...) -> None: ... -class GetApplicationClientRequest(_message.Message): - __slots__ = ("application_id", "client_id") - APPLICATION_ID_FIELD_NUMBER: _ClassVar[int] +class GetResourceClientRequest(_message.Message): + __slots__ = ("resource_id", "client_id") + RESOURCE_ID_FIELD_NUMBER: _ClassVar[int] CLIENT_ID_FIELD_NUMBER: _ClassVar[int] - application_id: str + resource_id: str client_id: str - def __init__(self, application_id: _Optional[str] = ..., client_id: _Optional[str] = ...) -> None: ... + def __init__(self, resource_id: _Optional[str] = ..., client_id: _Optional[str] = ...) -> None: ... -class GetApplicationClientResponse(_message.Message): - __slots__ = ("application", "client") - APPLICATION_FIELD_NUMBER: _ClassVar[int] +class GetResourceClientResponse(_message.Message): + __slots__ = ("resource", "client") + RESOURCE_FIELD_NUMBER: _ClassVar[int] CLIENT_FIELD_NUMBER: _ClassVar[int] - application: Application + resource: Resource client: M2MClient - def __init__(self, application: _Optional[_Union[Application, _Mapping]] = ..., client: _Optional[_Union[M2MClient, _Mapping]] = ...) -> None: ... + def __init__(self, resource: _Optional[_Union[Resource, _Mapping]] = ..., client: _Optional[_Union[M2MClient, _Mapping]] = ...) -> None: ... class CreateOrganizationClientRequest(_message.Message): __slots__ = ("organization_id", "client") @@ -321,7 +364,7 @@ class UpdateOrganizationClientResponse(_message.Message): def __init__(self, client: _Optional[_Union[M2MClient, _Mapping]] = ...) -> None: ... class M2MClient(_message.Message): - __slots__ = ("client_id", "secrets", "name", "description", "organization_id", "create_time", "update_time", "scopes", "audience", "custom_claims", "expiry", "application_id", "redirect_uris") + __slots__ = ("client_id", "secrets", "name", "description", "organization_id", "create_time", "update_time", "scopes", "audience", "custom_claims", "expiry", "resource_id", "redirect_uris") CLIENT_ID_FIELD_NUMBER: _ClassVar[int] SECRETS_FIELD_NUMBER: _ClassVar[int] NAME_FIELD_NUMBER: _ClassVar[int] @@ -333,7 +376,7 @@ class M2MClient(_message.Message): AUDIENCE_FIELD_NUMBER: _ClassVar[int] CUSTOM_CLAIMS_FIELD_NUMBER: _ClassVar[int] EXPIRY_FIELD_NUMBER: _ClassVar[int] - APPLICATION_ID_FIELD_NUMBER: _ClassVar[int] + RESOURCE_ID_FIELD_NUMBER: _ClassVar[int] REDIRECT_URIS_FIELD_NUMBER: _ClassVar[int] client_id: str secrets: _containers.RepeatedCompositeFieldContainer[ClientSecret] @@ -346,9 +389,9 @@ class M2MClient(_message.Message): audience: _containers.RepeatedScalarFieldContainer[str] custom_claims: _containers.RepeatedCompositeFieldContainer[CustomClaim] expiry: int - application_id: str + resource_id: str redirect_uris: _containers.RepeatedScalarFieldContainer[str] - def __init__(self, client_id: _Optional[str] = ..., secrets: _Optional[_Iterable[_Union[ClientSecret, _Mapping]]] = ..., name: _Optional[str] = ..., description: _Optional[str] = ..., organization_id: _Optional[str] = ..., create_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., update_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., scopes: _Optional[_Iterable[str]] = ..., audience: _Optional[_Iterable[str]] = ..., custom_claims: _Optional[_Iterable[_Union[CustomClaim, _Mapping]]] = ..., expiry: _Optional[int] = ..., application_id: _Optional[str] = ..., redirect_uris: _Optional[_Iterable[str]] = ...) -> None: ... + def __init__(self, client_id: _Optional[str] = ..., secrets: _Optional[_Iterable[_Union[ClientSecret, _Mapping]]] = ..., name: _Optional[str] = ..., description: _Optional[str] = ..., organization_id: _Optional[str] = ..., create_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., update_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., scopes: _Optional[_Iterable[str]] = ..., audience: _Optional[_Iterable[str]] = ..., custom_claims: _Optional[_Iterable[_Union[CustomClaim, _Mapping]]] = ..., expiry: _Optional[int] = ..., resource_id: _Optional[str] = ..., redirect_uris: _Optional[_Iterable[str]] = ...) -> None: ... class GetOrganizationClientRequest(_message.Message): __slots__ = ("organization_id", "client_id") @@ -603,16 +646,18 @@ class ListScopesResponse(_message.Message): def __init__(self, scopes: _Optional[_Iterable[_Union[Scope, _Mapping]]] = ...) -> None: ... class GetConsentDetailsResponse(_message.Message): - __slots__ = ("application", "user", "client", "scopes") + __slots__ = ("application", "resource", "user", "client", "scopes") APPLICATION_FIELD_NUMBER: _ClassVar[int] + RESOURCE_FIELD_NUMBER: _ClassVar[int] USER_FIELD_NUMBER: _ClassVar[int] CLIENT_FIELD_NUMBER: _ClassVar[int] SCOPES_FIELD_NUMBER: _ClassVar[int] application: Application + resource: Resource user: User client: ConsentClient scopes: _containers.RepeatedCompositeFieldContainer[ConsentScope] - def __init__(self, application: _Optional[_Union[Application, _Mapping]] = ..., user: _Optional[_Union[User, _Mapping]] = ..., client: _Optional[_Union[ConsentClient, _Mapping]] = ..., scopes: _Optional[_Iterable[_Union[ConsentScope, _Mapping]]] = ...) -> None: ... + def __init__(self, application: _Optional[_Union[Application, _Mapping]] = ..., resource: _Optional[_Union[Resource, _Mapping]] = ..., user: _Optional[_Union[User, _Mapping]] = ..., client: _Optional[_Union[ConsentClient, _Mapping]] = ..., scopes: _Optional[_Iterable[_Union[ConsentScope, _Mapping]]] = ...) -> None: ... class ConsentClient(_message.Message): __slots__ = ("name", "privacy_uri", "tos_uri") diff --git a/scalekit/v1/clients/clients_pb2_grpc.py b/scalekit/v1/clients/clients_pb2_grpc.py index b336bac..d4ca505 100644 --- a/scalekit/v1/clients/clients_pb2_grpc.py +++ b/scalekit/v1/clients/clients_pb2_grpc.py @@ -75,35 +75,40 @@ def __init__(self, channel): request_serializer=scalekit_dot_v1_dot_clients_dot_clients__pb2.DeleteOrganizationClientRequest.SerializeToString, response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, ) - self.CreateApplication = channel.unary_unary( - '/scalekit.v1.clients.ClientService/CreateApplication', - request_serializer=scalekit_dot_v1_dot_clients_dot_clients__pb2.CreateApplicationRequest.SerializeToString, - response_deserializer=scalekit_dot_v1_dot_clients_dot_clients__pb2.CreateApplicationResponse.FromString, + self.CreateResource = channel.unary_unary( + '/scalekit.v1.clients.ClientService/CreateResource', + request_serializer=scalekit_dot_v1_dot_clients_dot_clients__pb2.CreateResourceRequest.SerializeToString, + response_deserializer=scalekit_dot_v1_dot_clients_dot_clients__pb2.CreateResourceResponse.FromString, ) - self.GetApplication = channel.unary_unary( - '/scalekit.v1.clients.ClientService/GetApplication', - request_serializer=scalekit_dot_v1_dot_clients_dot_clients__pb2.GetApplicationRequest.SerializeToString, - response_deserializer=scalekit_dot_v1_dot_clients_dot_clients__pb2.GetApplicationResponse.FromString, + self.GetResource = channel.unary_unary( + '/scalekit.v1.clients.ClientService/GetResource', + request_serializer=scalekit_dot_v1_dot_clients_dot_clients__pb2.GetResourceRequest.SerializeToString, + response_deserializer=scalekit_dot_v1_dot_clients_dot_clients__pb2.GetResourceResponse.FromString, ) - self.ListApplications = channel.unary_unary( - '/scalekit.v1.clients.ClientService/ListApplications', - request_serializer=scalekit_dot_v1_dot_clients_dot_clients__pb2.ListApplicationsRequest.SerializeToString, - response_deserializer=scalekit_dot_v1_dot_clients_dot_clients__pb2.ListApplicationsResponse.FromString, + self.ListResources = channel.unary_unary( + '/scalekit.v1.clients.ClientService/ListResources', + request_serializer=scalekit_dot_v1_dot_clients_dot_clients__pb2.ListResourcesRequest.SerializeToString, + response_deserializer=scalekit_dot_v1_dot_clients_dot_clients__pb2.ListResourcesResponse.FromString, ) - self.UpdateApplication = channel.unary_unary( - '/scalekit.v1.clients.ClientService/UpdateApplication', - request_serializer=scalekit_dot_v1_dot_clients_dot_clients__pb2.UpdateApplicationRequest.SerializeToString, - response_deserializer=scalekit_dot_v1_dot_clients_dot_clients__pb2.UpdateApplicationResponse.FromString, + self.UpdateResource = channel.unary_unary( + '/scalekit.v1.clients.ClientService/UpdateResource', + request_serializer=scalekit_dot_v1_dot_clients_dot_clients__pb2.UpdateResourceRequest.SerializeToString, + response_deserializer=scalekit_dot_v1_dot_clients_dot_clients__pb2.UpdateResourceResponse.FromString, ) - self.CreateApplicationClient = channel.unary_unary( - '/scalekit.v1.clients.ClientService/CreateApplicationClient', - request_serializer=scalekit_dot_v1_dot_clients_dot_clients__pb2.CreateApplicationClientRequest.SerializeToString, - response_deserializer=scalekit_dot_v1_dot_clients_dot_clients__pb2.CreateApplicationClientResponse.FromString, + self.DeleteResourceProvider = channel.unary_unary( + '/scalekit.v1.clients.ClientService/DeleteResourceProvider', + request_serializer=scalekit_dot_v1_dot_clients_dot_clients__pb2.DeleteResourceProviderRequest.SerializeToString, + response_deserializer=scalekit_dot_v1_dot_clients_dot_clients__pb2.GetResourceResponse.FromString, ) - self.GetApplicationClient = channel.unary_unary( - '/scalekit.v1.clients.ClientService/GetApplicationClient', - request_serializer=scalekit_dot_v1_dot_clients_dot_clients__pb2.GetApplicationClientRequest.SerializeToString, - response_deserializer=scalekit_dot_v1_dot_clients_dot_clients__pb2.GetApplicationClientResponse.FromString, + self.CreateResourceClient = channel.unary_unary( + '/scalekit.v1.clients.ClientService/CreateResourceClient', + request_serializer=scalekit_dot_v1_dot_clients_dot_clients__pb2.CreateResourceClientRequest.SerializeToString, + response_deserializer=scalekit_dot_v1_dot_clients_dot_clients__pb2.CreateResourceClientResponse.FromString, + ) + self.GetResourceClient = channel.unary_unary( + '/scalekit.v1.clients.ClientService/GetResourceClient', + request_serializer=scalekit_dot_v1_dot_clients_dot_clients__pb2.GetResourceClientRequest.SerializeToString, + response_deserializer=scalekit_dot_v1_dot_clients_dot_clients__pb2.GetResourceClientResponse.FromString, ) self.RegisterClient = channel.unary_unary( '/scalekit.v1.clients.ClientService/RegisterClient', @@ -202,37 +207,43 @@ def DeleteOrganizationClient(self, request, context): context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') - def CreateApplication(self, request, context): + def CreateResource(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetResource(self, request, context): """Missing associated documentation comment in .proto file.""" context.set_code(grpc.StatusCode.UNIMPLEMENTED) context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') - def GetApplication(self, request, context): + def ListResources(self, request, context): """Missing associated documentation comment in .proto file.""" context.set_code(grpc.StatusCode.UNIMPLEMENTED) context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') - def ListApplications(self, request, context): + def UpdateResource(self, request, context): """Missing associated documentation comment in .proto file.""" context.set_code(grpc.StatusCode.UNIMPLEMENTED) context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') - def UpdateApplication(self, request, context): + def DeleteResourceProvider(self, request, context): """Missing associated documentation comment in .proto file.""" context.set_code(grpc.StatusCode.UNIMPLEMENTED) context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') - def CreateApplicationClient(self, request, context): + def CreateResourceClient(self, request, context): """Missing associated documentation comment in .proto file.""" context.set_code(grpc.StatusCode.UNIMPLEMENTED) context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') - def GetApplicationClient(self, request, context): + def GetResourceClient(self, request, context): """Missing associated documentation comment in .proto file.""" context.set_code(grpc.StatusCode.UNIMPLEMENTED) context.set_details('Method not implemented!') @@ -325,35 +336,40 @@ def add_ClientServiceServicer_to_server(servicer, server): request_deserializer=scalekit_dot_v1_dot_clients_dot_clients__pb2.DeleteOrganizationClientRequest.FromString, response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, ), - 'CreateApplication': grpc.unary_unary_rpc_method_handler( - servicer.CreateApplication, - request_deserializer=scalekit_dot_v1_dot_clients_dot_clients__pb2.CreateApplicationRequest.FromString, - response_serializer=scalekit_dot_v1_dot_clients_dot_clients__pb2.CreateApplicationResponse.SerializeToString, + 'CreateResource': grpc.unary_unary_rpc_method_handler( + servicer.CreateResource, + request_deserializer=scalekit_dot_v1_dot_clients_dot_clients__pb2.CreateResourceRequest.FromString, + response_serializer=scalekit_dot_v1_dot_clients_dot_clients__pb2.CreateResourceResponse.SerializeToString, + ), + 'GetResource': grpc.unary_unary_rpc_method_handler( + servicer.GetResource, + request_deserializer=scalekit_dot_v1_dot_clients_dot_clients__pb2.GetResourceRequest.FromString, + response_serializer=scalekit_dot_v1_dot_clients_dot_clients__pb2.GetResourceResponse.SerializeToString, ), - 'GetApplication': grpc.unary_unary_rpc_method_handler( - servicer.GetApplication, - request_deserializer=scalekit_dot_v1_dot_clients_dot_clients__pb2.GetApplicationRequest.FromString, - response_serializer=scalekit_dot_v1_dot_clients_dot_clients__pb2.GetApplicationResponse.SerializeToString, + 'ListResources': grpc.unary_unary_rpc_method_handler( + servicer.ListResources, + request_deserializer=scalekit_dot_v1_dot_clients_dot_clients__pb2.ListResourcesRequest.FromString, + response_serializer=scalekit_dot_v1_dot_clients_dot_clients__pb2.ListResourcesResponse.SerializeToString, ), - 'ListApplications': grpc.unary_unary_rpc_method_handler( - servicer.ListApplications, - request_deserializer=scalekit_dot_v1_dot_clients_dot_clients__pb2.ListApplicationsRequest.FromString, - response_serializer=scalekit_dot_v1_dot_clients_dot_clients__pb2.ListApplicationsResponse.SerializeToString, + 'UpdateResource': grpc.unary_unary_rpc_method_handler( + servicer.UpdateResource, + request_deserializer=scalekit_dot_v1_dot_clients_dot_clients__pb2.UpdateResourceRequest.FromString, + response_serializer=scalekit_dot_v1_dot_clients_dot_clients__pb2.UpdateResourceResponse.SerializeToString, ), - 'UpdateApplication': grpc.unary_unary_rpc_method_handler( - servicer.UpdateApplication, - request_deserializer=scalekit_dot_v1_dot_clients_dot_clients__pb2.UpdateApplicationRequest.FromString, - response_serializer=scalekit_dot_v1_dot_clients_dot_clients__pb2.UpdateApplicationResponse.SerializeToString, + 'DeleteResourceProvider': grpc.unary_unary_rpc_method_handler( + servicer.DeleteResourceProvider, + request_deserializer=scalekit_dot_v1_dot_clients_dot_clients__pb2.DeleteResourceProviderRequest.FromString, + response_serializer=scalekit_dot_v1_dot_clients_dot_clients__pb2.GetResourceResponse.SerializeToString, ), - 'CreateApplicationClient': grpc.unary_unary_rpc_method_handler( - servicer.CreateApplicationClient, - request_deserializer=scalekit_dot_v1_dot_clients_dot_clients__pb2.CreateApplicationClientRequest.FromString, - response_serializer=scalekit_dot_v1_dot_clients_dot_clients__pb2.CreateApplicationClientResponse.SerializeToString, + 'CreateResourceClient': grpc.unary_unary_rpc_method_handler( + servicer.CreateResourceClient, + request_deserializer=scalekit_dot_v1_dot_clients_dot_clients__pb2.CreateResourceClientRequest.FromString, + response_serializer=scalekit_dot_v1_dot_clients_dot_clients__pb2.CreateResourceClientResponse.SerializeToString, ), - 'GetApplicationClient': grpc.unary_unary_rpc_method_handler( - servicer.GetApplicationClient, - request_deserializer=scalekit_dot_v1_dot_clients_dot_clients__pb2.GetApplicationClientRequest.FromString, - response_serializer=scalekit_dot_v1_dot_clients_dot_clients__pb2.GetApplicationClientResponse.SerializeToString, + 'GetResourceClient': grpc.unary_unary_rpc_method_handler( + servicer.GetResourceClient, + request_deserializer=scalekit_dot_v1_dot_clients_dot_clients__pb2.GetResourceClientRequest.FromString, + response_serializer=scalekit_dot_v1_dot_clients_dot_clients__pb2.GetResourceClientResponse.SerializeToString, ), 'RegisterClient': grpc.unary_unary_rpc_method_handler( servicer.RegisterClient, @@ -590,7 +606,24 @@ def DeleteOrganizationClient(request, insecure, call_credentials, compression, wait_for_ready, timeout, metadata) @staticmethod - def CreateApplication(request, + def CreateResource(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/scalekit.v1.clients.ClientService/CreateResource', + scalekit_dot_v1_dot_clients_dot_clients__pb2.CreateResourceRequest.SerializeToString, + scalekit_dot_v1_dot_clients_dot_clients__pb2.CreateResourceResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def GetResource(request, target, options=(), channel_credentials=None, @@ -600,14 +633,14 @@ def CreateApplication(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/scalekit.v1.clients.ClientService/CreateApplication', - scalekit_dot_v1_dot_clients_dot_clients__pb2.CreateApplicationRequest.SerializeToString, - scalekit_dot_v1_dot_clients_dot_clients__pb2.CreateApplicationResponse.FromString, + return grpc.experimental.unary_unary(request, target, '/scalekit.v1.clients.ClientService/GetResource', + scalekit_dot_v1_dot_clients_dot_clients__pb2.GetResourceRequest.SerializeToString, + scalekit_dot_v1_dot_clients_dot_clients__pb2.GetResourceResponse.FromString, options, channel_credentials, insecure, call_credentials, compression, wait_for_ready, timeout, metadata) @staticmethod - def GetApplication(request, + def ListResources(request, target, options=(), channel_credentials=None, @@ -617,14 +650,14 @@ def GetApplication(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/scalekit.v1.clients.ClientService/GetApplication', - scalekit_dot_v1_dot_clients_dot_clients__pb2.GetApplicationRequest.SerializeToString, - scalekit_dot_v1_dot_clients_dot_clients__pb2.GetApplicationResponse.FromString, + return grpc.experimental.unary_unary(request, target, '/scalekit.v1.clients.ClientService/ListResources', + scalekit_dot_v1_dot_clients_dot_clients__pb2.ListResourcesRequest.SerializeToString, + scalekit_dot_v1_dot_clients_dot_clients__pb2.ListResourcesResponse.FromString, options, channel_credentials, insecure, call_credentials, compression, wait_for_ready, timeout, metadata) @staticmethod - def ListApplications(request, + def UpdateResource(request, target, options=(), channel_credentials=None, @@ -634,14 +667,14 @@ def ListApplications(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/scalekit.v1.clients.ClientService/ListApplications', - scalekit_dot_v1_dot_clients_dot_clients__pb2.ListApplicationsRequest.SerializeToString, - scalekit_dot_v1_dot_clients_dot_clients__pb2.ListApplicationsResponse.FromString, + return grpc.experimental.unary_unary(request, target, '/scalekit.v1.clients.ClientService/UpdateResource', + scalekit_dot_v1_dot_clients_dot_clients__pb2.UpdateResourceRequest.SerializeToString, + scalekit_dot_v1_dot_clients_dot_clients__pb2.UpdateResourceResponse.FromString, options, channel_credentials, insecure, call_credentials, compression, wait_for_ready, timeout, metadata) @staticmethod - def UpdateApplication(request, + def DeleteResourceProvider(request, target, options=(), channel_credentials=None, @@ -651,14 +684,14 @@ def UpdateApplication(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/scalekit.v1.clients.ClientService/UpdateApplication', - scalekit_dot_v1_dot_clients_dot_clients__pb2.UpdateApplicationRequest.SerializeToString, - scalekit_dot_v1_dot_clients_dot_clients__pb2.UpdateApplicationResponse.FromString, + return grpc.experimental.unary_unary(request, target, '/scalekit.v1.clients.ClientService/DeleteResourceProvider', + scalekit_dot_v1_dot_clients_dot_clients__pb2.DeleteResourceProviderRequest.SerializeToString, + scalekit_dot_v1_dot_clients_dot_clients__pb2.GetResourceResponse.FromString, options, channel_credentials, insecure, call_credentials, compression, wait_for_ready, timeout, metadata) @staticmethod - def CreateApplicationClient(request, + def CreateResourceClient(request, target, options=(), channel_credentials=None, @@ -668,14 +701,14 @@ def CreateApplicationClient(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/scalekit.v1.clients.ClientService/CreateApplicationClient', - scalekit_dot_v1_dot_clients_dot_clients__pb2.CreateApplicationClientRequest.SerializeToString, - scalekit_dot_v1_dot_clients_dot_clients__pb2.CreateApplicationClientResponse.FromString, + return grpc.experimental.unary_unary(request, target, '/scalekit.v1.clients.ClientService/CreateResourceClient', + scalekit_dot_v1_dot_clients_dot_clients__pb2.CreateResourceClientRequest.SerializeToString, + scalekit_dot_v1_dot_clients_dot_clients__pb2.CreateResourceClientResponse.FromString, options, channel_credentials, insecure, call_credentials, compression, wait_for_ready, timeout, metadata) @staticmethod - def GetApplicationClient(request, + def GetResourceClient(request, target, options=(), channel_credentials=None, @@ -685,9 +718,9 @@ def GetApplicationClient(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/scalekit.v1.clients.ClientService/GetApplicationClient', - scalekit_dot_v1_dot_clients_dot_clients__pb2.GetApplicationClientRequest.SerializeToString, - scalekit_dot_v1_dot_clients_dot_clients__pb2.GetApplicationClientResponse.FromString, + return grpc.experimental.unary_unary(request, target, '/scalekit.v1.clients.ClientService/GetResourceClient', + scalekit_dot_v1_dot_clients_dot_clients__pb2.GetResourceClientRequest.SerializeToString, + scalekit_dot_v1_dot_clients_dot_clients__pb2.GetResourceClientResponse.FromString, options, channel_credentials, insecure, call_credentials, compression, wait_for_ready, timeout, metadata) diff --git a/scalekit/v1/commons/commons_pb2.py b/scalekit/v1/commons/commons_pb2.py index 573a1eb..5e3eeba 100644 --- a/scalekit/v1/commons/commons_pb2.py +++ b/scalekit/v1/commons/commons_pb2.py @@ -23,7 +23,7 @@ from protoc_gen_openapiv2.options import annotations_pb2 as protoc__gen__openapiv2_dot_options_dot_annotations__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!scalekit/v1/commons/commons.proto\x12\x13scalekit.v1.commons\x1a\x1b\x62uf/validate/validate.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1bgoogle/api/visibility.proto\x1a\x19google/protobuf/any.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a.protoc-gen-openapiv2/options/annotations.proto\"\x8f\x07\n\x16OrganizationMembership\x12\x86\x01\n\x0forganization_id\x18\x01 \x01(\tB]\x92\x41Z2@Unique identifier for the organization. Immutable and read-only.J\x16\"org_1234abcd5678efgh\"R\x0eorganizationId\x12\x89\x01\n\tjoin_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampBP\x92\x41M2KTimestamp when the membership was created. Automatically set by the server.R\x08joinTime\x12R\n\x11membership_status\x18\x03 \x01(\x0e\x32%.scalekit.v1.commons.MembershipStatusR\x10membershipStatus\x12/\n\x05roles\x18\x04 \x03(\x0b\x32\x19.scalekit.v1.commons.RoleR\x05roles\x12\x17\n\x04name\x18\x05 \x01(\tH\x00R\x04name\x88\x01\x01\x12\x65\n\x19primary_identity_provider\x18\x06 \x01(\x0e\x32).scalekit.v1.commons.IdentityProviderTypeR\x17primaryIdentityProvider\x12\x94\x02\n\x08metadata\x18\x07 \x03(\x0b\x32\x39.scalekit.v1.commons.OrganizationMembership.MetadataEntryB\xbc\x01\x92\x41\x9f\x01\x32\x64\x43ustom key-value pairs for storing additional user context. Keys (3-25 chars), values (1-256 chars).J7{\"department\": \"engineering\", \"location\": \"nyc-office\"}\xbaH\x16\x9a\x01\x13\x10\x14\"\x06r\x04\x10\x03\x18\x19*\x07r\x05\x10\x01\x18\x80\x02R\x08metadata\x1a;\n\rMetadataEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x42\x07\n\x05_name\"*\n\x04Role\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\"\x99\x0c\n\x0bUserProfile\x12\x89\x01\n\x02id\x18\x01 \x01(\tBy\x92\x41s2QUnique system-generated identifier for the user profile. Immutable and read-only.J\x1e\"usr_profile_1234abcd5678efgh\"\xe0\x41\x03R\x02id\x12^\n\nfirst_name\x18\x02 \x01(\tB?\x92\x41\x34\x32*User\'s given name. Maximum 200 characters.J\x06\"John\"\xbaH\x05r\x03\x18\xc8\x01R\tfirstName\x12\\\n\tlast_name\x18\x03 \x01(\tB?\x92\x41\x34\x32+User\'s family name. Maximum 200 characters.J\x05\"Doe\"\xbaH\x05r\x03\x18\xc8\x01R\x08lastName\x12v\n\x04name\x18\x04 \x01(\tBb\x92\x41_2IFull name in display format. Typically combines first_name and last_name.J\x12\"John Michael Doe\"R\x04name\x12y\n\x06locale\x18\x05 \x01(\tBa\x92\x41^2SUser\'s localization preference in BCP-47 format. Defaults to organization settings.J\x07\"en-US\"R\x06locale\x12\x92\x01\n\x0e\x65mail_verified\x18\x06 \x01(\x08\x42k\x92\x41\x65\x32]Indicates if the user\'s email address has been verified. Automatically updated by the system.J\x04true\xe0\x41\x03R\remailVerified\x12\x8a\x01\n\x0cphone_number\x18\x07 \x01(\tBg\x92\x41\x64\x32RPhone number in E.164 international format. Required for SMS-based authentication.J\x0e\"+14155552671\"R\x0bphoneNumber\x12\x87\x02\n\x08metadata\x18\x08 \x03(\x0b\x32..scalekit.v1.commons.UserProfile.MetadataEntryB\xba\x01\x92\x41\x9d\x01\x32^System-managed key-value pairs for internal tracking. Keys (3-25 chars), values (1-256 chars).J;{\"account_status\": \"active\", \"signup_source\": \"mobile_app\"}\xbaH\x16\x9a\x01\x13\x10\x1e\"\x06r\x04\x10\x03\x18\x19*\x07r\x05\x10\x01\x18\x80\x02R\x08metadata\x12\x9e\x02\n\x11\x63ustom_attributes\x18\t \x03(\x0b\x32\x36.scalekit.v1.commons.UserProfile.CustomAttributesEntryB\xb8\x01\x92\x41\x9b\x01\x32ZCustom attributes for extended user profile data. Keys (3-25 chars), values (1-256 chars).J={\"department\": \"engineering\", \"security_clearance\": \"level2\"}\xbaH\x16\x9a\x01\x13\x10\x64\"\x06r\x04\x10\x03\x18\x19*\x07r\x05\x10\x01\x18\x80\x02R\x10\x63ustomAttributes\x1a;\n\rMetadataEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x1a\x43\n\x15\x43ustomAttributesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01*9\n\nRegionCode\x12\x1b\n\x17REGION_CODE_UNSPECIFIED\x10\x00\x12\x06\n\x02US\x10\x01\x12\x06\n\x02\x45U\x10\x02*E\n\x0f\x45nvironmentType\x12 \n\x1c\x45NVIRONMENT_TYPE_UNSPECIFIED\x10\x00\x12\x07\n\x03PRD\x10\x01\x12\x07\n\x03\x44\x45V\x10\x02*c\n\x10MembershipStatus\x12!\n\x1dMembership_Status_UNSPECIFIED\x10\x00\x12\n\n\x06\x41\x43TIVE\x10\x01\x12\x0c\n\x08INACTIVE\x10\x02\x12\x12\n\x0ePENDING_INVITE\x10\x03*\x98\x02\n\x14IdentityProviderType\x12!\n\x1dIDENTITY_PROVIDER_UNSPECIFIED\x10\x00\x12\x08\n\x04OKTA\x10\x01\x12\n\n\x06GOOGLE\x10\x02\x12\x10\n\x0cMICROSOFT_AD\x10\x03\x12\t\n\x05\x41UTH0\x10\x04\x12\x0c\n\x08ONELOGIN\x10\x05\x12\x11\n\rPING_IDENTITY\x10\x06\x12\r\n\tJUMPCLOUD\x10\x07\x12\n\n\x06\x43USTOM\x10\x08\x12\n\n\x06GITHUB\x10\t\x12\n\n\x06GITLAB\x10\n\x12\x0c\n\x08LINKEDIN\x10\x0b\x12\x0e\n\nSALESFORCE\x10\x0c\x12\r\n\tMICROSOFT\x10\r\x12\x11\n\rIDP_SIMULATOR\x10\x0e\x12\x0c\n\x08SCALEKIT\x10\x0f\x12\x08\n\x04\x41\x44\x46S\x10\x10\x42\x33Z1github.com/scalekit-inc/scalekit/pkg/grpc/commonsb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!scalekit/v1/commons/commons.proto\x12\x13scalekit.v1.commons\x1a\x1b\x62uf/validate/validate.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1bgoogle/api/visibility.proto\x1a\x19google/protobuf/any.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a.protoc-gen-openapiv2/options/annotations.proto\"\xd5\x07\n\x16OrganizationMembership\x12\x86\x01\n\x0forganization_id\x18\x01 \x01(\tB]\x92\x41Z2@Unique identifier for the organization. Immutable and read-only.J\x16\"org_1234abcd5678efgh\"R\x0eorganizationId\x12\x89\x01\n\tjoin_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampBP\x92\x41M2KTimestamp when the membership was created. Automatically set by the server.R\x08joinTime\x12R\n\x11membership_status\x18\x03 \x01(\x0e\x32%.scalekit.v1.commons.MembershipStatusR\x10membershipStatus\x12/\n\x05roles\x18\x04 \x03(\x0b\x32\x19.scalekit.v1.commons.RoleR\x05roles\x12Q\n\x04name\x18\x05 \x01(\tB8\x92\x41\x35\x32\'Display name for the Organization name.J\n\"AcmeCorp\"H\x00R\x04name\x88\x01\x01\x12\x94\x02\n\x08metadata\x18\x07 \x03(\x0b\x32\x39.scalekit.v1.commons.OrganizationMembership.MetadataEntryB\xbc\x01\x92\x41\x9f\x01\x32\x64\x43ustom key-value pairs for storing additional user context. Keys (3-25 chars), values (1-256 chars).J7{\"department\": \"engineering\", \"location\": \"nyc-office\"}\xbaH\x16\x9a\x01\x13\x10\x14\"\x06r\x04\x10\x03\x18\x19*\x07r\x05\x10\x01\x18\x80\x02R\x08metadata\x12`\n\x0c\x64isplay_name\x18\t \x01(\tB8\x92\x41\x35\x32\'Display name for the Organization name.J\n\"AcmeCorp\"H\x01R\x0b\x64isplayName\x88\x01\x01\x1a;\n\rMetadataEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x42\x07\n\x05_nameB\x0f\n\r_display_name\"\xe0\x01\n\x04Role\x12\x39\n\x02id\x18\x01 \x01(\tB)\x92\x41#2\x07Role IDJ\x18\"role_79643236410327240\"\xe0\x41\x03R\x02id\x12G\n\x04name\x18\x02 \x01(\tB3\x92\x41\x30\x32\"Unique key identifier for the roleJ\n\"team_dev\"R\x04name\x12T\n\x0c\x64isplay_name\x18\x03 \x01(\tB1\x92\x41.2 Human-readable name for the roleJ\n\"Dev Team\"R\x0b\x64isplayName\"\x99\x0c\n\x0bUserProfile\x12\x89\x01\n\x02id\x18\x01 \x01(\tBy\x92\x41s2QUnique system-generated identifier for the user profile. Immutable and read-only.J\x1e\"usr_profile_1234abcd5678efgh\"\xe0\x41\x03R\x02id\x12^\n\nfirst_name\x18\x02 \x01(\tB?\x92\x41\x34\x32*User\'s given name. Maximum 200 characters.J\x06\"John\"\xbaH\x05r\x03\x18\xc8\x01R\tfirstName\x12\\\n\tlast_name\x18\x03 \x01(\tB?\x92\x41\x34\x32+User\'s family name. Maximum 200 characters.J\x05\"Doe\"\xbaH\x05r\x03\x18\xc8\x01R\x08lastName\x12v\n\x04name\x18\x04 \x01(\tBb\x92\x41_2IFull name in display format. Typically combines first_name and last_name.J\x12\"John Michael Doe\"R\x04name\x12y\n\x06locale\x18\x05 \x01(\tBa\x92\x41^2SUser\'s localization preference in BCP-47 format. Defaults to organization settings.J\x07\"en-US\"R\x06locale\x12\x92\x01\n\x0e\x65mail_verified\x18\x06 \x01(\x08\x42k\x92\x41\x65\x32]Indicates if the user\'s email address has been verified. Automatically updated by the system.J\x04true\xe0\x41\x03R\remailVerified\x12\x8a\x01\n\x0cphone_number\x18\x07 \x01(\tBg\x92\x41\x64\x32RPhone number in E.164 international format. Required for SMS-based authentication.J\x0e\"+14155552671\"R\x0bphoneNumber\x12\x87\x02\n\x08metadata\x18\x08 \x03(\x0b\x32..scalekit.v1.commons.UserProfile.MetadataEntryB\xba\x01\x92\x41\x9d\x01\x32^System-managed key-value pairs for internal tracking. Keys (3-25 chars), values (1-256 chars).J;{\"account_status\": \"active\", \"signup_source\": \"mobile_app\"}\xbaH\x16\x9a\x01\x13\x10\x1e\"\x06r\x04\x10\x03\x18\x19*\x07r\x05\x10\x01\x18\x80\x02R\x08metadata\x12\x9e\x02\n\x11\x63ustom_attributes\x18\t \x03(\x0b\x32\x36.scalekit.v1.commons.UserProfile.CustomAttributesEntryB\xb8\x01\x92\x41\x9b\x01\x32ZCustom attributes for extended user profile data. Keys (3-25 chars), values (1-256 chars).J={\"department\": \"engineering\", \"security_clearance\": \"level2\"}\xbaH\x16\x9a\x01\x13\x10\x64\"\x06r\x04\x10\x03\x18\x19*\x07r\x05\x10\x01\x18\x80\x02R\x10\x63ustomAttributes\x1a;\n\rMetadataEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x1a\x43\n\x15\x43ustomAttributesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01*9\n\nRegionCode\x12\x1b\n\x17REGION_CODE_UNSPECIFIED\x10\x00\x12\x06\n\x02US\x10\x01\x12\x06\n\x02\x45U\x10\x02*E\n\x0f\x45nvironmentType\x12 \n\x1c\x45NVIRONMENT_TYPE_UNSPECIFIED\x10\x00\x12\x07\n\x03PRD\x10\x01\x12\x07\n\x03\x44\x45V\x10\x02*c\n\x10MembershipStatus\x12!\n\x1dMembership_Status_UNSPECIFIED\x10\x00\x12\n\n\x06\x41\x43TIVE\x10\x01\x12\x0c\n\x08INACTIVE\x10\x02\x12\x12\n\x0ePENDING_INVITE\x10\x03*\x98\x02\n\x14IdentityProviderType\x12!\n\x1dIDENTITY_PROVIDER_UNSPECIFIED\x10\x00\x12\x08\n\x04OKTA\x10\x01\x12\n\n\x06GOOGLE\x10\x02\x12\x10\n\x0cMICROSOFT_AD\x10\x03\x12\t\n\x05\x41UTH0\x10\x04\x12\x0c\n\x08ONELOGIN\x10\x05\x12\x11\n\rPING_IDENTITY\x10\x06\x12\r\n\tJUMPCLOUD\x10\x07\x12\n\n\x06\x43USTOM\x10\x08\x12\n\n\x06GITHUB\x10\t\x12\n\n\x06GITLAB\x10\n\x12\x0c\n\x08LINKEDIN\x10\x0b\x12\x0e\n\nSALESFORCE\x10\x0c\x12\r\n\tMICROSOFT\x10\r\x12\x11\n\rIDP_SIMULATOR\x10\x0e\x12\x0c\n\x08SCALEKIT\x10\x0f\x12\x08\n\x04\x41\x44\x46S\x10\x10\x42\x33Z1github.com/scalekit-inc/scalekit/pkg/grpc/commonsb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -37,8 +37,18 @@ _globals['_ORGANIZATIONMEMBERSHIP'].fields_by_name['organization_id']._serialized_options = b'\222AZ2@Unique identifier for the organization. Immutable and read-only.J\026\"org_1234abcd5678efgh\"' _globals['_ORGANIZATIONMEMBERSHIP'].fields_by_name['join_time']._loaded_options = None _globals['_ORGANIZATIONMEMBERSHIP'].fields_by_name['join_time']._serialized_options = b'\222AM2KTimestamp when the membership was created. Automatically set by the server.' + _globals['_ORGANIZATIONMEMBERSHIP'].fields_by_name['name']._loaded_options = None + _globals['_ORGANIZATIONMEMBERSHIP'].fields_by_name['name']._serialized_options = b'\222A52\'Display name for the Organization name.J\n\"AcmeCorp\"' _globals['_ORGANIZATIONMEMBERSHIP'].fields_by_name['metadata']._loaded_options = None _globals['_ORGANIZATIONMEMBERSHIP'].fields_by_name['metadata']._serialized_options = b'\222A\237\0012dCustom key-value pairs for storing additional user context. Keys (3-25 chars), values (1-256 chars).J7{\"department\": \"engineering\", \"location\": \"nyc-office\"}\272H\026\232\001\023\020\024\"\006r\004\020\003\030\031*\007r\005\020\001\030\200\002' + _globals['_ORGANIZATIONMEMBERSHIP'].fields_by_name['display_name']._loaded_options = None + _globals['_ORGANIZATIONMEMBERSHIP'].fields_by_name['display_name']._serialized_options = b'\222A52\'Display name for the Organization name.J\n\"AcmeCorp\"' + _globals['_ROLE'].fields_by_name['id']._loaded_options = None + _globals['_ROLE'].fields_by_name['id']._serialized_options = b'\222A#2\007Role IDJ\030\"role_79643236410327240\"\340A\003' + _globals['_ROLE'].fields_by_name['name']._loaded_options = None + _globals['_ROLE'].fields_by_name['name']._serialized_options = b'\222A02\"Unique key identifier for the roleJ\n\"team_dev\"' + _globals['_ROLE'].fields_by_name['display_name']._loaded_options = None + _globals['_ROLE'].fields_by_name['display_name']._serialized_options = b'\222A.2 Human-readable name for the roleJ\n\"Dev Team\"' _globals['_USERPROFILE_METADATAENTRY']._loaded_options = None _globals['_USERPROFILE_METADATAENTRY']._serialized_options = b'8\001' _globals['_USERPROFILE_CUSTOMATTRIBUTESENTRY']._loaded_options = None @@ -61,24 +71,24 @@ _globals['_USERPROFILE'].fields_by_name['metadata']._serialized_options = b'\222A\235\0012^System-managed key-value pairs for internal tracking. Keys (3-25 chars), values (1-256 chars).J;{\"account_status\": \"active\", \"signup_source\": \"mobile_app\"}\272H\026\232\001\023\020\036\"\006r\004\020\003\030\031*\007r\005\020\001\030\200\002' _globals['_USERPROFILE'].fields_by_name['custom_attributes']._loaded_options = None _globals['_USERPROFILE'].fields_by_name['custom_attributes']._serialized_options = b'\222A\233\0012ZCustom attributes for extended user profile data. Keys (3-25 chars), values (1-256 chars).J={\"department\": \"engineering\", \"security_clearance\": \"level2\"}\272H\026\232\001\023\020d\"\006r\004\020\003\030\031*\007r\005\020\001\030\200\002' - _globals['_REGIONCODE']._serialized_start=2870 - _globals['_REGIONCODE']._serialized_end=2927 - _globals['_ENVIRONMENTTYPE']._serialized_start=2929 - _globals['_ENVIRONMENTTYPE']._serialized_end=2998 - _globals['_MEMBERSHIPSTATUS']._serialized_start=3000 - _globals['_MEMBERSHIPSTATUS']._serialized_end=3099 - _globals['_IDENTITYPROVIDERTYPE']._serialized_start=3102 - _globals['_IDENTITYPROVIDERTYPE']._serialized_end=3382 + _globals['_REGIONCODE']._serialized_start=3123 + _globals['_REGIONCODE']._serialized_end=3180 + _globals['_ENVIRONMENTTYPE']._serialized_start=3182 + _globals['_ENVIRONMENTTYPE']._serialized_end=3251 + _globals['_MEMBERSHIPSTATUS']._serialized_start=3253 + _globals['_MEMBERSHIPSTATUS']._serialized_end=3352 + _globals['_IDENTITYPROVIDERTYPE']._serialized_start=3355 + _globals['_IDENTITYPROVIDERTYPE']._serialized_end=3635 _globals['_ORGANIZATIONMEMBERSHIP']._serialized_start=349 - _globals['_ORGANIZATIONMEMBERSHIP']._serialized_end=1260 - _globals['_ORGANIZATIONMEMBERSHIP_METADATAENTRY']._serialized_start=1192 - _globals['_ORGANIZATIONMEMBERSHIP_METADATAENTRY']._serialized_end=1251 - _globals['_ROLE']._serialized_start=1262 - _globals['_ROLE']._serialized_end=1304 - _globals['_USERPROFILE']._serialized_start=1307 - _globals['_USERPROFILE']._serialized_end=2868 - _globals['_USERPROFILE_METADATAENTRY']._serialized_start=1192 - _globals['_USERPROFILE_METADATAENTRY']._serialized_end=1251 - _globals['_USERPROFILE_CUSTOMATTRIBUTESENTRY']._serialized_start=2801 - _globals['_USERPROFILE_CUSTOMATTRIBUTESENTRY']._serialized_end=2868 + _globals['_ORGANIZATIONMEMBERSHIP']._serialized_end=1330 + _globals['_ORGANIZATIONMEMBERSHIP_METADATAENTRY']._serialized_start=1245 + _globals['_ORGANIZATIONMEMBERSHIP_METADATAENTRY']._serialized_end=1304 + _globals['_ROLE']._serialized_start=1333 + _globals['_ROLE']._serialized_end=1557 + _globals['_USERPROFILE']._serialized_start=1560 + _globals['_USERPROFILE']._serialized_end=3121 + _globals['_USERPROFILE_METADATAENTRY']._serialized_start=1245 + _globals['_USERPROFILE_METADATAENTRY']._serialized_end=1304 + _globals['_USERPROFILE_CUSTOMATTRIBUTESENTRY']._serialized_start=3054 + _globals['_USERPROFILE_CUSTOMATTRIBUTESENTRY']._serialized_end=3121 # @@protoc_insertion_point(module_scope) diff --git a/scalekit/v1/commons/commons_pb2.pyi b/scalekit/v1/commons/commons_pb2.pyi index 7b2e4c6..93859fd 100644 --- a/scalekit/v1/commons/commons_pb2.pyi +++ b/scalekit/v1/commons/commons_pb2.pyi @@ -82,7 +82,7 @@ SCALEKIT: IdentityProviderType ADFS: IdentityProviderType class OrganizationMembership(_message.Message): - __slots__ = ("organization_id", "join_time", "membership_status", "roles", "name", "primary_identity_provider", "metadata") + __slots__ = ("organization_id", "join_time", "membership_status", "roles", "name", "metadata", "display_name") class MetadataEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -95,24 +95,26 @@ class OrganizationMembership(_message.Message): MEMBERSHIP_STATUS_FIELD_NUMBER: _ClassVar[int] ROLES_FIELD_NUMBER: _ClassVar[int] NAME_FIELD_NUMBER: _ClassVar[int] - PRIMARY_IDENTITY_PROVIDER_FIELD_NUMBER: _ClassVar[int] METADATA_FIELD_NUMBER: _ClassVar[int] + DISPLAY_NAME_FIELD_NUMBER: _ClassVar[int] organization_id: str join_time: _timestamp_pb2.Timestamp membership_status: MembershipStatus roles: _containers.RepeatedCompositeFieldContainer[Role] name: str - primary_identity_provider: IdentityProviderType metadata: _containers.ScalarMap[str, str] - def __init__(self, organization_id: _Optional[str] = ..., join_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., membership_status: _Optional[_Union[MembershipStatus, str]] = ..., roles: _Optional[_Iterable[_Union[Role, _Mapping]]] = ..., name: _Optional[str] = ..., primary_identity_provider: _Optional[_Union[IdentityProviderType, str]] = ..., metadata: _Optional[_Mapping[str, str]] = ...) -> None: ... + display_name: str + def __init__(self, organization_id: _Optional[str] = ..., join_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., membership_status: _Optional[_Union[MembershipStatus, str]] = ..., roles: _Optional[_Iterable[_Union[Role, _Mapping]]] = ..., name: _Optional[str] = ..., metadata: _Optional[_Mapping[str, str]] = ..., display_name: _Optional[str] = ...) -> None: ... class Role(_message.Message): - __slots__ = ("id", "name") + __slots__ = ("id", "name", "display_name") ID_FIELD_NUMBER: _ClassVar[int] NAME_FIELD_NUMBER: _ClassVar[int] + DISPLAY_NAME_FIELD_NUMBER: _ClassVar[int] id: str name: str - def __init__(self, id: _Optional[str] = ..., name: _Optional[str] = ...) -> None: ... + display_name: str + def __init__(self, id: _Optional[str] = ..., name: _Optional[str] = ..., display_name: _Optional[str] = ...) -> None: ... class UserProfile(_message.Message): __slots__ = ("id", "first_name", "last_name", "name", "locale", "email_verified", "phone_number", "metadata", "custom_attributes") diff --git a/scalekit/v1/connections/connections_pb2.py b/scalekit/v1/connections/connections_pb2.py index 1b08945..e256470 100644 --- a/scalekit/v1/connections/connections_pb2.py +++ b/scalekit/v1/connections/connections_pb2.py @@ -26,7 +26,7 @@ from scalekit.v1.options import options_pb2 as scalekit_dot_v1_dot_options_dot_options__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n)scalekit/v1/connections/connections.proto\x12\x17scalekit.v1.connections\x1a\x1b\x62uf/validate/validate.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1bgoogle/api/visibility.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/wrappers.proto\x1a.protoc-gen-openapiv2/options/annotations.proto\x1a!scalekit/v1/commons/commons.proto\x1a!scalekit/v1/options/options.proto\"\x15\n\x13GetProvidersRequest\"W\n\x14GetProvidersResponse\x12?\n\tproviders\x18\x01 \x03(\x0b\x32!.scalekit.v1.connections.ProviderR\tproviders\"\xf3\x01\n\x08Provider\x12\x35\n\x06key_id\x18\x01 \x01(\tB\x1e\x92\x41\x1b\x32\x0fProvider Key IDJ\x08\"google\"R\x05keyId\x12G\n\x0c\x64isplay_name\x18\x02 \x01(\tB$\x92\x41!2\x15Provider Display NameJ\x08\"Google\"R\x0b\x64isplayName\x12W\n\x0b\x64\x65scription\x18\x03 \x01(\tB0\x92\x41-2\x14Provider DescriptionJ\x15\"Sign In With Google\"H\x00R\x0b\x64\x65scription\x88\x01\x01\x42\x0e\n\x0c_description\"w\n\"CreateEnvironmentConnectionRequest\x12Q\n\nconnection\x18\x01 \x01(\x0b\x32).scalekit.v1.connections.CreateConnectionB\x06\xbaH\x03\xc8\x01\x01R\nconnection\"\x8f\x02\n\x17\x43reateConnectionRequest\x12\x9a\x01\n\x0forganization_id\x18\x01 \x01(\tBq\x92\x41\x65\x32JUnique identifier of the organization for which the connection is created.J\x17\"org_12362474900684814\"\xbaH\x06r\x04\x10\x01\x18 R\x0eorganizationId\x12Q\n\nconnection\x18\x03 \x01(\x0b\x32).scalekit.v1.connections.CreateConnectionB\x06\xbaH\x03\xc8\x01\x01R\nconnectionJ\x04\x08\x02\x10\x03\"\xac\x01\n\x10\x43reateConnection\x12Q\n\x08provider\x18\x01 \x01(\x0e\x32+.scalekit.v1.connections.ConnectionProviderB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x08provider\x12\x45\n\x04type\x18\x02 \x01(\x0e\x32\'.scalekit.v1.connections.ConnectionTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04type\"\xb0\x1b\n\nConnection\x12\x8d\x01\n\x02id\x18\x01 \x01(\tB}\x92\x41z2_Unique identifier for this connection. Used in API calls to reference this specific connection.J\x17\"conn_2123312131125533\"R\x02id\x12\xc2\x01\n\x08provider\x18\x02 \x01(\x0e\x32+.scalekit.v1.connections.ConnectionProviderBy\x92\x41v2lIdentity provider service that handles authentication (such as OKTA, Google, Azure AD, or a custom provider)J\x06\"OKTA\"R\x08provider\x12\xb4\x01\n\x04type\x18\x03 \x01(\x0e\x32\'.scalekit.v1.connections.ConnectionTypeBw\x92\x41t2jAuthentication protocol used by this connection. Can be OIDC (OpenID Connect), SAML, OAUTH, or MAGIC_LINK.J\x06\"OIDC\"R\x04type\x12\xc6\x01\n\x06status\x18\x04 \x01(\x0e\x32).scalekit.v1.connections.ConnectionStatusB\x82\x01\x92\x41|2kCurrent configuration status of the connection. Possible values include IN_PROGRESS, CONFIGURED, and ERROR.J\r\"IN_PROGRESS\"\xe0\x41\x03R\x06status\x12\xab\x01\n\x07\x65nabled\x18\x05 \x01(\x08\x42\x90\x01\x92\x41\x8c\x01\x32\x82\x01\x43ontrols whether users can sign in using this connection. When false, the connection exists but cannot be used for authentication.J\x05\x66\x61lseR\x07\x65nabled\x12\xb0\x01\n\rdebug_enabled\x18\x06 \x01(\x08\x42\x8a\x01\x92\x41\x86\x01\x32~Enables testing mode that allows non-HTTPS endpoints. Should only be enabled in development environments, never in production.J\x04trueR\x0c\x64\x65\x62ugEnabled\x12\xc1\x01\n\x0forganization_id\x18\x07 \x01(\tB\x92\x01\x92\x41\x8e\x01\x32tIdentifier of the organization that owns this connection. Connections are typically scoped to a single organization.J\x16\"org_2123312131125533\"H\x01R\x0eorganizationId\x88\x01\x01\x12\xbd\x01\n\x0fui_button_title\x18\x08 \x01(\tB\x94\x01\x92\x41\x81\x01\x32mCustom text shown on the login button in the user interface. Helps users identify which SSO option to select.J\x10\"Login with SSO\"\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEWR\ruiButtonTitle\x12\xd5\x01\n\x12\x63onfiguration_type\x18\t \x01(\x0e\x32*.scalekit.v1.connections.ConfigurationTypeBz\x92\x41w2kHow the connection was configured: DISCOVERY (automatic configuration) or MANUAL (administrator configured)J\x08\"MANUAL\"R\x11\x63onfigurationType\x12\xdf\x01\n\x13test_connection_uri\x18\x0c \x01(\tB\xae\x01\x92\x41\xaa\x01\x32\x66URI that can be used to test this connection. Visit this URL to verify the connection works correctly.J@\"https://auth.example.com/test-connection/conn_2123312131125533\"R\x11testConnectionUri\x12\x81\x02\n\x11\x61ttribute_mapping\x18\x0f \x03(\x0b\x32\x39.scalekit.v1.connections.Connection.AttributeMappingEntryB\x98\x01\x92\x41|2zMaps identity provider attributes to user profile fields. For example, {\'email\': \'user.mail\', \'name\': \'user.displayName\'}.\xbaH\x16\x9a\x01\x13\x10\x1e\"\x06r\x04\x10\x01\x18\x64*\x07r\x05\x10\x01\x18\x80\x02R\x10\x61ttributeMapping\x12\xb1\x01\n\x0b\x63reate_time\x18\x10 \x01(\x0b\x32\x1a.google.protobuf.TimestampBt\x92\x41_2EWhen this connection was first created. Format is RFC 3339 timestamp.J\x16\"2023-01-15T14:30:00Z\"\xe0\x41\x03\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEWR\ncreateTime\x12\xb1\x01\n\x0bupdate_time\x18\x11 \x01(\x0b\x32\x1a.google.protobuf.TimestampBt\x92\x41_2EWhen this connection was last modified. Format is RFC 3339 timestamp.J\x16\"2023-02-20T09:15:30Z\"\xe0\x41\x03\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEWR\nupdateTime\x12\xb3\x01\n\x0boidc_config\x18\x12 \x01(\x0b\x32-.scalekit.v1.connections.OIDCConnectionConfigBa\x92\x41^2\\Configuration details for OpenID Connect (OIDC) connections. Present only when type is OIDC.H\x00R\noidcConfig\x12\xaa\x01\n\x0bsaml_config\x18\x13 \x01(\x0b\x32\x35.scalekit.v1.connections.SAMLConnectionConfigResponseBP\x92\x41M2KConfiguration details for SAML connections. Present only when type is SAML.H\x00R\nsamlConfig\x12\xa7\x01\n\x0coauth_config\x18\x14 \x01(\x0b\x32..scalekit.v1.connections.OAuthConnectionConfigBR\x92\x41O2MConfiguration details for OAuth connections. Present only when type is OAUTH.H\x00R\x0boauthConfig\x12\xbf\x01\n\x13passwordless_config\x18\x16 \x01(\x0b\x32+.scalekit.v1.connections.PasswordLessConfigB_\x92\x41\\2ZConfiguration details for Magic Link authentication. Present only when type is MAGIC_LINK.H\x00R\x12passwordlessConfig\x12}\n\x06key_id\x18\x15 \x01(\tBa\x92\x41^2\\Alternative identifier for this connection, typically used in frontend applications or URLs.H\x02R\x05keyId\x88\x01\x01\x1a\x43\n\x15\x41ttributeMappingEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x42\n\n\x08settingsB\x12\n\x10_organization_idB\t\n\x07_key_idJ\x04\x08\r\x10\x0f\"w\n\x18\x43reateConnectionResponse\x12[\n\nconnection\x18\x01 \x01(\x0b\x32#.scalekit.v1.connections.ConnectionB\x16\x92\x41\x13\x32\x11\x43onnection DetailR\nconnection\"\xa8\x02\n\"UpdateEnvironmentConnectionRequest\x12~\n\rconnection_id\x18\x01 \x01(\tBY\x92\x41M2+Connection ID. Unique ID for the connectionJ\x16\"conn_121312434123312\"\xca>\x05\xfa\x02\x02id\xbaH\x06r\x04\x10\x01\x18 R\x0c\x63onnectionId\x12\x81\x01\n\nconnection\x18\x03 \x01(\x0b\x32).scalekit.v1.connections.UpdateConnectionB6\x92\x41-2#Connection properties to be updated\xca>\x05\xfa\x02\x02id\xbaH\x03\xc8\x01\x01R\nconnection\"\xf9\x02\n\x17UpdateConnectionRequest\x12q\n\x0forganization_id\x18\x01 \x01(\tBH\x92\x41<2#Organization ID for the Connection.J\x15\"org_121312434123312\"\xbaH\x06r\x04\x10\x01\x18 R\x0eorganizationId\x12\x61\n\x02id\x18\x03 \x01(\tBQ\x92\x41\x45\x32+Connection ID. Unique ID for the connectionJ\x16\"conn_121312434123312\"\xbaH\x06r\x04\x10\x01\x18 R\x02id\x12\x81\x01\n\nconnection\x18\x04 \x01(\x0b\x32).scalekit.v1.connections.UpdateConnectionB6\x92\x41-2#Connection properties to be updated\xca>\x05\xfa\x02\x02id\xbaH\x03\xc8\x01\x01R\nconnectionJ\x04\x08\x02\x10\x03\"\xbf\x0c\n\x10UpdateConnection\x12w\n\x08provider\x18\x02 \x01(\x0e\x32+.scalekit.v1.connections.ConnectionProviderB.\x92\x41#2\x17SSO Connection ProviderJ\x08\"CUSTOM\"\xbaH\x05\x82\x01\x02\x10\x01R\x08provider\x12r\n\x04type\x18\x03 \x01(\x0e\x32\'.scalekit.v1.connections.ConnectionTypeB5\x92\x41*2 Connection Protocol OIDC / SAML J\x06\"OIDC\"\xbaH\x05\x82\x01\x02\x10\x01R\x04type\x12\xae\x01\n\rdebug_enabled\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.BoolValueBm\x92\x41j2bDebug mode for the connection. Debug would allow non HTTPS endpoint to be used with the connectionJ\x04trueR\x0c\x64\x65\x62ugEnabled\x12\x8d\x01\n\x0fui_button_title\x18\x08 \x01(\x0b\x32\x1c.google.protobuf.StringValueBG\x92\x41\x35\x32!Display name for the Login ButtonJ\x10\"Login with SSO\"\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEWR\ruiButtonTitle\x12~\n\x12\x63onfiguration_type\x18\x0b \x01(\x0e\x32*.scalekit.v1.connections.ConfigurationTypeB#\x92\x41 2\x14\x43onfiguration Type. J\x08\"MANUAL\"R\x11\x63onfigurationType\x12\x9d\x01\n\x11\x61ttribute_mapping\x18\x0f \x03(\x0b\x32?.scalekit.v1.connections.UpdateConnection.AttributeMappingEntryB/\x92\x41\x13\x32\x11\x41ttribute Mapping\xbaH\x16\x9a\x01\x13\x10\x1e\"\x06r\x04\x10\x01\x18\x64*\x07r\x05\x10\x01\x18\x80\x02R\x10\x61ttributeMapping\x12\x83\x01\n\x0boidc_config\x18\x10 \x01(\x0b\x32-.scalekit.v1.connections.OIDCConnectionConfigB1\x92\x41.2,OIDC Configuration if ConnectionType == OIDCH\x00R\noidcConfig\x12\x8a\x01\n\x0bsaml_config\x18\x11 \x01(\x0b\x32\x34.scalekit.v1.connections.SAMLConnectionConfigRequestB1\x92\x41.2,SAML Configuration if ConnectionType == SAMLH\x00R\nsamlConfig\x12\x88\x01\n\x0coauth_config\x18\x12 \x01(\x0b\x32..scalekit.v1.connections.OAuthConnectionConfigB3\x92\x41\x30\x32.OAuth Configuration if ConnectionType == OAUTHH\x00R\x0boauthConfig\x12\x9d\x01\n\x13passwordless_config\x18\x14 \x01(\x0b\x32+.scalekit.v1.connections.PasswordLessConfigB=\x92\x41:28Magic Link Configuration if ConnectionType == MAGIC_LINKH\x00R\x12passwordlessConfig\x12%\n\x06key_id\x18\x13 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18 H\x01R\x05keyId\x88\x01\x01\x1a\x43\n\x15\x41ttributeMappingEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x42\n\n\x08settingsB\t\n\x07_key_idJ\x04\x08\x01\x10\x02J\x04\x08\x04\x10\x05J\x04\x08\x05\x10\x06J\x04\x08\t\x10\x0bJ\x04\x08\x0c\x10\x0f\"\x80\x01\n\x18UpdateConnectionResponse\x12\x64\n\nconnection\x18\x01 \x01(\x0b\x32#.scalekit.v1.connections.ConnectionB\x1f\x92\x41\x1c\x32\x1aUpdated Connection detailsR\nconnection\"\x9c\x01\n\"DeleteEnvironmentConnectionRequest\x12v\n\rconnection_id\x18\x03 \x01(\tBQ\x92\x41\x45\x32+Connection ID. Unique ID for the connectionJ\x16\"conn_121312434123312\"\xbaH\x06r\x04\x10\x01\x18 R\x0c\x63onnectionId\"\xf5\x01\n\x17\x44\x65leteConnectionRequest\x12q\n\x0forganization_id\x18\x01 \x01(\tBH\x92\x41<2#Organization ID for the Connection.J\x15\"org_121312434123312\"\xbaH\x06r\x04\x10\x01\x18 R\x0eorganizationId\x12\x61\n\x02id\x18\x03 \x01(\tBQ\x92\x41\x45\x32+Connection ID. Unique ID for the connectionJ\x16\"conn_121312434123312\"\xbaH\x06r\x04\x10\x01\x18 R\x02idJ\x04\x08\x02\x10\x03\"\x92\x01\n\x1fGetEnvironmentConnectionRequest\x12o\n\rconnection_id\x18\x01 \x01(\tBJ\x92\x41>2$Unique identifier for the ConnectionJ\x16\"conn_121312434123312\"\xbaH\x06r\x04\x10\x01\x18 R\x0c\x63onnectionId\"\xfc\x02\n\x14GetConnectionRequest\x12\xba\x01\n\x0forganization_id\x18\x01 \x01(\tB\x90\x01\x92\x41\x83\x01\x32jOrganization identifier (required). Specifies which organization owns the connection you want to retrieve.J\x15\"org_121312434123312\"\xbaH\x06r\x04\x10\x01\x18 R\x0eorganizationId\x12\xa0\x01\n\x02id\x18\x03 \x01(\tB\x8f\x01\x92\x41\x82\x01\x32hConnection identifier (required). Specifies which specific connection to retrieve from the organization.J\x16\"conn_121312434123312\"\xbaH\x06r\x04\x10\x01\x18 R\x02idJ\x04\x08\x02\x10\x03\"\x9a\x02\n\x15GetConnectionResponse\x12\x80\x02\n\nconnection\x18\x01 \x01(\x0b\x32#.scalekit.v1.connections.ConnectionB\xba\x01\x92\x41\xb6\x01\x32\xb3\x01\x43omplete connection details including provider configuration, protocol settings, status, and all metadata. Contains everything needed to understand the connection\'s current state.R\nconnection\"\xb7\x03\n\x16ListConnectionsRequest\x12\x80\x01\n\x0forganization_id\x18\x01 \x01(\tBR\x92\x41\x46\x32-Filter connections by organization identifierJ\x15\"org_121312434123312\"\xbaH\x06r\x04\x10\x01\x18 H\x00R\x0eorganizationId\x88\x01\x01\x12\x7f\n\x06\x64omain\x18\x03 \x01(\tBb\x92\x41V2CFilter connections by email domain associated with the organizationJ\x0f\"hero-saas.app\"\xbaH\x06r\x04\x10\x01\x18 H\x01R\x06\x64omain\x88\x01\x01\x12h\n\x07include\x18\x04 \x01(\tBI\x92\x41\x46\x32\x44\x43omma-separated list of additional fields to include in the responseH\x02R\x07include\x88\x01\x01\x42\x12\n\x10_organization_idB\t\n\x07_domainB\n\n\x08_includeJ\x04\x08\x02\x10\x03\"\x9d\x01\n\x17ListConnectionsResponse\x12\x81\x01\n\x0b\x63onnections\x18\x01 \x03(\x0b\x32\'.scalekit.v1.connections.ListConnectionB6\x92\x41\x33\x32\x31List of connections matching the request criteriaR\x0b\x63onnections\"\xdd\x08\n\x0eListConnection\x12Q\n\x02id\x18\x01 \x01(\tBA\x92\x41>2#Unique identifier of the connectionJ\x17\"conn_2123312131125533\"R\x02id\x12\x8d\x01\n\x08provider\x18\x02 \x01(\x0e\x32+.scalekit.v1.connections.ConnectionProviderBD\x92\x41\x41\x32\x35Identity provider type (e.g., OKTA, Google, Azure AD)J\x08\"CUSTOM\"R\x08provider\x12x\n\x04type\x18\x03 \x01(\x0e\x32\'.scalekit.v1.connections.ConnectionTypeB;\x92\x41\x38\x32.Authentication protocol used by the connectionJ\x06\"OIDC\"R\x04type\x12\x88\x01\n\x06status\x18\x04 \x01(\x0e\x32).scalekit.v1.connections.ConnectionStatusBE\x92\x41?2.Current configuration status of the connectionJ\r\"IN_PROGRESS\"\xe0\x41\x03R\x06status\x12g\n\x07\x65nabled\x18\x05 \x01(\x08\x42M\x92\x41J2AWhether the connection is currently active for organization usersJ\x05\x66\x61lseR\x07\x65nabled\x12\x85\x01\n\x0forganization_id\x18\x06 \x01(\tB\\\x92\x41Y2?Unique identifier of the organization that owns this connectionJ\x16\"org_2123312131125533\"R\x0eorganizationId\x12\x88\x01\n\x0fui_button_title\x18\x07 \x01(\tB`\x92\x41N2:Text displayed on the SSO login button for this connectionJ\x10\"Login with SSO\"\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEWR\ruiButtonTitle\x12t\n\x07\x64omains\x18\x08 \x03(\tBZ\x92\x41W2/List of domains configured with this connectionJ$[\"yourapp.com\", \"yourworkspace.com\"]R\x07\x64omains\x12q\n\x11organization_name\x18\t \x01(\tBD\x92\x41\x41\x32*Name of the organization of the connectionJ\x13\"Your Organization\"R\x10organizationName\"\xcf\x02\n\"ListOrganizationConnectionsRequest\x12\x80\x01\n\tpage_size\x18\x01 \x01(\rBc\x92\x41Y2SMaximum number of organizations to return per page. Value must be between 1 and 30.J\x02\x33\x30\xbaH\x04*\x02\x18\x1eR\x08pageSize\x12\xa5\x01\n\npage_token\x18\x02 \x01(\tB\x85\x01\x92\x41\x81\x01\x32\x61Token from a previous response for pagination. Provide this to retrieve the next page of results.J\x1c\x65yJwYWdlIjoyLCJsaW1pdCI6MzB9R\tpageToken\"\x97\x02\n#ListOrganizationConnectionsResponse\x12&\n\x0fnext_page_token\x18\x01 \x01(\tR\rnextPageToken\x12\x1d\n\ntotal_size\x18\x02 \x01(\rR\ttotalSize\x12&\n\x0fprev_page_token\x18\x03 \x01(\tR\rprevPageToken\x12\x80\x01\n\x0b\x63onnections\x18\x04 \x03(\x0b\x32\'.scalekit.v1.connections.ListConnectionB5\x92\x41\x32\x32\x30List of connections matching the filter criteriaR\x0b\x63onnections\"\xfa\x06\n$SearchOrganizationConnectionsRequest\x12l\n\x05query\x18\x01 \x01(\tBQ\x92\x41G2-Search query Connection ID or Organization IDJ\x16\"conn_121312434123312\"\xbaH\x04r\x02\x18\x64H\x00R\x05query\x88\x01\x01\x12u\n\x08provider\x18\x02 \x01(\x0e\x32+.scalekit.v1.connections.ConnectionProviderB\'\x92\x41\x1c\x32\x12\x46ilter by providerJ\x06\"OKTA\"\xbaH\x05\x82\x01\x02\x10\x01H\x01R\x08provider\x88\x01\x01\x12}\n\x06status\x18\x03 \x01(\x0e\x32).scalekit.v1.connections.ConnectionStatusB5\x92\x41*2\x1b\x46ilter by connection statusJ\x0b\"COMPLETED\"\xbaH\x05\x82\x01\x02\x10\x01H\x02R\x06status\x88\x01\x01\x12\x8c\x01\n\x0f\x63onnection_type\x18\x04 \x01(\x0e\x32\'.scalekit.v1.connections.ConnectionTypeB5\x92\x41*2\x1b\x46ilter by connection statusJ\x0b\"COMPLETED\"\xbaH\x05\x82\x01\x02\x10\x01H\x03R\x0e\x63onnectionType\x88\x01\x01\x12\x80\x01\n\tpage_size\x18\x05 \x01(\rBc\x92\x41Y2SMaximum number of organizations to return per page. Value must be between 1 and 30.J\x02\x33\x30\xbaH\x04*\x02\x18\x1eR\x08pageSize\x12\xa5\x01\n\npage_token\x18\x06 \x01(\tB\x85\x01\x92\x41\x81\x01\x32\x61Token from a previous response for pagination. Provide this to retrieve the next page of results.J\x1c\x65yJwYWdlIjoyLCJsaW1pdCI6MzB9R\tpageTokenB\x08\n\x06_queryB\x0b\n\t_providerB\t\n\x07_statusB\x12\n\x10_connection_type\"\x99\x02\n%SearchOrganizationConnectionsResponse\x12&\n\x0fnext_page_token\x18\x01 \x01(\tR\rnextPageToken\x12\x1d\n\ntotal_size\x18\x02 \x01(\rR\ttotalSize\x12&\n\x0fprev_page_token\x18\x03 \x01(\tR\rprevPageToken\x12\x80\x01\n\x0b\x63onnections\x18\x04 \x03(\x0b\x32\'.scalekit.v1.connections.ListConnectionB5\x92\x41\x32\x32\x30List of connections matching the filter criteriaR\x0b\x63onnections\"\x9c\x01\n\"ToggleEnvironmentConnectionRequest\x12v\n\rconnection_id\x18\x02 \x01(\tBQ\x92\x41\x45\x32+Connection ID. Unique ID for the connectionJ\x16\"conn_121312434123312\"\xbaH\x06r\x04\x10\x01\x18 R\x0c\x63onnectionId\"\x9e\x02\n\x17ToggleConnectionRequest\x12\x92\x01\n\x0forganization_id\x18\x01 \x01(\tBi\x92\x41]2DUnique identifier of the organization associated with the connectionJ\x15\"org_121312434123312\"\xbaH\x06r\x04\x10\x01\x18 R\x0eorganizationId\x12h\n\x02id\x18\x03 \x01(\tBX\x92\x41L22Unique identifier for the connection to be toggledJ\x16\"conn_121312434123312\"\xbaH\x06r\x04\x10\x01\x18 R\x02idJ\x04\x08\x02\x10\x03\"\xbc\x02\n\x18ToggleConnectionResponse\x12\xa9\x01\n\x07\x65nabled\x18\x01 \x01(\x08\x42\x8e\x01\x92\x41\x8a\x01\x32\x81\x01\x43urrent state of the connection after the operation. True means the connection is now enabled and can be used for authentication.J\x04trueR\x07\x65nabled\x12\x62\n\rerror_message\x18\x02 \x01(\tB8\x92\x41\x35\x32$Error message if the operation failsJ\r\"placeholder\"H\x00R\x0c\x65rrorMessage\x88\x01\x01\x42\x10\n\x0e_error_message\"\x9a\x0f\n\x14OIDCConnectionConfig\x12j\n\x06issuer\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.StringValueB4\x92\x41\x31\x32\nIssuer URLJ#\"https://youridp.com/service/oauth\"R\x06issuer\x12\xaa\x01\n\x12\x64iscovery_endpoint\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.StringValueB]\x92\x41Z2\x12\x44iscovery EndpointJD\"https://youridp.com/service/oauth/.well-known/openid-configuration\"R\x11\x64iscoveryEndpoint\x12\x84\x01\n\rauthorize_uri\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.StringValueBA\x92\x41>2\rAuthorize URIJ-\"https://youridp.com/service/oauth/authorize\"R\x0c\x61uthorizeUri\x12t\n\ttoken_uri\x18\x04 \x01(\x0b\x32\x1c.google.protobuf.StringValueB9\x92\x41\x36\x32\tToken URIJ)\"https://youridp.com/service/oauth/token\"R\x08tokenUri\x12\x82\x01\n\ruser_info_uri\x18\x05 \x01(\x0b\x32\x1c.google.protobuf.StringValueB@\x92\x41=2\rUser Info URIJ,\"https://youridp.com/service/oauth/userinfo\"R\x0buserInfoUri\x12p\n\x08jwks_uri\x18\x06 \x01(\x0b\x32\x1c.google.protobuf.StringValueB7\x92\x41\x34\x32\x08JWKS URIJ(\"https://youridp.com/service/oauth/jwks\"R\x07jwksUri\x12\\\n\tclient_id\x18\x08 \x01(\x0b\x32\x1c.google.protobuf.StringValueB!\x92\x41\x1e\x32\tClient IDJ\x11\"oauth_client_id\"R\x08\x63lientId\x12l\n\rclient_secret\x18\t \x01(\x0b\x32\x1c.google.protobuf.StringValueB)\x92\x41&2\rClient SecretJ\x15\"oauth_client_secret\"R\x0c\x63lientSecret\x12\x63\n\x06scopes\x18\n \x03(\x0e\x32\".scalekit.v1.connections.OIDCScopeB\'\x92\x41$2\x0bOIDC ScopesJ\x15[\"openid\", \"profile\"]R\x06scopes\x12r\n\x0ftoken_auth_type\x18\x0b \x01(\x0e\x32&.scalekit.v1.connections.TokenAuthTypeB\"\x92\x41\x1f\x32\x0fToken Auth TypeJ\x0c\"URL_PARAMS\"R\rtokenAuthType\x12j\n\x0credirect_uri\x18\x0c \x01(\tBG\x92\x41\x44\x32\x0cRedirect URIJ4\"https://yourapp.com/sso/v1/oidc/conn_1234/callback\"R\x0bredirectUri\x12V\n\x0cpkce_enabled\x18\r \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x17\x92\x41\x14\x32\x0cPKCE EnabledJ\x04trueR\x0bpkceEnabled\x12h\n\x13idp_logout_required\x18\x0e \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x1c\x92\x41\x19\x32\x11\x45nable IDP logoutJ\x04trueR\x11idpLogoutRequired\x12\xb4\x01\n\x18post_logout_redirect_uri\x18\x0f \x01(\x0b\x32\x1c.google.protobuf.StringValueB]\x92\x41W2\x18post logout redirect uriJ;\"https://yourapp.com/sso/v1/oidc/conn_1234/logout/callback\"\xe0\x41\x03R\x15postLogoutRedirectUri\x12\xea\x01\n\x1f\x62\x61\x63kchannel_logout_redirect_uri\x18\x10 \x01(\x0b\x32\x1c.google.protobuf.StringValueB\x84\x01\x92\x41~2\"https://yourapp.com/sso/v1/oidc/conn_1234/backchannel-logout\"\xe0\x41\x03R\x1c\x62\x61\x63kchannelLogoutRedirectUri\"\xa9\x08\n\x15OAuthConnectionConfig\x12\x84\x01\n\rauthorize_uri\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.StringValueBA\x92\x41>2\rAuthorize URIJ-\"https://youridp.com/service/oauth/authorize\"R\x0c\x61uthorizeUri\x12t\n\ttoken_uri\x18\x04 \x01(\x0b\x32\x1c.google.protobuf.StringValueB9\x92\x41\x36\x32\tToken URIJ)\"https://youridp.com/service/oauth/token\"R\x08tokenUri\x12\x82\x01\n\ruser_info_uri\x18\x05 \x01(\x0b\x32\x1c.google.protobuf.StringValueB@\x92\x41=2\rUser Info URIJ,\"https://youridp.com/service/oauth/userinfo\"R\x0buserInfoUri\x12\\\n\tclient_id\x18\x08 \x01(\x0b\x32\x1c.google.protobuf.StringValueB!\x92\x41\x1e\x32\tClient IDJ\x11\"oauth_client_id\"R\x08\x63lientId\x12l\n\rclient_secret\x18\t \x01(\x0b\x32\x1c.google.protobuf.StringValueB)\x92\x41&2\rClient SecretJ\x15\"oauth_client_secret\"R\x0c\x63lientSecret\x12?\n\x06scopes\x18\n \x03(\tB\'\x92\x41$2\x0bOIDC ScopesJ\x15[\"openid\", \"profile\"]R\x06scopes\x12\x62\n\x0credirect_uri\x18\x0c \x01(\tB?\x92\x41<2\x0cRedirect URIJ,\"https://yourapp.com/service/oauth/redirect\"R\x0bredirectUri\x12V\n\x0cpkce_enabled\x18\r \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x17\x92\x41\x14\x32\x0cPKCE EnabledJ\x04trueR\x0bpkceEnabled\x12V\n\x06prompt\x18\x0e \x01(\x0b\x32\x1c.google.protobuf.StringValueB \x92\x41\x1d\x32\x13Prompt for the userJ\x06\"none\"R\x06prompt\x12m\n\x12use_platform_creds\x18\x0f \x01(\x0b\x32\x1a.google.protobuf.BoolValueB#\x92\x41 2\x18Use Scalekit credentialsJ\x04trueR\x10usePlatformCreds\"\xa4\x06\n\x12PasswordLessConfig\x12]\n\x04type\x18\x01 \x01(\x0e\x32).scalekit.v1.connections.PasswordlessTypeB\x1e\x92\x41\x1b\x32\x11Passwordless TypeJ\x06\"LINK\"R\x04type\x12W\n\tfrequency\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB\x16\x92\x41\x13\x32\x0eLink FrequencyJ\x01\x31H\x00R\tfrequency\x88\x01\x01\x12\x63\n\x08validity\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB$\x92\x41!2\x18Link Validity in SecondsJ\x05\"600\"H\x01R\x08validity\x88\x01\x01\x12\x86\x01\n\x1b\x65nforce_same_browser_origin\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.BoolValueB&\x92\x41#2\x1b\x45nforce Same Browser OriginJ\x04trueH\x02R\x18\x65nforceSameBrowserOrigin\x88\x01\x01\x12t\n\x15\x63ode_challenge_length\x18\x05 \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB\x1d\x92\x41\x1a\x32\x15\x43ode Challenge LengthJ\x01\x36H\x03R\x13\x63odeChallengeLength\x88\x01\x01\x12\x84\x01\n\x13\x63ode_challenge_type\x18\x06 \x01(\x0e\x32*.scalekit.v1.connections.CodeChallengeTypeB#\x92\x41 2\x13\x43ode Challenge TypeJ\t\"NUMERIC\"H\x04R\x11\x63odeChallengeType\x88\x01\x01\x42\x0c\n\n_frequencyB\x0b\n\t_validityB\x1e\n\x1c_enforce_same_browser_originB\x18\n\x16_code_challenge_lengthB\x16\n\x14_code_challenge_type\"\xab\x0f\n\x1bSAMLConnectionConfigRequest\x12\x8a\x01\n\x10idp_metadata_url\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.StringValueBB\x92\x41?2\x10IDP Metadata URLJ+\"https://youridp.com/service/saml/metadata\"R\x0eidpMetadataUrl\x12x\n\ridp_entity_id\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.StringValueB6\x92\x41\x33\x32\rIDP Entity IDJ\"\"https://youridp.com/service/saml\"R\x0bidpEntityId\x12v\n\x0bidp_sso_url\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.StringValueB8\x92\x41\x35\x32\x0bIDP SSO URLJ&\"https://youridp.com/service/saml/sso\"R\tidpSsoUrl\x12[\n\x0fidp_certificate\x18\x04 \x01(\x0b\x32\x1c.google.protobuf.StringValueB\x14\x92\x41\x11\x32\x0fIDP CertificateR\x0eidpCertificate\x12v\n\x0bidp_slo_url\x18\x05 \x01(\x0b\x32\x1c.google.protobuf.StringValueB8\x92\x41\x35\x32\x0bIDP SLO URLJ&\"https://youridp.com/service/saml/slo\"R\tidpSloUrl\x12l\n\x0fui_button_title\x18\x06 \x01(\x0b\x32\x1c.google.protobuf.StringValueB&\x92\x41#2\x0fUI Button TitleJ\x10\"Login with SSO\"R\ruiButtonTitle\x12t\n\x12idp_name_id_format\x18\x07 \x01(\x0e\x32%.scalekit.v1.connections.NameIdFormatB \x92\x41\x1d\x32\x12IDP Name ID FormatJ\x07\"EMAIL\"R\x0fidpNameIdFormat\x12\x89\x01\n\x17idp_sso_request_binding\x18\x08 \x01(\x0e\x32\'.scalekit.v1.connections.RequestBindingB)\x92\x41&2\x17IDP SSO Request BindingJ\x0b\"HTTP_POST\"R\x14idpSsoRequestBinding\x12\x8d\x01\n\x17idp_slo_request_binding\x18\t \x01(\x0e\x32\'.scalekit.v1.connections.RequestBindingB-\x92\x41*2\x17IDP SLO Request BindingJ\x0f\"HTTP_REDIRECT\"R\x14idpSloRequestBinding\x12\x93\x01\n\x13saml_signing_option\x18\n \x01(\x0e\x32+.scalekit.v1.connections.SAMLSigningOptionsB6\x92\x41\x33\x32\x13SAML Signing OptionJ\x1c\"SAML_ONLY_RESPONSE_SIGNING\"R\x11samlSigningOption\x12S\n\x0b\x66orce_authn\x18\x0e \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x16\x92\x41\x13\x32\x0b\x46orce AuthnJ\x04trueR\nforceAuthn\x12\x96\x01\n\x14\x64\x65\x66\x61ult_redirect_uri\x18\x0f \x01(\x0b\x32\x1c.google.protobuf.StringValueBF\x92\x41\x43\x32\x14\x44\x65\x66\x61ult Redirect URIJ+\"https://yourapp.com/service/saml/redirect\"R\x12\x64\x65\x66\x61ultRedirectUri\x12k\n\x13\x61ssertion_encrypted\x18\x10 \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x1e\x92\x41\x1b\x32\x13\x41ssertion EncryptedJ\x04trueR\x12\x61ssertionEncrypted\x12j\n\x13want_request_signed\x18\x11 \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x1e\x92\x41\x1b\x32\x13Want Request SignedJ\x04trueR\x11wantRequestSigned\x12q\n\x0e\x63\x65rtificate_id\x18\x12 \x01(\x0b\x32\x1c.google.protobuf.StringValueB,\x92\x41)2\x0e\x43\x65rtificate IDJ\x17\"cer_35585423166144613\"R\rcertificateId\x12\x62\n\x10idp_slo_required\x18\x13 \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x1c\x92\x41\x19\x32\x11\x45nable IDP logoutJ\x04trueR\x0eidpSloRequiredJ\x04\x08\x0b\x10\x0c\"\xf9\x13\n\x1cSAMLConnectionConfigResponse\x12W\n\x0csp_entity_id\x18\x01 \x01(\tB5\x92\x41\x32\x32\x0cSP Entity IDJ\"\"https://yourapp.com/service/saml\"R\nspEntityId\x12m\n\x10sp_assertion_url\x18\x02 \x01(\tBC\x92\x41@2\x10SP Assertion URLJ,\"https://youridp.com/service/saml/assertion\"R\x0espAssertionUrl\x12i\n\x0fsp_metadata_url\x18\x03 \x01(\tBA\x92\x41>2\x0fSP Metadata URLJ+\"https://youridp.com/service/saml/metadata\"R\rspMetadataUrl\x12\x8a\x01\n\x10idp_metadata_url\x18\x04 \x01(\x0b\x32\x1c.google.protobuf.StringValueBB\x92\x41?2\x10IDP Metadata URLJ+\"https://youridp.com/service/saml/metadata\"R\x0eidpMetadataUrl\x12x\n\ridp_entity_id\x18\x05 \x01(\x0b\x32\x1c.google.protobuf.StringValueB6\x92\x41\x33\x32\rIDP Entity IDJ\"\"https://youridp.com/service/saml\"R\x0bidpEntityId\x12v\n\x0bidp_sso_url\x18\x06 \x01(\x0b\x32\x1c.google.protobuf.StringValueB8\x92\x41\x35\x32\x0bIDP SSO URLJ&\"https://youridp.com/service/saml/sso\"R\tidpSsoUrl\x12i\n\x10idp_certificates\x18\x07 \x03(\x0b\x32\'.scalekit.v1.connections.IDPCertificateB\x15\x92\x41\x12\x32\x10IDP CertificatesR\x0fidpCertificates\x12v\n\x0bidp_slo_url\x18\x08 \x01(\x0b\x32\x1c.google.protobuf.StringValueB8\x92\x41\x35\x32\x0bIDP SLO URLJ&\"https://youridp.com/service/saml/slo\"R\tidpSloUrl\x12l\n\x0fui_button_title\x18\t \x01(\x0b\x32\x1c.google.protobuf.StringValueB&\x92\x41#2\x0fUI Button TitleJ\x10\"Login with SSO\"R\ruiButtonTitle\x12t\n\x12idp_name_id_format\x18\n \x01(\x0e\x32%.scalekit.v1.connections.NameIdFormatB \x92\x41\x1d\x32\x12IDP Name ID FormatJ\x07\"EMAIL\"R\x0fidpNameIdFormat\x12\x89\x01\n\x17idp_sso_request_binding\x18\x0b \x01(\x0e\x32\'.scalekit.v1.connections.RequestBindingB)\x92\x41&2\x17IDP SSO Request BindingJ\x0b\"HTTP_POST\"R\x14idpSsoRequestBinding\x12\x89\x01\n\x17idp_slo_request_binding\x18\x0c \x01(\x0e\x32\'.scalekit.v1.connections.RequestBindingB)\x92\x41&2\x17IDP SLO Request BindingJ\x0b\"HTTP_POST\"R\x14idpSloRequestBinding\x12\x93\x01\n\x13saml_signing_option\x18\r \x01(\x0e\x32+.scalekit.v1.connections.SAMLSigningOptionsB6\x92\x41\x33\x32\x13SAML Signing OptionJ\x1c\"SAML_ONLY_RESPONSE_SIGNING\"R\x11samlSigningOption\x12{\n\x19\x61llow_idp_initiated_login\x18\x0e \x01(\x0b\x32\x1a.google.protobuf.BoolValueB$\x92\x41!2\x19\x41llow IDP Initiated LoginJ\x04trueR\x16\x61llowIdpInitiatedLogin\x12S\n\x0b\x66orce_authn\x18\x0f \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x16\x92\x41\x13\x32\x0b\x46orce AuthnJ\x04trueR\nforceAuthn\x12\x96\x01\n\x14\x64\x65\x66\x61ult_redirect_uri\x18\x10 \x01(\x0b\x32\x1c.google.protobuf.StringValueBF\x92\x41\x43\x32\x14\x44\x65\x66\x61ult Redirect URIJ+\"https://yourapp.com/service/saml/redirect\"R\x12\x64\x65\x66\x61ultRedirectUri\x12k\n\x13\x61ssertion_encrypted\x18\x11 \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x1e\x92\x41\x1b\x32\x13\x41ssertion EncryptedJ\x04trueR\x12\x61ssertionEncrypted\x12j\n\x13want_request_signed\x18\x12 \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x1e\x92\x41\x1b\x32\x13Want Request SignedJ\x04trueR\x11wantRequestSigned\x12q\n\x0e\x63\x65rtificate_id\x18\x13 \x01(\x0b\x32\x1c.google.protobuf.StringValueB,\x92\x41)2\x0e\x43\x65rtificate IDJ\x17\"cer_35585423166144613\"R\rcertificateId\x12\x62\n\x10idp_slo_required\x18\x14 \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x1c\x92\x41\x19\x32\x11\x45nable IDP logoutJ\x04trueR\x0eidpSloRequired\x12\x96\x01\n\nsp_slo_url\x18\x15 \x01(\x0b\x32\x1c.google.protobuf.StringValueBZ\x92\x41T2\x18Service Provider SLO urlJ8\"https://yourapp.com/sso/v1/saml/conn_1234/slo/callback\"\xe0\x41\x03R\x08spSloUrl\"\xbf\x03\n\x0eIDPCertificate\x12\x36\n\x0b\x63\x65rtificate\x18\x01 \x01(\tB\x14\x92\x41\x11\x32\x0fIDP CertificateR\x0b\x63\x65rtificate\x12s\n\x0b\x63reate_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampB6\x92\x41\x33\x32\x19\x43\x65rtificate Creation TimeJ\x16\"2021-09-01T00:00:00Z\"R\ncreateTime\x12q\n\x0b\x65xpiry_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampB4\x92\x41\x31\x32\x17\x43\x65rtificate Expiry TimeJ\x16\"2021-09-01T00:00:00Z\"R\nexpiryTime\x12\x38\n\x02id\x18\x04 \x01(\tB(\x92\x41%2\x0e\x43\x65rtificate IDJ\x13\"cert_123123123123\"R\x02id\x12S\n\x06issuer\x18\x05 \x01(\tB;\x92\x41\x38\x32\x12\x43\x65rtificate IssuerJ\"\"https://youridp.com/service/saml\"R\x06issuer\"b\n\x16GetOIDCMetadataRequest\x12H\n\x08metadata\x18\x01 \x01(\x0b\x32,.scalekit.v1.connections.OIDCMetadataRequestR\x08metadata\"9\n\x13OIDCMetadataRequest\x12\"\n\x06issuer\x18\x01 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x18\xc8\x01R\x06issuer\"\xd7\x01\n\x17GetOIDCMetadataResponse\x12\x16\n\x06issuer\x18\x01 \x01(\tR\x06issuer\x12\x35\n\x16\x61uthorization_endpoint\x18\x02 \x01(\tR\x15\x61uthorizationEndpoint\x12%\n\x0etoken_endpoint\x18\x03 \x01(\tR\rtokenEndpoint\x12+\n\x11userinfo_endpoint\x18\x04 \x01(\tR\x10userinfoEndpoint\x12\x19\n\x08jwks_uri\x18\x05 \x01(\tR\x07jwksUri\"b\n\x16GetSAMLMetadataRequest\x12H\n\x08metadata\x18\x01 \x01(\x0b\x32,.scalekit.v1.connections.SAMLMetadataRequestR\x08metadata\"D\n\x13SAMLMetadataRequest\x12-\n\x0cmetadata_url\x18\x01 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x18\xc8\x01R\x0bmetadataUrl\"\xb4\x02\n\x17GetSAMLMetadataResponse\x12\"\n\ridp_entity_id\x18\x01 \x01(\tR\x0bidpEntityId\x12\x1e\n\x0bidp_sso_url\x18\x02 \x01(\tR\tidpSsoUrl\x12\x1e\n\x0bidp_slo_url\x18\x03 \x01(\tR\tidpSloUrl\x12)\n\x10idp_certificates\x18\x04 \x03(\tR\x0fidpCertificates\x12+\n\x12idp_name_id_format\x18\x05 \x01(\tR\x0fidpNameIdFormat\x12\'\n\x0frequest_binding\x18\x06 \x01(\tR\x0erequestBinding\x12\x34\n\x16want_assertions_signed\x18\x07 \x01(\x08R\x14wantAssertionsSigned\"u\n GetSAMLCertificateDetailsRequest\x12Q\n\x0b\x63\x65rtificate\x18\x01 \x01(\x0b\x32/.scalekit.v1.connections.SAMLCertificateRequestR\x0b\x63\x65rtificate\"5\n\x16SAMLCertificateRequest\x12\x1b\n\x04text\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x04text\"\xa5\x01\n!GetSAMLCertificateDetailsResponse\x12\x12\n\x04text\x18\x01 \x01(\tR\x04text\x12\x1b\n\tnot_after\x18\x02 \x01(\x03R\x08notAfter\x12\x1d\n\nnot_before\x18\x03 \x01(\x03R\tnotBefore\x12\x18\n\x07subject\x18\x04 \x01(\tR\x07subject\x12\x16\n\x06issuer\x18\x05 \x01(\tR\x06issuer\"\x86\x01\n\x1eGetConnectionTestResultRequest\x12,\n\rconnection_id\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x0c\x63onnectionId\x12\x36\n\x0ftest_request_id\x18\x02 \x01(\tB\x0e\xbaH\x0br\t\x10\x01:\x05test_R\rtestRequestId\"\xbd\x02\n\x1fGetConnectionTestResultResponse\x12\x41\n\x06status\x18\x01 \x01(\x0e\x32).scalekit.v1.connections.TestResultStatusR\x06status\x12 \n\tuser_info\x18\x02 \x01(\tH\x00R\x08userInfo\x88\x01\x01\x12\x19\n\x05\x65rror\x18\x03 \x01(\tH\x01R\x05\x65rror\x88\x01\x01\x12\x30\n\x11\x65rror_description\x18\x04 \x01(\tH\x02R\x10\x65rrorDescription\x88\x01\x01\x12(\n\rerror_details\x18\x05 \x01(\tH\x03R\x0c\x65rrorDetails\x88\x01\x01\x42\x0c\n\n_user_infoB\x08\n\x06_errorB\x14\n\x12_error_descriptionB\x10\n\x0e_error_details\"\x1a\n\x18PasswordConnectionConfig*W\n\x11\x43odeChallengeType\x12#\n\x1f\x43ODE_CHALLENGE_TYPE_UNSPECIFIED\x10\x00\x12\x0b\n\x07NUMERIC\x10\x01\x12\x10\n\x0c\x41LPHANUMERIC\x10\x02*R\n\x11\x43onfigurationType\x12\"\n\x1e\x43ONFIGURATION_TYPE_UNSPECIFIED\x10\x00\x12\r\n\tDISCOVERY\x10\x01\x12\n\n\x06MANUAL\x10\x02*a\n\x0cNameIdFormat\x12\x16\n\x12NAME_ID_FORMAT_NIL\x10\x00\x12\x0f\n\x0bUNSPECIFIED\x10\x01\x12\t\n\x05\x45MAIL\x10\x02\x12\r\n\tTRANSIENT\x10\x03\x12\x0e\n\nPERSISTENT\x10\x04*U\n\x10PasswordlessType\x12 \n\x1cPasswordlessType_UNSPECIFIED\x10\x00\x12\x08\n\x04LINK\x10\x01\x12\x07\n\x03OTP\x10\x02\x12\x0c\n\x08LINK_OTP\x10\x03*9\n\x10TestResultStatus\x12\x0b\n\x07PENDING\x10\x00\x12\x0b\n\x07SUCCESS\x10\x01\x12\x0b\n\x07\x46\x41ILURE\x10\x02*\xd8\x01\n\x12SAMLSigningOptions\x12$\n SAML_SIGNING_OPTIONS_UNSPECIFIED\x10\x00\x12\x0e\n\nNO_SIGNING\x10\x01\x12\x1e\n\x1aSAML_ONLY_RESPONSE_SIGNING\x10\x02\x12\x1f\n\x1bSAML_ONLY_ASSERTION_SIGNING\x10\x03\x12#\n\x1fSAML_RESPONSE_ASSERTION_SIGNING\x10\x04\x12&\n\"SAML_RESPONSE_OR_ASSERTION_SIGNING\x10\x05*S\n\x0eRequestBinding\x12\x1f\n\x1bREQUEST_BINDING_UNSPECIFIED\x10\x00\x12\r\n\tHTTP_POST\x10\x01\x12\x11\n\rHTTP_REDIRECT\x10\x02*P\n\rTokenAuthType\x12\x1f\n\x1bTOKEN_AUTH_TYPE_UNSPECIFIED\x10\x00\x12\x0e\n\nURL_PARAMS\x10\x01\x12\x0e\n\nBASIC_AUTH\x10\x02*c\n\tOIDCScope\x12\x1a\n\x16OIDC_SCOPE_UNSPECIFIED\x10\x00\x12\n\n\x06openid\x10\x01\x12\x0b\n\x07profile\x10\x02\x12\t\n\x05\x65mail\x10\x03\x12\x0b\n\x07\x61\x64\x64ress\x10\x04\x12\t\n\x05phone\x10\x05*\\\n\x0e\x43onnectionType\x12\x0b\n\x07INVALID\x10\x00\x12\x08\n\x04OIDC\x10\x01\x12\x08\n\x04SAML\x10\x02\x12\x0c\n\x08PASSWORD\x10\x03\x12\t\n\x05OAUTH\x10\x04\x12\x10\n\x0cPASSWORDLESS\x10\x05*`\n\x10\x43onnectionStatus\x12!\n\x1d\x43ONNECTION_STATUS_UNSPECIFIED\x10\x00\x12\t\n\x05\x44RAFT\x10\x01\x12\x0f\n\x0bIN_PROGRESS\x10\x02\x12\r\n\tCOMPLETED\x10\x03*\x98\x02\n\x12\x43onnectionProvider\x12#\n\x1f\x43ONNECTION_PROVIDER_UNSPECIFIED\x10\x00\x12\x08\n\x04OKTA\x10\x01\x12\n\n\x06GOOGLE\x10\x02\x12\x10\n\x0cMICROSOFT_AD\x10\x03\x12\t\n\x05\x41UTH0\x10\x04\x12\x0c\n\x08ONELOGIN\x10\x05\x12\x11\n\rPING_IDENTITY\x10\x06\x12\r\n\tJUMPCLOUD\x10\x07\x12\n\n\x06\x43USTOM\x10\x08\x12\n\n\x06GITHUB\x10\t\x12\n\n\x06GITLAB\x10\n\x12\x0c\n\x08LINKEDIN\x10\x0b\x12\x0e\n\nSALESFORCE\x10\x0c\x12\r\n\tMICROSOFT\x10\r\x12\x11\n\rIDP_SIMULATOR\x10\x0e\x12\x0c\n\x08SCALEKIT\x10\x0f\x12\x08\n\x04\x41\x44\x46S\x10\x10\x32\x8fZ\n\x11\x43onnectionService\x12\xb0\x04\n\x0cGetProviders\x12,.scalekit.v1.connections.GetProvidersRequest\x1a-.scalekit.v1.connections.GetProvidersResponse\"\xc2\x03\x92\x41\x90\x03\n\x0b\x43onnections\x12#List supported connection providers\x1a\xe6\x01Retrieves all available identity providers for configuring connections. The list includes authentication providers (SAML, OIDC), directory services, and social identity providers, with their metadata and configuration requirementsJs\n\x03\x32\x30\x30\x12l\n7Successfully retrieved the list of connection providers\x12\x31\n/\x1a-.scalekit.v1.connections.GetProvidersResponse\x82\xb5\x18\x02\x18t\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x13\x12\x11/api/v1/providers\x12\x91\x03\n\x1b\x43reateEnvironmentConnection\x12;.scalekit.v1.connections.CreateEnvironmentConnectionRequest\x1a\x31.scalekit.v1.connections.CreateConnectionResponse\"\x81\x02\x92\x41\xc1\x01\n\x0b\x43onnections\x12\x17\x43reate a new connection\x1a\x38\x45stablish a new connection for the specified environmentJ_\n\x03\x32\x30\x31\x12X\n\x1f\x43onnection created successfully\x12\x35\n3\x1a\x31.scalekit.v1.connections.CreateConnectionResponse\x82\xb5\x18\x02\x18T\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02!\"\x13/api/v1/connections:\nconnection\x12\x96\x08\n\x10\x43reateConnection\x12\x30.scalekit.v1.connections.CreateConnectionRequest\x1a\x31.scalekit.v1.connections.CreateConnectionResponse\"\x9c\x07\x92\x41\xbc\x06\n\x0b\x43onnections\x12\x17\x43reate a new connection\x1a=Establish a new SSO connection for the specified organizationJ_\n\x03\x32\x30\x31\x12X\n\x1f\x43onnection created successfully\x12\x35\n3\x1a\x31.scalekit.v1.connections.CreateConnectionResponsej\xf3\x04\n\rx-codeSamples\x12\xe1\x04\x32\xde\x04\n\x99\x01*\x96\x01\n\x16\n\x05label\x12\r\x1a\x0bNode.js SDK\n\x14\n\x04lang\x12\x0c\x1a\njavascript\nf\n\x06source\x12\\\x1aZconst connection = await sc.connection.createConnection(organizationId, connectionConfig);\n\x90\x01*\x8d\x01\n\x15\n\x05label\x12\x0c\x1a\nPython SDK\n\x10\n\x04lang\x12\x08\x1a\x06python\nb\n\x06source\x12X\x1aVconnection = sc.connection.create_connection(\n organization_id,\n connection_config\n)\n\x93\x01*\x90\x01\n\x11\n\x05label\x12\x08\x1a\x06Go SDK\n\x0c\n\x04lang\x12\x04\x1a\x02go\nm\n\x06source\x12\x63\x1a\x61\x63onnection, err := sc.Connection.CreateConnection(\n ctx,\n organizationId,\n connectionConfig,\n)\n\x96\x01*\x93\x01\n\x13\n\x05label\x12\n\x1a\x08Java SDK\n\x0e\n\x04lang\x12\x06\x1a\x04java\nl\n\x06source\x12\x62\x1a`Connection connection = client.connections().createConnection(organizationId, connectionConfig);\x82\xb5\x18\x02\x18t\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x41\"3/api/v1/organizations/{organization_id}/connections:\nconnection\x12\xb2\x03\n\x18GetEnvironmentConnection\x12\x38.scalekit.v1.connections.GetEnvironmentConnectionRequest\x1a..scalekit.v1.connections.GetConnectionResponse\"\xab\x02\x92\x41\xe7\x01\n\x0b\x43onnections\x12\x1bRetrieve connection details\x1aSObtain detailed information about a specific connection using its unique identifierJf\n\x03\x32\x30\x30\x12_\n)Successfully retrieved connection details\x12\x32\n0\x1a..scalekit.v1.connections.GetConnectionResponse\x82\xb5\x18\x02\x18T\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02%\x12#/api/v1/connections/{connection_id}\x12\xa1\t\n\rGetConnection\x12-.scalekit.v1.connections.GetConnectionRequest\x1a..scalekit.v1.connections.GetConnectionResponse\"\xb0\x08\x92\x41\xe6\x07\n\x0b\x43onnections\x12\x16Get connection details\x1a\xd1\x01Retrieves the complete configuration and status details for a specific connection by its ID within an organization. Returns all connection properties including provider settings, protocols, and current status.J\x85\x01\n\x03\x32\x30\x30\x12~\nHSuccessfully retrieved connection details for the specified organization\x12\x32\n0\x1a..scalekit.v1.connections.GetConnectionResponsej\xe2\x04\n\rx-codeSamples\x12\xd0\x04\x32\xcd\x04\n\x98\x01*\x95\x01\n\x16\n\x05label\x12\r\x1a\x0bNode.js SDK\n\x14\n\x04lang\x12\x0c\x1a\njavascript\ne\n\x06source\x12[\x1aYconst connection = await sc.connection.getConnection(\n organizationId,\n connectionId\n);\n\x8a\x01*\x87\x01\n\x15\n\x05label\x12\x0c\x1a\nPython SDK\n\x10\n\x04lang\x12\x08\x1a\x06python\n\\\n\x06source\x12R\x1aPconnection = sc.connection.get_connection(\n organization_id,\n connection_id,\n)\n\x8c\x01*\x89\x01\n\x11\n\x05label\x12\x08\x1a\x06Go SDK\n\x0c\n\x04lang\x12\x04\x1a\x02go\nf\n\x06source\x12\\\x1aZconnection, err := sc.Connection.GetConnection(\n ctx,\n organizationId,\n connectionId,\n)\n\x93\x01*\x90\x01\n\x13\n\x05label\x12\n\x1a\x08Java SDK\n\x0e\n\x04lang\x12\x06\x1a\x04java\ni\n\x06source\x12_\x1a]Connection connection = client.connections().getConnectionById(connectionId, organizationId);\x82\xb5\x18\x02\x18t\x82\xd3\xe4\x93\x02:\x12\x38/api/v1/organizations/{organization_id}/connections/{id}\x12\xa5\x07\n\x0fListConnections\x12/.scalekit.v1.connections.ListConnectionsRequest\x1a\x30.scalekit.v1.connections.ListConnectionsResponse\"\xae\x06\x92\x41\xfa\x05\n\x0b\x43onnections\x12\x10List connections\x1a\x32Retrieves a list of connections in the environmentJa\n\x03\x32\x30\x30\x12Z\n\"Successfully retrieved connections\x12\x34\n2\x1a\x30.scalekit.v1.connections.ListConnectionsResponsej\xc1\x04\n\rx-codeSamples\x12\xaf\x04\x32\xac\x04\n\x87\x01*\x84\x01\n\x16\n\x05label\x12\r\x1a\x0bNode.js SDK\n\x14\n\x04lang\x12\x0c\x1a\njavascript\nT\n\x06source\x12J\x1aHconst connections = await sc.connection.listConnections(organizationId);\nz*x\n\x15\n\x05label\x12\x0c\x1a\nPython SDK\n\x10\n\x04lang\x12\x08\x1a\x06python\nM\n\x06source\x12\x43\x1a\x41\x63onnections = sc.connection.list_connections(\n organization_id\n)\n}*{\n\x11\n\x05label\x12\x08\x1a\x06Go SDK\n\x0c\n\x04lang\x12\x04\x1a\x02go\nX\n\x06source\x12N\x1aLconnections, err := sc.Connection.ListConnections(\n ctx,\n organizationId\n)\n\xa4\x01*\xa1\x01\n\x13\n\x05label\x12\n\x1a\x08Java SDK\n\x0e\n\x04lang\x12\x06\x1a\x04java\nz\n\x06source\x12p\x1anListConnectionsResponse response = scalekitClient.connections().listConnectionsByOrganization(organizationId);\x82\xb5\x18\x02\x18t\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x15\x12\x13/api/v1/connections\x12\xa8\x03\n\x1bListOrganizationConnections\x12;.scalekit.v1.connections.ListOrganizationConnectionsRequest\x1a<.scalekit.v1.connections.ListOrganizationConnectionsResponse\"\x8d\x02\x92\x41\xd8\x01\n\x0b\x43onnections\x12\x1dList organization connections\x1a\x39Retrieves a list of connections for all the organizationsJo\n\x03\x32\x30\x30\x12h\n\"Successfully retrieved connections\x12\x42\n@\x1a>.scalekit.v1.connections.SearchOrganizationConnectionsResponse\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02%\x12#/api/v1/organizations/-/connections\x12\xcd\x03\n\x1dSearchOrganizationConnections\x12=.scalekit.v1.connections.SearchOrganizationConnectionsRequest\x1a>.scalekit.v1.connections.SearchOrganizationConnectionsResponse\"\xac\x02\x92\x41\xe1\x01\n\x0b\x43onnections\x12\x1fSearch organization connections\x1a\x44Search with query or filters provided and return list of connectionsJk\n\x03\x32\x30\x30\x12\x64\n\x1eSuccessfully found connections\x12\x42\n@\x1a>.scalekit.v1.connections.SearchOrganizationConnectionsResponse\x82\xb5\x18\x02\x18T\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02,\x12*/api/v1/organizations/-/connections:search\x12\xf1\x02\n\x1bUpdateEnvironmentConnection\x12;.scalekit.v1.connections.UpdateEnvironmentConnectionRequest\x1a\x31.scalekit.v1.connections.UpdateConnectionResponse\"\xe1\x01\x92\x41\x91\x01\n\x0b\x43onnections\x12\x13Update a connection\x1a\x17Update a SSO ConnectionJT\n\x03\x32\x30\x30\x12M\n\x14Updated Successfully\x12\x35\n3\x1a\x31.scalekit.v1.connections.UpdateConnectionResponse\x82\xb5\x18\x02\x18T\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x31\x32#/api/v1/connections/{connection_id}:\nconnection\x12\xb4\x08\n\x10UpdateConnection\x12\x30.scalekit.v1.connections.UpdateConnectionRequest\x1a\x31.scalekit.v1.connections.UpdateConnectionResponse\"\xba\x07\x92\x41\xd5\x06\n\x0b\x43onnections\x12$Update a connection for organization\x1a\x17Update a SSO ConnectionJT\n\x03\x32\x30\x30\x12M\n\x14Updated Successfully\x12\x35\n3\x1a\x31.scalekit.v1.connections.UpdateConnectionResponsej\xb0\x05\n\rx-codeSamples\x12\x9e\x05\x32\x9b\x05\n\xa7\x01*\xa4\x01\n\x16\n\x05label\x12\r\x1a\x0bNode.js SDK\n\x14\n\x04lang\x12\x0c\x1a\njavascript\nt\n\x06source\x12j\x1ahconst connection = await sc.connection.updateConnection(organizationId, connectionId, connectionConfig);\n\xa1\x01*\x9e\x01\n\x15\n\x05label\x12\x0c\x1a\nPython SDK\n\x10\n\x04lang\x12\x08\x1a\x06python\ns\n\x06source\x12i\x1agconnection = sc.connection.update_connection(\n organization_id,\n connection_id,\n connection_config\n)\n\xa3\x01*\xa0\x01\n\x11\n\x05label\x12\x08\x1a\x06Go SDK\n\x0c\n\x04lang\x12\x04\x1a\x02go\n}\n\x06source\x12s\x1aqconnection, err := sc.Connection.UpdateConnection(\n ctx,\n organizationId,\n connectionId,\n connectionConfig,\n)\n\xa4\x01*\xa1\x01\n\x13\n\x05label\x12\n\x1a\x08Java SDK\n\x0e\n\x04lang\x12\x06\x1a\x04java\nz\n\x06source\x12p\x1anConnection connection = client.connections().updateConnection(connectionId, organizationId, connectionConfig);\x82\xb5\x18\x02\x18t\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x46\x32\x38/api/v1/organizations/{organization_id}/connections/{id}:\nconnection\x12\x92\x02\n\x1b\x44\x65leteEnvironmentConnection\x12;.scalekit.v1.connections.DeleteEnvironmentConnectionRequest\x1a\x16.google.protobuf.Empty\"\x9d\x01\x92\x41Z\n\x0b\x43onnections\x12\x13\x44\x65lete a connection\x1a\x17\x44\x65lete a SSO ConnectionJ\x1d\n\x03\x32\x30\x30\x12\x16\n\x14\x44\x65leted Successfully\x82\xb5\x18\x02\x18T\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02%*#/api/v1/connections/{connection_id}\x12\xc0\x06\n\x10\x44\x65leteConnection\x12\x30.scalekit.v1.connections.DeleteConnectionRequest\x1a\x16.google.protobuf.Empty\"\xe1\x05\x92\x41\x88\x05\n\x0b\x43onnections\x12$Delete a connection for organization\x1a\x17\x44\x65lete a SSO ConnectionJ\x1d\n\x03\x32\x30\x30\x12\x16\n\x14\x44\x65leted Successfullyj\x9a\x04\n\rx-codeSamples\x12\x88\x04\x32\x85\x04\n\x81\x01*\x7f\n\x16\n\x05label\x12\r\x1a\x0bNode.js SDK\n\x14\n\x04lang\x12\x0c\x1a\njavascript\nO\n\x06source\x12\x45\x1a\x43\x61wait sc.connection.deleteConnection(organizationId, connectionId);\n~*|\n\x15\n\x05label\x12\x0c\x1a\nPython SDK\n\x10\n\x04lang\x12\x08\x1a\x06python\nQ\n\x06source\x12G\x1a\x45sc.connection.delete_connection(\n organization_id,\n connection_id\n)\n\x83\x01*\x80\x01\n\x11\n\x05label\x12\x08\x1a\x06Go SDK\n\x0c\n\x04lang\x12\x04\x1a\x02go\n]\n\x06source\x12S\x1aQerr := sc.Connection.DeleteConnection(\n ctx,\n organizationId,\n connectionId,\n)\ny*w\n\x13\n\x05label\x12\n\x1a\x08Java SDK\n\x0e\n\x04lang\x12\x06\x1a\x04java\nP\n\x06source\x12\x46\x1a\x44\x63lient.connections().deleteConnection(connectionId, organizationId);\x82\xb5\x18\x02\x18t\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02:*8/api/v1/organizations/{organization_id}/connections/{id}\x12\xdf\x02\n\x1b\x45nableEnvironmentConnection\x12;.scalekit.v1.connections.ToggleEnvironmentConnectionRequest\x1a\x31.scalekit.v1.connections.ToggleConnectionResponse\"\xcf\x01\x92\x41\x84\x01\n\x0b\x43onnections\x12\x13\x45nable a connection\x1a\x17\x45nable a SSO ConnectionJG\n\x03\x32\x30\x30\x12@\n\x07Success\x12\x35\n3\x1a\x31.scalekit.v1.connections.ToggleConnectionResponse\x82\xb5\x18\x02\x18T\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02,2*/api/v1/connections/{connection_id}:enable\x12\x96\t\n\x10\x45nableConnection\x12\x30.scalekit.v1.connections.ToggleConnectionRequest\x1a\x31.scalekit.v1.connections.ToggleConnectionResponse\"\x9c\x08\x92\x41\xcb\x07\n\x0b\x43onnections\x12\x1e\x45nable organization connection\x1a\xee\x01\x41\x63tivate an existing connection for the specified organization. When enabled, users can authenticate using this connection. This endpoint changes the connection state from disabled to enabled without modifying other configuration settingsJ_\n\x03\x32\x30\x30\x12X\n\x1f\x43onnection enabled successfully\x12\x35\n3\x1a\x31.scalekit.v1.connections.ToggleConnectionResponsej\xc9\x04\n\rx-codeSamples\x12\xb7\x04\x32\xb4\x04\n\x81\x01*\x7f\n\x16\n\x05label\x12\r\x1a\x0bNode.js SDK\n\x14\n\x04lang\x12\x0c\x1a\njavascript\nO\n\x06source\x12\x45\x1a\x43\x61wait sc.connection.enableConnection(organizationId, connectionId);\n\x7f*}\n\x15\n\x05label\x12\x0c\x1a\nPython SDK\n\x10\n\x04lang\x12\x08\x1a\x06python\nR\n\x06source\x12H\x1a\x46sc.connection.enable_connection(\n organization_id,\n connection_id,\n)\n\x83\x01*\x80\x01\n\x11\n\x05label\x12\x08\x1a\x06Go SDK\n\x0c\n\x04lang\x12\x04\x1a\x02go\n]\n\x06source\x12S\x1aQerr := sc.Connection.EnableConnection(\n ctx,\n organizationId,\n connectionId,\n)\n\xa6\x01*\xa3\x01\n\x13\n\x05label\x12\n\x1a\x08Java SDK\n\x0e\n\x04lang\x12\x06\x1a\x04java\n|\n\x06source\x12r\x1apToggleConnectionResponse response = scalekitClient.connections().enableConnection(connectionId, organizationId);\x82\xb5\x18\x02\x18t\x82\xd3\xe4\x93\x02\x41\x32?/api/v1/organizations/{organization_id}/connections/{id}:enable\x12\xe3\x02\n\x1c\x44isableEnvironmentConnection\x12;.scalekit.v1.connections.ToggleEnvironmentConnectionRequest\x1a\x31.scalekit.v1.connections.ToggleConnectionResponse\"\xd2\x01\x92\x41\x86\x01\n\x0b\x43onnections\x12\x14\x44isable a connection\x1a\x18\x44isable a SSO ConnectionJG\n\x03\x32\x30\x30\x12@\n\x07Success\x12\x35\n3\x1a\x31.scalekit.v1.connections.ToggleConnectionResponse\x82\xb5\x18\x02\x18T\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02-2+/api/v1/connections/{connection_id}:disable\x12\xa4\t\n\x11\x44isableConnection\x12\x30.scalekit.v1.connections.ToggleConnectionRequest\x1a\x31.scalekit.v1.connections.ToggleConnectionResponse\"\xa9\x08\x92\x41\xd7\x07\n\x0b\x43onnections\x12\x1f\x44isable organization connection\x1a\xf4\x01\x44\x65\x61\x63tivate an existing connection for the specified organization. When disabled, users cannot authenticate using this connection. This endpoint changes the connection state from enabled to disabled without modifying other configuration settingsJ`\n\x03\x32\x30\x30\x12Y\n Connection disabled successfully\x12\x35\n3\x1a\x31.scalekit.v1.connections.ToggleConnectionResponsej\xcd\x04\n\rx-codeSamples\x12\xbb\x04\x32\xb8\x04\n\x83\x01*\x80\x01\n\x16\n\x05label\x12\r\x1a\x0bNode.js SDK\n\x14\n\x04lang\x12\x0c\x1a\njavascript\nP\n\x06source\x12\x46\x1a\x44\x61wait sc.connection.disableConnection(organizationId, connectionId);\n\x7f*}\n\x15\n\x05label\x12\x0c\x1a\nPython SDK\n\x10\n\x04lang\x12\x08\x1a\x06python\nR\n\x06source\x12H\x1a\x46sc.connection.disable_connection(\n organization_id,\n connection_id\n)\n\x84\x01*\x81\x01\n\x11\n\x05label\x12\x08\x1a\x06Go SDK\n\x0c\n\x04lang\x12\x04\x1a\x02go\n^\n\x06source\x12T\x1aRerr := sc.Connection.DisableConnection(\n ctx,\n organizationId,\n connectionId,\n)\n\xa7\x01*\xa4\x01\n\x13\n\x05label\x12\n\x1a\x08Java SDK\n\x0e\n\x04lang\x12\x06\x1a\x04java\n}\n\x06source\x12s\x1aqToggleConnectionResponse response = scalekitClient.connections().disableConnection(connectionId, organizationId);\x82\xb5\x18\x02\x18t\x82\xd3\xe4\x93\x02\x42\x32@/api/v1/organizations/{organization_id}/connections/{id}:disable\x12\x80\x03\n\x17GetConnectionTestResult\x12\x37.scalekit.v1.connections.GetConnectionTestResultRequest\x1a\x38.scalekit.v1.connections.GetConnectionTestResultResponse\"\xf1\x01\x92\x41\x8d\x01\n\x0b\x43onnections\x12\x16Test connection result\x1a\x16\x43onnection test resultJN\n\x03\x32\x30\x30\x12G\n\x07Success\x12<\n:\x1a\x38.scalekit.v1.connections.GetConnectionTestResultResponse\x82\xb5\x18\x02\x18t\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x45\x12\x43/api/v1/connections/{connection_id}/test-requests/{test_request_id}\x1a\x10\x92\x41\r\n\x0b\x43onnectionsB7Z5github.com/scalekit-inc/scalekit/pkg/grpc/connectionsb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n)scalekit/v1/connections/connections.proto\x12\x17scalekit.v1.connections\x1a\x1b\x62uf/validate/validate.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1bgoogle/api/visibility.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/wrappers.proto\x1a.protoc-gen-openapiv2/options/annotations.proto\x1a!scalekit/v1/commons/commons.proto\x1a!scalekit/v1/options/options.proto\"\x15\n\x13GetProvidersRequest\"W\n\x14GetProvidersResponse\x12?\n\tproviders\x18\x01 \x03(\x0b\x32!.scalekit.v1.connections.ProviderR\tproviders\"\xf3\x01\n\x08Provider\x12\x35\n\x06key_id\x18\x01 \x01(\tB\x1e\x92\x41\x1b\x32\x0fProvider Key IDJ\x08\"google\"R\x05keyId\x12G\n\x0c\x64isplay_name\x18\x02 \x01(\tB$\x92\x41!2\x15Provider Display NameJ\x08\"Google\"R\x0b\x64isplayName\x12W\n\x0b\x64\x65scription\x18\x03 \x01(\tB0\x92\x41-2\x14Provider DescriptionJ\x15\"Sign In With Google\"H\x00R\x0b\x64\x65scription\x88\x01\x01\x42\x0e\n\x0c_description\"w\n\"CreateEnvironmentConnectionRequest\x12Q\n\nconnection\x18\x01 \x01(\x0b\x32).scalekit.v1.connections.CreateConnectionB\x06\xbaH\x03\xc8\x01\x01R\nconnection\"\x8f\x02\n\x17\x43reateConnectionRequest\x12\x9a\x01\n\x0forganization_id\x18\x01 \x01(\tBq\x92\x41\x65\x32JUnique identifier of the organization for which the connection is created.J\x17\"org_12362474900684814\"\xbaH\x06r\x04\x10\x01\x18 R\x0eorganizationId\x12Q\n\nconnection\x18\x03 \x01(\x0b\x32).scalekit.v1.connections.CreateConnectionB\x06\xbaH\x03\xc8\x01\x01R\nconnectionJ\x04\x08\x02\x10\x03\"\xac\x01\n\x10\x43reateConnection\x12Q\n\x08provider\x18\x01 \x01(\x0e\x32+.scalekit.v1.connections.ConnectionProviderB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x08provider\x12\x45\n\x04type\x18\x02 \x01(\x0e\x32\'.scalekit.v1.connections.ConnectionTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04type\"\xb0\x1b\n\nConnection\x12\x8d\x01\n\x02id\x18\x01 \x01(\tB}\x92\x41z2_Unique identifier for this connection. Used in API calls to reference this specific connection.J\x17\"conn_2123312131125533\"R\x02id\x12\xc2\x01\n\x08provider\x18\x02 \x01(\x0e\x32+.scalekit.v1.connections.ConnectionProviderBy\x92\x41v2lIdentity provider service that handles authentication (such as OKTA, Google, Azure AD, or a custom provider)J\x06\"OKTA\"R\x08provider\x12\xb4\x01\n\x04type\x18\x03 \x01(\x0e\x32\'.scalekit.v1.connections.ConnectionTypeBw\x92\x41t2jAuthentication protocol used by this connection. Can be OIDC (OpenID Connect), SAML, OAUTH, or MAGIC_LINK.J\x06\"OIDC\"R\x04type\x12\xc6\x01\n\x06status\x18\x04 \x01(\x0e\x32).scalekit.v1.connections.ConnectionStatusB\x82\x01\x92\x41|2kCurrent configuration status of the connection. Possible values include IN_PROGRESS, CONFIGURED, and ERROR.J\r\"IN_PROGRESS\"\xe0\x41\x03R\x06status\x12\xab\x01\n\x07\x65nabled\x18\x05 \x01(\x08\x42\x90\x01\x92\x41\x8c\x01\x32\x82\x01\x43ontrols whether users can sign in using this connection. When false, the connection exists but cannot be used for authentication.J\x05\x66\x61lseR\x07\x65nabled\x12\xb0\x01\n\rdebug_enabled\x18\x06 \x01(\x08\x42\x8a\x01\x92\x41\x86\x01\x32~Enables testing mode that allows non-HTTPS endpoints. Should only be enabled in development environments, never in production.J\x04trueR\x0c\x64\x65\x62ugEnabled\x12\xc1\x01\n\x0forganization_id\x18\x07 \x01(\tB\x92\x01\x92\x41\x8e\x01\x32tIdentifier of the organization that owns this connection. Connections are typically scoped to a single organization.J\x16\"org_2123312131125533\"H\x01R\x0eorganizationId\x88\x01\x01\x12\xbd\x01\n\x0fui_button_title\x18\x08 \x01(\tB\x94\x01\x92\x41\x81\x01\x32mCustom text shown on the login button in the user interface. Helps users identify which SSO option to select.J\x10\"Login with SSO\"\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEWR\ruiButtonTitle\x12\xd5\x01\n\x12\x63onfiguration_type\x18\t \x01(\x0e\x32*.scalekit.v1.connections.ConfigurationTypeBz\x92\x41w2kHow the connection was configured: DISCOVERY (automatic configuration) or MANUAL (administrator configured)J\x08\"MANUAL\"R\x11\x63onfigurationType\x12\xdf\x01\n\x13test_connection_uri\x18\x0c \x01(\tB\xae\x01\x92\x41\xaa\x01\x32\x66URI that can be used to test this connection. Visit this URL to verify the connection works correctly.J@\"https://auth.example.com/test-connection/conn_2123312131125533\"R\x11testConnectionUri\x12\x81\x02\n\x11\x61ttribute_mapping\x18\x0f \x03(\x0b\x32\x39.scalekit.v1.connections.Connection.AttributeMappingEntryB\x98\x01\x92\x41|2zMaps identity provider attributes to user profile fields. For example, {\'email\': \'user.mail\', \'name\': \'user.displayName\'}.\xbaH\x16\x9a\x01\x13\x10\x1e\"\x06r\x04\x10\x01\x18\x64*\x07r\x05\x10\x01\x18\x80\x02R\x10\x61ttributeMapping\x12\xb1\x01\n\x0b\x63reate_time\x18\x10 \x01(\x0b\x32\x1a.google.protobuf.TimestampBt\x92\x41_2EWhen this connection was first created. Format is RFC 3339 timestamp.J\x16\"2023-01-15T14:30:00Z\"\xe0\x41\x03\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEWR\ncreateTime\x12\xb1\x01\n\x0bupdate_time\x18\x11 \x01(\x0b\x32\x1a.google.protobuf.TimestampBt\x92\x41_2EWhen this connection was last modified. Format is RFC 3339 timestamp.J\x16\"2023-02-20T09:15:30Z\"\xe0\x41\x03\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEWR\nupdateTime\x12\xb3\x01\n\x0boidc_config\x18\x12 \x01(\x0b\x32-.scalekit.v1.connections.OIDCConnectionConfigBa\x92\x41^2\\Configuration details for OpenID Connect (OIDC) connections. Present only when type is OIDC.H\x00R\noidcConfig\x12\xaa\x01\n\x0bsaml_config\x18\x13 \x01(\x0b\x32\x35.scalekit.v1.connections.SAMLConnectionConfigResponseBP\x92\x41M2KConfiguration details for SAML connections. Present only when type is SAML.H\x00R\nsamlConfig\x12\xa7\x01\n\x0coauth_config\x18\x14 \x01(\x0b\x32..scalekit.v1.connections.OAuthConnectionConfigBR\x92\x41O2MConfiguration details for OAuth connections. Present only when type is OAUTH.H\x00R\x0boauthConfig\x12\xbf\x01\n\x13passwordless_config\x18\x16 \x01(\x0b\x32+.scalekit.v1.connections.PasswordLessConfigB_\x92\x41\\2ZConfiguration details for Magic Link authentication. Present only when type is MAGIC_LINK.H\x00R\x12passwordlessConfig\x12}\n\x06key_id\x18\x15 \x01(\tBa\x92\x41^2\\Alternative identifier for this connection, typically used in frontend applications or URLs.H\x02R\x05keyId\x88\x01\x01\x1a\x43\n\x15\x41ttributeMappingEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x42\n\n\x08settingsB\x12\n\x10_organization_idB\t\n\x07_key_idJ\x04\x08\r\x10\x0f\"w\n\x18\x43reateConnectionResponse\x12[\n\nconnection\x18\x01 \x01(\x0b\x32#.scalekit.v1.connections.ConnectionB\x16\x92\x41\x13\x32\x11\x43onnection DetailR\nconnection\"\xa8\x02\n\"UpdateEnvironmentConnectionRequest\x12~\n\rconnection_id\x18\x01 \x01(\tBY\x92\x41M2+Connection ID. Unique ID for the connectionJ\x16\"conn_121312434123312\"\xca>\x05\xfa\x02\x02id\xbaH\x06r\x04\x10\x01\x18 R\x0c\x63onnectionId\x12\x81\x01\n\nconnection\x18\x03 \x01(\x0b\x32).scalekit.v1.connections.UpdateConnectionB6\x92\x41-2#Connection properties to be updated\xca>\x05\xfa\x02\x02id\xbaH\x03\xc8\x01\x01R\nconnection\"\xf9\x02\n\x17UpdateConnectionRequest\x12q\n\x0forganization_id\x18\x01 \x01(\tBH\x92\x41<2#Organization ID for the Connection.J\x15\"org_121312434123312\"\xbaH\x06r\x04\x10\x01\x18 R\x0eorganizationId\x12\x61\n\x02id\x18\x03 \x01(\tBQ\x92\x41\x45\x32+Connection ID. Unique ID for the connectionJ\x16\"conn_121312434123312\"\xbaH\x06r\x04\x10\x01\x18 R\x02id\x12\x81\x01\n\nconnection\x18\x04 \x01(\x0b\x32).scalekit.v1.connections.UpdateConnectionB6\x92\x41-2#Connection properties to be updated\xca>\x05\xfa\x02\x02id\xbaH\x03\xc8\x01\x01R\nconnectionJ\x04\x08\x02\x10\x03\"\xbf\x0c\n\x10UpdateConnection\x12w\n\x08provider\x18\x02 \x01(\x0e\x32+.scalekit.v1.connections.ConnectionProviderB.\x92\x41#2\x17SSO Connection ProviderJ\x08\"CUSTOM\"\xbaH\x05\x82\x01\x02\x10\x01R\x08provider\x12r\n\x04type\x18\x03 \x01(\x0e\x32\'.scalekit.v1.connections.ConnectionTypeB5\x92\x41*2 Connection Protocol OIDC / SAML J\x06\"OIDC\"\xbaH\x05\x82\x01\x02\x10\x01R\x04type\x12\xae\x01\n\rdebug_enabled\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.BoolValueBm\x92\x41j2bDebug mode for the connection. Debug would allow non HTTPS endpoint to be used with the connectionJ\x04trueR\x0c\x64\x65\x62ugEnabled\x12\x8d\x01\n\x0fui_button_title\x18\x08 \x01(\x0b\x32\x1c.google.protobuf.StringValueBG\x92\x41\x35\x32!Display name for the Login ButtonJ\x10\"Login with SSO\"\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEWR\ruiButtonTitle\x12~\n\x12\x63onfiguration_type\x18\x0b \x01(\x0e\x32*.scalekit.v1.connections.ConfigurationTypeB#\x92\x41 2\x14\x43onfiguration Type. J\x08\"MANUAL\"R\x11\x63onfigurationType\x12\x9d\x01\n\x11\x61ttribute_mapping\x18\x0f \x03(\x0b\x32?.scalekit.v1.connections.UpdateConnection.AttributeMappingEntryB/\x92\x41\x13\x32\x11\x41ttribute Mapping\xbaH\x16\x9a\x01\x13\x10\x1e\"\x06r\x04\x10\x01\x18\x64*\x07r\x05\x10\x01\x18\x80\x02R\x10\x61ttributeMapping\x12\x83\x01\n\x0boidc_config\x18\x10 \x01(\x0b\x32-.scalekit.v1.connections.OIDCConnectionConfigB1\x92\x41.2,OIDC Configuration if ConnectionType == OIDCH\x00R\noidcConfig\x12\x8a\x01\n\x0bsaml_config\x18\x11 \x01(\x0b\x32\x34.scalekit.v1.connections.SAMLConnectionConfigRequestB1\x92\x41.2,SAML Configuration if ConnectionType == SAMLH\x00R\nsamlConfig\x12\x88\x01\n\x0coauth_config\x18\x12 \x01(\x0b\x32..scalekit.v1.connections.OAuthConnectionConfigB3\x92\x41\x30\x32.OAuth Configuration if ConnectionType == OAUTHH\x00R\x0boauthConfig\x12\x9d\x01\n\x13passwordless_config\x18\x14 \x01(\x0b\x32+.scalekit.v1.connections.PasswordLessConfigB=\x92\x41:28Magic Link Configuration if ConnectionType == MAGIC_LINKH\x00R\x12passwordlessConfig\x12%\n\x06key_id\x18\x13 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18 H\x01R\x05keyId\x88\x01\x01\x1a\x43\n\x15\x41ttributeMappingEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x42\n\n\x08settingsB\t\n\x07_key_idJ\x04\x08\x01\x10\x02J\x04\x08\x04\x10\x05J\x04\x08\x05\x10\x06J\x04\x08\t\x10\x0bJ\x04\x08\x0c\x10\x0f\"\x80\x01\n\x18UpdateConnectionResponse\x12\x64\n\nconnection\x18\x01 \x01(\x0b\x32#.scalekit.v1.connections.ConnectionB\x1f\x92\x41\x1c\x32\x1aUpdated Connection detailsR\nconnection\"\x9c\x01\n\"DeleteEnvironmentConnectionRequest\x12v\n\rconnection_id\x18\x03 \x01(\tBQ\x92\x41\x45\x32+Connection ID. Unique ID for the connectionJ\x16\"conn_121312434123312\"\xbaH\x06r\x04\x10\x01\x18 R\x0c\x63onnectionId\"\xf5\x01\n\x17\x44\x65leteConnectionRequest\x12q\n\x0forganization_id\x18\x01 \x01(\tBH\x92\x41<2#Organization ID for the Connection.J\x15\"org_121312434123312\"\xbaH\x06r\x04\x10\x01\x18 R\x0eorganizationId\x12\x61\n\x02id\x18\x03 \x01(\tBQ\x92\x41\x45\x32+Connection ID. Unique ID for the connectionJ\x16\"conn_121312434123312\"\xbaH\x06r\x04\x10\x01\x18 R\x02idJ\x04\x08\x02\x10\x03\"\x92\x01\n\x1fGetEnvironmentConnectionRequest\x12o\n\rconnection_id\x18\x01 \x01(\tBJ\x92\x41>2$Unique identifier for the ConnectionJ\x16\"conn_121312434123312\"\xbaH\x06r\x04\x10\x01\x18 R\x0c\x63onnectionId\"\xfc\x02\n\x14GetConnectionRequest\x12\xba\x01\n\x0forganization_id\x18\x01 \x01(\tB\x90\x01\x92\x41\x83\x01\x32jOrganization identifier (required). Specifies which organization owns the connection you want to retrieve.J\x15\"org_121312434123312\"\xbaH\x06r\x04\x10\x01\x18 R\x0eorganizationId\x12\xa0\x01\n\x02id\x18\x03 \x01(\tB\x8f\x01\x92\x41\x82\x01\x32hConnection identifier (required). Specifies which specific connection to retrieve from the organization.J\x16\"conn_121312434123312\"\xbaH\x06r\x04\x10\x01\x18 R\x02idJ\x04\x08\x02\x10\x03\"\x9a\x02\n\x15GetConnectionResponse\x12\x80\x02\n\nconnection\x18\x01 \x01(\x0b\x32#.scalekit.v1.connections.ConnectionB\xba\x01\x92\x41\xb6\x01\x32\xb3\x01\x43omplete connection details including provider configuration, protocol settings, status, and all metadata. Contains everything needed to understand the connection\'s current state.R\nconnection\"\xb7\x03\n\x16ListConnectionsRequest\x12\x80\x01\n\x0forganization_id\x18\x01 \x01(\tBR\x92\x41\x46\x32-Filter connections by organization identifierJ\x15\"org_121312434123312\"\xbaH\x06r\x04\x10\x01\x18 H\x00R\x0eorganizationId\x88\x01\x01\x12\x7f\n\x06\x64omain\x18\x03 \x01(\tBb\x92\x41V2CFilter connections by email domain associated with the organizationJ\x0f\"hero-saas.app\"\xbaH\x06r\x04\x10\x01\x18 H\x01R\x06\x64omain\x88\x01\x01\x12h\n\x07include\x18\x04 \x01(\tBI\x92\x41\x46\x32\x44\x43omma-separated list of additional fields to include in the responseH\x02R\x07include\x88\x01\x01\x42\x12\n\x10_organization_idB\t\n\x07_domainB\n\n\x08_includeJ\x04\x08\x02\x10\x03\"\x9d\x01\n\x17ListConnectionsResponse\x12\x81\x01\n\x0b\x63onnections\x18\x01 \x03(\x0b\x32\'.scalekit.v1.connections.ListConnectionB6\x92\x41\x33\x32\x31List of connections matching the request criteriaR\x0b\x63onnections\"\xdd\x08\n\x0eListConnection\x12Q\n\x02id\x18\x01 \x01(\tBA\x92\x41>2#Unique identifier of the connectionJ\x17\"conn_2123312131125533\"R\x02id\x12\x8d\x01\n\x08provider\x18\x02 \x01(\x0e\x32+.scalekit.v1.connections.ConnectionProviderBD\x92\x41\x41\x32\x35Identity provider type (e.g., OKTA, Google, Azure AD)J\x08\"CUSTOM\"R\x08provider\x12x\n\x04type\x18\x03 \x01(\x0e\x32\'.scalekit.v1.connections.ConnectionTypeB;\x92\x41\x38\x32.Authentication protocol used by the connectionJ\x06\"OIDC\"R\x04type\x12\x88\x01\n\x06status\x18\x04 \x01(\x0e\x32).scalekit.v1.connections.ConnectionStatusBE\x92\x41?2.Current configuration status of the connectionJ\r\"IN_PROGRESS\"\xe0\x41\x03R\x06status\x12g\n\x07\x65nabled\x18\x05 \x01(\x08\x42M\x92\x41J2AWhether the connection is currently active for organization usersJ\x05\x66\x61lseR\x07\x65nabled\x12\x85\x01\n\x0forganization_id\x18\x06 \x01(\tB\\\x92\x41Y2?Unique identifier of the organization that owns this connectionJ\x16\"org_2123312131125533\"R\x0eorganizationId\x12\x88\x01\n\x0fui_button_title\x18\x07 \x01(\tB`\x92\x41N2:Text displayed on the SSO login button for this connectionJ\x10\"Login with SSO\"\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEWR\ruiButtonTitle\x12t\n\x07\x64omains\x18\x08 \x03(\tBZ\x92\x41W2/List of domains configured with this connectionJ$[\"yourapp.com\", \"yourworkspace.com\"]R\x07\x64omains\x12q\n\x11organization_name\x18\t \x01(\tBD\x92\x41\x41\x32*Name of the organization of the connectionJ\x13\"Your Organization\"R\x10organizationName\"\xcf\x02\n\"ListOrganizationConnectionsRequest\x12\x80\x01\n\tpage_size\x18\x01 \x01(\rBc\x92\x41Y2SMaximum number of organizations to return per page. Value must be between 1 and 30.J\x02\x33\x30\xbaH\x04*\x02\x18\x1eR\x08pageSize\x12\xa5\x01\n\npage_token\x18\x02 \x01(\tB\x85\x01\x92\x41\x81\x01\x32\x61Token from a previous response for pagination. Provide this to retrieve the next page of results.J\x1c\x65yJwYWdlIjoyLCJsaW1pdCI6MzB9R\tpageToken\"\x97\x02\n#ListOrganizationConnectionsResponse\x12&\n\x0fnext_page_token\x18\x01 \x01(\tR\rnextPageToken\x12\x1d\n\ntotal_size\x18\x02 \x01(\rR\ttotalSize\x12&\n\x0fprev_page_token\x18\x03 \x01(\tR\rprevPageToken\x12\x80\x01\n\x0b\x63onnections\x18\x04 \x03(\x0b\x32\'.scalekit.v1.connections.ListConnectionB5\x92\x41\x32\x32\x30List of connections matching the filter criteriaR\x0b\x63onnections\"\xd7\x07\n$SearchOrganizationConnectionsRequest\x12l\n\x05query\x18\x01 \x01(\tBQ\x92\x41G2-Search query Connection ID or Organization IDJ\x16\"conn_121312434123312\"\xbaH\x04r\x02\x18\x64H\x00R\x05query\x88\x01\x01\x12u\n\x08provider\x18\x02 \x01(\x0e\x32+.scalekit.v1.connections.ConnectionProviderB\'\x92\x41\x1c\x32\x12\x46ilter by providerJ\x06\"OKTA\"\xbaH\x05\x82\x01\x02\x10\x01H\x01R\x08provider\x88\x01\x01\x12}\n\x06status\x18\x03 \x01(\x0e\x32).scalekit.v1.connections.ConnectionStatusB5\x92\x41*2\x1b\x46ilter by connection statusJ\x0b\"COMPLETED\"\xbaH\x05\x82\x01\x02\x10\x01H\x02R\x06status\x88\x01\x01\x12\x8c\x01\n\x0f\x63onnection_type\x18\x04 \x01(\x0e\x32\'.scalekit.v1.connections.ConnectionTypeB5\x92\x41*2\x1b\x46ilter by connection statusJ\x0b\"COMPLETED\"\xbaH\x05\x82\x01\x02\x10\x01H\x03R\x0e\x63onnectionType\x88\x01\x01\x12O\n\x07\x65nabled\x18\x07 \x01(\x08\x42\x30\x92\x41-2#Filter by connection enabled statusJ\x06\"true\"H\x04R\x07\x65nabled\x88\x01\x01\x12\x80\x01\n\tpage_size\x18\x05 \x01(\rBc\x92\x41Y2SMaximum number of organizations to return per page. Value must be between 1 and 30.J\x02\x33\x30\xbaH\x04*\x02\x18\x1eR\x08pageSize\x12\xa5\x01\n\npage_token\x18\x06 \x01(\tB\x85\x01\x92\x41\x81\x01\x32\x61Token from a previous response for pagination. Provide this to retrieve the next page of results.J\x1c\x65yJwYWdlIjoyLCJsaW1pdCI6MzB9R\tpageTokenB\x08\n\x06_queryB\x0b\n\t_providerB\t\n\x07_statusB\x12\n\x10_connection_typeB\n\n\x08_enabled\"\x99\x02\n%SearchOrganizationConnectionsResponse\x12&\n\x0fnext_page_token\x18\x01 \x01(\tR\rnextPageToken\x12\x1d\n\ntotal_size\x18\x02 \x01(\rR\ttotalSize\x12&\n\x0fprev_page_token\x18\x03 \x01(\tR\rprevPageToken\x12\x80\x01\n\x0b\x63onnections\x18\x04 \x03(\x0b\x32\'.scalekit.v1.connections.ListConnectionB5\x92\x41\x32\x32\x30List of connections matching the filter criteriaR\x0b\x63onnections\"\x9c\x01\n\"ToggleEnvironmentConnectionRequest\x12v\n\rconnection_id\x18\x02 \x01(\tBQ\x92\x41\x45\x32+Connection ID. Unique ID for the connectionJ\x16\"conn_121312434123312\"\xbaH\x06r\x04\x10\x01\x18 R\x0c\x63onnectionId\"\x9e\x02\n\x17ToggleConnectionRequest\x12\x92\x01\n\x0forganization_id\x18\x01 \x01(\tBi\x92\x41]2DUnique identifier of the organization associated with the connectionJ\x15\"org_121312434123312\"\xbaH\x06r\x04\x10\x01\x18 R\x0eorganizationId\x12h\n\x02id\x18\x03 \x01(\tBX\x92\x41L22Unique identifier for the connection to be toggledJ\x16\"conn_121312434123312\"\xbaH\x06r\x04\x10\x01\x18 R\x02idJ\x04\x08\x02\x10\x03\"\xbc\x02\n\x18ToggleConnectionResponse\x12\xa9\x01\n\x07\x65nabled\x18\x01 \x01(\x08\x42\x8e\x01\x92\x41\x8a\x01\x32\x81\x01\x43urrent state of the connection after the operation. True means the connection is now enabled and can be used for authentication.J\x04trueR\x07\x65nabled\x12\x62\n\rerror_message\x18\x02 \x01(\tB8\x92\x41\x35\x32$Error message if the operation failsJ\r\"placeholder\"H\x00R\x0c\x65rrorMessage\x88\x01\x01\x42\x10\n\x0e_error_message\"\x9a\x0f\n\x14OIDCConnectionConfig\x12j\n\x06issuer\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.StringValueB4\x92\x41\x31\x32\nIssuer URLJ#\"https://youridp.com/service/oauth\"R\x06issuer\x12\xaa\x01\n\x12\x64iscovery_endpoint\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.StringValueB]\x92\x41Z2\x12\x44iscovery EndpointJD\"https://youridp.com/service/oauth/.well-known/openid-configuration\"R\x11\x64iscoveryEndpoint\x12\x84\x01\n\rauthorize_uri\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.StringValueBA\x92\x41>2\rAuthorize URIJ-\"https://youridp.com/service/oauth/authorize\"R\x0c\x61uthorizeUri\x12t\n\ttoken_uri\x18\x04 \x01(\x0b\x32\x1c.google.protobuf.StringValueB9\x92\x41\x36\x32\tToken URIJ)\"https://youridp.com/service/oauth/token\"R\x08tokenUri\x12\x82\x01\n\ruser_info_uri\x18\x05 \x01(\x0b\x32\x1c.google.protobuf.StringValueB@\x92\x41=2\rUser Info URIJ,\"https://youridp.com/service/oauth/userinfo\"R\x0buserInfoUri\x12p\n\x08jwks_uri\x18\x06 \x01(\x0b\x32\x1c.google.protobuf.StringValueB7\x92\x41\x34\x32\x08JWKS URIJ(\"https://youridp.com/service/oauth/jwks\"R\x07jwksUri\x12\\\n\tclient_id\x18\x08 \x01(\x0b\x32\x1c.google.protobuf.StringValueB!\x92\x41\x1e\x32\tClient IDJ\x11\"oauth_client_id\"R\x08\x63lientId\x12l\n\rclient_secret\x18\t \x01(\x0b\x32\x1c.google.protobuf.StringValueB)\x92\x41&2\rClient SecretJ\x15\"oauth_client_secret\"R\x0c\x63lientSecret\x12\x63\n\x06scopes\x18\n \x03(\x0e\x32\".scalekit.v1.connections.OIDCScopeB\'\x92\x41$2\x0bOIDC ScopesJ\x15[\"openid\", \"profile\"]R\x06scopes\x12r\n\x0ftoken_auth_type\x18\x0b \x01(\x0e\x32&.scalekit.v1.connections.TokenAuthTypeB\"\x92\x41\x1f\x32\x0fToken Auth TypeJ\x0c\"URL_PARAMS\"R\rtokenAuthType\x12j\n\x0credirect_uri\x18\x0c \x01(\tBG\x92\x41\x44\x32\x0cRedirect URIJ4\"https://yourapp.com/sso/v1/oidc/conn_1234/callback\"R\x0bredirectUri\x12V\n\x0cpkce_enabled\x18\r \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x17\x92\x41\x14\x32\x0cPKCE EnabledJ\x04trueR\x0bpkceEnabled\x12h\n\x13idp_logout_required\x18\x0e \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x1c\x92\x41\x19\x32\x11\x45nable IDP logoutJ\x04trueR\x11idpLogoutRequired\x12\xb4\x01\n\x18post_logout_redirect_uri\x18\x0f \x01(\x0b\x32\x1c.google.protobuf.StringValueB]\x92\x41W2\x18post logout redirect uriJ;\"https://yourapp.com/sso/v1/oidc/conn_1234/logout/callback\"\xe0\x41\x03R\x15postLogoutRedirectUri\x12\xea\x01\n\x1f\x62\x61\x63kchannel_logout_redirect_uri\x18\x10 \x01(\x0b\x32\x1c.google.protobuf.StringValueB\x84\x01\x92\x41~2\"https://yourapp.com/sso/v1/oidc/conn_1234/backchannel-logout\"\xe0\x41\x03R\x1c\x62\x61\x63kchannelLogoutRedirectUri\"\xa9\x08\n\x15OAuthConnectionConfig\x12\x84\x01\n\rauthorize_uri\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.StringValueBA\x92\x41>2\rAuthorize URIJ-\"https://youridp.com/service/oauth/authorize\"R\x0c\x61uthorizeUri\x12t\n\ttoken_uri\x18\x04 \x01(\x0b\x32\x1c.google.protobuf.StringValueB9\x92\x41\x36\x32\tToken URIJ)\"https://youridp.com/service/oauth/token\"R\x08tokenUri\x12\x82\x01\n\ruser_info_uri\x18\x05 \x01(\x0b\x32\x1c.google.protobuf.StringValueB@\x92\x41=2\rUser Info URIJ,\"https://youridp.com/service/oauth/userinfo\"R\x0buserInfoUri\x12\\\n\tclient_id\x18\x08 \x01(\x0b\x32\x1c.google.protobuf.StringValueB!\x92\x41\x1e\x32\tClient IDJ\x11\"oauth_client_id\"R\x08\x63lientId\x12l\n\rclient_secret\x18\t \x01(\x0b\x32\x1c.google.protobuf.StringValueB)\x92\x41&2\rClient SecretJ\x15\"oauth_client_secret\"R\x0c\x63lientSecret\x12?\n\x06scopes\x18\n \x03(\tB\'\x92\x41$2\x0bOIDC ScopesJ\x15[\"openid\", \"profile\"]R\x06scopes\x12\x62\n\x0credirect_uri\x18\x0c \x01(\tB?\x92\x41<2\x0cRedirect URIJ,\"https://yourapp.com/service/oauth/redirect\"R\x0bredirectUri\x12V\n\x0cpkce_enabled\x18\r \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x17\x92\x41\x14\x32\x0cPKCE EnabledJ\x04trueR\x0bpkceEnabled\x12V\n\x06prompt\x18\x0e \x01(\x0b\x32\x1c.google.protobuf.StringValueB \x92\x41\x1d\x32\x13Prompt for the userJ\x06\"none\"R\x06prompt\x12m\n\x12use_platform_creds\x18\x0f \x01(\x0b\x32\x1a.google.protobuf.BoolValueB#\x92\x41 2\x18Use Scalekit credentialsJ\x04trueR\x10usePlatformCreds\"\xa4\x06\n\x12PasswordLessConfig\x12]\n\x04type\x18\x01 \x01(\x0e\x32).scalekit.v1.connections.PasswordlessTypeB\x1e\x92\x41\x1b\x32\x11Passwordless TypeJ\x06\"LINK\"R\x04type\x12W\n\tfrequency\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB\x16\x92\x41\x13\x32\x0eLink FrequencyJ\x01\x31H\x00R\tfrequency\x88\x01\x01\x12\x63\n\x08validity\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB$\x92\x41!2\x18Link Validity in SecondsJ\x05\"600\"H\x01R\x08validity\x88\x01\x01\x12\x86\x01\n\x1b\x65nforce_same_browser_origin\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.BoolValueB&\x92\x41#2\x1b\x45nforce Same Browser OriginJ\x04trueH\x02R\x18\x65nforceSameBrowserOrigin\x88\x01\x01\x12t\n\x15\x63ode_challenge_length\x18\x05 \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB\x1d\x92\x41\x1a\x32\x15\x43ode Challenge LengthJ\x01\x36H\x03R\x13\x63odeChallengeLength\x88\x01\x01\x12\x84\x01\n\x13\x63ode_challenge_type\x18\x06 \x01(\x0e\x32*.scalekit.v1.connections.CodeChallengeTypeB#\x92\x41 2\x13\x43ode Challenge TypeJ\t\"NUMERIC\"H\x04R\x11\x63odeChallengeType\x88\x01\x01\x42\x0c\n\n_frequencyB\x0b\n\t_validityB\x1e\n\x1c_enforce_same_browser_originB\x18\n\x16_code_challenge_lengthB\x16\n\x14_code_challenge_type\"\xab\x0f\n\x1bSAMLConnectionConfigRequest\x12\x8a\x01\n\x10idp_metadata_url\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.StringValueBB\x92\x41?2\x10IDP Metadata URLJ+\"https://youridp.com/service/saml/metadata\"R\x0eidpMetadataUrl\x12x\n\ridp_entity_id\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.StringValueB6\x92\x41\x33\x32\rIDP Entity IDJ\"\"https://youridp.com/service/saml\"R\x0bidpEntityId\x12v\n\x0bidp_sso_url\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.StringValueB8\x92\x41\x35\x32\x0bIDP SSO URLJ&\"https://youridp.com/service/saml/sso\"R\tidpSsoUrl\x12[\n\x0fidp_certificate\x18\x04 \x01(\x0b\x32\x1c.google.protobuf.StringValueB\x14\x92\x41\x11\x32\x0fIDP CertificateR\x0eidpCertificate\x12v\n\x0bidp_slo_url\x18\x05 \x01(\x0b\x32\x1c.google.protobuf.StringValueB8\x92\x41\x35\x32\x0bIDP SLO URLJ&\"https://youridp.com/service/saml/slo\"R\tidpSloUrl\x12l\n\x0fui_button_title\x18\x06 \x01(\x0b\x32\x1c.google.protobuf.StringValueB&\x92\x41#2\x0fUI Button TitleJ\x10\"Login with SSO\"R\ruiButtonTitle\x12t\n\x12idp_name_id_format\x18\x07 \x01(\x0e\x32%.scalekit.v1.connections.NameIdFormatB \x92\x41\x1d\x32\x12IDP Name ID FormatJ\x07\"EMAIL\"R\x0fidpNameIdFormat\x12\x89\x01\n\x17idp_sso_request_binding\x18\x08 \x01(\x0e\x32\'.scalekit.v1.connections.RequestBindingB)\x92\x41&2\x17IDP SSO Request BindingJ\x0b\"HTTP_POST\"R\x14idpSsoRequestBinding\x12\x8d\x01\n\x17idp_slo_request_binding\x18\t \x01(\x0e\x32\'.scalekit.v1.connections.RequestBindingB-\x92\x41*2\x17IDP SLO Request BindingJ\x0f\"HTTP_REDIRECT\"R\x14idpSloRequestBinding\x12\x93\x01\n\x13saml_signing_option\x18\n \x01(\x0e\x32+.scalekit.v1.connections.SAMLSigningOptionsB6\x92\x41\x33\x32\x13SAML Signing OptionJ\x1c\"SAML_ONLY_RESPONSE_SIGNING\"R\x11samlSigningOption\x12S\n\x0b\x66orce_authn\x18\x0e \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x16\x92\x41\x13\x32\x0b\x46orce AuthnJ\x04trueR\nforceAuthn\x12\x96\x01\n\x14\x64\x65\x66\x61ult_redirect_uri\x18\x0f \x01(\x0b\x32\x1c.google.protobuf.StringValueBF\x92\x41\x43\x32\x14\x44\x65\x66\x61ult Redirect URIJ+\"https://yourapp.com/service/saml/redirect\"R\x12\x64\x65\x66\x61ultRedirectUri\x12k\n\x13\x61ssertion_encrypted\x18\x10 \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x1e\x92\x41\x1b\x32\x13\x41ssertion EncryptedJ\x04trueR\x12\x61ssertionEncrypted\x12j\n\x13want_request_signed\x18\x11 \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x1e\x92\x41\x1b\x32\x13Want Request SignedJ\x04trueR\x11wantRequestSigned\x12q\n\x0e\x63\x65rtificate_id\x18\x12 \x01(\x0b\x32\x1c.google.protobuf.StringValueB,\x92\x41)2\x0e\x43\x65rtificate IDJ\x17\"cer_35585423166144613\"R\rcertificateId\x12\x62\n\x10idp_slo_required\x18\x13 \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x1c\x92\x41\x19\x32\x11\x45nable IDP logoutJ\x04trueR\x0eidpSloRequiredJ\x04\x08\x0b\x10\x0c\"\xf9\x13\n\x1cSAMLConnectionConfigResponse\x12W\n\x0csp_entity_id\x18\x01 \x01(\tB5\x92\x41\x32\x32\x0cSP Entity IDJ\"\"https://yourapp.com/service/saml\"R\nspEntityId\x12m\n\x10sp_assertion_url\x18\x02 \x01(\tBC\x92\x41@2\x10SP Assertion URLJ,\"https://youridp.com/service/saml/assertion\"R\x0espAssertionUrl\x12i\n\x0fsp_metadata_url\x18\x03 \x01(\tBA\x92\x41>2\x0fSP Metadata URLJ+\"https://youridp.com/service/saml/metadata\"R\rspMetadataUrl\x12\x8a\x01\n\x10idp_metadata_url\x18\x04 \x01(\x0b\x32\x1c.google.protobuf.StringValueBB\x92\x41?2\x10IDP Metadata URLJ+\"https://youridp.com/service/saml/metadata\"R\x0eidpMetadataUrl\x12x\n\ridp_entity_id\x18\x05 \x01(\x0b\x32\x1c.google.protobuf.StringValueB6\x92\x41\x33\x32\rIDP Entity IDJ\"\"https://youridp.com/service/saml\"R\x0bidpEntityId\x12v\n\x0bidp_sso_url\x18\x06 \x01(\x0b\x32\x1c.google.protobuf.StringValueB8\x92\x41\x35\x32\x0bIDP SSO URLJ&\"https://youridp.com/service/saml/sso\"R\tidpSsoUrl\x12i\n\x10idp_certificates\x18\x07 \x03(\x0b\x32\'.scalekit.v1.connections.IDPCertificateB\x15\x92\x41\x12\x32\x10IDP CertificatesR\x0fidpCertificates\x12v\n\x0bidp_slo_url\x18\x08 \x01(\x0b\x32\x1c.google.protobuf.StringValueB8\x92\x41\x35\x32\x0bIDP SLO URLJ&\"https://youridp.com/service/saml/slo\"R\tidpSloUrl\x12l\n\x0fui_button_title\x18\t \x01(\x0b\x32\x1c.google.protobuf.StringValueB&\x92\x41#2\x0fUI Button TitleJ\x10\"Login with SSO\"R\ruiButtonTitle\x12t\n\x12idp_name_id_format\x18\n \x01(\x0e\x32%.scalekit.v1.connections.NameIdFormatB \x92\x41\x1d\x32\x12IDP Name ID FormatJ\x07\"EMAIL\"R\x0fidpNameIdFormat\x12\x89\x01\n\x17idp_sso_request_binding\x18\x0b \x01(\x0e\x32\'.scalekit.v1.connections.RequestBindingB)\x92\x41&2\x17IDP SSO Request BindingJ\x0b\"HTTP_POST\"R\x14idpSsoRequestBinding\x12\x89\x01\n\x17idp_slo_request_binding\x18\x0c \x01(\x0e\x32\'.scalekit.v1.connections.RequestBindingB)\x92\x41&2\x17IDP SLO Request BindingJ\x0b\"HTTP_POST\"R\x14idpSloRequestBinding\x12\x93\x01\n\x13saml_signing_option\x18\r \x01(\x0e\x32+.scalekit.v1.connections.SAMLSigningOptionsB6\x92\x41\x33\x32\x13SAML Signing OptionJ\x1c\"SAML_ONLY_RESPONSE_SIGNING\"R\x11samlSigningOption\x12{\n\x19\x61llow_idp_initiated_login\x18\x0e \x01(\x0b\x32\x1a.google.protobuf.BoolValueB$\x92\x41!2\x19\x41llow IDP Initiated LoginJ\x04trueR\x16\x61llowIdpInitiatedLogin\x12S\n\x0b\x66orce_authn\x18\x0f \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x16\x92\x41\x13\x32\x0b\x46orce AuthnJ\x04trueR\nforceAuthn\x12\x96\x01\n\x14\x64\x65\x66\x61ult_redirect_uri\x18\x10 \x01(\x0b\x32\x1c.google.protobuf.StringValueBF\x92\x41\x43\x32\x14\x44\x65\x66\x61ult Redirect URIJ+\"https://yourapp.com/service/saml/redirect\"R\x12\x64\x65\x66\x61ultRedirectUri\x12k\n\x13\x61ssertion_encrypted\x18\x11 \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x1e\x92\x41\x1b\x32\x13\x41ssertion EncryptedJ\x04trueR\x12\x61ssertionEncrypted\x12j\n\x13want_request_signed\x18\x12 \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x1e\x92\x41\x1b\x32\x13Want Request SignedJ\x04trueR\x11wantRequestSigned\x12q\n\x0e\x63\x65rtificate_id\x18\x13 \x01(\x0b\x32\x1c.google.protobuf.StringValueB,\x92\x41)2\x0e\x43\x65rtificate IDJ\x17\"cer_35585423166144613\"R\rcertificateId\x12\x62\n\x10idp_slo_required\x18\x14 \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x1c\x92\x41\x19\x32\x11\x45nable IDP logoutJ\x04trueR\x0eidpSloRequired\x12\x96\x01\n\nsp_slo_url\x18\x15 \x01(\x0b\x32\x1c.google.protobuf.StringValueBZ\x92\x41T2\x18Service Provider SLO urlJ8\"https://yourapp.com/sso/v1/saml/conn_1234/slo/callback\"\xe0\x41\x03R\x08spSloUrl\"\xbf\x03\n\x0eIDPCertificate\x12\x36\n\x0b\x63\x65rtificate\x18\x01 \x01(\tB\x14\x92\x41\x11\x32\x0fIDP CertificateR\x0b\x63\x65rtificate\x12s\n\x0b\x63reate_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampB6\x92\x41\x33\x32\x19\x43\x65rtificate Creation TimeJ\x16\"2021-09-01T00:00:00Z\"R\ncreateTime\x12q\n\x0b\x65xpiry_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampB4\x92\x41\x31\x32\x17\x43\x65rtificate Expiry TimeJ\x16\"2021-09-01T00:00:00Z\"R\nexpiryTime\x12\x38\n\x02id\x18\x04 \x01(\tB(\x92\x41%2\x0e\x43\x65rtificate IDJ\x13\"cert_123123123123\"R\x02id\x12S\n\x06issuer\x18\x05 \x01(\tB;\x92\x41\x38\x32\x12\x43\x65rtificate IssuerJ\"\"https://youridp.com/service/saml\"R\x06issuer\"b\n\x16GetOIDCMetadataRequest\x12H\n\x08metadata\x18\x01 \x01(\x0b\x32,.scalekit.v1.connections.OIDCMetadataRequestR\x08metadata\"9\n\x13OIDCMetadataRequest\x12\"\n\x06issuer\x18\x01 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x18\xc8\x01R\x06issuer\"\xd7\x01\n\x17GetOIDCMetadataResponse\x12\x16\n\x06issuer\x18\x01 \x01(\tR\x06issuer\x12\x35\n\x16\x61uthorization_endpoint\x18\x02 \x01(\tR\x15\x61uthorizationEndpoint\x12%\n\x0etoken_endpoint\x18\x03 \x01(\tR\rtokenEndpoint\x12+\n\x11userinfo_endpoint\x18\x04 \x01(\tR\x10userinfoEndpoint\x12\x19\n\x08jwks_uri\x18\x05 \x01(\tR\x07jwksUri\"b\n\x16GetSAMLMetadataRequest\x12H\n\x08metadata\x18\x01 \x01(\x0b\x32,.scalekit.v1.connections.SAMLMetadataRequestR\x08metadata\"D\n\x13SAMLMetadataRequest\x12-\n\x0cmetadata_url\x18\x01 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x18\xc8\x01R\x0bmetadataUrl\"\xb4\x02\n\x17GetSAMLMetadataResponse\x12\"\n\ridp_entity_id\x18\x01 \x01(\tR\x0bidpEntityId\x12\x1e\n\x0bidp_sso_url\x18\x02 \x01(\tR\tidpSsoUrl\x12\x1e\n\x0bidp_slo_url\x18\x03 \x01(\tR\tidpSloUrl\x12)\n\x10idp_certificates\x18\x04 \x03(\tR\x0fidpCertificates\x12+\n\x12idp_name_id_format\x18\x05 \x01(\tR\x0fidpNameIdFormat\x12\'\n\x0frequest_binding\x18\x06 \x01(\tR\x0erequestBinding\x12\x34\n\x16want_assertions_signed\x18\x07 \x01(\x08R\x14wantAssertionsSigned\"u\n GetSAMLCertificateDetailsRequest\x12Q\n\x0b\x63\x65rtificate\x18\x01 \x01(\x0b\x32/.scalekit.v1.connections.SAMLCertificateRequestR\x0b\x63\x65rtificate\"5\n\x16SAMLCertificateRequest\x12\x1b\n\x04text\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x04text\"\xa5\x01\n!GetSAMLCertificateDetailsResponse\x12\x12\n\x04text\x18\x01 \x01(\tR\x04text\x12\x1b\n\tnot_after\x18\x02 \x01(\x03R\x08notAfter\x12\x1d\n\nnot_before\x18\x03 \x01(\x03R\tnotBefore\x12\x18\n\x07subject\x18\x04 \x01(\tR\x07subject\x12\x16\n\x06issuer\x18\x05 \x01(\tR\x06issuer\"\x86\x01\n\x1eGetConnectionTestResultRequest\x12,\n\rconnection_id\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x0c\x63onnectionId\x12\x36\n\x0ftest_request_id\x18\x02 \x01(\tB\x0e\xbaH\x0br\t\x10\x01:\x05test_R\rtestRequestId\"\xbd\x02\n\x1fGetConnectionTestResultResponse\x12\x41\n\x06status\x18\x01 \x01(\x0e\x32).scalekit.v1.connections.TestResultStatusR\x06status\x12 \n\tuser_info\x18\x02 \x01(\tH\x00R\x08userInfo\x88\x01\x01\x12\x19\n\x05\x65rror\x18\x03 \x01(\tH\x01R\x05\x65rror\x88\x01\x01\x12\x30\n\x11\x65rror_description\x18\x04 \x01(\tH\x02R\x10\x65rrorDescription\x88\x01\x01\x12(\n\rerror_details\x18\x05 \x01(\tH\x03R\x0c\x65rrorDetails\x88\x01\x01\x42\x0c\n\n_user_infoB\x08\n\x06_errorB\x14\n\x12_error_descriptionB\x10\n\x0e_error_details\"\x1a\n\x18PasswordConnectionConfig*W\n\x11\x43odeChallengeType\x12#\n\x1f\x43ODE_CHALLENGE_TYPE_UNSPECIFIED\x10\x00\x12\x0b\n\x07NUMERIC\x10\x01\x12\x10\n\x0c\x41LPHANUMERIC\x10\x02*R\n\x11\x43onfigurationType\x12\"\n\x1e\x43ONFIGURATION_TYPE_UNSPECIFIED\x10\x00\x12\r\n\tDISCOVERY\x10\x01\x12\n\n\x06MANUAL\x10\x02*a\n\x0cNameIdFormat\x12\x16\n\x12NAME_ID_FORMAT_NIL\x10\x00\x12\x0f\n\x0bUNSPECIFIED\x10\x01\x12\t\n\x05\x45MAIL\x10\x02\x12\r\n\tTRANSIENT\x10\x03\x12\x0e\n\nPERSISTENT\x10\x04*U\n\x10PasswordlessType\x12 \n\x1cPasswordlessType_UNSPECIFIED\x10\x00\x12\x08\n\x04LINK\x10\x01\x12\x07\n\x03OTP\x10\x02\x12\x0c\n\x08LINK_OTP\x10\x03*9\n\x10TestResultStatus\x12\x0b\n\x07PENDING\x10\x00\x12\x0b\n\x07SUCCESS\x10\x01\x12\x0b\n\x07\x46\x41ILURE\x10\x02*\xd8\x01\n\x12SAMLSigningOptions\x12$\n SAML_SIGNING_OPTIONS_UNSPECIFIED\x10\x00\x12\x0e\n\nNO_SIGNING\x10\x01\x12\x1e\n\x1aSAML_ONLY_RESPONSE_SIGNING\x10\x02\x12\x1f\n\x1bSAML_ONLY_ASSERTION_SIGNING\x10\x03\x12#\n\x1fSAML_RESPONSE_ASSERTION_SIGNING\x10\x04\x12&\n\"SAML_RESPONSE_OR_ASSERTION_SIGNING\x10\x05*S\n\x0eRequestBinding\x12\x1f\n\x1bREQUEST_BINDING_UNSPECIFIED\x10\x00\x12\r\n\tHTTP_POST\x10\x01\x12\x11\n\rHTTP_REDIRECT\x10\x02*P\n\rTokenAuthType\x12\x1f\n\x1bTOKEN_AUTH_TYPE_UNSPECIFIED\x10\x00\x12\x0e\n\nURL_PARAMS\x10\x01\x12\x0e\n\nBASIC_AUTH\x10\x02*c\n\tOIDCScope\x12\x1a\n\x16OIDC_SCOPE_UNSPECIFIED\x10\x00\x12\n\n\x06openid\x10\x01\x12\x0b\n\x07profile\x10\x02\x12\t\n\x05\x65mail\x10\x03\x12\x0b\n\x07\x61\x64\x64ress\x10\x04\x12\t\n\x05phone\x10\x05*\\\n\x0e\x43onnectionType\x12\x0b\n\x07INVALID\x10\x00\x12\x08\n\x04OIDC\x10\x01\x12\x08\n\x04SAML\x10\x02\x12\x0c\n\x08PASSWORD\x10\x03\x12\t\n\x05OAUTH\x10\x04\x12\x10\n\x0cPASSWORDLESS\x10\x05*`\n\x10\x43onnectionStatus\x12!\n\x1d\x43ONNECTION_STATUS_UNSPECIFIED\x10\x00\x12\t\n\x05\x44RAFT\x10\x01\x12\x0f\n\x0bIN_PROGRESS\x10\x02\x12\r\n\tCOMPLETED\x10\x03*\x98\x02\n\x12\x43onnectionProvider\x12#\n\x1f\x43ONNECTION_PROVIDER_UNSPECIFIED\x10\x00\x12\x08\n\x04OKTA\x10\x01\x12\n\n\x06GOOGLE\x10\x02\x12\x10\n\x0cMICROSOFT_AD\x10\x03\x12\t\n\x05\x41UTH0\x10\x04\x12\x0c\n\x08ONELOGIN\x10\x05\x12\x11\n\rPING_IDENTITY\x10\x06\x12\r\n\tJUMPCLOUD\x10\x07\x12\n\n\x06\x43USTOM\x10\x08\x12\n\n\x06GITHUB\x10\t\x12\n\n\x06GITLAB\x10\n\x12\x0c\n\x08LINKEDIN\x10\x0b\x12\x0e\n\nSALESFORCE\x10\x0c\x12\r\n\tMICROSOFT\x10\r\x12\x11\n\rIDP_SIMULATOR\x10\x0e\x12\x0c\n\x08SCALEKIT\x10\x0f\x12\x08\n\x04\x41\x44\x46S\x10\x10\x32\x8fZ\n\x11\x43onnectionService\x12\xb0\x04\n\x0cGetProviders\x12,.scalekit.v1.connections.GetProvidersRequest\x1a-.scalekit.v1.connections.GetProvidersResponse\"\xc2\x03\x92\x41\x90\x03\n\x0b\x43onnections\x12#List supported connection providers\x1a\xe6\x01Retrieves all available identity providers for configuring connections. The list includes authentication providers (SAML, OIDC), directory services, and social identity providers, with their metadata and configuration requirementsJs\n\x03\x32\x30\x30\x12l\n7Successfully retrieved the list of connection providers\x12\x31\n/\x1a-.scalekit.v1.connections.GetProvidersResponse\x82\xb5\x18\x02\x18t\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x13\x12\x11/api/v1/providers\x12\x91\x03\n\x1b\x43reateEnvironmentConnection\x12;.scalekit.v1.connections.CreateEnvironmentConnectionRequest\x1a\x31.scalekit.v1.connections.CreateConnectionResponse\"\x81\x02\x92\x41\xc1\x01\n\x0b\x43onnections\x12\x17\x43reate a new connection\x1a\x38\x45stablish a new connection for the specified environmentJ_\n\x03\x32\x30\x31\x12X\n\x1f\x43onnection created successfully\x12\x35\n3\x1a\x31.scalekit.v1.connections.CreateConnectionResponse\x82\xb5\x18\x02\x18T\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02!\"\x13/api/v1/connections:\nconnection\x12\x96\x08\n\x10\x43reateConnection\x12\x30.scalekit.v1.connections.CreateConnectionRequest\x1a\x31.scalekit.v1.connections.CreateConnectionResponse\"\x9c\x07\x92\x41\xbc\x06\n\x0b\x43onnections\x12\x17\x43reate a new connection\x1a=Establish a new SSO connection for the specified organizationJ_\n\x03\x32\x30\x31\x12X\n\x1f\x43onnection created successfully\x12\x35\n3\x1a\x31.scalekit.v1.connections.CreateConnectionResponsej\xf3\x04\n\rx-codeSamples\x12\xe1\x04\x32\xde\x04\n\x99\x01*\x96\x01\n\x16\n\x05label\x12\r\x1a\x0bNode.js SDK\n\x14\n\x04lang\x12\x0c\x1a\njavascript\nf\n\x06source\x12\\\x1aZconst connection = await sc.connection.createConnection(organizationId, connectionConfig);\n\x90\x01*\x8d\x01\n\x15\n\x05label\x12\x0c\x1a\nPython SDK\n\x10\n\x04lang\x12\x08\x1a\x06python\nb\n\x06source\x12X\x1aVconnection = sc.connection.create_connection(\n organization_id,\n connection_config\n)\n\x93\x01*\x90\x01\n\x11\n\x05label\x12\x08\x1a\x06Go SDK\n\x0c\n\x04lang\x12\x04\x1a\x02go\nm\n\x06source\x12\x63\x1a\x61\x63onnection, err := sc.Connection.CreateConnection(\n ctx,\n organizationId,\n connectionConfig,\n)\n\x96\x01*\x93\x01\n\x13\n\x05label\x12\n\x1a\x08Java SDK\n\x0e\n\x04lang\x12\x06\x1a\x04java\nl\n\x06source\x12\x62\x1a`Connection connection = client.connections().createConnection(organizationId, connectionConfig);\x82\xb5\x18\x02\x18t\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x41\"3/api/v1/organizations/{organization_id}/connections:\nconnection\x12\xb2\x03\n\x18GetEnvironmentConnection\x12\x38.scalekit.v1.connections.GetEnvironmentConnectionRequest\x1a..scalekit.v1.connections.GetConnectionResponse\"\xab\x02\x92\x41\xe7\x01\n\x0b\x43onnections\x12\x1bRetrieve connection details\x1aSObtain detailed information about a specific connection using its unique identifierJf\n\x03\x32\x30\x30\x12_\n)Successfully retrieved connection details\x12\x32\n0\x1a..scalekit.v1.connections.GetConnectionResponse\x82\xb5\x18\x02\x18T\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02%\x12#/api/v1/connections/{connection_id}\x12\xa1\t\n\rGetConnection\x12-.scalekit.v1.connections.GetConnectionRequest\x1a..scalekit.v1.connections.GetConnectionResponse\"\xb0\x08\x92\x41\xe6\x07\n\x0b\x43onnections\x12\x16Get connection details\x1a\xd1\x01Retrieves the complete configuration and status details for a specific connection by its ID within an organization. Returns all connection properties including provider settings, protocols, and current status.J\x85\x01\n\x03\x32\x30\x30\x12~\nHSuccessfully retrieved connection details for the specified organization\x12\x32\n0\x1a..scalekit.v1.connections.GetConnectionResponsej\xe2\x04\n\rx-codeSamples\x12\xd0\x04\x32\xcd\x04\n\x98\x01*\x95\x01\n\x16\n\x05label\x12\r\x1a\x0bNode.js SDK\n\x14\n\x04lang\x12\x0c\x1a\njavascript\ne\n\x06source\x12[\x1aYconst connection = await sc.connection.getConnection(\n organizationId,\n connectionId\n);\n\x8a\x01*\x87\x01\n\x15\n\x05label\x12\x0c\x1a\nPython SDK\n\x10\n\x04lang\x12\x08\x1a\x06python\n\\\n\x06source\x12R\x1aPconnection = sc.connection.get_connection(\n organization_id,\n connection_id,\n)\n\x8c\x01*\x89\x01\n\x11\n\x05label\x12\x08\x1a\x06Go SDK\n\x0c\n\x04lang\x12\x04\x1a\x02go\nf\n\x06source\x12\\\x1aZconnection, err := sc.Connection.GetConnection(\n ctx,\n organizationId,\n connectionId,\n)\n\x93\x01*\x90\x01\n\x13\n\x05label\x12\n\x1a\x08Java SDK\n\x0e\n\x04lang\x12\x06\x1a\x04java\ni\n\x06source\x12_\x1a]Connection connection = client.connections().getConnectionById(connectionId, organizationId);\x82\xb5\x18\x02\x18t\x82\xd3\xe4\x93\x02:\x12\x38/api/v1/organizations/{organization_id}/connections/{id}\x12\xa5\x07\n\x0fListConnections\x12/.scalekit.v1.connections.ListConnectionsRequest\x1a\x30.scalekit.v1.connections.ListConnectionsResponse\"\xae\x06\x92\x41\xfa\x05\n\x0b\x43onnections\x12\x10List connections\x1a\x32Retrieves a list of connections in the environmentJa\n\x03\x32\x30\x30\x12Z\n\"Successfully retrieved connections\x12\x34\n2\x1a\x30.scalekit.v1.connections.ListConnectionsResponsej\xc1\x04\n\rx-codeSamples\x12\xaf\x04\x32\xac\x04\n\x87\x01*\x84\x01\n\x16\n\x05label\x12\r\x1a\x0bNode.js SDK\n\x14\n\x04lang\x12\x0c\x1a\njavascript\nT\n\x06source\x12J\x1aHconst connections = await sc.connection.listConnections(organizationId);\nz*x\n\x15\n\x05label\x12\x0c\x1a\nPython SDK\n\x10\n\x04lang\x12\x08\x1a\x06python\nM\n\x06source\x12\x43\x1a\x41\x63onnections = sc.connection.list_connections(\n organization_id\n)\n}*{\n\x11\n\x05label\x12\x08\x1a\x06Go SDK\n\x0c\n\x04lang\x12\x04\x1a\x02go\nX\n\x06source\x12N\x1aLconnections, err := sc.Connection.ListConnections(\n ctx,\n organizationId\n)\n\xa4\x01*\xa1\x01\n\x13\n\x05label\x12\n\x1a\x08Java SDK\n\x0e\n\x04lang\x12\x06\x1a\x04java\nz\n\x06source\x12p\x1anListConnectionsResponse response = scalekitClient.connections().listConnectionsByOrganization(organizationId);\x82\xb5\x18\x02\x18t\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x15\x12\x13/api/v1/connections\x12\xa8\x03\n\x1bListOrganizationConnections\x12;.scalekit.v1.connections.ListOrganizationConnectionsRequest\x1a<.scalekit.v1.connections.ListOrganizationConnectionsResponse\"\x8d\x02\x92\x41\xd8\x01\n\x0b\x43onnections\x12\x1dList organization connections\x1a\x39Retrieves a list of connections for all the organizationsJo\n\x03\x32\x30\x30\x12h\n\"Successfully retrieved connections\x12\x42\n@\x1a>.scalekit.v1.connections.SearchOrganizationConnectionsResponse\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02%\x12#/api/v1/organizations/-/connections\x12\xcd\x03\n\x1dSearchOrganizationConnections\x12=.scalekit.v1.connections.SearchOrganizationConnectionsRequest\x1a>.scalekit.v1.connections.SearchOrganizationConnectionsResponse\"\xac\x02\x92\x41\xe1\x01\n\x0b\x43onnections\x12\x1fSearch organization connections\x1a\x44Search with query or filters provided and return list of connectionsJk\n\x03\x32\x30\x30\x12\x64\n\x1eSuccessfully found connections\x12\x42\n@\x1a>.scalekit.v1.connections.SearchOrganizationConnectionsResponse\x82\xb5\x18\x02\x18T\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02,\x12*/api/v1/organizations/-/connections:search\x12\xf1\x02\n\x1bUpdateEnvironmentConnection\x12;.scalekit.v1.connections.UpdateEnvironmentConnectionRequest\x1a\x31.scalekit.v1.connections.UpdateConnectionResponse\"\xe1\x01\x92\x41\x91\x01\n\x0b\x43onnections\x12\x13Update a connection\x1a\x17Update a SSO ConnectionJT\n\x03\x32\x30\x30\x12M\n\x14Updated Successfully\x12\x35\n3\x1a\x31.scalekit.v1.connections.UpdateConnectionResponse\x82\xb5\x18\x02\x18T\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x31\x32#/api/v1/connections/{connection_id}:\nconnection\x12\xb4\x08\n\x10UpdateConnection\x12\x30.scalekit.v1.connections.UpdateConnectionRequest\x1a\x31.scalekit.v1.connections.UpdateConnectionResponse\"\xba\x07\x92\x41\xd5\x06\n\x0b\x43onnections\x12$Update a connection for organization\x1a\x17Update a SSO ConnectionJT\n\x03\x32\x30\x30\x12M\n\x14Updated Successfully\x12\x35\n3\x1a\x31.scalekit.v1.connections.UpdateConnectionResponsej\xb0\x05\n\rx-codeSamples\x12\x9e\x05\x32\x9b\x05\n\xa7\x01*\xa4\x01\n\x16\n\x05label\x12\r\x1a\x0bNode.js SDK\n\x14\n\x04lang\x12\x0c\x1a\njavascript\nt\n\x06source\x12j\x1ahconst connection = await sc.connection.updateConnection(organizationId, connectionId, connectionConfig);\n\xa1\x01*\x9e\x01\n\x15\n\x05label\x12\x0c\x1a\nPython SDK\n\x10\n\x04lang\x12\x08\x1a\x06python\ns\n\x06source\x12i\x1agconnection = sc.connection.update_connection(\n organization_id,\n connection_id,\n connection_config\n)\n\xa3\x01*\xa0\x01\n\x11\n\x05label\x12\x08\x1a\x06Go SDK\n\x0c\n\x04lang\x12\x04\x1a\x02go\n}\n\x06source\x12s\x1aqconnection, err := sc.Connection.UpdateConnection(\n ctx,\n organizationId,\n connectionId,\n connectionConfig,\n)\n\xa4\x01*\xa1\x01\n\x13\n\x05label\x12\n\x1a\x08Java SDK\n\x0e\n\x04lang\x12\x06\x1a\x04java\nz\n\x06source\x12p\x1anConnection connection = client.connections().updateConnection(connectionId, organizationId, connectionConfig);\x82\xb5\x18\x02\x18t\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x46\x32\x38/api/v1/organizations/{organization_id}/connections/{id}:\nconnection\x12\x92\x02\n\x1b\x44\x65leteEnvironmentConnection\x12;.scalekit.v1.connections.DeleteEnvironmentConnectionRequest\x1a\x16.google.protobuf.Empty\"\x9d\x01\x92\x41Z\n\x0b\x43onnections\x12\x13\x44\x65lete a connection\x1a\x17\x44\x65lete a SSO ConnectionJ\x1d\n\x03\x32\x30\x30\x12\x16\n\x14\x44\x65leted Successfully\x82\xb5\x18\x02\x18T\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02%*#/api/v1/connections/{connection_id}\x12\xc0\x06\n\x10\x44\x65leteConnection\x12\x30.scalekit.v1.connections.DeleteConnectionRequest\x1a\x16.google.protobuf.Empty\"\xe1\x05\x92\x41\x88\x05\n\x0b\x43onnections\x12$Delete a connection for organization\x1a\x17\x44\x65lete a SSO ConnectionJ\x1d\n\x03\x32\x30\x30\x12\x16\n\x14\x44\x65leted Successfullyj\x9a\x04\n\rx-codeSamples\x12\x88\x04\x32\x85\x04\n\x81\x01*\x7f\n\x16\n\x05label\x12\r\x1a\x0bNode.js SDK\n\x14\n\x04lang\x12\x0c\x1a\njavascript\nO\n\x06source\x12\x45\x1a\x43\x61wait sc.connection.deleteConnection(organizationId, connectionId);\n~*|\n\x15\n\x05label\x12\x0c\x1a\nPython SDK\n\x10\n\x04lang\x12\x08\x1a\x06python\nQ\n\x06source\x12G\x1a\x45sc.connection.delete_connection(\n organization_id,\n connection_id\n)\n\x83\x01*\x80\x01\n\x11\n\x05label\x12\x08\x1a\x06Go SDK\n\x0c\n\x04lang\x12\x04\x1a\x02go\n]\n\x06source\x12S\x1aQerr := sc.Connection.DeleteConnection(\n ctx,\n organizationId,\n connectionId,\n)\ny*w\n\x13\n\x05label\x12\n\x1a\x08Java SDK\n\x0e\n\x04lang\x12\x06\x1a\x04java\nP\n\x06source\x12\x46\x1a\x44\x63lient.connections().deleteConnection(connectionId, organizationId);\x82\xb5\x18\x02\x18t\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02:*8/api/v1/organizations/{organization_id}/connections/{id}\x12\xdf\x02\n\x1b\x45nableEnvironmentConnection\x12;.scalekit.v1.connections.ToggleEnvironmentConnectionRequest\x1a\x31.scalekit.v1.connections.ToggleConnectionResponse\"\xcf\x01\x92\x41\x84\x01\n\x0b\x43onnections\x12\x13\x45nable a connection\x1a\x17\x45nable a SSO ConnectionJG\n\x03\x32\x30\x30\x12@\n\x07Success\x12\x35\n3\x1a\x31.scalekit.v1.connections.ToggleConnectionResponse\x82\xb5\x18\x02\x18T\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02,2*/api/v1/connections/{connection_id}:enable\x12\x96\t\n\x10\x45nableConnection\x12\x30.scalekit.v1.connections.ToggleConnectionRequest\x1a\x31.scalekit.v1.connections.ToggleConnectionResponse\"\x9c\x08\x92\x41\xcb\x07\n\x0b\x43onnections\x12\x1e\x45nable organization connection\x1a\xee\x01\x41\x63tivate an existing connection for the specified organization. When enabled, users can authenticate using this connection. This endpoint changes the connection state from disabled to enabled without modifying other configuration settingsJ_\n\x03\x32\x30\x30\x12X\n\x1f\x43onnection enabled successfully\x12\x35\n3\x1a\x31.scalekit.v1.connections.ToggleConnectionResponsej\xc9\x04\n\rx-codeSamples\x12\xb7\x04\x32\xb4\x04\n\x81\x01*\x7f\n\x16\n\x05label\x12\r\x1a\x0bNode.js SDK\n\x14\n\x04lang\x12\x0c\x1a\njavascript\nO\n\x06source\x12\x45\x1a\x43\x61wait sc.connection.enableConnection(organizationId, connectionId);\n\x7f*}\n\x15\n\x05label\x12\x0c\x1a\nPython SDK\n\x10\n\x04lang\x12\x08\x1a\x06python\nR\n\x06source\x12H\x1a\x46sc.connection.enable_connection(\n organization_id,\n connection_id,\n)\n\x83\x01*\x80\x01\n\x11\n\x05label\x12\x08\x1a\x06Go SDK\n\x0c\n\x04lang\x12\x04\x1a\x02go\n]\n\x06source\x12S\x1aQerr := sc.Connection.EnableConnection(\n ctx,\n organizationId,\n connectionId,\n)\n\xa6\x01*\xa3\x01\n\x13\n\x05label\x12\n\x1a\x08Java SDK\n\x0e\n\x04lang\x12\x06\x1a\x04java\n|\n\x06source\x12r\x1apToggleConnectionResponse response = scalekitClient.connections().enableConnection(connectionId, organizationId);\x82\xb5\x18\x02\x18t\x82\xd3\xe4\x93\x02\x41\x32?/api/v1/organizations/{organization_id}/connections/{id}:enable\x12\xe3\x02\n\x1c\x44isableEnvironmentConnection\x12;.scalekit.v1.connections.ToggleEnvironmentConnectionRequest\x1a\x31.scalekit.v1.connections.ToggleConnectionResponse\"\xd2\x01\x92\x41\x86\x01\n\x0b\x43onnections\x12\x14\x44isable a connection\x1a\x18\x44isable a SSO ConnectionJG\n\x03\x32\x30\x30\x12@\n\x07Success\x12\x35\n3\x1a\x31.scalekit.v1.connections.ToggleConnectionResponse\x82\xb5\x18\x02\x18T\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02-2+/api/v1/connections/{connection_id}:disable\x12\xa4\t\n\x11\x44isableConnection\x12\x30.scalekit.v1.connections.ToggleConnectionRequest\x1a\x31.scalekit.v1.connections.ToggleConnectionResponse\"\xa9\x08\x92\x41\xd7\x07\n\x0b\x43onnections\x12\x1f\x44isable organization connection\x1a\xf4\x01\x44\x65\x61\x63tivate an existing connection for the specified organization. When disabled, users cannot authenticate using this connection. This endpoint changes the connection state from enabled to disabled without modifying other configuration settingsJ`\n\x03\x32\x30\x30\x12Y\n Connection disabled successfully\x12\x35\n3\x1a\x31.scalekit.v1.connections.ToggleConnectionResponsej\xcd\x04\n\rx-codeSamples\x12\xbb\x04\x32\xb8\x04\n\x83\x01*\x80\x01\n\x16\n\x05label\x12\r\x1a\x0bNode.js SDK\n\x14\n\x04lang\x12\x0c\x1a\njavascript\nP\n\x06source\x12\x46\x1a\x44\x61wait sc.connection.disableConnection(organizationId, connectionId);\n\x7f*}\n\x15\n\x05label\x12\x0c\x1a\nPython SDK\n\x10\n\x04lang\x12\x08\x1a\x06python\nR\n\x06source\x12H\x1a\x46sc.connection.disable_connection(\n organization_id,\n connection_id\n)\n\x84\x01*\x81\x01\n\x11\n\x05label\x12\x08\x1a\x06Go SDK\n\x0c\n\x04lang\x12\x04\x1a\x02go\n^\n\x06source\x12T\x1aRerr := sc.Connection.DisableConnection(\n ctx,\n organizationId,\n connectionId,\n)\n\xa7\x01*\xa4\x01\n\x13\n\x05label\x12\n\x1a\x08Java SDK\n\x0e\n\x04lang\x12\x06\x1a\x04java\n}\n\x06source\x12s\x1aqToggleConnectionResponse response = scalekitClient.connections().disableConnection(connectionId, organizationId);\x82\xb5\x18\x02\x18t\x82\xd3\xe4\x93\x02\x42\x32@/api/v1/organizations/{organization_id}/connections/{id}:disable\x12\x80\x03\n\x17GetConnectionTestResult\x12\x37.scalekit.v1.connections.GetConnectionTestResultRequest\x1a\x38.scalekit.v1.connections.GetConnectionTestResultResponse\"\xf1\x01\x92\x41\x8d\x01\n\x0b\x43onnections\x12\x16Test connection result\x1a\x16\x43onnection test resultJN\n\x03\x32\x30\x30\x12G\n\x07Success\x12<\n:\x1a\x38.scalekit.v1.connections.GetConnectionTestResultResponse\x82\xb5\x18\x02\x18t\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x45\x12\x43/api/v1/connections/{connection_id}/test-requests/{test_request_id}\x1a\x10\x92\x41\r\n\x0b\x43onnectionsB7Z5github.com/scalekit-inc/scalekit/pkg/grpc/connectionsb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -180,6 +180,8 @@ _globals['_SEARCHORGANIZATIONCONNECTIONSREQUEST'].fields_by_name['status']._serialized_options = b'\222A*2\033Filter by connection statusJ\013\"COMPLETED\"\272H\005\202\001\002\020\001' _globals['_SEARCHORGANIZATIONCONNECTIONSREQUEST'].fields_by_name['connection_type']._loaded_options = None _globals['_SEARCHORGANIZATIONCONNECTIONSREQUEST'].fields_by_name['connection_type']._serialized_options = b'\222A*2\033Filter by connection statusJ\013\"COMPLETED\"\272H\005\202\001\002\020\001' + _globals['_SEARCHORGANIZATIONCONNECTIONSREQUEST'].fields_by_name['enabled']._loaded_options = None + _globals['_SEARCHORGANIZATIONCONNECTIONSREQUEST'].fields_by_name['enabled']._serialized_options = b'\222A-2#Filter by connection enabled statusJ\006\"true\"' _globals['_SEARCHORGANIZATIONCONNECTIONSREQUEST'].fields_by_name['page_size']._loaded_options = None _globals['_SEARCHORGANIZATIONCONNECTIONSREQUEST'].fields_by_name['page_size']._serialized_options = b'\222AY2SMaximum number of organizations to return per page. Value must be between 1 and 30.J\00230\272H\004*\002\030\036' _globals['_SEARCHORGANIZATIONCONNECTIONSREQUEST'].fields_by_name['page_token']._loaded_options = None @@ -388,30 +390,30 @@ _globals['_CONNECTIONSERVICE'].methods_by_name['DisableConnection']._serialized_options = b'\222A\327\007\n\013Connections\022\037Disable organization connection\032\364\001Deactivate an existing connection for the specified organization. When disabled, users cannot authenticate using this connection. This endpoint changes the connection state from enabled to disabled without modifying other configuration settingsJ`\n\003200\022Y\n Connection disabled successfully\0225\n3\0321.scalekit.v1.connections.ToggleConnectionResponsej\315\004\n\rx-codeSamples\022\273\0042\270\004\n\203\001*\200\001\n\026\n\005label\022\r\032\013Node.js SDK\n\024\n\004lang\022\014\032\njavascript\nP\n\006source\022F\032Dawait sc.connection.disableConnection(organizationId, connectionId);\n\177*}\n\025\n\005label\022\014\032\nPython SDK\n\020\n\004lang\022\010\032\006python\nR\n\006source\022H\032Fsc.connection.disable_connection(\n organization_id,\n connection_id\n)\n\204\001*\201\001\n\021\n\005label\022\010\032\006Go SDK\n\014\n\004lang\022\004\032\002go\n^\n\006source\022T\032Rerr := sc.Connection.DisableConnection(\n ctx,\n organizationId,\n connectionId,\n)\n\247\001*\244\001\n\023\n\005label\022\n\032\010Java SDK\n\016\n\004lang\022\006\032\004java\n}\n\006source\022s\032qToggleConnectionResponse response = scalekitClient.connections().disableConnection(connectionId, organizationId);\202\265\030\002\030t\202\323\344\223\002B2@/api/v1/organizations/{organization_id}/connections/{id}:disable' _globals['_CONNECTIONSERVICE'].methods_by_name['GetConnectionTestResult']._loaded_options = None _globals['_CONNECTIONSERVICE'].methods_by_name['GetConnectionTestResult']._serialized_options = b'\222A\215\001\n\013Connections\022\026Test connection result\032\026Connection test resultJN\n\003200\022G\n\007Success\022<\n:\0328.scalekit.v1.connections.GetConnectionTestResultResponse\202\265\030\002\030t\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\002E\022C/api/v1/connections/{connection_id}/test-requests/{test_request_id}' - _globals['_CODECHALLENGETYPE']._serialized_start=23424 - _globals['_CODECHALLENGETYPE']._serialized_end=23511 - _globals['_CONFIGURATIONTYPE']._serialized_start=23513 - _globals['_CONFIGURATIONTYPE']._serialized_end=23595 - _globals['_NAMEIDFORMAT']._serialized_start=23597 - _globals['_NAMEIDFORMAT']._serialized_end=23694 - _globals['_PASSWORDLESSTYPE']._serialized_start=23696 - _globals['_PASSWORDLESSTYPE']._serialized_end=23781 - _globals['_TESTRESULTSTATUS']._serialized_start=23783 - _globals['_TESTRESULTSTATUS']._serialized_end=23840 - _globals['_SAMLSIGNINGOPTIONS']._serialized_start=23843 - _globals['_SAMLSIGNINGOPTIONS']._serialized_end=24059 - _globals['_REQUESTBINDING']._serialized_start=24061 - _globals['_REQUESTBINDING']._serialized_end=24144 - _globals['_TOKENAUTHTYPE']._serialized_start=24146 - _globals['_TOKENAUTHTYPE']._serialized_end=24226 - _globals['_OIDCSCOPE']._serialized_start=24228 - _globals['_OIDCSCOPE']._serialized_end=24327 - _globals['_CONNECTIONTYPE']._serialized_start=24329 - _globals['_CONNECTIONTYPE']._serialized_end=24421 - _globals['_CONNECTIONSTATUS']._serialized_start=24423 - _globals['_CONNECTIONSTATUS']._serialized_end=24519 - _globals['_CONNECTIONPROVIDER']._serialized_start=24522 - _globals['_CONNECTIONPROVIDER']._serialized_end=24802 + _globals['_CODECHALLENGETYPE']._serialized_start=23517 + _globals['_CODECHALLENGETYPE']._serialized_end=23604 + _globals['_CONFIGURATIONTYPE']._serialized_start=23606 + _globals['_CONFIGURATIONTYPE']._serialized_end=23688 + _globals['_NAMEIDFORMAT']._serialized_start=23690 + _globals['_NAMEIDFORMAT']._serialized_end=23787 + _globals['_PASSWORDLESSTYPE']._serialized_start=23789 + _globals['_PASSWORDLESSTYPE']._serialized_end=23874 + _globals['_TESTRESULTSTATUS']._serialized_start=23876 + _globals['_TESTRESULTSTATUS']._serialized_end=23933 + _globals['_SAMLSIGNINGOPTIONS']._serialized_start=23936 + _globals['_SAMLSIGNINGOPTIONS']._serialized_end=24152 + _globals['_REQUESTBINDING']._serialized_start=24154 + _globals['_REQUESTBINDING']._serialized_end=24237 + _globals['_TOKENAUTHTYPE']._serialized_start=24239 + _globals['_TOKENAUTHTYPE']._serialized_end=24319 + _globals['_OIDCSCOPE']._serialized_start=24321 + _globals['_OIDCSCOPE']._serialized_end=24420 + _globals['_CONNECTIONTYPE']._serialized_start=24422 + _globals['_CONNECTIONTYPE']._serialized_end=24514 + _globals['_CONNECTIONSTATUS']._serialized_start=24516 + _globals['_CONNECTIONSTATUS']._serialized_end=24612 + _globals['_CONNECTIONPROVIDER']._serialized_start=24615 + _globals['_CONNECTIONPROVIDER']._serialized_end=24895 _globals['_GETPROVIDERSREQUEST']._serialized_start=465 _globals['_GETPROVIDERSREQUEST']._serialized_end=486 _globals['_GETPROVIDERSRESPONSE']._serialized_start=488 @@ -461,51 +463,51 @@ _globals['_LISTORGANIZATIONCONNECTIONSRESPONSE']._serialized_start=10718 _globals['_LISTORGANIZATIONCONNECTIONSRESPONSE']._serialized_end=10997 _globals['_SEARCHORGANIZATIONCONNECTIONSREQUEST']._serialized_start=11000 - _globals['_SEARCHORGANIZATIONCONNECTIONSREQUEST']._serialized_end=11890 - _globals['_SEARCHORGANIZATIONCONNECTIONSRESPONSE']._serialized_start=11893 - _globals['_SEARCHORGANIZATIONCONNECTIONSRESPONSE']._serialized_end=12174 - _globals['_TOGGLEENVIRONMENTCONNECTIONREQUEST']._serialized_start=12177 - _globals['_TOGGLEENVIRONMENTCONNECTIONREQUEST']._serialized_end=12333 - _globals['_TOGGLECONNECTIONREQUEST']._serialized_start=12336 - _globals['_TOGGLECONNECTIONREQUEST']._serialized_end=12622 - _globals['_TOGGLECONNECTIONRESPONSE']._serialized_start=12625 - _globals['_TOGGLECONNECTIONRESPONSE']._serialized_end=12941 - _globals['_OIDCCONNECTIONCONFIG']._serialized_start=12944 - _globals['_OIDCCONNECTIONCONFIG']._serialized_end=14890 - _globals['_OAUTHCONNECTIONCONFIG']._serialized_start=14893 - _globals['_OAUTHCONNECTIONCONFIG']._serialized_end=15958 - _globals['_PASSWORDLESSCONFIG']._serialized_start=15961 - _globals['_PASSWORDLESSCONFIG']._serialized_end=16765 - _globals['_SAMLCONNECTIONCONFIGREQUEST']._serialized_start=16768 - _globals['_SAMLCONNECTIONCONFIGREQUEST']._serialized_end=18731 - _globals['_SAMLCONNECTIONCONFIGRESPONSE']._serialized_start=18734 - _globals['_SAMLCONNECTIONCONFIGRESPONSE']._serialized_end=21287 - _globals['_IDPCERTIFICATE']._serialized_start=21290 - _globals['_IDPCERTIFICATE']._serialized_end=21737 - _globals['_GETOIDCMETADATAREQUEST']._serialized_start=21739 - _globals['_GETOIDCMETADATAREQUEST']._serialized_end=21837 - _globals['_OIDCMETADATAREQUEST']._serialized_start=21839 - _globals['_OIDCMETADATAREQUEST']._serialized_end=21896 - _globals['_GETOIDCMETADATARESPONSE']._serialized_start=21899 - _globals['_GETOIDCMETADATARESPONSE']._serialized_end=22114 - _globals['_GETSAMLMETADATAREQUEST']._serialized_start=22116 - _globals['_GETSAMLMETADATAREQUEST']._serialized_end=22214 - _globals['_SAMLMETADATAREQUEST']._serialized_start=22216 - _globals['_SAMLMETADATAREQUEST']._serialized_end=22284 - _globals['_GETSAMLMETADATARESPONSE']._serialized_start=22287 - _globals['_GETSAMLMETADATARESPONSE']._serialized_end=22595 - _globals['_GETSAMLCERTIFICATEDETAILSREQUEST']._serialized_start=22597 - _globals['_GETSAMLCERTIFICATEDETAILSREQUEST']._serialized_end=22714 - _globals['_SAMLCERTIFICATEREQUEST']._serialized_start=22716 - _globals['_SAMLCERTIFICATEREQUEST']._serialized_end=22769 - _globals['_GETSAMLCERTIFICATEDETAILSRESPONSE']._serialized_start=22772 - _globals['_GETSAMLCERTIFICATEDETAILSRESPONSE']._serialized_end=22937 - _globals['_GETCONNECTIONTESTRESULTREQUEST']._serialized_start=22940 - _globals['_GETCONNECTIONTESTRESULTREQUEST']._serialized_end=23074 - _globals['_GETCONNECTIONTESTRESULTRESPONSE']._serialized_start=23077 - _globals['_GETCONNECTIONTESTRESULTRESPONSE']._serialized_end=23394 - _globals['_PASSWORDCONNECTIONCONFIG']._serialized_start=23396 - _globals['_PASSWORDCONNECTIONCONFIG']._serialized_end=23422 - _globals['_CONNECTIONSERVICE']._serialized_start=24805 - _globals['_CONNECTIONSERVICE']._serialized_end=36340 + _globals['_SEARCHORGANIZATIONCONNECTIONSREQUEST']._serialized_end=11983 + _globals['_SEARCHORGANIZATIONCONNECTIONSRESPONSE']._serialized_start=11986 + _globals['_SEARCHORGANIZATIONCONNECTIONSRESPONSE']._serialized_end=12267 + _globals['_TOGGLEENVIRONMENTCONNECTIONREQUEST']._serialized_start=12270 + _globals['_TOGGLEENVIRONMENTCONNECTIONREQUEST']._serialized_end=12426 + _globals['_TOGGLECONNECTIONREQUEST']._serialized_start=12429 + _globals['_TOGGLECONNECTIONREQUEST']._serialized_end=12715 + _globals['_TOGGLECONNECTIONRESPONSE']._serialized_start=12718 + _globals['_TOGGLECONNECTIONRESPONSE']._serialized_end=13034 + _globals['_OIDCCONNECTIONCONFIG']._serialized_start=13037 + _globals['_OIDCCONNECTIONCONFIG']._serialized_end=14983 + _globals['_OAUTHCONNECTIONCONFIG']._serialized_start=14986 + _globals['_OAUTHCONNECTIONCONFIG']._serialized_end=16051 + _globals['_PASSWORDLESSCONFIG']._serialized_start=16054 + _globals['_PASSWORDLESSCONFIG']._serialized_end=16858 + _globals['_SAMLCONNECTIONCONFIGREQUEST']._serialized_start=16861 + _globals['_SAMLCONNECTIONCONFIGREQUEST']._serialized_end=18824 + _globals['_SAMLCONNECTIONCONFIGRESPONSE']._serialized_start=18827 + _globals['_SAMLCONNECTIONCONFIGRESPONSE']._serialized_end=21380 + _globals['_IDPCERTIFICATE']._serialized_start=21383 + _globals['_IDPCERTIFICATE']._serialized_end=21830 + _globals['_GETOIDCMETADATAREQUEST']._serialized_start=21832 + _globals['_GETOIDCMETADATAREQUEST']._serialized_end=21930 + _globals['_OIDCMETADATAREQUEST']._serialized_start=21932 + _globals['_OIDCMETADATAREQUEST']._serialized_end=21989 + _globals['_GETOIDCMETADATARESPONSE']._serialized_start=21992 + _globals['_GETOIDCMETADATARESPONSE']._serialized_end=22207 + _globals['_GETSAMLMETADATAREQUEST']._serialized_start=22209 + _globals['_GETSAMLMETADATAREQUEST']._serialized_end=22307 + _globals['_SAMLMETADATAREQUEST']._serialized_start=22309 + _globals['_SAMLMETADATAREQUEST']._serialized_end=22377 + _globals['_GETSAMLMETADATARESPONSE']._serialized_start=22380 + _globals['_GETSAMLMETADATARESPONSE']._serialized_end=22688 + _globals['_GETSAMLCERTIFICATEDETAILSREQUEST']._serialized_start=22690 + _globals['_GETSAMLCERTIFICATEDETAILSREQUEST']._serialized_end=22807 + _globals['_SAMLCERTIFICATEREQUEST']._serialized_start=22809 + _globals['_SAMLCERTIFICATEREQUEST']._serialized_end=22862 + _globals['_GETSAMLCERTIFICATEDETAILSRESPONSE']._serialized_start=22865 + _globals['_GETSAMLCERTIFICATEDETAILSRESPONSE']._serialized_end=23030 + _globals['_GETCONNECTIONTESTRESULTREQUEST']._serialized_start=23033 + _globals['_GETCONNECTIONTESTRESULTREQUEST']._serialized_end=23167 + _globals['_GETCONNECTIONTESTRESULTRESPONSE']._serialized_start=23170 + _globals['_GETCONNECTIONTESTRESULTRESPONSE']._serialized_end=23487 + _globals['_PASSWORDCONNECTIONCONFIG']._serialized_start=23489 + _globals['_PASSWORDCONNECTIONCONFIG']._serialized_end=23515 + _globals['_CONNECTIONSERVICE']._serialized_start=24898 + _globals['_CONNECTIONSERVICE']._serialized_end=36433 # @@protoc_insertion_point(module_scope) diff --git a/scalekit/v1/connections/connections_pb2.pyi b/scalekit/v1/connections/connections_pb2.pyi index 805ad75..df639a6 100644 --- a/scalekit/v1/connections/connections_pb2.pyi +++ b/scalekit/v1/connections/connections_pb2.pyi @@ -425,20 +425,22 @@ class ListOrganizationConnectionsResponse(_message.Message): def __init__(self, next_page_token: _Optional[str] = ..., total_size: _Optional[int] = ..., prev_page_token: _Optional[str] = ..., connections: _Optional[_Iterable[_Union[ListConnection, _Mapping]]] = ...) -> None: ... class SearchOrganizationConnectionsRequest(_message.Message): - __slots__ = ("query", "provider", "status", "connection_type", "page_size", "page_token") + __slots__ = ("query", "provider", "status", "connection_type", "enabled", "page_size", "page_token") QUERY_FIELD_NUMBER: _ClassVar[int] PROVIDER_FIELD_NUMBER: _ClassVar[int] STATUS_FIELD_NUMBER: _ClassVar[int] CONNECTION_TYPE_FIELD_NUMBER: _ClassVar[int] + ENABLED_FIELD_NUMBER: _ClassVar[int] PAGE_SIZE_FIELD_NUMBER: _ClassVar[int] PAGE_TOKEN_FIELD_NUMBER: _ClassVar[int] query: str provider: ConnectionProvider status: ConnectionStatus connection_type: ConnectionType + enabled: bool page_size: int page_token: str - def __init__(self, query: _Optional[str] = ..., provider: _Optional[_Union[ConnectionProvider, str]] = ..., status: _Optional[_Union[ConnectionStatus, str]] = ..., connection_type: _Optional[_Union[ConnectionType, str]] = ..., page_size: _Optional[int] = ..., page_token: _Optional[str] = ...) -> None: ... + def __init__(self, query: _Optional[str] = ..., provider: _Optional[_Union[ConnectionProvider, str]] = ..., status: _Optional[_Union[ConnectionStatus, str]] = ..., connection_type: _Optional[_Union[ConnectionType, str]] = ..., enabled: bool = ..., page_size: _Optional[int] = ..., page_token: _Optional[str] = ...) -> None: ... class SearchOrganizationConnectionsResponse(_message.Message): __slots__ = ("next_page_token", "total_size", "prev_page_token", "connections") diff --git a/scalekit/v1/domains/domains_pb2.py b/scalekit/v1/domains/domains_pb2.py index 97f0568..34a0e94 100644 --- a/scalekit/v1/domains/domains_pb2.py +++ b/scalekit/v1/domains/domains_pb2.py @@ -21,7 +21,7 @@ from scalekit.v1.options import options_pb2 as scalekit_dot_v1_dot_options_dot_options__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!scalekit/v1/domains/domains.proto\x12\x13scalekit.v1.domains\x1a\x1b\x62uf/validate/validate.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/wrappers.proto\x1a!scalekit/v1/options/options.proto\"\xfe\x01\n\x13\x43reateDomainRequest\x12\x34\n\x0forganization_id\x18\x01 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18 H\x00R\x0eorganizationId\x12,\n\x0b\x65xternal_id\x18\x02 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18 H\x00R\nexternalId\x12(\n\rconnection_id\x18\x03 \x01(\tH\x01R\x0c\x63onnectionId\x88\x01\x01\x12\x39\n\x06\x64omain\x18\x04 \x01(\x0b\x32!.scalekit.v1.domains.CreateDomainR\x06\x64omainB\x0c\n\nidentitiesB\x10\n\x0e_connection_id\"K\n\x14\x43reateDomainResponse\x12\x33\n\x06\x64omain\x18\x01 \x01(\x0b\x32\x1b.scalekit.v1.domains.DomainR\x06\x64omain\"5\n\x0c\x43reateDomain\x12%\n\x06\x64omain\x18\x01 \x01(\tB\r\xbaH\nr\x05\x10\x04\x18\xff\x01\xc8\x01\x01R\x06\x64omain\"\x8e\x02\n\x13UpdateDomainRequest\x12\x34\n\x0forganization_id\x18\x01 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18 H\x00R\x0eorganizationId\x12,\n\x0b\x65xternal_id\x18\x02 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18 H\x00R\nexternalId\x12(\n\rconnection_id\x18\x03 \x01(\tH\x01R\x0c\x63onnectionId\x88\x01\x01\x12\x0e\n\x02id\x18\x04 \x01(\tR\x02id\x12\x39\n\x06\x64omain\x18\x05 \x01(\x0b\x32!.scalekit.v1.domains.UpdateDomainR\x06\x64omainB\x0c\n\nidentitiesB\x10\n\x0e_connection_id\"\x0e\n\x0cUpdateDomain\"K\n\x14UpdateDomainResponse\x12\x33\n\x06\x64omain\x18\x01 \x01(\x0b\x32\x1b.scalekit.v1.domains.DomainR\x06\x64omain\"\x94\x01\n\x10GetDomainRequest\x12\x34\n\x0forganization_id\x18\x01 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18 H\x00R\x0eorganizationId\x12,\n\x0b\x65xternal_id\x18\x02 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18 H\x00R\nexternalId\x12\x0e\n\x02id\x18\x03 \x01(\tR\x02idB\x0c\n\nidentities\"H\n\x11GetDomainResponse\x12\x33\n\x06\x64omain\x18\x01 \x01(\x0b\x32\x1b.scalekit.v1.domains.DomainR\x06\x64omain\"\xd3\x01\n\x13\x44\x65leteDomainRequest\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x34\n\x0forganization_id\x18\x02 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18 H\x00R\x0eorganizationId\x12,\n\x0b\x65xternal_id\x18\x03 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18 H\x00R\nexternalId\x12(\n\rconnection_id\x18\x04 \x01(\tH\x01R\x0c\x63onnectionId\x88\x01\x01\x42\x0c\n\nidentitiesB\x10\n\x0e_connection_id\"\xe4\x02\n\x11ListDomainRequest\x12\x34\n\x0forganization_id\x18\x01 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18 H\x00R\x0eorganizationId\x12,\n\x0b\x65xternal_id\x18\x02 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18 H\x00R\nexternalId\x12(\n\rconnection_id\x18\x03 \x01(\tH\x01R\x0c\x63onnectionId\x88\x01\x01\x12\x1d\n\x07include\x18\x04 \x01(\tH\x02R\x07include\x88\x01\x01\x12\x38\n\tpage_size\x18\x05 \x01(\x0b\x32\x1b.google.protobuf.Int32ValueR\x08pageSize\x12<\n\x0bpage_number\x18\x06 \x01(\x0b\x32\x1b.google.protobuf.Int32ValueR\npageNumberB\x0c\n\nidentitiesB\x10\n\x0e_connection_idB\n\n\x08_include\"\xa7\x01\n\x13VerifyDomainRequest\x12\x34\n\x0forganization_id\x18\x01 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18 H\x00R\x0eorganizationId\x12,\n\x0b\x65xternal_id\x18\x02 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18 H\x00R\nexternalId\x12\x1e\n\x02id\x18\x04 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x64omR\x02idB\x0c\n\nidentities\"\x89\x01\n\x12ListDomainResponse\x12\x1b\n\tpage_size\x18\x01 \x01(\x05R\x08pageSize\x12\x1f\n\x0bpage_number\x18\x02 \x01(\x05R\npageNumber\x12\x35\n\x07\x64omains\x18\x03 \x03(\x0b\x32\x1b.scalekit.v1.domains.DomainR\x07\x64omains\"5\n\x1bListAuthorizedDomainRequest\x12\x16\n\x06origin\x18\x01 \x01(\tR\x06origin\"8\n\x1cListAuthorizedDomainResponse\x12\x18\n\x07\x64omains\x18\x01 \x03(\tR\x07\x64omains\"\xfe\x03\n\x06\x44omain\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x16\n\x06\x64omain\x18\x02 \x01(\tR\x06\x64omain\x12%\n\x0e\x65nvironment_id\x18\x03 \x01(\tR\renvironmentId\x12\'\n\x0forganization_id\x18\x04 \x01(\tR\x0eorganizationId\x12#\n\rconnection_id\x18\x05 \x01(\tR\x0c\x63onnectionId\x12$\n\x0etxt_record_key\x18\x06 \x01(\tR\x0ctxtRecordKey\x12*\n\x11txt_record_secret\x18\x07 \x01(\tR\x0ftxtRecordSecret\x12X\n\x13verification_status\x18\x08 \x01(\x0e\x32\'.scalekit.v1.domains.VerificationStatusR\x12verificationStatus\x12;\n\x0b\x63reate_time\x18\t \x01(\x0b\x32\x1a.google.protobuf.TimestampR\ncreateTime\x12;\n\x0bupdate_time\x18\n \x01(\x0b\x32\x1a.google.protobuf.TimestampR\nupdateTime\x12\"\n\ncreated_by\x18\x0b \x01(\tH\x00R\tcreatedBy\x88\x01\x01\x42\r\n\x0b_created_by*`\n\x12VerificationStatus\x12#\n\x1fVERIFICATION_STATUS_UNSPECIFIED\x10\x00\x12\x0b\n\x07PENDING\x10\x01\x12\x0c\n\x08VERIFIED\x10\x02\x12\n\n\x06\x46\x41ILED\x10\x03\x32\x87\x0b\n\rDomainService\x12\xd5\x01\n\x0c\x43reateDomain\x12(.scalekit.v1.domains.CreateDomainRequest\x1a).scalekit.v1.domains.CreateDomainResponse\"p\x82\xb5\x18\x02\x18t\x82\xd3\xe4\x93\x02\x64\"//api/v1/organizations/{organization_id}/domains:\x06\x64omainZ)\"\x1f/api/v1/organizations/-/domains:\x06\x64omain\x12\xda\x01\n\x0cUpdateDomain\x12(.scalekit.v1.domains.UpdateDomainRequest\x1a).scalekit.v1.domains.UpdateDomainResponse\"u\x82\xb5\x18\x02\x18t\x82\xd3\xe4\x93\x02i24/api/v1/organizations/{organization_id}/domains/{id}:\x06\x64omainZ)2\x1f/api/v1/organizations/-/domains:\x06\x64omain\x12\xce\x01\n\x0cVerifyDomain\x12(.scalekit.v1.domains.VerifyDomainRequest\x1a\x1a.google.protobuf.BoolValue\"x\x82\xb5\x18\x02\x18t\x82\xd3\xe4\x93\x02l2;/api/v1/organizations/{organization_id}/domains/{id}:verifyZ-2+/api/v1/organizations/-/domains/{id}:verify\x12\xc6\x01\n\tGetDomain\x12%.scalekit.v1.domains.GetDomainRequest\x1a&.scalekit.v1.domains.GetDomainResponse\"j\x82\xb5\x18\x02\x18t\x82\xd3\xe4\x93\x02^\x12\x34/api/v1/organizations/{organization_id}/domains/{id}Z&\x12$/api/v1/organizations/-/domains/{id}\x12\xbc\x01\n\x0c\x44\x65leteDomain\x12(.scalekit.v1.domains.DeleteDomainRequest\x1a\x16.google.protobuf.Empty\"j\x82\xb5\x18\x02\x18t\x82\xd3\xe4\x93\x02^*4/api/v1/organizations/{organization_id}/domains/{id}Z&*$/api/v1/organizations/-/domains/{id}\x12\xc0\x01\n\x0bListDomains\x12&.scalekit.v1.domains.ListDomainRequest\x1a\'.scalekit.v1.domains.ListDomainResponse\"`\x82\xb5\x18\x02\x18t\x82\xd3\xe4\x93\x02T\x12//api/v1/organizations/{organization_id}/domainsZ!\x12\x1f/api/v1/organizations/-/domains\x12\xa4\x01\n\x15ListAuthorizedDomains\x12\x30.scalekit.v1.domains.ListAuthorizedDomainRequest\x1a\x31.scalekit.v1.domains.ListAuthorizedDomainResponse\"&\x82\xb5\x18\x02\x18\x01\x82\xd3\xe4\x93\x02\x1a\x12\x18/api/v1/domains/{origin}B3Z1github.com/scalekit-inc/scalekit/pkg/grpc/domainsb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!scalekit/v1/domains/domains.proto\x12\x13scalekit.v1.domains\x1a\x1b\x62uf/validate/validate.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/wrappers.proto\x1a!scalekit/v1/options/options.proto\"\xfe\x01\n\x13\x43reateDomainRequest\x12\x34\n\x0forganization_id\x18\x01 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18 H\x00R\x0eorganizationId\x12,\n\x0b\x65xternal_id\x18\x02 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18 H\x00R\nexternalId\x12(\n\rconnection_id\x18\x03 \x01(\tH\x01R\x0c\x63onnectionId\x88\x01\x01\x12\x39\n\x06\x64omain\x18\x04 \x01(\x0b\x32!.scalekit.v1.domains.CreateDomainR\x06\x64omainB\x0c\n\nidentitiesB\x10\n\x0e_connection_id\"K\n\x14\x43reateDomainResponse\x12\x33\n\x06\x64omain\x18\x01 \x01(\x0b\x32\x1b.scalekit.v1.domains.DomainR\x06\x64omain\"w\n\x0c\x43reateDomain\x12%\n\x06\x64omain\x18\x01 \x01(\tB\r\xbaH\nr\x05\x10\x04\x18\xff\x01\xc8\x01\x01R\x06\x64omain\x12@\n\x0b\x64omain_type\x18\x02 \x01(\x0e\x32\x1f.scalekit.v1.domains.DomainTypeR\ndomainType\"\x8e\x02\n\x13UpdateDomainRequest\x12\x34\n\x0forganization_id\x18\x01 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18 H\x00R\x0eorganizationId\x12,\n\x0b\x65xternal_id\x18\x02 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18 H\x00R\nexternalId\x12(\n\rconnection_id\x18\x03 \x01(\tH\x01R\x0c\x63onnectionId\x88\x01\x01\x12\x0e\n\x02id\x18\x04 \x01(\tR\x02id\x12\x39\n\x06\x64omain\x18\x05 \x01(\x0b\x32!.scalekit.v1.domains.UpdateDomainR\x06\x64omainB\x0c\n\nidentitiesB\x10\n\x0e_connection_id\"\x0e\n\x0cUpdateDomain\"K\n\x14UpdateDomainResponse\x12\x33\n\x06\x64omain\x18\x01 \x01(\x0b\x32\x1b.scalekit.v1.domains.DomainR\x06\x64omain\"\x94\x01\n\x10GetDomainRequest\x12\x34\n\x0forganization_id\x18\x01 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18 H\x00R\x0eorganizationId\x12,\n\x0b\x65xternal_id\x18\x02 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18 H\x00R\nexternalId\x12\x0e\n\x02id\x18\x03 \x01(\tR\x02idB\x0c\n\nidentities\"H\n\x11GetDomainResponse\x12\x33\n\x06\x64omain\x18\x01 \x01(\x0b\x32\x1b.scalekit.v1.domains.DomainR\x06\x64omain\"\xd3\x01\n\x13\x44\x65leteDomainRequest\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x34\n\x0forganization_id\x18\x02 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18 H\x00R\x0eorganizationId\x12,\n\x0b\x65xternal_id\x18\x03 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18 H\x00R\nexternalId\x12(\n\rconnection_id\x18\x04 \x01(\tH\x01R\x0c\x63onnectionId\x88\x01\x01\x42\x0c\n\nidentitiesB\x10\n\x0e_connection_id\"\xe4\x02\n\x11ListDomainRequest\x12\x34\n\x0forganization_id\x18\x01 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18 H\x00R\x0eorganizationId\x12,\n\x0b\x65xternal_id\x18\x02 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18 H\x00R\nexternalId\x12(\n\rconnection_id\x18\x03 \x01(\tH\x01R\x0c\x63onnectionId\x88\x01\x01\x12\x1d\n\x07include\x18\x04 \x01(\tH\x02R\x07include\x88\x01\x01\x12\x38\n\tpage_size\x18\x05 \x01(\x0b\x32\x1b.google.protobuf.Int32ValueR\x08pageSize\x12<\n\x0bpage_number\x18\x06 \x01(\x0b\x32\x1b.google.protobuf.Int32ValueR\npageNumberB\x0c\n\nidentitiesB\x10\n\x0e_connection_idB\n\n\x08_include\"\xa7\x01\n\x13VerifyDomainRequest\x12\x34\n\x0forganization_id\x18\x01 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18 H\x00R\x0eorganizationId\x12,\n\x0b\x65xternal_id\x18\x02 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18 H\x00R\nexternalId\x12\x1e\n\x02id\x18\x04 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x64omR\x02idB\x0c\n\nidentities\"\x89\x01\n\x12ListDomainResponse\x12\x1b\n\tpage_size\x18\x01 \x01(\x05R\x08pageSize\x12\x1f\n\x0bpage_number\x18\x02 \x01(\x05R\npageNumber\x12\x35\n\x07\x64omains\x18\x03 \x03(\x0b\x32\x1b.scalekit.v1.domains.DomainR\x07\x64omains\"5\n\x1bListAuthorizedDomainRequest\x12\x16\n\x06origin\x18\x01 \x01(\tR\x06origin\"8\n\x1cListAuthorizedDomainResponse\x12\x18\n\x07\x64omains\x18\x01 \x03(\tR\x07\x64omains\"\xc0\x04\n\x06\x44omain\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x16\n\x06\x64omain\x18\x02 \x01(\tR\x06\x64omain\x12%\n\x0e\x65nvironment_id\x18\x03 \x01(\tR\renvironmentId\x12\'\n\x0forganization_id\x18\x04 \x01(\tR\x0eorganizationId\x12#\n\rconnection_id\x18\x05 \x01(\tR\x0c\x63onnectionId\x12$\n\x0etxt_record_key\x18\x06 \x01(\tR\x0ctxtRecordKey\x12*\n\x11txt_record_secret\x18\x07 \x01(\tR\x0ftxtRecordSecret\x12X\n\x13verification_status\x18\x08 \x01(\x0e\x32\'.scalekit.v1.domains.VerificationStatusR\x12verificationStatus\x12;\n\x0b\x63reate_time\x18\t \x01(\x0b\x32\x1a.google.protobuf.TimestampR\ncreateTime\x12;\n\x0bupdate_time\x18\n \x01(\x0b\x32\x1a.google.protobuf.TimestampR\nupdateTime\x12\"\n\ncreated_by\x18\x0b \x01(\tH\x00R\tcreatedBy\x88\x01\x01\x12@\n\x0b\x64omain_type\x18\x0c \x01(\x0e\x32\x1f.scalekit.v1.domains.DomainTypeR\ndomainTypeB\r\n\x0b_created_by*`\n\x12VerificationStatus\x12#\n\x1fVERIFICATION_STATUS_UNSPECIFIED\x10\x00\x12\x0b\n\x07PENDING\x10\x01\x12\x0c\n\x08VERIFIED\x10\x02\x12\n\n\x06\x46\x41ILED\x10\x03*`\n\nDomainType\x12\x1b\n\x17\x44OMAIN_TYPE_UNSPECIFIED\x10\x00\x12\x18\n\x14HOME_REALM_DISCOVERY\x10\x01\x12\x1b\n\x17JIT_PROVISIONING_DOMAIN\x10\x02\x32\x87\x0b\n\rDomainService\x12\xd5\x01\n\x0c\x43reateDomain\x12(.scalekit.v1.domains.CreateDomainRequest\x1a).scalekit.v1.domains.CreateDomainResponse\"p\x82\xb5\x18\x02\x18t\x82\xd3\xe4\x93\x02\x64\"//api/v1/organizations/{organization_id}/domains:\x06\x64omainZ)\"\x1f/api/v1/organizations/-/domains:\x06\x64omain\x12\xda\x01\n\x0cUpdateDomain\x12(.scalekit.v1.domains.UpdateDomainRequest\x1a).scalekit.v1.domains.UpdateDomainResponse\"u\x82\xb5\x18\x02\x18t\x82\xd3\xe4\x93\x02i24/api/v1/organizations/{organization_id}/domains/{id}:\x06\x64omainZ)2\x1f/api/v1/organizations/-/domains:\x06\x64omain\x12\xce\x01\n\x0cVerifyDomain\x12(.scalekit.v1.domains.VerifyDomainRequest\x1a\x1a.google.protobuf.BoolValue\"x\x82\xb5\x18\x02\x18t\x82\xd3\xe4\x93\x02l2;/api/v1/organizations/{organization_id}/domains/{id}:verifyZ-2+/api/v1/organizations/-/domains/{id}:verify\x12\xc6\x01\n\tGetDomain\x12%.scalekit.v1.domains.GetDomainRequest\x1a&.scalekit.v1.domains.GetDomainResponse\"j\x82\xb5\x18\x02\x18t\x82\xd3\xe4\x93\x02^\x12\x34/api/v1/organizations/{organization_id}/domains/{id}Z&\x12$/api/v1/organizations/-/domains/{id}\x12\xbc\x01\n\x0c\x44\x65leteDomain\x12(.scalekit.v1.domains.DeleteDomainRequest\x1a\x16.google.protobuf.Empty\"j\x82\xb5\x18\x02\x18t\x82\xd3\xe4\x93\x02^*4/api/v1/organizations/{organization_id}/domains/{id}Z&*$/api/v1/organizations/-/domains/{id}\x12\xc0\x01\n\x0bListDomains\x12&.scalekit.v1.domains.ListDomainRequest\x1a\'.scalekit.v1.domains.ListDomainResponse\"`\x82\xb5\x18\x02\x18t\x82\xd3\xe4\x93\x02T\x12//api/v1/organizations/{organization_id}/domainsZ!\x12\x1f/api/v1/organizations/-/domains\x12\xa4\x01\n\x15ListAuthorizedDomains\x12\x30.scalekit.v1.domains.ListAuthorizedDomainRequest\x1a\x31.scalekit.v1.domains.ListAuthorizedDomainResponse\"&\x82\xb5\x18\x02\x18\x01\x82\xd3\xe4\x93\x02\x1a\x12\x18/api/v1/domains/{origin}B3Z1github.com/scalekit-inc/scalekit/pkg/grpc/domainsb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -71,38 +71,40 @@ _globals['_DOMAINSERVICE'].methods_by_name['ListDomains']._serialized_options = b'\202\265\030\002\030t\202\323\344\223\002T\022//api/v1/organizations/{organization_id}/domainsZ!\022\037/api/v1/organizations/-/domains' _globals['_DOMAINSERVICE'].methods_by_name['ListAuthorizedDomains']._loaded_options = None _globals['_DOMAINSERVICE'].methods_by_name['ListAuthorizedDomains']._serialized_options = b'\202\265\030\002\030\001\202\323\344\223\002\032\022\030/api/v1/domains/{origin}' - _globals['_VERIFICATIONSTATUS']._serialized_start=2768 - _globals['_VERIFICATIONSTATUS']._serialized_end=2864 + _globals['_VERIFICATIONSTATUS']._serialized_start=2900 + _globals['_VERIFICATIONSTATUS']._serialized_end=2996 + _globals['_DOMAINTYPE']._serialized_start=2998 + _globals['_DOMAINTYPE']._serialized_end=3094 _globals['_CREATEDOMAINREQUEST']._serialized_start=280 _globals['_CREATEDOMAINREQUEST']._serialized_end=534 _globals['_CREATEDOMAINRESPONSE']._serialized_start=536 _globals['_CREATEDOMAINRESPONSE']._serialized_end=611 _globals['_CREATEDOMAIN']._serialized_start=613 - _globals['_CREATEDOMAIN']._serialized_end=666 - _globals['_UPDATEDOMAINREQUEST']._serialized_start=669 - _globals['_UPDATEDOMAINREQUEST']._serialized_end=939 - _globals['_UPDATEDOMAIN']._serialized_start=941 - _globals['_UPDATEDOMAIN']._serialized_end=955 - _globals['_UPDATEDOMAINRESPONSE']._serialized_start=957 - _globals['_UPDATEDOMAINRESPONSE']._serialized_end=1032 - _globals['_GETDOMAINREQUEST']._serialized_start=1035 - _globals['_GETDOMAINREQUEST']._serialized_end=1183 - _globals['_GETDOMAINRESPONSE']._serialized_start=1185 - _globals['_GETDOMAINRESPONSE']._serialized_end=1257 - _globals['_DELETEDOMAINREQUEST']._serialized_start=1260 - _globals['_DELETEDOMAINREQUEST']._serialized_end=1471 - _globals['_LISTDOMAINREQUEST']._serialized_start=1474 - _globals['_LISTDOMAINREQUEST']._serialized_end=1830 - _globals['_VERIFYDOMAINREQUEST']._serialized_start=1833 - _globals['_VERIFYDOMAINREQUEST']._serialized_end=2000 - _globals['_LISTDOMAINRESPONSE']._serialized_start=2003 - _globals['_LISTDOMAINRESPONSE']._serialized_end=2140 - _globals['_LISTAUTHORIZEDDOMAINREQUEST']._serialized_start=2142 - _globals['_LISTAUTHORIZEDDOMAINREQUEST']._serialized_end=2195 - _globals['_LISTAUTHORIZEDDOMAINRESPONSE']._serialized_start=2197 - _globals['_LISTAUTHORIZEDDOMAINRESPONSE']._serialized_end=2253 - _globals['_DOMAIN']._serialized_start=2256 - _globals['_DOMAIN']._serialized_end=2766 - _globals['_DOMAINSERVICE']._serialized_start=2867 - _globals['_DOMAINSERVICE']._serialized_end=4282 + _globals['_CREATEDOMAIN']._serialized_end=732 + _globals['_UPDATEDOMAINREQUEST']._serialized_start=735 + _globals['_UPDATEDOMAINREQUEST']._serialized_end=1005 + _globals['_UPDATEDOMAIN']._serialized_start=1007 + _globals['_UPDATEDOMAIN']._serialized_end=1021 + _globals['_UPDATEDOMAINRESPONSE']._serialized_start=1023 + _globals['_UPDATEDOMAINRESPONSE']._serialized_end=1098 + _globals['_GETDOMAINREQUEST']._serialized_start=1101 + _globals['_GETDOMAINREQUEST']._serialized_end=1249 + _globals['_GETDOMAINRESPONSE']._serialized_start=1251 + _globals['_GETDOMAINRESPONSE']._serialized_end=1323 + _globals['_DELETEDOMAINREQUEST']._serialized_start=1326 + _globals['_DELETEDOMAINREQUEST']._serialized_end=1537 + _globals['_LISTDOMAINREQUEST']._serialized_start=1540 + _globals['_LISTDOMAINREQUEST']._serialized_end=1896 + _globals['_VERIFYDOMAINREQUEST']._serialized_start=1899 + _globals['_VERIFYDOMAINREQUEST']._serialized_end=2066 + _globals['_LISTDOMAINRESPONSE']._serialized_start=2069 + _globals['_LISTDOMAINRESPONSE']._serialized_end=2206 + _globals['_LISTAUTHORIZEDDOMAINREQUEST']._serialized_start=2208 + _globals['_LISTAUTHORIZEDDOMAINREQUEST']._serialized_end=2261 + _globals['_LISTAUTHORIZEDDOMAINRESPONSE']._serialized_start=2263 + _globals['_LISTAUTHORIZEDDOMAINRESPONSE']._serialized_end=2319 + _globals['_DOMAIN']._serialized_start=2322 + _globals['_DOMAIN']._serialized_end=2898 + _globals['_DOMAINSERVICE']._serialized_start=3097 + _globals['_DOMAINSERVICE']._serialized_end=4512 # @@protoc_insertion_point(module_scope) diff --git a/scalekit/v1/domains/domains_pb2.pyi b/scalekit/v1/domains/domains_pb2.pyi index 1add566..f13995f 100644 --- a/scalekit/v1/domains/domains_pb2.pyi +++ b/scalekit/v1/domains/domains_pb2.pyi @@ -19,10 +19,19 @@ class VerificationStatus(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): PENDING: _ClassVar[VerificationStatus] VERIFIED: _ClassVar[VerificationStatus] FAILED: _ClassVar[VerificationStatus] + +class DomainType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + DOMAIN_TYPE_UNSPECIFIED: _ClassVar[DomainType] + HOME_REALM_DISCOVERY: _ClassVar[DomainType] + JIT_PROVISIONING_DOMAIN: _ClassVar[DomainType] VERIFICATION_STATUS_UNSPECIFIED: VerificationStatus PENDING: VerificationStatus VERIFIED: VerificationStatus FAILED: VerificationStatus +DOMAIN_TYPE_UNSPECIFIED: DomainType +HOME_REALM_DISCOVERY: DomainType +JIT_PROVISIONING_DOMAIN: DomainType class CreateDomainRequest(_message.Message): __slots__ = ("organization_id", "external_id", "connection_id", "domain") @@ -43,10 +52,12 @@ class CreateDomainResponse(_message.Message): def __init__(self, domain: _Optional[_Union[Domain, _Mapping]] = ...) -> None: ... class CreateDomain(_message.Message): - __slots__ = ("domain",) + __slots__ = ("domain", "domain_type") DOMAIN_FIELD_NUMBER: _ClassVar[int] + DOMAIN_TYPE_FIELD_NUMBER: _ClassVar[int] domain: str - def __init__(self, domain: _Optional[str] = ...) -> None: ... + domain_type: DomainType + def __init__(self, domain: _Optional[str] = ..., domain_type: _Optional[_Union[DomainType, str]] = ...) -> None: ... class UpdateDomainRequest(_message.Message): __slots__ = ("organization_id", "external_id", "connection_id", "id", "domain") @@ -149,7 +160,7 @@ class ListAuthorizedDomainResponse(_message.Message): def __init__(self, domains: _Optional[_Iterable[str]] = ...) -> None: ... class Domain(_message.Message): - __slots__ = ("id", "domain", "environment_id", "organization_id", "connection_id", "txt_record_key", "txt_record_secret", "verification_status", "create_time", "update_time", "created_by") + __slots__ = ("id", "domain", "environment_id", "organization_id", "connection_id", "txt_record_key", "txt_record_secret", "verification_status", "create_time", "update_time", "created_by", "domain_type") ID_FIELD_NUMBER: _ClassVar[int] DOMAIN_FIELD_NUMBER: _ClassVar[int] ENVIRONMENT_ID_FIELD_NUMBER: _ClassVar[int] @@ -161,6 +172,7 @@ class Domain(_message.Message): CREATE_TIME_FIELD_NUMBER: _ClassVar[int] UPDATE_TIME_FIELD_NUMBER: _ClassVar[int] CREATED_BY_FIELD_NUMBER: _ClassVar[int] + DOMAIN_TYPE_FIELD_NUMBER: _ClassVar[int] id: str domain: str environment_id: str @@ -172,4 +184,5 @@ class Domain(_message.Message): create_time: _timestamp_pb2.Timestamp update_time: _timestamp_pb2.Timestamp created_by: str - def __init__(self, id: _Optional[str] = ..., domain: _Optional[str] = ..., environment_id: _Optional[str] = ..., organization_id: _Optional[str] = ..., connection_id: _Optional[str] = ..., txt_record_key: _Optional[str] = ..., txt_record_secret: _Optional[str] = ..., verification_status: _Optional[_Union[VerificationStatus, str]] = ..., create_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., update_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., created_by: _Optional[str] = ...) -> None: ... + domain_type: DomainType + def __init__(self, id: _Optional[str] = ..., domain: _Optional[str] = ..., environment_id: _Optional[str] = ..., organization_id: _Optional[str] = ..., connection_id: _Optional[str] = ..., txt_record_key: _Optional[str] = ..., txt_record_secret: _Optional[str] = ..., verification_status: _Optional[_Union[VerificationStatus, str]] = ..., create_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., update_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., created_by: _Optional[str] = ..., domain_type: _Optional[_Union[DomainType, str]] = ...) -> None: ... diff --git a/scalekit/v1/environments/environments_pb2.py b/scalekit/v1/environments/environments_pb2.py index 70a38fc..ef4a78b 100644 --- a/scalekit/v1/environments/environments_pb2.py +++ b/scalekit/v1/environments/environments_pb2.py @@ -25,7 +25,7 @@ from scalekit.v1.options import options_pb2 as scalekit_dot_v1_dot_options_dot_options__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n+scalekit/v1/environments/environments.proto\x12\x18scalekit.v1.environments\x1a\x1b\x62uf/validate/validate.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x19google/protobuf/any.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/wrappers.proto\x1a!scalekit/v1/commons/commons.proto\x1a!scalekit/v1/options/options.proto\"o\n\x19\x43reateCustomDomainRequest\x12\x1e\n\x02id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x02id\x12\x32\n\rcustom_domain\x18\x02 \x01(\tB\r\xbaH\nr\x05\x10\x01\x18\xfa\x01\xc8\x01\x01R\x0c\x63ustomDomain\"e\n\x1a\x43reateCustomDomainResponse\x12G\n\x0b\x65nvironment\x18\x01 \x01(\x0b\x32%.scalekit.v1.environments.EnvironmentR\x0b\x65nvironment\"j\n\x14GetDNSRecordsRequest\x12\x1e\n\x02id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x02id\x12\x32\n\rcustom_domain\x18\x02 \x01(\tB\r\xbaH\nr\x05\x10\x01\x18\xfa\x01\xc8\x01\x01R\x0c\x63ustomDomain\"^\n\x15GetDNSRecordsResponse\x12\x45\n\x0b\x64ns_records\x18\x01 \x03(\x0b\x32$.scalekit.v1.environments.DNSRecordsR\ndnsRecords\"w\n\nDNSRecords\x12\'\n\thost_name\x18\x01 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x18\xfa\x01R\x08hostName\x12\x1e\n\x04type\x18\x02 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x18\xfa\x01R\x04type\x12 \n\x05value\x18\x03 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x18\xfa\x01R\x05value\"\x92\x04\n\x0b\x45nvironment\x12\x1e\n\x02id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x02id\x12;\n\x0b\x63reate_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\ncreateTime\x12;\n\x0bupdate_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\nupdateTime\x12-\n\x0c\x64isplay_name\x18\x04 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x18\xc8\x01R\x0b\x64isplayName\x12\"\n\x06\x64omain\x18\x05 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x18\xfa\x01R\x06\x64omain\x12@\n\x0bregion_code\x18\x06 \x01(\x0e\x32\x1f.scalekit.v1.commons.RegionCodeR\nregionCode\x12\x38\n\x04type\x18\x07 \x01(\x0e\x32$.scalekit.v1.commons.EnvironmentTypeR\x04type\x12(\n\rcustom_domain\x18\x08 \x01(\tH\x00R\x0c\x63ustomDomain\x88\x01\x01\x12^\n\x14\x63ustom_domain_status\x18\t \x01(\x0e\x32,.scalekit.v1.environments.CustomDomainStatusR\x12\x63ustomDomainStatusB\x10\n\x0e_custom_domain\"\xe7\x01\n\x11\x43reateEnvironment\x12-\n\x0c\x64isplay_name\x18\x04 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x18\xc8\x01R\x0b\x64isplayName\x12\x45\n\x0bregion_code\x18\x06 \x01(\x0e\x32\x1f.scalekit.v1.commons.RegionCodeH\x00R\nregionCode\x88\x01\x01\x12=\n\x04type\x18\x07 \x01(\x0e\x32$.scalekit.v1.commons.EnvironmentTypeH\x01R\x04type\x88\x01\x01\x42\x0e\n\x0c_region_codeB\x07\n\x05_typeJ\x04\x08\x05\x10\x06\"j\n\x11UpdateEnvironment\x12\x32\n\x0c\x64isplay_name\x18\x04 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x18\xd0\x0fH\x00R\x0b\x64isplayName\x88\x01\x01\x42\x0f\n\r_display_nameJ\x04\x08\x05\x10\x06J\x04\x08\x06\x10\x07J\x04\x08\x07\x10\x08\"S\n\x17UpdateEnvironmentDomain\x12\'\n\x06\x64omain\x18\x05 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x18\xfa\x01H\x00R\x06\x64omain\x88\x01\x01\x42\t\n\x07_domainJ\x04\x08\x04\x10\x05\"q\n\x18\x43reateEnvironmentRequest\x12U\n\x0b\x65nvironment\x18\x01 \x01(\x0b\x32+.scalekit.v1.environments.CreateEnvironmentB\x06\xbaH\x03\xc8\x01\x01R\x0b\x65nvironment\"d\n\x19\x43reateEnvironmentResponse\x12G\n\x0b\x65nvironment\x18\x01 \x01(\x0b\x32%.scalekit.v1.environments.EnvironmentR\x0b\x65nvironment\"\x91\x01\n\x18UpdateEnvironmentRequest\x12\x1e\n\x02id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x02id\x12U\n\x0b\x65nvironment\x18\x02 \x01(\x0b\x32+.scalekit.v1.environments.UpdateEnvironmentB\x06\xbaH\x03\xc8\x01\x01R\x0b\x65nvironment\"\x9d\x01\n\x1eUpdateEnvironmentDomainRequest\x12\x1e\n\x02id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x02id\x12[\n\x0b\x65nvironment\x18\x02 \x01(\x0b\x32\x31.scalekit.v1.environments.UpdateEnvironmentDomainB\x06\xbaH\x03\xc8\x01\x01R\x0b\x65nvironment\"d\n\x19UpdateEnvironmentResponse\x12G\n\x0b\x65nvironment\x18\x01 \x01(\x0b\x32%.scalekit.v1.environments.EnvironmentR\x0b\x65nvironment\"7\n\x15GetEnvironmentRequest\x12\x1e\n\x02id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x02id\"a\n\x16GetEnvironmentResponse\x12G\n\x0b\x65nvironment\x18\x01 \x01(\x0b\x32%.scalekit.v1.environments.EnvironmentR\x0b\x65nvironment\"U\n\x17ListEnvironmentsRequest\x12\x1b\n\tpage_size\x18\x01 \x01(\rR\x08pageSize\x12\x1d\n\npage_token\x18\x02 \x01(\tR\tpageToken\"\xac\x01\n\x18ListEnvironmentsResponse\x12&\n\x0fnext_page_token\x18\x01 \x01(\tR\rnextPageToken\x12\x1d\n\ntotal_size\x18\x02 \x01(\rR\ttotalSize\x12I\n\x0c\x65nvironments\x18\x03 \x03(\x0b\x32%.scalekit.v1.environments.EnvironmentR\x0c\x65nvironments\":\n\x18\x44\x65leteEnvironmentRequest\x12\x1e\n\x02id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x02id\"@\n\x1eGenerateSamlCertificateRequest\x12\x1e\n\x02id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x02id\"k\n\x1fGenerateSamlCertificateResponse\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12 \n\x0b\x63\x65rtificate\x18\x02 \x01(\tR\x0b\x63\x65rtificate\x12\x16\n\x06\x65xpiry\x18\x03 \x01(\x03R\x06\x65xpiry\"\x99\x01\n!UpdatePortalCustomizationResponse\x12$\n\renvironmentId\x18\x01 \x01(\tR\renvironmentId\x12N\n\x16\x63ustomization_settings\x18\x02 \x01(\x0b\x32\x17.google.protobuf.StructR\x15\x63ustomizationSettings\"\x9a\x01\n UpdatePortalCustomizationRequest\x12\x1e\n\x02id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x02id\x12V\n\x16\x63ustomization_settings\x18\x02 \x01(\x0b\x32\x17.google.protobuf.StructB\x06\xbaH\x03\xc8\x01\x01R\x15\x63ustomizationSettings\":\n\x1dGetPortalCustomizationRequest\x12\x19\n\x02id\x18\x01 \x01(\tB\t\xbaH\x06r\x04\x10\x00\x18 R\x02id\"\x96\x01\n\x1eGetPortalCustomizationResponse\x12$\n\renvironmentId\x18\x01 \x01(\tR\renvironmentId\x12N\n\x16\x63ustomization_settings\x18\x02 \x01(\x0b\x32\x17.google.protobuf.StructR\x15\x63ustomizationSettings\"Z\n\x1c\x43reateAssetUploadUrlResponse\x12\x1d\n\nupload_url\x18\x01 \x01(\tR\tuploadUrl\x12\x1b\n\tfetch_url\x18\x02 \x01(\tR\x08\x66\x65tchUrl\"\x8d\x01\n\x1b\x43reateAssetUploadUrlRequest\x12\x1e\n\x02id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x02id\x12N\n\x0e\x61sset_settings\x18\x02 \x01(\x0b\x32\'.scalekit.v1.environments.AssetSettingsR\rassetSettings\"\x91\x01\n\rAssetSettings\x12K\n\x08\x63\x61tegory\x18\x01 \x01(\x0e\x32\'.scalekit.v1.environments.AssetCategoryB\x06\xbaH\x03\xc8\x01\x01R\x08\x63\x61tegory\x12\x33\n\textension\x18\x02 \x01(\tB\x15\xbaH\x12r\x10R\x03jpgR\x04jpegR\x03pngR\textension\"\x89\x01\n\x15UpdateFeaturesRequest\x12\x1e\n\x02id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x02id\x12P\n\x08\x66\x65\x61tures\x18\x02 \x03(\x0b\x32,.scalekit.v1.environments.EnvironmentFeatureB\x06\xbaH\x03\xc8\x01\x01R\x08\x66\x65\x61tures\"9\n\x17\x45nableFSAFeatureRequest\x12\x1e\n\x02id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x02id\"4\n\x12GetFeaturesRequest\x12\x1e\n\x02id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x02id\"_\n\x13GetFeaturesResponse\x12H\n\x08\x66\x65\x61tures\x18\x01 \x03(\x0b\x32,.scalekit.v1.environments.EnvironmentFeatureR\x08\x66\x65\x61tures\"`\n\x14\x45nableFeatureRequest\x12\x1e\n\x02id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x02id\x12(\n\nfeature_id\x18\x02 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18 R\tfeatureId\"a\n\x15\x44isableFeatureRequest\x12\x1e\n\x02id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x02id\x12(\n\nfeature_id\x18\x02 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18 R\tfeatureId\"B\n\x12\x45nvironmentFeature\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n\x07\x65nabled\x18\x02 \x01(\x08R\x07\x65nabled\"F\n$GetEnvironmentSessionSettingsRequest\x12\x1e\n\x02id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x02id\"E\n#GetEnvironmentUserManagementRequest\x12\x1e\n\x02id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x02id\"}\n%GetEnvironmentSessionSettingsResponse\x12T\n\x10session_settings\x18\x01 \x01(\x0b\x32).scalekit.v1.environments.SessionSettingsR\x0fsessionSettings\"y\n$GetEnvironmentUserManagementResponse\x12Q\n\x0fuser_management\x18\x01 \x01(\x0b\x32(.scalekit.v1.environments.UserManagementR\x0euserManagement\"\xa7\x01\n\'CreateEnvironmentSessionSettingsRequest\x12\x1e\n\x02id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x02id\x12\\\n\x10session_settings\x18\x02 \x01(\x0b\x32).scalekit.v1.environments.SessionSettingsB\x06\xbaH\x03\xc8\x01\x01R\x0fsessionSettings\"\xa3\x01\n&CreateEnvironmentUserManagementRequest\x12\x1e\n\x02id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x02id\x12Y\n\x0fuser_management\x18\x02 \x01(\x0b\x32(.scalekit.v1.environments.UserManagementB\x06\xbaH\x03\xc8\x01\x01R\x0euserManagement\"\xa7\x01\n(CreateEnvironmentSessionSettingsResponse\x12%\n\x0e\x65nvironment_id\x18\x01 \x01(\tR\renvironmentId\x12T\n\x10session_settings\x18\x02 \x01(\x0b\x32).scalekit.v1.environments.SessionSettingsR\x0fsessionSettings\"\xa3\x01\n\'CreateEnvironmentUserManagementResponse\x12%\n\x0e\x65nvironment_id\x18\x01 \x01(\tR\renvironmentId\x12Q\n\x0fuser_management\x18\x02 \x01(\x0b\x32(.scalekit.v1.environments.UserManagementR\x0euserManagement\"\xa7\x01\n\'UpdateEnvironmentSessionSettingsRequest\x12\x1e\n\x02id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x02id\x12\\\n\x10session_settings\x18\x02 \x01(\x0b\x32).scalekit.v1.environments.SessionSettingsB\x06\xbaH\x03\xc8\x01\x01R\x0fsessionSettings\"\xa3\x01\n&UpdateEnvironmentUserManagementRequest\x12\x1e\n\x02id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x02id\x12Y\n\x0fuser_management\x18\x02 \x01(\x0b\x32(.scalekit.v1.environments.UserManagementB\x06\xbaH\x03\xc8\x01\x01R\x0euserManagement\"\xa7\x01\n(UpdateEnvironmentSessionSettingsResponse\x12%\n\x0e\x65nvironment_id\x18\x01 \x01(\tR\renvironmentId\x12T\n\x10session_settings\x18\x02 \x01(\x0b\x32).scalekit.v1.environments.SessionSettingsR\x0fsessionSettings\"\xa3\x01\n\'UpdateEnvironmentUserManagementResponse\x12%\n\x0e\x65nvironment_id\x18\x01 \x01(\tR\renvironmentId\x12Q\n\x0fuser_management\x18\x02 \x01(\x0b\x32(.scalekit.v1.environments.UserManagementR\x0euserManagement\"\xdc\x06\n\x0fSessionSettings\x12X\n\x13\x61\x63\x63\x65ss_token_expiry\x18\x01 \x01(\x0b\x32\x1b.google.protobuf.Int32ValueB\x0b\xbaH\x08\x1a\x06\x18\xc0\xd1\x02(\x01R\x11\x61\x63\x63\x65ssTokenExpiry\x12\x65\n\x1a\x63lient_access_token_expiry\x18\x02 \x01(\x0b\x32\x1b.google.protobuf.Int32ValueB\x0b\xbaH\x08\x1a\x06\x18\xc0\xd1\x02(\x01R\x17\x63lientAccessTokenExpiry\x12\x62\n\x18\x61\x62solute_session_timeout\x18\x03 \x01(\x0b\x32\x1b.google.protobuf.Int32ValueB\x0b\xbaH\x08\x1a\x06\x18\xa0\x8a (\x01R\x16\x61\x62soluteSessionTimeout\x12X\n\x1asession_management_enabled\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.BoolValueR\x18sessionManagementEnabled\x12Y\n\x14idle_session_timeout\x18\x05 \x01(\x0b\x32\x1b.google.protobuf.Int32ValueB\n\xbaH\x07\x1a\x05\x18\xe0N(\x01R\x12idleSessionTimeout\x12L\n\x14idle_session_enabled\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.BoolValueR\x12idleSessionEnabled\x12g\n\x17\x63ookie_persistence_type\x18\x07 \x01(\x0e\x32/.scalekit.v1.environments.CookiePersistenceTypeR\x15\x63ookiePersistenceType\x12h\n\x18\x63ookie_same_site_setting\x18\x08 \x01(\x0e\x32/.scalekit.v1.environments.CookieSameSiteSettingR\x15\x63ookieSameSiteSetting\x12N\n\x14\x63ookie_custom_domain\x18\t \x01(\x0b\x32\x1c.google.protobuf.StringValueR\x12\x63ookieCustomDomain\"\xf0\x05\n\x0eUserManagement\x12\x61\n\x1f\x61llow_duplicate_user_identities\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.BoolValueR\x1c\x61llowDuplicateUserIdentities\x12X\n\x1a\x61llow_multiple_memberships\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.BoolValueR\x18\x61llowMultipleMemberships\x12V\n\x19\x61llow_organization_signup\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.BoolValueR\x17\x61llowOrganizationSignup\x12o\n\x15org_user_relationship\x18\x04 \x01(\x0e\x32\x31.scalekit.v1.environments.OrgUserRelationshipTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x13orgUserRelationship\x12O\n\x16\x65nable_max_users_limit\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.BoolValueR\x13\x65nableMaxUsersLimit\x12P\n\x0fmax_users_limit\x18\x06 \x01(\x0b\x32\x1b.google.protobuf.Int32ValueB\x0b\xbaH\x08\x1a\x06\x18\x9f\x8d\x06(\x01R\rmaxUsersLimit\x12U\n\x11invitation_expiry\x18\x07 \x01(\x0b\x32\x1b.google.protobuf.Int32ValueB\x0b\xbaH\x08\x1a\x06\x18\xc0\xd1\x02(\x01R\x10invitationExpiry\x12^\n\x16organization_meta_name\x18\x08 \x01(\x0b\x32\x1c.google.protobuf.StringValueB\n\xbaH\x07r\x05\x10\x01\x18\xc8\x01R\x14organizationMetaName\":\n\x11GetContextRequest\x12%\n\x0e\x65nvironment_id\x18\x02 \x01(\tR\renvironmentId\"G\n\x12GetContextResponse\x12\x31\n\x07\x63ontext\x18\x01 \x01(\x0b\x32\x17.google.protobuf.StructR\x07\x63ontext\"p\n\x14UpdateContextRequest\x12%\n\x0e\x65nvironment_id\x18\x02 \x01(\tR\renvironmentId\x12\x31\n\x07\x63ontext\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructR\x07\x63ontext\"*\n\x18GetCurrentSessionRequest\x12\x0e\n\x02id\x18\x02 \x01(\tR\x02id\"\x9e\x02\n\x19GetCurrentSessionResponse\x12\x46\n\x0esession_expiry\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00R\rsessionExpiry\x88\x01\x01\x12J\n\x13\x61\x63\x63\x65ss_token_expiry\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x11\x61\x63\x63\x65ssTokenExpiry\x12,\n\x0forganization_id\x18\x03 \x01(\tH\x01R\x0eorganizationId\x88\x01\x01\x12\x18\n\x07subject\x18\x04 \x01(\tR\x07subjectB\x11\n\x0f_session_expiryB\x12\n\x10_organization_id*W\n\x12\x43ustomDomainStatus\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\x0b\n\x07PENDING\x10\x01\x12\n\n\x06\x41\x43TIVE\x10\x02\x12\n\n\x06\x46\x41ILED\x10\x03\x12\x0b\n\x07INITIAL\x10\x04*O\n\rAssetCategory\x12\x1e\n\x1a\x41SSET_CATEGORY_UNSPECIFIED\x10\x00\x12\x1e\n\x1aPORTAL_CUSTOMIZATION_IMAGE\x10\x01*w\n\x17OrgUserRelationshipType\x12\'\n#OrgUserRelationshipType_UNSPECIFIED\x10\x00\x12\x17\n\x13SINGLE_ORGANIZATION\x10\x01\x12\x1a\n\x16MULTIPLE_ORGANIZATIONS\x10\x02*[\n\x15\x43ookiePersistenceType\x12%\n!CookiePersistenceType_UNSPECIFIED\x10\x00\x12\x0e\n\nPERSISTENT\x10\x01\x12\x0b\n\x07SESSION\x10\x02*[\n\x15\x43ookieSameSiteSetting\x12%\n!CookieSameSiteSetting_UNSPECIFIED\x10\x00\x12\x0c\n\x08LAX_MODE\x10\x01\x12\r\n\tNONE_MODE\x10\x02\x32\x92+\n\x12\x45nvironmentService\x12\xad\x01\n\x11\x43reateEnvironment\x12\x32.scalekit.v1.environments.CreateEnvironmentRequest\x1a\x33.scalekit.v1.environments.CreateEnvironmentResponse\"/\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02#\"\x14/api/v1/environments:\x0b\x65nvironment\x12\xb2\x01\n\x11UpdateEnvironment\x12\x32.scalekit.v1.environments.UpdateEnvironmentRequest\x1a\x33.scalekit.v1.environments.UpdateEnvironmentResponse\"4\x82\xb5\x18\x02\x18P\x82\xd3\xe4\x93\x02(2\x19/api/v1/environments/{id}:\x0b\x65nvironment\x12\xc5\x01\n\x17UpdateEnvironmentDomain\x12\x38.scalekit.v1.environments.UpdateEnvironmentDomainRequest\x1a\x33.scalekit.v1.environments.UpdateEnvironmentResponse\";\x82\xb5\x18\x02\x18@\x82\xd3\xe4\x93\x02/2 /api/v1/environments/{id}:update:\x0b\x65nvironment\x12\x9c\x01\n\x0eGetEnvironment\x12/.scalekit.v1.environments.GetEnvironmentRequest\x1a\x30.scalekit.v1.environments.GetEnvironmentResponse\"\'\x82\xb5\x18\x02\x18P\x82\xd3\xe4\x93\x02\x1b\x12\x19/api/v1/environments/{id}\x12\x9c\x01\n\x0fListEnvironment\x12\x31.scalekit.v1.environments.ListEnvironmentsRequest\x1a\x32.scalekit.v1.environments.ListEnvironmentsResponse\"\"\x82\xb5\x18\x02\x18P\x82\xd3\xe4\x93\x02\x16\x12\x14/api/v1/environments\x12\x86\x01\n\x11\x44\x65leteEnvironment\x12\x32.scalekit.v1.environments.DeleteEnvironmentRequest\x1a\x16.google.protobuf.Empty\"%\x82\xb5\x18\x00\x82\xd3\xe4\x93\x02\x1b*\x19/api/v1/environments/{id}\x12\xa8\x01\n\x15GetRequiredDNSRecords\x12..scalekit.v1.environments.GetDNSRecordsRequest\x1a/.scalekit.v1.environments.GetDNSRecordsResponse\".\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02\"\"\x1d/api/v1/environments/{id}/dns:\x01*\x12\x91\x01\n\x10VerifyDNSRecords\x12..scalekit.v1.environments.GetDNSRecordsRequest\x1a\x16.google.protobuf.Empty\"5\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02)\"$/api/v1/environments/{id}/dns:verify:\x01*\x12\xba\x01\n\x12\x43reateCustomDomain\x12\x33.scalekit.v1.environments.CreateCustomDomainRequest\x1a\x34.scalekit.v1.environments.CreateCustomDomainResponse\"9\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02-\"(/api/v1/environments/{id}/custom-domains:\x01*\x12\xbd\x01\n\x17\x43heckCustomDomainStatus\x12/.scalekit.v1.environments.GetEnvironmentRequest\x1a\x30.scalekit.v1.environments.GetEnvironmentResponse\"?\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02\x33\"./api/v1/environments/{id}/custom-domains:check:\x01*\x12\xd8\x01\n\x1aGenerateNewSamlCertificate\x12\x38.scalekit.v1.environments.GenerateSamlCertificateRequest\x1a\x39.scalekit.v1.environments.GenerateSamlCertificateResponse\"E\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02\x39\"4/api/v1/environments/{id}/saml-certificates:generate:\x01*\x12\xb1\x02\n\x19UpdatePortalCustomization\x12:.scalekit.v1.environments.UpdatePortalCustomizationRequest\x1a;.scalekit.v1.environments.UpdatePortalCustomizationResponse\"\x9a\x01\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02\x8d\x01\x1a//api/v1/environments/{id}/portal_customizations:\x16\x63ustomization_settingsZB\x1a(/api/v1/environments/{id}/customizations:\x16\x63ustomization_settings\x12\xfa\x01\n\x16GetPortalCustomization\x12\x37.scalekit.v1.environments.GetPortalCustomizationRequest\x1a\x38.scalekit.v1.environments.GetPortalCustomizationResponse\"m\x82\xb5\x18\x02\x18p\x82\xd3\xe4\x93\x02\x61\x12//api/v1/environments/{id}/portal_customizationsZ.\x12,/api/v1/environments/-/portal_customizations\x12\xc4\x01\n\x14\x43reateAssetUploadURL\x12\x35.scalekit.v1.environments.CreateAssetUploadUrlRequest\x1a\x36.scalekit.v1.environments.CreateAssetUploadUrlResponse\"=\x82\xb5\x18\x02\x18P\x82\xd3\xe4\x93\x02\x31\"\x1f/api/v1/environments/{id}/asset:\x0e\x61sset_settings\x12\xac\x01\n\x0eUpdateFeatures\x12/.scalekit.v1.environments.UpdateFeaturesRequest\x1a-.scalekit.v1.environments.GetFeaturesResponse\":\x82\xb5\x18\x02\x18P\x82\xd3\xe4\x93\x02.\x1a\"/api/v1/environments/{id}/features:\x08\x66\x65\x61tures\x12\x9d\x01\n\x10\x45nableFSAFeature\x12\x31.scalekit.v1.environments.EnableFSAFeatureRequest\x1a\x16.google.protobuf.Empty\">\x82\xb5\x18\x02\x18P\x82\xd3\xe4\x93\x02\x32\x32-/api/v1/environments/{id}/features/fsa/enable:\x01*\x12\x9d\x01\n\rEnableFeature\x12..scalekit.v1.environments.EnableFeatureRequest\x1a\x16.google.protobuf.Empty\"D\x82\xb5\x18\x02\x18p\x82\xd3\xe4\x93\x02\x38\"6/api/v1/environments/{id}/features/{feature_id}:enable\x12\xa0\x01\n\x0e\x44isableFeature\x12/.scalekit.v1.environments.DisableFeatureRequest\x1a\x16.google.protobuf.Empty\"E\x82\xb5\x18\x02\x18p\x82\xd3\xe4\x93\x02\x39\"7/api/v1/environments/{id}/features/{feature_id}:disable\x12\x9c\x01\n\x0bGetFeatures\x12,.scalekit.v1.environments.GetFeaturesRequest\x1a-.scalekit.v1.environments.GetFeaturesResponse\"0\x82\xb5\x18\x02\x18p\x82\xd3\xe4\x93\x02$\x12\"/api/v1/environments/{id}/features\x12\xf5\x01\n CreateEnvironmentSessionSettings\x12\x41.scalekit.v1.environments.CreateEnvironmentSessionSettingsRequest\x1a\x42.scalekit.v1.environments.CreateEnvironmentSessionSettingsResponse\"J\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02>\"*/api/v1/environments/{id}/session-settings:\x10session_settings\x12\xf9\x01\n\x1f\x43reateEnvironmentUserManagement\x12@.scalekit.v1.environments.CreateEnvironmentUserManagementRequest\x1a\x41.scalekit.v1.environments.CreateEnvironmentUserManagementResponse\"Q\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02\x45\"2/api/v1/environments/{id}/settings/user-management:\x0fuser_management\x12\xda\x01\n\x1dGetEnvironmentSessionSettings\x12>.scalekit.v1.environments.GetEnvironmentSessionSettingsRequest\x1a?.scalekit.v1.environments.GetEnvironmentSessionSettingsResponse\"8\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02,\x12*/api/v1/environments/{id}/session-settings\x12\xdf\x01\n\x1cGetEnvironmentUserManagement\x12=.scalekit.v1.environments.GetEnvironmentUserManagementRequest\x1a>.scalekit.v1.environments.GetEnvironmentUserManagementResponse\"@\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02\x34\x12\x32/api/v1/environments/{id}/settings/user-management\x12\xf5\x01\n UpdateEnvironmentSessionSettings\x12\x41.scalekit.v1.environments.UpdateEnvironmentSessionSettingsRequest\x1a\x42.scalekit.v1.environments.UpdateEnvironmentSessionSettingsResponse\"J\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02>2*/api/v1/environments/{id}/session-settings:\x10session_settings\x12\xf9\x01\n\x1fUpdateEnvironmentUserManagement\x12@.scalekit.v1.environments.UpdateEnvironmentUserManagementRequest\x1a\x41.scalekit.v1.environments.UpdateEnvironmentUserManagementResponse\"Q\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02\x45\x32\x32/api/v1/environments/{id}/settings/user-management:\x0fuser_management\x12\xa5\x01\n\nGetContext\x12+.scalekit.v1.environments.GetContextRequest\x1a,.scalekit.v1.environments.GetContextResponse\"<\x82\xb5\x18\x02\x18P\x82\xd3\xe4\x93\x02\x30\x12./api/v1/environments/{environment_id}/contexts\x12\x9e\x01\n\rUpdateContext\x12..scalekit.v1.environments.UpdateContextRequest\x1a\x16.google.protobuf.Empty\"E\x82\xb5\x18\x02\x18P\x82\xd3\xe4\x93\x02\x39\x1a./api/v1/environments/{environment_id}/contexts:\x07\x63ontext\x12\xd7\x01\n\x11GetCurrentSession\x12\x32.scalekit.v1.environments.GetCurrentSessionRequest\x1a\x33.scalekit.v1.environments.GetCurrentSessionResponse\"Y\x82\xb5\x18\x02\x18 \x82\xd3\xe4\x93\x02M\x12%/api/v1/environments/{id}/sessions:meZ$\x12\"/api/v1/environments/-/sessions:meB8Z6github.com/scalekit-inc/scalekit/pkg/grpc/environmentsb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n+scalekit/v1/environments/environments.proto\x12\x18scalekit.v1.environments\x1a\x1b\x62uf/validate/validate.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x19google/protobuf/any.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/wrappers.proto\x1a!scalekit/v1/commons/commons.proto\x1a!scalekit/v1/options/options.proto\"o\n\x19\x43reateCustomDomainRequest\x12\x1e\n\x02id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x02id\x12\x32\n\rcustom_domain\x18\x02 \x01(\tB\r\xbaH\nr\x05\x10\x01\x18\xfa\x01\xc8\x01\x01R\x0c\x63ustomDomain\"e\n\x1a\x43reateCustomDomainResponse\x12G\n\x0b\x65nvironment\x18\x01 \x01(\x0b\x32%.scalekit.v1.environments.EnvironmentR\x0b\x65nvironment\"j\n\x14GetDNSRecordsRequest\x12\x1e\n\x02id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x02id\x12\x32\n\rcustom_domain\x18\x02 \x01(\tB\r\xbaH\nr\x05\x10\x01\x18\xfa\x01\xc8\x01\x01R\x0c\x63ustomDomain\"^\n\x15GetDNSRecordsResponse\x12\x45\n\x0b\x64ns_records\x18\x01 \x03(\x0b\x32$.scalekit.v1.environments.DNSRecordsR\ndnsRecords\"w\n\nDNSRecords\x12\'\n\thost_name\x18\x01 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x18\xfa\x01R\x08hostName\x12\x1e\n\x04type\x18\x02 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x18\xfa\x01R\x04type\x12 \n\x05value\x18\x03 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x18\xfa\x01R\x05value\"\x92\x04\n\x0b\x45nvironment\x12\x1e\n\x02id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x02id\x12;\n\x0b\x63reate_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\ncreateTime\x12;\n\x0bupdate_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\nupdateTime\x12-\n\x0c\x64isplay_name\x18\x04 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x18\xc8\x01R\x0b\x64isplayName\x12\"\n\x06\x64omain\x18\x05 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x18\xfa\x01R\x06\x64omain\x12@\n\x0bregion_code\x18\x06 \x01(\x0e\x32\x1f.scalekit.v1.commons.RegionCodeR\nregionCode\x12\x38\n\x04type\x18\x07 \x01(\x0e\x32$.scalekit.v1.commons.EnvironmentTypeR\x04type\x12(\n\rcustom_domain\x18\x08 \x01(\tH\x00R\x0c\x63ustomDomain\x88\x01\x01\x12^\n\x14\x63ustom_domain_status\x18\t \x01(\x0e\x32,.scalekit.v1.environments.CustomDomainStatusR\x12\x63ustomDomainStatusB\x10\n\x0e_custom_domain\"\xe7\x01\n\x11\x43reateEnvironment\x12-\n\x0c\x64isplay_name\x18\x04 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x18\xc8\x01R\x0b\x64isplayName\x12\x45\n\x0bregion_code\x18\x06 \x01(\x0e\x32\x1f.scalekit.v1.commons.RegionCodeH\x00R\nregionCode\x88\x01\x01\x12=\n\x04type\x18\x07 \x01(\x0e\x32$.scalekit.v1.commons.EnvironmentTypeH\x01R\x04type\x88\x01\x01\x42\x0e\n\x0c_region_codeB\x07\n\x05_typeJ\x04\x08\x05\x10\x06\"j\n\x11UpdateEnvironment\x12\x32\n\x0c\x64isplay_name\x18\x04 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x18\xd0\x0fH\x00R\x0b\x64isplayName\x88\x01\x01\x42\x0f\n\r_display_nameJ\x04\x08\x05\x10\x06J\x04\x08\x06\x10\x07J\x04\x08\x07\x10\x08\"S\n\x17UpdateEnvironmentDomain\x12\'\n\x06\x64omain\x18\x05 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x18\xfa\x01H\x00R\x06\x64omain\x88\x01\x01\x42\t\n\x07_domainJ\x04\x08\x04\x10\x05\"q\n\x18\x43reateEnvironmentRequest\x12U\n\x0b\x65nvironment\x18\x01 \x01(\x0b\x32+.scalekit.v1.environments.CreateEnvironmentB\x06\xbaH\x03\xc8\x01\x01R\x0b\x65nvironment\"d\n\x19\x43reateEnvironmentResponse\x12G\n\x0b\x65nvironment\x18\x01 \x01(\x0b\x32%.scalekit.v1.environments.EnvironmentR\x0b\x65nvironment\"\x91\x01\n\x18UpdateEnvironmentRequest\x12\x1e\n\x02id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x02id\x12U\n\x0b\x65nvironment\x18\x02 \x01(\x0b\x32+.scalekit.v1.environments.UpdateEnvironmentB\x06\xbaH\x03\xc8\x01\x01R\x0b\x65nvironment\"\x9d\x01\n\x1eUpdateEnvironmentDomainRequest\x12\x1e\n\x02id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x02id\x12[\n\x0b\x65nvironment\x18\x02 \x01(\x0b\x32\x31.scalekit.v1.environments.UpdateEnvironmentDomainB\x06\xbaH\x03\xc8\x01\x01R\x0b\x65nvironment\"d\n\x19UpdateEnvironmentResponse\x12G\n\x0b\x65nvironment\x18\x01 \x01(\x0b\x32%.scalekit.v1.environments.EnvironmentR\x0b\x65nvironment\"7\n\x15GetEnvironmentRequest\x12\x1e\n\x02id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x02id\"a\n\x16GetEnvironmentResponse\x12G\n\x0b\x65nvironment\x18\x01 \x01(\x0b\x32%.scalekit.v1.environments.EnvironmentR\x0b\x65nvironment\"U\n\x17ListEnvironmentsRequest\x12\x1b\n\tpage_size\x18\x01 \x01(\rR\x08pageSize\x12\x1d\n\npage_token\x18\x02 \x01(\tR\tpageToken\"\xac\x01\n\x18ListEnvironmentsResponse\x12&\n\x0fnext_page_token\x18\x01 \x01(\tR\rnextPageToken\x12\x1d\n\ntotal_size\x18\x02 \x01(\rR\ttotalSize\x12I\n\x0c\x65nvironments\x18\x03 \x03(\x0b\x32%.scalekit.v1.environments.EnvironmentR\x0c\x65nvironments\":\n\x18\x44\x65leteEnvironmentRequest\x12\x1e\n\x02id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x02id\"@\n\x1eGenerateSamlCertificateRequest\x12\x1e\n\x02id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x02id\"k\n\x1fGenerateSamlCertificateResponse\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12 \n\x0b\x63\x65rtificate\x18\x02 \x01(\tR\x0b\x63\x65rtificate\x12\x16\n\x06\x65xpiry\x18\x03 \x01(\x03R\x06\x65xpiry\"\x99\x01\n!UpdatePortalCustomizationResponse\x12$\n\renvironmentId\x18\x01 \x01(\tR\renvironmentId\x12N\n\x16\x63ustomization_settings\x18\x02 \x01(\x0b\x32\x17.google.protobuf.StructR\x15\x63ustomizationSettings\"\x9a\x01\n UpdatePortalCustomizationRequest\x12\x1e\n\x02id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x02id\x12V\n\x16\x63ustomization_settings\x18\x02 \x01(\x0b\x32\x17.google.protobuf.StructB\x06\xbaH\x03\xc8\x01\x01R\x15\x63ustomizationSettings\":\n\x1dGetPortalCustomizationRequest\x12\x19\n\x02id\x18\x01 \x01(\tB\t\xbaH\x06r\x04\x10\x00\x18 R\x02id\"\x96\x01\n\x1eGetPortalCustomizationResponse\x12$\n\renvironmentId\x18\x01 \x01(\tR\renvironmentId\x12N\n\x16\x63ustomization_settings\x18\x02 \x01(\x0b\x32\x17.google.protobuf.StructR\x15\x63ustomizationSettings\"Z\n\x1c\x43reateAssetUploadUrlResponse\x12\x1d\n\nupload_url\x18\x01 \x01(\tR\tuploadUrl\x12\x1b\n\tfetch_url\x18\x02 \x01(\tR\x08\x66\x65tchUrl\"\x8d\x01\n\x1b\x43reateAssetUploadUrlRequest\x12\x1e\n\x02id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x02id\x12N\n\x0e\x61sset_settings\x18\x02 \x01(\x0b\x32\'.scalekit.v1.environments.AssetSettingsR\rassetSettings\"\x91\x01\n\rAssetSettings\x12K\n\x08\x63\x61tegory\x18\x01 \x01(\x0e\x32\'.scalekit.v1.environments.AssetCategoryB\x06\xbaH\x03\xc8\x01\x01R\x08\x63\x61tegory\x12\x33\n\textension\x18\x02 \x01(\tB\x15\xbaH\x12r\x10R\x03jpgR\x04jpegR\x03pngR\textension\"\x89\x01\n\x15UpdateFeaturesRequest\x12\x1e\n\x02id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x02id\x12P\n\x08\x66\x65\x61tures\x18\x02 \x03(\x0b\x32,.scalekit.v1.environments.EnvironmentFeatureB\x06\xbaH\x03\xc8\x01\x01R\x08\x66\x65\x61tures\"9\n\x17\x45nableFSAFeatureRequest\x12\x1e\n\x02id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x02id\"4\n\x12GetFeaturesRequest\x12\x1e\n\x02id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x02id\"_\n\x13GetFeaturesResponse\x12H\n\x08\x66\x65\x61tures\x18\x01 \x03(\x0b\x32,.scalekit.v1.environments.EnvironmentFeatureR\x08\x66\x65\x61tures\"`\n\x14\x45nableFeatureRequest\x12\x1e\n\x02id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x02id\x12(\n\nfeature_id\x18\x02 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18 R\tfeatureId\"a\n\x15\x44isableFeatureRequest\x12\x1e\n\x02id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x02id\x12(\n\nfeature_id\x18\x02 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18 R\tfeatureId\"B\n\x12\x45nvironmentFeature\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n\x07\x65nabled\x18\x02 \x01(\x08R\x07\x65nabled\"F\n$GetEnvironmentSessionSettingsRequest\x12\x1e\n\x02id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x02id\"E\n#GetEnvironmentUserManagementRequest\x12\x1e\n\x02id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x02id\"}\n%GetEnvironmentSessionSettingsResponse\x12T\n\x10session_settings\x18\x01 \x01(\x0b\x32).scalekit.v1.environments.SessionSettingsR\x0fsessionSettings\"y\n$GetEnvironmentUserManagementResponse\x12Q\n\x0fuser_management\x18\x01 \x01(\x0b\x32(.scalekit.v1.environments.UserManagementR\x0euserManagement\"\xa7\x01\n\'CreateEnvironmentSessionSettingsRequest\x12\x1e\n\x02id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x02id\x12\\\n\x10session_settings\x18\x02 \x01(\x0b\x32).scalekit.v1.environments.SessionSettingsB\x06\xbaH\x03\xc8\x01\x01R\x0fsessionSettings\"\xa3\x01\n&CreateEnvironmentUserManagementRequest\x12\x1e\n\x02id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x02id\x12Y\n\x0fuser_management\x18\x02 \x01(\x0b\x32(.scalekit.v1.environments.UserManagementB\x06\xbaH\x03\xc8\x01\x01R\x0euserManagement\"\xa7\x01\n(CreateEnvironmentSessionSettingsResponse\x12%\n\x0e\x65nvironment_id\x18\x01 \x01(\tR\renvironmentId\x12T\n\x10session_settings\x18\x02 \x01(\x0b\x32).scalekit.v1.environments.SessionSettingsR\x0fsessionSettings\"\xa3\x01\n\'CreateEnvironmentUserManagementResponse\x12%\n\x0e\x65nvironment_id\x18\x01 \x01(\tR\renvironmentId\x12Q\n\x0fuser_management\x18\x02 \x01(\x0b\x32(.scalekit.v1.environments.UserManagementR\x0euserManagement\"\xa7\x01\n\'UpdateEnvironmentSessionSettingsRequest\x12\x1e\n\x02id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x02id\x12\\\n\x10session_settings\x18\x02 \x01(\x0b\x32).scalekit.v1.environments.SessionSettingsB\x06\xbaH\x03\xc8\x01\x01R\x0fsessionSettings\"\xa3\x01\n&UpdateEnvironmentUserManagementRequest\x12\x1e\n\x02id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x02id\x12Y\n\x0fuser_management\x18\x02 \x01(\x0b\x32(.scalekit.v1.environments.UserManagementB\x06\xbaH\x03\xc8\x01\x01R\x0euserManagement\"\xa7\x01\n(UpdateEnvironmentSessionSettingsResponse\x12%\n\x0e\x65nvironment_id\x18\x01 \x01(\tR\renvironmentId\x12T\n\x10session_settings\x18\x02 \x01(\x0b\x32).scalekit.v1.environments.SessionSettingsR\x0fsessionSettings\"\xa3\x01\n\'UpdateEnvironmentUserManagementResponse\x12%\n\x0e\x65nvironment_id\x18\x01 \x01(\tR\renvironmentId\x12Q\n\x0fuser_management\x18\x02 \x01(\x0b\x32(.scalekit.v1.environments.UserManagementR\x0euserManagement\"\xdc\x06\n\x0fSessionSettings\x12X\n\x13\x61\x63\x63\x65ss_token_expiry\x18\x01 \x01(\x0b\x32\x1b.google.protobuf.Int32ValueB\x0b\xbaH\x08\x1a\x06\x18\xc0\xd1\x02(\x01R\x11\x61\x63\x63\x65ssTokenExpiry\x12\x65\n\x1a\x63lient_access_token_expiry\x18\x02 \x01(\x0b\x32\x1b.google.protobuf.Int32ValueB\x0b\xbaH\x08\x1a\x06\x18\xc0\xd1\x02(\x01R\x17\x63lientAccessTokenExpiry\x12\x62\n\x18\x61\x62solute_session_timeout\x18\x03 \x01(\x0b\x32\x1b.google.protobuf.Int32ValueB\x0b\xbaH\x08\x1a\x06\x18\xa0\x8a (\x01R\x16\x61\x62soluteSessionTimeout\x12X\n\x1asession_management_enabled\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.BoolValueR\x18sessionManagementEnabled\x12Y\n\x14idle_session_timeout\x18\x05 \x01(\x0b\x32\x1b.google.protobuf.Int32ValueB\n\xbaH\x07\x1a\x05\x18\xe0N(\x01R\x12idleSessionTimeout\x12L\n\x14idle_session_enabled\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.BoolValueR\x12idleSessionEnabled\x12g\n\x17\x63ookie_persistence_type\x18\x07 \x01(\x0e\x32/.scalekit.v1.environments.CookiePersistenceTypeR\x15\x63ookiePersistenceType\x12h\n\x18\x63ookie_same_site_setting\x18\x08 \x01(\x0e\x32/.scalekit.v1.environments.CookieSameSiteSettingR\x15\x63ookieSameSiteSetting\x12N\n\x14\x63ookie_custom_domain\x18\t \x01(\x0b\x32\x1c.google.protobuf.StringValueR\x12\x63ookieCustomDomain\"\xf1\x05\n\x0eUserManagement\x12\x61\n\x1f\x61llow_duplicate_user_identities\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.BoolValueR\x1c\x61llowDuplicateUserIdentities\x12X\n\x1a\x61llow_multiple_memberships\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.BoolValueR\x18\x61llowMultipleMemberships\x12V\n\x19\x61llow_organization_signup\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.BoolValueR\x17\x61llowOrganizationSignup\x12o\n\x15org_user_relationship\x18\x04 \x01(\x0e\x32\x31.scalekit.v1.environments.OrgUserRelationshipTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x13orgUserRelationship\x12O\n\x16\x65nable_max_users_limit\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.BoolValueR\x13\x65nableMaxUsersLimit\x12P\n\x0fmax_users_limit\x18\x06 \x01(\x0b\x32\x1b.google.protobuf.Int32ValueB\x0b\xbaH\x08\x1a\x06\x18\x9f\x8d\x06(\x01R\rmaxUsersLimit\x12V\n\x11invitation_expiry\x18\x07 \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB\x0b\xbaH\x08\x1a\x06\x18\xc0\xd1\x02(\x01R\x10invitationExpiry\x12^\n\x16organization_meta_name\x18\x08 \x01(\x0b\x32\x1c.google.protobuf.StringValueB\n\xbaH\x07r\x05\x10\x01\x18\xc8\x01R\x14organizationMetaName\":\n\x11GetContextRequest\x12%\n\x0e\x65nvironment_id\x18\x02 \x01(\tR\renvironmentId\"G\n\x12GetContextResponse\x12\x31\n\x07\x63ontext\x18\x01 \x01(\x0b\x32\x17.google.protobuf.StructR\x07\x63ontext\"p\n\x14UpdateContextRequest\x12%\n\x0e\x65nvironment_id\x18\x02 \x01(\tR\renvironmentId\x12\x31\n\x07\x63ontext\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructR\x07\x63ontext\"*\n\x18GetCurrentSessionRequest\x12\x0e\n\x02id\x18\x02 \x01(\tR\x02id\"\xc3\x02\n\x19GetCurrentSessionResponse\x12\x46\n\x0esession_expiry\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00R\rsessionExpiry\x88\x01\x01\x12J\n\x13\x61\x63\x63\x65ss_token_expiry\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x11\x61\x63\x63\x65ssTokenExpiry\x12,\n\x0forganization_id\x18\x03 \x01(\tH\x01R\x0eorganizationId\x88\x01\x01\x12\x18\n\x07subject\x18\x04 \x01(\tR\x07subject\x12\x19\n\x05\x65mail\x18\x05 \x01(\tH\x02R\x05\x65mail\x88\x01\x01\x42\x11\n\x0f_session_expiryB\x12\n\x10_organization_idB\x08\n\x06_email*W\n\x12\x43ustomDomainStatus\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\x0b\n\x07PENDING\x10\x01\x12\n\n\x06\x41\x43TIVE\x10\x02\x12\n\n\x06\x46\x41ILED\x10\x03\x12\x0b\n\x07INITIAL\x10\x04*O\n\rAssetCategory\x12\x1e\n\x1a\x41SSET_CATEGORY_UNSPECIFIED\x10\x00\x12\x1e\n\x1aPORTAL_CUSTOMIZATION_IMAGE\x10\x01*w\n\x17OrgUserRelationshipType\x12\'\n#OrgUserRelationshipType_UNSPECIFIED\x10\x00\x12\x17\n\x13SINGLE_ORGANIZATION\x10\x01\x12\x1a\n\x16MULTIPLE_ORGANIZATIONS\x10\x02*[\n\x15\x43ookiePersistenceType\x12%\n!CookiePersistenceType_UNSPECIFIED\x10\x00\x12\x0e\n\nPERSISTENT\x10\x01\x12\x0b\n\x07SESSION\x10\x02*[\n\x15\x43ookieSameSiteSetting\x12%\n!CookieSameSiteSetting_UNSPECIFIED\x10\x00\x12\x0c\n\x08LAX_MODE\x10\x01\x12\r\n\tNONE_MODE\x10\x02\x32\xa9+\n\x12\x45nvironmentService\x12\xad\x01\n\x11\x43reateEnvironment\x12\x32.scalekit.v1.environments.CreateEnvironmentRequest\x1a\x33.scalekit.v1.environments.CreateEnvironmentResponse\"/\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02#\"\x14/api/v1/environments:\x0b\x65nvironment\x12\xb2\x01\n\x11UpdateEnvironment\x12\x32.scalekit.v1.environments.UpdateEnvironmentRequest\x1a\x33.scalekit.v1.environments.UpdateEnvironmentResponse\"4\x82\xb5\x18\x02\x18P\x82\xd3\xe4\x93\x02(2\x19/api/v1/environments/{id}:\x0b\x65nvironment\x12\xc5\x01\n\x17UpdateEnvironmentDomain\x12\x38.scalekit.v1.environments.UpdateEnvironmentDomainRequest\x1a\x33.scalekit.v1.environments.UpdateEnvironmentResponse\";\x82\xb5\x18\x02\x18@\x82\xd3\xe4\x93\x02/2 /api/v1/environments/{id}:update:\x0b\x65nvironment\x12\x9c\x01\n\x0eGetEnvironment\x12/.scalekit.v1.environments.GetEnvironmentRequest\x1a\x30.scalekit.v1.environments.GetEnvironmentResponse\"\'\x82\xb5\x18\x02\x18P\x82\xd3\xe4\x93\x02\x1b\x12\x19/api/v1/environments/{id}\x12\x9c\x01\n\x0fListEnvironment\x12\x31.scalekit.v1.environments.ListEnvironmentsRequest\x1a\x32.scalekit.v1.environments.ListEnvironmentsResponse\"\"\x82\xb5\x18\x02\x18P\x82\xd3\xe4\x93\x02\x16\x12\x14/api/v1/environments\x12\x86\x01\n\x11\x44\x65leteEnvironment\x12\x32.scalekit.v1.environments.DeleteEnvironmentRequest\x1a\x16.google.protobuf.Empty\"%\x82\xb5\x18\x00\x82\xd3\xe4\x93\x02\x1b*\x19/api/v1/environments/{id}\x12\xa8\x01\n\x15GetRequiredDNSRecords\x12..scalekit.v1.environments.GetDNSRecordsRequest\x1a/.scalekit.v1.environments.GetDNSRecordsResponse\".\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02\"\"\x1d/api/v1/environments/{id}/dns:\x01*\x12\x91\x01\n\x10VerifyDNSRecords\x12..scalekit.v1.environments.GetDNSRecordsRequest\x1a\x16.google.protobuf.Empty\"5\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02)\"$/api/v1/environments/{id}/dns:verify:\x01*\x12\xba\x01\n\x12\x43reateCustomDomain\x12\x33.scalekit.v1.environments.CreateCustomDomainRequest\x1a\x34.scalekit.v1.environments.CreateCustomDomainResponse\"9\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02-\"(/api/v1/environments/{id}/custom-domains:\x01*\x12\xbd\x01\n\x17\x43heckCustomDomainStatus\x12/.scalekit.v1.environments.GetEnvironmentRequest\x1a\x30.scalekit.v1.environments.GetEnvironmentResponse\"?\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02\x33\"./api/v1/environments/{id}/custom-domains:check:\x01*\x12\xd8\x01\n\x1aGenerateNewSamlCertificate\x12\x38.scalekit.v1.environments.GenerateSamlCertificateRequest\x1a\x39.scalekit.v1.environments.GenerateSamlCertificateResponse\"E\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02\x39\"4/api/v1/environments/{id}/saml-certificates:generate:\x01*\x12\xb1\x02\n\x19UpdatePortalCustomization\x12:.scalekit.v1.environments.UpdatePortalCustomizationRequest\x1a;.scalekit.v1.environments.UpdatePortalCustomizationResponse\"\x9a\x01\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02\x8d\x01\x1a//api/v1/environments/{id}/portal_customizations:\x16\x63ustomization_settingsZB\x1a(/api/v1/environments/{id}/customizations:\x16\x63ustomization_settings\x12\xfa\x01\n\x16GetPortalCustomization\x12\x37.scalekit.v1.environments.GetPortalCustomizationRequest\x1a\x38.scalekit.v1.environments.GetPortalCustomizationResponse\"m\x82\xb5\x18\x02\x18p\x82\xd3\xe4\x93\x02\x61\x12//api/v1/environments/{id}/portal_customizationsZ.\x12,/api/v1/environments/-/portal_customizations\x12\xc4\x01\n\x14\x43reateAssetUploadURL\x12\x35.scalekit.v1.environments.CreateAssetUploadUrlRequest\x1a\x36.scalekit.v1.environments.CreateAssetUploadUrlResponse\"=\x82\xb5\x18\x02\x18P\x82\xd3\xe4\x93\x02\x31\"\x1f/api/v1/environments/{id}/asset:\x0e\x61sset_settings\x12\xac\x01\n\x0eUpdateFeatures\x12/.scalekit.v1.environments.UpdateFeaturesRequest\x1a-.scalekit.v1.environments.GetFeaturesResponse\":\x82\xb5\x18\x02\x18P\x82\xd3\xe4\x93\x02.\x1a\"/api/v1/environments/{id}/features:\x08\x66\x65\x61tures\x12\x9d\x01\n\x10\x45nableFSAFeature\x12\x31.scalekit.v1.environments.EnableFSAFeatureRequest\x1a\x16.google.protobuf.Empty\">\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02\x32\"-/api/v1/environments/{id}/features/fsa/enable:\x01*\x12\x9d\x01\n\rEnableFeature\x12..scalekit.v1.environments.EnableFeatureRequest\x1a\x16.google.protobuf.Empty\"D\x82\xb5\x18\x02\x18p\x82\xd3\xe4\x93\x02\x38\"6/api/v1/environments/{id}/features/{feature_id}:enable\x12\xa0\x01\n\x0e\x44isableFeature\x12/.scalekit.v1.environments.DisableFeatureRequest\x1a\x16.google.protobuf.Empty\"E\x82\xb5\x18\x02\x18p\x82\xd3\xe4\x93\x02\x39\"7/api/v1/environments/{id}/features/{feature_id}:disable\x12\x9c\x01\n\x0bGetFeatures\x12,.scalekit.v1.environments.GetFeaturesRequest\x1a-.scalekit.v1.environments.GetFeaturesResponse\"0\x82\xb5\x18\x02\x18p\x82\xd3\xe4\x93\x02$\x12\"/api/v1/environments/{id}/features\x12\xf5\x01\n CreateEnvironmentSessionSettings\x12\x41.scalekit.v1.environments.CreateEnvironmentSessionSettingsRequest\x1a\x42.scalekit.v1.environments.CreateEnvironmentSessionSettingsResponse\"J\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02>\"*/api/v1/environments/{id}/session-settings:\x10session_settings\x12\xf9\x01\n\x1f\x43reateEnvironmentUserManagement\x12@.scalekit.v1.environments.CreateEnvironmentUserManagementRequest\x1a\x41.scalekit.v1.environments.CreateEnvironmentUserManagementResponse\"Q\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02\x45\"2/api/v1/environments/{id}/settings/user-management:\x0fuser_management\x12\xda\x01\n\x1dGetEnvironmentSessionSettings\x12>.scalekit.v1.environments.GetEnvironmentSessionSettingsRequest\x1a?.scalekit.v1.environments.GetEnvironmentSessionSettingsResponse\"8\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02,\x12*/api/v1/environments/{id}/session-settings\x12\xdf\x01\n\x1cGetEnvironmentUserManagement\x12=.scalekit.v1.environments.GetEnvironmentUserManagementRequest\x1a>.scalekit.v1.environments.GetEnvironmentUserManagementResponse\"@\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02\x34\x12\x32/api/v1/environments/{id}/settings/user-management\x12\xf5\x01\n UpdateEnvironmentSessionSettings\x12\x41.scalekit.v1.environments.UpdateEnvironmentSessionSettingsRequest\x1a\x42.scalekit.v1.environments.UpdateEnvironmentSessionSettingsResponse\"J\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02>2*/api/v1/environments/{id}/session-settings:\x10session_settings\x12\xf9\x01\n\x1fUpdateEnvironmentUserManagement\x12@.scalekit.v1.environments.UpdateEnvironmentUserManagementRequest\x1a\x41.scalekit.v1.environments.UpdateEnvironmentUserManagementResponse\"Q\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02\x45\x32\x32/api/v1/environments/{id}/settings/user-management:\x0fuser_management\x12\xa5\x01\n\nGetContext\x12+.scalekit.v1.environments.GetContextRequest\x1a,.scalekit.v1.environments.GetContextResponse\"<\x82\xb5\x18\x02\x18P\x82\xd3\xe4\x93\x02\x30\x12./api/v1/environments/{environment_id}/contexts\x12\x9e\x01\n\rUpdateContext\x12..scalekit.v1.environments.UpdateContextRequest\x1a\x16.google.protobuf.Empty\"E\x82\xb5\x18\x02\x18P\x82\xd3\xe4\x93\x02\x39\x1a./api/v1/environments/{environment_id}/contexts:\x07\x63ontext\x12\xee\x01\n\x11GetCurrentSession\x12\x32.scalekit.v1.environments.GetCurrentSessionRequest\x1a\x33.scalekit.v1.environments.GetCurrentSessionResponse\"p\x82\xb5\x18\x02\x18p\x82\xd3\xe4\x93\x02\x64\x12%/api/v1/environments/{id}/sessions:meZ$\x12\"/api/v1/environments/-/sessions:meZ\x15\x12\x13/api/v1/sessions:meB8Z6github.com/scalekit-inc/scalekit/pkg/grpc/environmentsb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -170,7 +170,7 @@ _globals['_ENVIRONMENTSERVICE'].methods_by_name['UpdateFeatures']._loaded_options = None _globals['_ENVIRONMENTSERVICE'].methods_by_name['UpdateFeatures']._serialized_options = b'\202\265\030\002\030P\202\323\344\223\002.\032\"/api/v1/environments/{id}/features:\010features' _globals['_ENVIRONMENTSERVICE'].methods_by_name['EnableFSAFeature']._loaded_options = None - _globals['_ENVIRONMENTSERVICE'].methods_by_name['EnableFSAFeature']._serialized_options = b'\202\265\030\002\030P\202\323\344\223\00222-/api/v1/environments/{id}/features/fsa/enable:\001*' + _globals['_ENVIRONMENTSERVICE'].methods_by_name['EnableFSAFeature']._serialized_options = b'\202\265\030\002\030T\202\323\344\223\0022\"-/api/v1/environments/{id}/features/fsa/enable:\001*' _globals['_ENVIRONMENTSERVICE'].methods_by_name['EnableFeature']._loaded_options = None _globals['_ENVIRONMENTSERVICE'].methods_by_name['EnableFeature']._serialized_options = b'\202\265\030\002\030p\202\323\344\223\0028\"6/api/v1/environments/{id}/features/{feature_id}:enable' _globals['_ENVIRONMENTSERVICE'].methods_by_name['DisableFeature']._loaded_options = None @@ -194,17 +194,17 @@ _globals['_ENVIRONMENTSERVICE'].methods_by_name['UpdateContext']._loaded_options = None _globals['_ENVIRONMENTSERVICE'].methods_by_name['UpdateContext']._serialized_options = b'\202\265\030\002\030P\202\323\344\223\0029\032./api/v1/environments/{environment_id}/contexts:\007context' _globals['_ENVIRONMENTSERVICE'].methods_by_name['GetCurrentSession']._loaded_options = None - _globals['_ENVIRONMENTSERVICE'].methods_by_name['GetCurrentSession']._serialized_options = b'\202\265\030\002\030 \202\323\344\223\002M\022%/api/v1/environments/{id}/sessions:meZ$\022\"/api/v1/environments/-/sessions:me' - _globals['_CUSTOMDOMAINSTATUS']._serialized_start=8659 - _globals['_CUSTOMDOMAINSTATUS']._serialized_end=8746 - _globals['_ASSETCATEGORY']._serialized_start=8748 - _globals['_ASSETCATEGORY']._serialized_end=8827 - _globals['_ORGUSERRELATIONSHIPTYPE']._serialized_start=8829 - _globals['_ORGUSERRELATIONSHIPTYPE']._serialized_end=8948 - _globals['_COOKIEPERSISTENCETYPE']._serialized_start=8950 - _globals['_COOKIEPERSISTENCETYPE']._serialized_end=9041 - _globals['_COOKIESAMESITESETTING']._serialized_start=9043 - _globals['_COOKIESAMESITESETTING']._serialized_end=9134 + _globals['_ENVIRONMENTSERVICE'].methods_by_name['GetCurrentSession']._serialized_options = b'\202\265\030\002\030p\202\323\344\223\002d\022%/api/v1/environments/{id}/sessions:meZ$\022\"/api/v1/environments/-/sessions:meZ\025\022\023/api/v1/sessions:me' + _globals['_CUSTOMDOMAINSTATUS']._serialized_start=8697 + _globals['_CUSTOMDOMAINSTATUS']._serialized_end=8784 + _globals['_ASSETCATEGORY']._serialized_start=8786 + _globals['_ASSETCATEGORY']._serialized_end=8865 + _globals['_ORGUSERRELATIONSHIPTYPE']._serialized_start=8867 + _globals['_ORGUSERRELATIONSHIPTYPE']._serialized_end=8986 + _globals['_COOKIEPERSISTENCETYPE']._serialized_start=8988 + _globals['_COOKIEPERSISTENCETYPE']._serialized_end=9079 + _globals['_COOKIESAMESITESETTING']._serialized_start=9081 + _globals['_COOKIESAMESITESETTING']._serialized_end=9172 _globals['_CREATECUSTOMDOMAINREQUEST']._serialized_start=418 _globals['_CREATECUSTOMDOMAINREQUEST']._serialized_end=529 _globals['_CREATECUSTOMDOMAINRESPONSE']._serialized_start=531 @@ -302,17 +302,17 @@ _globals['_SESSIONSETTINGS']._serialized_start=6462 _globals['_SESSIONSETTINGS']._serialized_end=7322 _globals['_USERMANAGEMENT']._serialized_start=7325 - _globals['_USERMANAGEMENT']._serialized_end=8077 - _globals['_GETCONTEXTREQUEST']._serialized_start=8079 - _globals['_GETCONTEXTREQUEST']._serialized_end=8137 - _globals['_GETCONTEXTRESPONSE']._serialized_start=8139 - _globals['_GETCONTEXTRESPONSE']._serialized_end=8210 - _globals['_UPDATECONTEXTREQUEST']._serialized_start=8212 - _globals['_UPDATECONTEXTREQUEST']._serialized_end=8324 - _globals['_GETCURRENTSESSIONREQUEST']._serialized_start=8326 - _globals['_GETCURRENTSESSIONREQUEST']._serialized_end=8368 - _globals['_GETCURRENTSESSIONRESPONSE']._serialized_start=8371 - _globals['_GETCURRENTSESSIONRESPONSE']._serialized_end=8657 - _globals['_ENVIRONMENTSERVICE']._serialized_start=9137 - _globals['_ENVIRONMENTSERVICE']._serialized_end=14659 + _globals['_USERMANAGEMENT']._serialized_end=8078 + _globals['_GETCONTEXTREQUEST']._serialized_start=8080 + _globals['_GETCONTEXTREQUEST']._serialized_end=8138 + _globals['_GETCONTEXTRESPONSE']._serialized_start=8140 + _globals['_GETCONTEXTRESPONSE']._serialized_end=8211 + _globals['_UPDATECONTEXTREQUEST']._serialized_start=8213 + _globals['_UPDATECONTEXTREQUEST']._serialized_end=8325 + _globals['_GETCURRENTSESSIONREQUEST']._serialized_start=8327 + _globals['_GETCURRENTSESSIONREQUEST']._serialized_end=8369 + _globals['_GETCURRENTSESSIONRESPONSE']._serialized_start=8372 + _globals['_GETCURRENTSESSIONRESPONSE']._serialized_end=8695 + _globals['_ENVIRONMENTSERVICE']._serialized_start=9175 + _globals['_ENVIRONMENTSERVICE']._serialized_end=14720 # @@protoc_insertion_point(module_scope) diff --git a/scalekit/v1/environments/environments_pb2.pyi b/scalekit/v1/environments/environments_pb2.pyi index c9d5c77..5ae7fa0 100644 --- a/scalekit/v1/environments/environments_pb2.pyi +++ b/scalekit/v1/environments/environments_pb2.pyi @@ -462,9 +462,9 @@ class UserManagement(_message.Message): org_user_relationship: OrgUserRelationshipType enable_max_users_limit: _wrappers_pb2.BoolValue max_users_limit: _wrappers_pb2.Int32Value - invitation_expiry: _wrappers_pb2.Int32Value + invitation_expiry: _wrappers_pb2.UInt32Value organization_meta_name: _wrappers_pb2.StringValue - def __init__(self, allow_duplicate_user_identities: _Optional[_Union[_wrappers_pb2.BoolValue, _Mapping]] = ..., allow_multiple_memberships: _Optional[_Union[_wrappers_pb2.BoolValue, _Mapping]] = ..., allow_organization_signup: _Optional[_Union[_wrappers_pb2.BoolValue, _Mapping]] = ..., org_user_relationship: _Optional[_Union[OrgUserRelationshipType, str]] = ..., enable_max_users_limit: _Optional[_Union[_wrappers_pb2.BoolValue, _Mapping]] = ..., max_users_limit: _Optional[_Union[_wrappers_pb2.Int32Value, _Mapping]] = ..., invitation_expiry: _Optional[_Union[_wrappers_pb2.Int32Value, _Mapping]] = ..., organization_meta_name: _Optional[_Union[_wrappers_pb2.StringValue, _Mapping]] = ...) -> None: ... + def __init__(self, allow_duplicate_user_identities: _Optional[_Union[_wrappers_pb2.BoolValue, _Mapping]] = ..., allow_multiple_memberships: _Optional[_Union[_wrappers_pb2.BoolValue, _Mapping]] = ..., allow_organization_signup: _Optional[_Union[_wrappers_pb2.BoolValue, _Mapping]] = ..., org_user_relationship: _Optional[_Union[OrgUserRelationshipType, str]] = ..., enable_max_users_limit: _Optional[_Union[_wrappers_pb2.BoolValue, _Mapping]] = ..., max_users_limit: _Optional[_Union[_wrappers_pb2.Int32Value, _Mapping]] = ..., invitation_expiry: _Optional[_Union[_wrappers_pb2.UInt32Value, _Mapping]] = ..., organization_meta_name: _Optional[_Union[_wrappers_pb2.StringValue, _Mapping]] = ...) -> None: ... class GetContextRequest(_message.Message): __slots__ = ("environment_id",) @@ -493,13 +493,15 @@ class GetCurrentSessionRequest(_message.Message): def __init__(self, id: _Optional[str] = ...) -> None: ... class GetCurrentSessionResponse(_message.Message): - __slots__ = ("session_expiry", "access_token_expiry", "organization_id", "subject") + __slots__ = ("session_expiry", "access_token_expiry", "organization_id", "subject", "email") SESSION_EXPIRY_FIELD_NUMBER: _ClassVar[int] ACCESS_TOKEN_EXPIRY_FIELD_NUMBER: _ClassVar[int] ORGANIZATION_ID_FIELD_NUMBER: _ClassVar[int] SUBJECT_FIELD_NUMBER: _ClassVar[int] + EMAIL_FIELD_NUMBER: _ClassVar[int] session_expiry: _timestamp_pb2.Timestamp access_token_expiry: _timestamp_pb2.Timestamp organization_id: str subject: str - def __init__(self, session_expiry: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., access_token_expiry: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., organization_id: _Optional[str] = ..., subject: _Optional[str] = ...) -> None: ... + email: str + def __init__(self, session_expiry: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., access_token_expiry: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., organization_id: _Optional[str] = ..., subject: _Optional[str] = ..., email: _Optional[str] = ...) -> None: ... diff --git a/scalekit/v1/events/events_pb2.py b/scalekit/v1/events/events_pb2.py index b6d4e3d..f21dfa3 100644 --- a/scalekit/v1/events/events_pb2.py +++ b/scalekit/v1/events/events_pb2.py @@ -24,7 +24,7 @@ from scalekit.v1.options import options_pb2 as scalekit_dot_v1_dot_options_dot_options__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1fscalekit/v1/events/events.proto\x12\x12scalekit.v1.events\x1a\x1b\x62uf/validate/validate.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x19google/protobuf/any.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a.protoc-gen-openapiv2/options/annotations.proto\x1a!scalekit/v1/commons/commons.proto\x1a!scalekit/v1/options/options.proto\"n\n\x16SendCustomEventRequest\x12%\n\nevent_type\x18\x01 \x01(\tB\x06\xbaH\x03\xc8\x01\x01R\teventType\x12-\n\x05\x65vent\x18\x02 \x01(\x0b\x32\x17.google.protobuf.StructR\x05\x65vent\"4\n\x17SendCustomEventResponse\x12\x19\n\x08\x65vent_id\x18\x01 \x01(\tR\x07\x65ventId\"n\n\x16IEventPaginationTokens\x12\x1a\n\x08NextPage\x18\x01 \x01(\tR\x08NextPage\x12\"\n\x0cPreviousPage\x18\x02 \x01(\tR\x0cPreviousPage\x12\x14\n\x05Total\x18\x03 \x01(\rR\x05Total\"\x88\x01\n\x11ListEventsRequest\x12\x37\n\x06\x66ilter\x18\x01 \x01(\x0b\x32\x1f.scalekit.v1.events.EventFilterR\x06\x66ilter\x12\x1b\n\tpage_size\x18\x02 \x01(\rR\x08pageSize\x12\x1d\n\npage_token\x18\x03 \x01(\tR\tpageToken\"\xbe\x01\n\x12ListEventsResponse\x12\x39\n\x06\x65vents\x18\x01 \x03(\x0b\x32!.scalekit.v1.events.ScalekitEventR\x06\x65vents\x12&\n\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken\x12&\n\x0fprev_page_token\x18\x03 \x01(\tR\rprevPageToken\x12\x1d\n\ntotal_size\x18\x04 \x01(\rR\ttotalSize\"\xc6\x05\n\x06IEvent\x12!\n\x0cspec_version\x18\x01 \x01(\tR\x0bspecVersion\x12\x19\n\x02id\x18\x02 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18 R\x02id\x12\x12\n\x04type\x18\x03 \x01(\tR\x04type\x12;\n\x0boccurred_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\noccurredAt\x12/\n\x05\x61\x63tor\x18\x05 \x01(\x0b\x32\x19.scalekit.v1.events.ActorR\x05\x61\x63tor\x12\x1b\n\ttenant_id\x18\x06 \x01(\tR\x08tenantId\x12\x32\n\x06target\x18\x07 \x01(\x0b\x32\x1a.scalekit.v1.events.TargetR\x06target\x12\x16\n\x06source\x18\x08 \x01(\tR\x06source\x12+\n\x04\x64\x61ta\x18\t \x01(\x0b\x32\x17.google.protobuf.StructR\x04\x64\x61ta\x12\x32\n\x08old_data\x18\n \x01(\x0b\x32\x17.google.protobuf.StructR\x07oldData\x12Z\n\x07\x63ontext\x18\x0b \x03(\x0b\x32\'.scalekit.v1.events.IEvent.ContextEntryB\x17\xbaH\x14\x9a\x01\x11\"\x06r\x04\x10\x03\x18\x19*\x07r\x05\x10\x01\x18\xd0\x0fR\x07\x63ontext\x12]\n\x08metadata\x18\x0c \x03(\x0b\x32(.scalekit.v1.events.IEvent.MetadataEntryB\x17\xbaH\x14\x9a\x01\x11\"\x06r\x04\x10\x03\x18\x19*\x07r\x05\x10\x01\x18\xd0\x0fR\x08metadata\x1a:\n\x0c\x43ontextEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x1a;\n\rMetadataEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\xfb\x05\n\x05\x45vent\x12!\n\x0cspec_version\x18\x01 \x01(\tR\x0bspecVersion\x12\x19\n\x02id\x18\x02 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18 R\x02id\x12\x12\n\x04type\x18\x03 \x01(\tR\x04type\x12;\n\x0boccurred_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\noccurredAt\x12/\n\x05\x61\x63tor\x18\x05 \x01(\x0b\x32\x19.scalekit.v1.events.ActorR\x05\x61\x63tor\x12\x1b\n\ttenant_id\x18\x06 \x01(\tR\x08tenantId\x12\x32\n\x06target\x18\x07 \x01(\x0b\x32\x1a.scalekit.v1.events.TargetR\x06target\x12\x16\n\x06source\x18\x08 \x01(\tR\x06source\x12+\n\x04\x64\x61ta\x18\t \x01(\x0b\x32\x17.google.protobuf.StructR\x04\x64\x61ta\x12\x32\n\x08old_data\x18\n \x01(\x0b\x32\x17.google.protobuf.StructR\x07oldData\x12Y\n\x07\x63ontext\x18\x0b \x03(\x0b\x32&.scalekit.v1.events.Event.ContextEntryB\x17\xbaH\x14\x9a\x01\x11\"\x06r\x04\x10\x03\x18\x19*\x07r\x05\x10\x01\x18\xd0\x0fR\x07\x63ontext\x12\\\n\x08metadata\x18\x0c \x03(\x0b\x32\'.scalekit.v1.events.Event.MetadataEntryB\x17\xbaH\x14\x9a\x01\x11\"\x06r\x04\x10\x03\x18\x19*\x07r\x05\x10\x01\x18\xd0\x0fR\x08metadata\x12\x36\n\x06object\x18\r \x01(\x0e\x32\x1e.scalekit.v1.events.ObjectTypeR\x06object\x1a:\n\x0c\x43ontextEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x1a;\n\rMetadataEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"K\n\x05\x41\x63tor\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x32\n\x04type\x18\x02 \x01(\x0e\x32\x1e.scalekit.v1.events.EventActorR\x04type\"M\n\x06Target\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x33\n\x04type\x18\x02 \x01(\x0e\x32\x1f.scalekit.v1.events.EventTargetR\x04type\"\xc8\x03\n\x0cIEventFilter\x12\x1f\n\x0b\x65vent_types\x18\x01 \x03(\tR\neventTypes\x12\x39\n\nstart_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tstartTime\x12\x35\n\x08\x65nd_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x07\x65ndTime\x12\x1b\n\ttenant_id\x18\x04 \x01(\tR\x08tenantId\x12\x32\n\x06target\x18\x05 \x01(\x0b\x32\x1a.scalekit.v1.events.TargetR\x06target\x12\x32\n\x06source\x18\x06 \x01(\x0e\x32\x1a.scalekit.v1.events.SourceR\x06source\x12\x63\n\x08metadata\x18\x07 \x03(\x0b\x32..scalekit.v1.events.IEventFilter.MetadataEntryB\x17\xbaH\x14\x9a\x01\x11\"\x06r\x04\x10\x03\x18\x19*\x07r\x05\x10\x01\x18\xd0\x0fR\x08metadata\x1a;\n\rMetadataEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\xfd\x01\n\x0b\x45ventFilter\x12\x1f\n\x0b\x65vent_types\x18\x01 \x03(\tR\neventTypes\x12\x39\n\nstart_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tstartTime\x12\x35\n\x08\x65nd_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x07\x65ndTime\x12\'\n\x0forganization_id\x18\x04 \x01(\tR\x0eorganizationId\x12\x32\n\x06source\x18\x05 \x01(\x0e\x32\x1a.scalekit.v1.events.SourceR\x06source\"\xf7\x02\n\rScalekitEvent\x12!\n\x0cspec_version\x18\x01 \x01(\tR\x0bspecVersion\x12\x1e\n\x02id\x18\x02 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65vtR\x02id\x12\x12\n\x04type\x18\x03 \x01(\tR\x04type\x12;\n\x0boccurred_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\noccurredAt\x12%\n\x0e\x65nvironment_id\x18\x06 \x01(\tR\renvironmentId\x12,\n\x0forganization_id\x18\x07 \x01(\tH\x00R\x0eorganizationId\x88\x01\x01\x12\x36\n\x06object\x18\x08 \x01(\x0e\x32\x1e.scalekit.v1.events.ObjectTypeR\x06object\x12+\n\x04\x64\x61ta\x18\t \x01(\x0b\x32\x17.google.protobuf.StructR\x04\x64\x61taB\x12\n\x10_organization_idJ\x04\x08\x05\x10\x06*D\n\nEventActor\x12\x15\n\x11\x41\x43TOR_UNSPECIFIED\x10\x00\x12\t\n\x05HUMAN\x10\x01\x12\x0b\n\x07MACHINE\x10\x02\x12\x07\n\x03\x41PI\x10\x03*<\n\x06Source\x12\x16\n\x12SOURCE_UNSPECIFIED\x10\x00\x12\x0c\n\x08SCALEKIT\x10\x01\x12\x0c\n\x08\x44IR_SYNC\x10\x02*\x9f\x01\n\x0b\x45ventTarget\x12\x1c\n\x18\x45VENT_TARGET_UNSPECIFIED\x10\x00\x12\r\n\tWORKSPACE\x10\x01\x12\x0f\n\x0b\x45NVIRONMENT\x10\x02\x12\x10\n\x0cORGANIZATION\x10\x03\x12\x08\n\x04USER\x10\x04\x12\x0b\n\x07SESSION\x10\x05\x12\x0c\n\x08TEMPLATE\x10\x06\x12\x10\n\x0c\x45MAIL_SERVER\x10\x07\x12\t\n\x05\x45MAIL\x10\x08*M\n\rEventCategory\x12\x1c\n\x18\x45VENT_SOURCE_UNSPECIFIED\x10\x00\x12\x08\n\x04\x43ORE\x10\x01\x12\x07\n\x03SSO\x10\x02\x12\x0b\n\x07\x44IRSYNC\x10\x03*\x97\x02\n\nObjectType\x12\x1b\n\x17OBJECT_TYPE_UNSPECIFIED\x10\x00\x12\r\n\tWorkspace\x10\x01\x12\x0f\n\x0b\x45nvironment\x10\x02\x12\x10\n\x0cOrganization\x10\x03\x12\x0e\n\nConnection\x10\x04\x12\x08\n\x04User\x10\x05\x12\x08\n\x04Role\x10\x06\x12\x14\n\x10\x43ustomAttributes\x10\x07\x12\r\n\tDirectory\x10\x08\x12\x11\n\rDirectoryUser\x10\t\x12\x12\n\x0e\x44irectoryGroup\x10\n\x12\x0b\n\x07Session\x10\x0b\x12\x0c\n\x08Template\x10\x0c\x12\x07\n\x03Job\x10\r\x12\n\n\x06\x44omain\x10\x0e\x12\x0f\n\x0b\x45mailServer\x10\x0f\x12\t\n\x05\x45mail\x10\x10\x32\xc2\x02\n\rEventsService\x12\x81\x01\n\nListEvents\x12%.scalekit.v1.events.ListEventsRequest\x1a&.scalekit.v1.events.ListEventsResponse\"$\x82\xb5\x18\x02\x18t\x82\xd3\xe4\x93\x02\x18\"\x0e/api/v1/events:\x06\x66ilter\x12\xac\x01\n\x0fSendCustomEvent\x12*.scalekit.v1.events.SendCustomEventRequest\x1a+.scalekit.v1.events.SendCustomEventResponse\"@\x82\xb5\x18\x02\x18p\x82\xd3\xe4\x93\x02\x34\"+/api/v1/events/frontend_events/{event_type}:\x05\x65ventB2Z0github.com/scalekit-inc/scalekit/pkg/grpc/eventsb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1fscalekit/v1/events/events.proto\x12\x12scalekit.v1.events\x1a\x1b\x62uf/validate/validate.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x19google/protobuf/any.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a.protoc-gen-openapiv2/options/annotations.proto\x1a!scalekit/v1/commons/commons.proto\x1a!scalekit/v1/options/options.proto\"n\n\x16SendCustomEventRequest\x12%\n\nevent_type\x18\x01 \x01(\tB\x06\xbaH\x03\xc8\x01\x01R\teventType\x12-\n\x05\x65vent\x18\x02 \x01(\x0b\x32\x17.google.protobuf.StructR\x05\x65vent\"4\n\x17SendCustomEventResponse\x12\x19\n\x08\x65vent_id\x18\x01 \x01(\tR\x07\x65ventId\"n\n\x16IEventPaginationTokens\x12\x1a\n\x08NextPage\x18\x01 \x01(\tR\x08NextPage\x12\"\n\x0cPreviousPage\x18\x02 \x01(\tR\x0cPreviousPage\x12\x14\n\x05Total\x18\x03 \x01(\rR\x05Total\"\x88\x01\n\x11ListEventsRequest\x12\x37\n\x06\x66ilter\x18\x01 \x01(\x0b\x32\x1f.scalekit.v1.events.EventFilterR\x06\x66ilter\x12\x1b\n\tpage_size\x18\x02 \x01(\rR\x08pageSize\x12\x1d\n\npage_token\x18\x03 \x01(\tR\tpageToken\"\xbe\x01\n\x12ListEventsResponse\x12\x39\n\x06\x65vents\x18\x01 \x03(\x0b\x32!.scalekit.v1.events.ScalekitEventR\x06\x65vents\x12&\n\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken\x12&\n\x0fprev_page_token\x18\x03 \x01(\tR\rprevPageToken\x12\x1d\n\ntotal_size\x18\x04 \x01(\rR\ttotalSize\"\xc6\x05\n\x06IEvent\x12!\n\x0cspec_version\x18\x01 \x01(\tR\x0bspecVersion\x12\x19\n\x02id\x18\x02 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18 R\x02id\x12\x12\n\x04type\x18\x03 \x01(\tR\x04type\x12;\n\x0boccurred_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\noccurredAt\x12/\n\x05\x61\x63tor\x18\x05 \x01(\x0b\x32\x19.scalekit.v1.events.ActorR\x05\x61\x63tor\x12\x1b\n\ttenant_id\x18\x06 \x01(\tR\x08tenantId\x12\x32\n\x06target\x18\x07 \x01(\x0b\x32\x1a.scalekit.v1.events.TargetR\x06target\x12\x16\n\x06source\x18\x08 \x01(\tR\x06source\x12+\n\x04\x64\x61ta\x18\t \x01(\x0b\x32\x17.google.protobuf.StructR\x04\x64\x61ta\x12\x32\n\x08old_data\x18\n \x01(\x0b\x32\x17.google.protobuf.StructR\x07oldData\x12Z\n\x07\x63ontext\x18\x0b \x03(\x0b\x32\'.scalekit.v1.events.IEvent.ContextEntryB\x17\xbaH\x14\x9a\x01\x11\"\x06r\x04\x10\x03\x18\x19*\x07r\x05\x10\x01\x18\xd0\x0fR\x07\x63ontext\x12]\n\x08metadata\x18\x0c \x03(\x0b\x32(.scalekit.v1.events.IEvent.MetadataEntryB\x17\xbaH\x14\x9a\x01\x11\"\x06r\x04\x10\x03\x18\x19*\x07r\x05\x10\x01\x18\xd0\x0fR\x08metadata\x1a:\n\x0c\x43ontextEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x1a;\n\rMetadataEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\xfb\x05\n\x05\x45vent\x12!\n\x0cspec_version\x18\x01 \x01(\tR\x0bspecVersion\x12\x19\n\x02id\x18\x02 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18 R\x02id\x12\x12\n\x04type\x18\x03 \x01(\tR\x04type\x12;\n\x0boccurred_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\noccurredAt\x12/\n\x05\x61\x63tor\x18\x05 \x01(\x0b\x32\x19.scalekit.v1.events.ActorR\x05\x61\x63tor\x12\x1b\n\ttenant_id\x18\x06 \x01(\tR\x08tenantId\x12\x32\n\x06target\x18\x07 \x01(\x0b\x32\x1a.scalekit.v1.events.TargetR\x06target\x12\x16\n\x06source\x18\x08 \x01(\tR\x06source\x12+\n\x04\x64\x61ta\x18\t \x01(\x0b\x32\x17.google.protobuf.StructR\x04\x64\x61ta\x12\x32\n\x08old_data\x18\n \x01(\x0b\x32\x17.google.protobuf.StructR\x07oldData\x12Y\n\x07\x63ontext\x18\x0b \x03(\x0b\x32&.scalekit.v1.events.Event.ContextEntryB\x17\xbaH\x14\x9a\x01\x11\"\x06r\x04\x10\x03\x18\x19*\x07r\x05\x10\x01\x18\xd0\x0fR\x07\x63ontext\x12\\\n\x08metadata\x18\x0c \x03(\x0b\x32\'.scalekit.v1.events.Event.MetadataEntryB\x17\xbaH\x14\x9a\x01\x11\"\x06r\x04\x10\x03\x18\x19*\x07r\x05\x10\x01\x18\xd0\x0fR\x08metadata\x12\x36\n\x06object\x18\r \x01(\x0e\x32\x1e.scalekit.v1.events.ObjectTypeR\x06object\x1a:\n\x0c\x43ontextEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x1a;\n\rMetadataEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"K\n\x05\x41\x63tor\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x32\n\x04type\x18\x02 \x01(\x0e\x32\x1e.scalekit.v1.events.EventActorR\x04type\"M\n\x06Target\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x33\n\x04type\x18\x02 \x01(\x0e\x32\x1f.scalekit.v1.events.EventTargetR\x04type\"\xc8\x03\n\x0cIEventFilter\x12\x1f\n\x0b\x65vent_types\x18\x01 \x03(\tR\neventTypes\x12\x39\n\nstart_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tstartTime\x12\x35\n\x08\x65nd_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x07\x65ndTime\x12\x1b\n\ttenant_id\x18\x04 \x01(\tR\x08tenantId\x12\x32\n\x06target\x18\x05 \x01(\x0b\x32\x1a.scalekit.v1.events.TargetR\x06target\x12\x32\n\x06source\x18\x06 \x01(\x0e\x32\x1a.scalekit.v1.events.SourceR\x06source\x12\x63\n\x08metadata\x18\x07 \x03(\x0b\x32..scalekit.v1.events.IEventFilter.MetadataEntryB\x17\xbaH\x14\x9a\x01\x11\"\x06r\x04\x10\x03\x18\x19*\x07r\x05\x10\x01\x18\xd0\x0fR\x08metadata\x1a;\n\rMetadataEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\xa5\x02\n\x0b\x45ventFilter\x12\x1f\n\x0b\x65vent_types\x18\x01 \x03(\tR\neventTypes\x12\x39\n\nstart_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tstartTime\x12\x35\n\x08\x65nd_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x07\x65ndTime\x12\'\n\x0forganization_id\x18\x04 \x01(\tR\x0eorganizationId\x12\x32\n\x06source\x18\x05 \x01(\x0e\x32\x1a.scalekit.v1.events.SourceR\x06source\x12&\n\x0f\x61uth_request_id\x18\x06 \x01(\tR\rauthRequestId\"\xf7\x02\n\rScalekitEvent\x12!\n\x0cspec_version\x18\x01 \x01(\tR\x0bspecVersion\x12\x1e\n\x02id\x18\x02 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65vtR\x02id\x12\x12\n\x04type\x18\x03 \x01(\tR\x04type\x12;\n\x0boccurred_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\noccurredAt\x12%\n\x0e\x65nvironment_id\x18\x06 \x01(\tR\renvironmentId\x12,\n\x0forganization_id\x18\x07 \x01(\tH\x00R\x0eorganizationId\x88\x01\x01\x12\x36\n\x06object\x18\x08 \x01(\x0e\x32\x1e.scalekit.v1.events.ObjectTypeR\x06object\x12+\n\x04\x64\x61ta\x18\t \x01(\x0b\x32\x17.google.protobuf.StructR\x04\x64\x61taB\x12\n\x10_organization_idJ\x04\x08\x05\x10\x06*D\n\nEventActor\x12\x15\n\x11\x41\x43TOR_UNSPECIFIED\x10\x00\x12\t\n\x05HUMAN\x10\x01\x12\x0b\n\x07MACHINE\x10\x02\x12\x07\n\x03\x41PI\x10\x03*<\n\x06Source\x12\x16\n\x12SOURCE_UNSPECIFIED\x10\x00\x12\x0c\n\x08SCALEKIT\x10\x01\x12\x0c\n\x08\x44IR_SYNC\x10\x02*\x9f\x01\n\x0b\x45ventTarget\x12\x1c\n\x18\x45VENT_TARGET_UNSPECIFIED\x10\x00\x12\r\n\tWORKSPACE\x10\x01\x12\x0f\n\x0b\x45NVIRONMENT\x10\x02\x12\x10\n\x0cORGANIZATION\x10\x03\x12\x08\n\x04USER\x10\x04\x12\x0b\n\x07SESSION\x10\x05\x12\x0c\n\x08TEMPLATE\x10\x06\x12\x10\n\x0c\x45MAIL_SERVER\x10\x07\x12\t\n\x05\x45MAIL\x10\x08*M\n\rEventCategory\x12\x1c\n\x18\x45VENT_SOURCE_UNSPECIFIED\x10\x00\x12\x08\n\x04\x43ORE\x10\x01\x12\x07\n\x03SSO\x10\x02\x12\x0b\n\x07\x44IRSYNC\x10\x03*\x98\x03\n\nObjectType\x12\x1b\n\x17OBJECT_TYPE_UNSPECIFIED\x10\x00\x12\r\n\tWorkspace\x10\x01\x12\x0f\n\x0b\x45nvironment\x10\x02\x12\x10\n\x0cOrganization\x10\x03\x12\x0e\n\nConnection\x10\x04\x12\x08\n\x04User\x10\x05\x12\x08\n\x04Role\x10\x06\x12\x14\n\x10\x43ustomAttributes\x10\x07\x12\r\n\tDirectory\x10\x08\x12\x11\n\rDirectoryUser\x10\t\x12\x12\n\x0e\x44irectoryGroup\x10\n\x12\x0b\n\x07Session\x10\x0b\x12\x0c\n\x08Template\x10\x0c\x12\x07\n\x03Job\x10\r\x12\n\n\x06\x44omain\x10\x0e\x12\x0f\n\x0b\x45mailServer\x10\x0f\x12\t\n\x05\x45mail\x10\x10\x12\x0f\n\x0b\x41uthRequest\x10\x11\x12\x0f\n\x0bSAMLRequest\x10\x12\x12\x10\n\x0cSAMLResponse\x10\x13\x12\x0f\n\x0bTokenClaims\x10\x14\x12\x11\n\rOIDCReqParams\x10\x15\x12\x12\n\x0eOIDCRespClaims\x10\x16\x12\x13\n\x0fOIDCAuthRequest\x10\x17\x32\xc2\x02\n\rEventsService\x12\x81\x01\n\nListEvents\x12%.scalekit.v1.events.ListEventsRequest\x1a&.scalekit.v1.events.ListEventsResponse\"$\x82\xb5\x18\x02\x18t\x82\xd3\xe4\x93\x02\x18\"\x0e/api/v1/events:\x06\x66ilter\x12\xac\x01\n\x0fSendCustomEvent\x12*.scalekit.v1.events.SendCustomEventRequest\x1a+.scalekit.v1.events.SendCustomEventResponse\"@\x82\xb5\x18\x02\x18p\x82\xd3\xe4\x93\x02\x34\"+/api/v1/events/frontend_events/{event_type}:\x05\x65ventB2Z0github.com/scalekit-inc/scalekit/pkg/grpc/eventsb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -64,16 +64,16 @@ _globals['_EVENTSSERVICE'].methods_by_name['ListEvents']._serialized_options = b'\202\265\030\002\030t\202\323\344\223\002\030\"\016/api/v1/events:\006filter' _globals['_EVENTSSERVICE'].methods_by_name['SendCustomEvent']._loaded_options = None _globals['_EVENTSSERVICE'].methods_by_name['SendCustomEvent']._serialized_options = b'\202\265\030\002\030p\202\323\344\223\0024\"+/api/v1/events/frontend_events/{event_type}:\005event' - _globals['_EVENTACTOR']._serialized_start=3725 - _globals['_EVENTACTOR']._serialized_end=3793 - _globals['_SOURCE']._serialized_start=3795 - _globals['_SOURCE']._serialized_end=3855 - _globals['_EVENTTARGET']._serialized_start=3858 - _globals['_EVENTTARGET']._serialized_end=4017 - _globals['_EVENTCATEGORY']._serialized_start=4019 - _globals['_EVENTCATEGORY']._serialized_end=4096 - _globals['_OBJECTTYPE']._serialized_start=4099 - _globals['_OBJECTTYPE']._serialized_end=4378 + _globals['_EVENTACTOR']._serialized_start=3765 + _globals['_EVENTACTOR']._serialized_end=3833 + _globals['_SOURCE']._serialized_start=3835 + _globals['_SOURCE']._serialized_end=3895 + _globals['_EVENTTARGET']._serialized_start=3898 + _globals['_EVENTTARGET']._serialized_end=4057 + _globals['_EVENTCATEGORY']._serialized_start=4059 + _globals['_EVENTCATEGORY']._serialized_end=4136 + _globals['_OBJECTTYPE']._serialized_start=4139 + _globals['_OBJECTTYPE']._serialized_end=4547 _globals['_SENDCUSTOMEVENTREQUEST']._serialized_start=387 _globals['_SENDCUSTOMEVENTREQUEST']._serialized_end=497 _globals['_SENDCUSTOMEVENTRESPONSE']._serialized_start=499 @@ -105,9 +105,9 @@ _globals['_IEVENTFILTER_METADATAENTRY']._serialized_start=1649 _globals['_IEVENTFILTER_METADATAENTRY']._serialized_end=1708 _globals['_EVENTFILTER']._serialized_start=3092 - _globals['_EVENTFILTER']._serialized_end=3345 - _globals['_SCALEKITEVENT']._serialized_start=3348 - _globals['_SCALEKITEVENT']._serialized_end=3723 - _globals['_EVENTSSERVICE']._serialized_start=4381 - _globals['_EVENTSSERVICE']._serialized_end=4703 + _globals['_EVENTFILTER']._serialized_end=3385 + _globals['_SCALEKITEVENT']._serialized_start=3388 + _globals['_SCALEKITEVENT']._serialized_end=3763 + _globals['_EVENTSSERVICE']._serialized_start=4550 + _globals['_EVENTSSERVICE']._serialized_end=4872 # @@protoc_insertion_point(module_scope) diff --git a/scalekit/v1/events/events_pb2.pyi b/scalekit/v1/events/events_pb2.pyi index 11f69ce..10a1ae4 100644 --- a/scalekit/v1/events/events_pb2.pyi +++ b/scalekit/v1/events/events_pb2.pyi @@ -67,6 +67,13 @@ class ObjectType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): Domain: _ClassVar[ObjectType] EmailServer: _ClassVar[ObjectType] Email: _ClassVar[ObjectType] + AuthRequest: _ClassVar[ObjectType] + SAMLRequest: _ClassVar[ObjectType] + SAMLResponse: _ClassVar[ObjectType] + TokenClaims: _ClassVar[ObjectType] + OIDCReqParams: _ClassVar[ObjectType] + OIDCRespClaims: _ClassVar[ObjectType] + OIDCAuthRequest: _ClassVar[ObjectType] ACTOR_UNSPECIFIED: EventActor HUMAN: EventActor MACHINE: EventActor @@ -104,6 +111,13 @@ Job: ObjectType Domain: ObjectType EmailServer: ObjectType Email: ObjectType +AuthRequest: ObjectType +SAMLRequest: ObjectType +SAMLResponse: ObjectType +TokenClaims: ObjectType +OIDCReqParams: ObjectType +OIDCRespClaims: ObjectType +OIDCAuthRequest: ObjectType class SendCustomEventRequest(_message.Message): __slots__ = ("event_type", "event") @@ -279,18 +293,20 @@ class IEventFilter(_message.Message): def __init__(self, event_types: _Optional[_Iterable[str]] = ..., start_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., end_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., tenant_id: _Optional[str] = ..., target: _Optional[_Union[Target, _Mapping]] = ..., source: _Optional[_Union[Source, str]] = ..., metadata: _Optional[_Mapping[str, str]] = ...) -> None: ... class EventFilter(_message.Message): - __slots__ = ("event_types", "start_time", "end_time", "organization_id", "source") + __slots__ = ("event_types", "start_time", "end_time", "organization_id", "source", "auth_request_id") EVENT_TYPES_FIELD_NUMBER: _ClassVar[int] START_TIME_FIELD_NUMBER: _ClassVar[int] END_TIME_FIELD_NUMBER: _ClassVar[int] ORGANIZATION_ID_FIELD_NUMBER: _ClassVar[int] SOURCE_FIELD_NUMBER: _ClassVar[int] + AUTH_REQUEST_ID_FIELD_NUMBER: _ClassVar[int] event_types: _containers.RepeatedScalarFieldContainer[str] start_time: _timestamp_pb2.Timestamp end_time: _timestamp_pb2.Timestamp organization_id: str source: Source - def __init__(self, event_types: _Optional[_Iterable[str]] = ..., start_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., end_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., organization_id: _Optional[str] = ..., source: _Optional[_Union[Source, str]] = ...) -> None: ... + auth_request_id: str + def __init__(self, event_types: _Optional[_Iterable[str]] = ..., start_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., end_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., organization_id: _Optional[str] = ..., source: _Optional[_Union[Source, str]] = ..., auth_request_id: _Optional[str] = ...) -> None: ... class ScalekitEvent(_message.Message): __slots__ = ("spec_version", "id", "type", "occurred_at", "environment_id", "organization_id", "object", "data") diff --git a/scalekit/v1/roles/roles_pb2.py b/scalekit/v1/roles/roles_pb2.py index 22b5f55..eeeb56e 100644 --- a/scalekit/v1/roles/roles_pb2.py +++ b/scalekit/v1/roles/roles_pb2.py @@ -26,7 +26,7 @@ from scalekit.v1.options import options_pb2 as scalekit_dot_v1_dot_options_dot_options__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1dscalekit/v1/roles/roles.proto\x12\x11scalekit.v1.roles\x1a\x1b\x62uf/validate/validate.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1bgoogle/api/visibility.proto\x1a\x19google/protobuf/any.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a.protoc-gen-openapiv2/options/annotations.proto\x1a!scalekit/v1/commons/commons.proto\x1a!scalekit/v1/options/options.proto\"\xc0\x01\n\x04Role\x12\x1f\n\x02id\x18\x01 \x01(\tB\x0f\xbaH\x0cr\n\x10\x01\x18 :\x04roleR\x02id\x12 \n\x04name\x18\x02 \x01(\tB\x0c\xbaH\tr\x04\x10\x01\x18\x64\xc8\x01\x01R\x04name\x12/\n\x0c\x64isplay_name\x18\x03 \x01(\tB\x0c\xbaH\tr\x04\x10\x01\x18\x64\xc8\x01\x01R\x0b\x64isplayName\x12*\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x08\xbaH\x05r\x03\x18\xd0\x0fR\x0b\x64\x65scription\x12\x18\n\x07\x64\x65\x66\x61ult\x18\x05 \x01(\x08R\x07\x64\x65\x66\x61ult\"\xf2\x03\n\nCreateRole\x12t\n\x04name\x18\x02 \x01(\tB`\x92\x41;2&Unique Name of the Organization\'s RoleJ\x11\"org_viewer_role\"\xbaH\x1fr\x1a\x10\x01\x18\x64\x32\x14^[a-zA-Z0-9_]{1,64}$\xc8\x01\x01R\x04name\x12w\n\x0c\x64isplay_name\x18\x03 \x01(\tBT\x92\x41\x45\x32\'Display Name of the Organization\'s RoleJ\x1a\"Organization Viewer Role\"\xbaH\tr\x04\x10\x01\x18\x64\xc8\x01\x01R\x0b\x64isplayName\x12\xa0\x01\n\x0b\x64\x65scription\x18\x04 \x01(\tBy\x92\x41n2&Description of the Organization\'s RoleJD\"Organization Viewer Role will be used only for viewing the objects\"\xbaH\x05r\x03\x18\xd0\x0fH\x00R\x0b\x64\x65scription\x88\x01\x01\x12\x36\n\x07\x64\x65\x66\x61ult\x18\x05 \x01(\x08\x42\x17\x92\x41\x14\x32\x0c\x44\x65\x66\x61ult RoleJ\x04trueH\x01R\x07\x64\x65\x66\x61ult\x88\x01\x01\x42\x0e\n\x0c_descriptionB\n\n\x08_default\"u\n\x11\x43reateRoleRequest\x12%\n\x06\x65nv_id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x05\x65nvId\x12\x39\n\x04role\x18\x02 \x01(\x0b\x32\x1d.scalekit.v1.roles.CreateRoleB\x06\xbaH\x03\xc8\x01\x01R\x04role\"A\n\x12\x43reateRoleResponse\x12+\n\x04role\x18\x01 \x01(\x0b\x32\x17.scalekit.v1.roles.RoleR\x04role\"[\n\x0eGetRoleRequest\x12%\n\x06\x65nv_id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x05\x65nvId\x12\"\n\x02id\x18\x02 \x01(\tB\x12\xbaH\x0fr\n\x10\x01\x18 :\x04role\xc8\x01\x01R\x02id\">\n\x0fGetRoleResponse\x12+\n\x04role\x18\x01 \x01(\x0b\x32\x17.scalekit.v1.roles.RoleR\x04role\"4\n\x10ListRolesRequest\x12 \n\x06\x65nv_id\x18\x01 \x01(\tB\t\xbaH\x06r\x04\x10\x00\x18 R\x05\x65nvId\"B\n\x11ListRolesResponse\x12-\n\x05roles\x18\x01 \x03(\x0b\x32\x17.scalekit.v1.roles.RoleR\x05roles\"\x91\x03\n\nUpdateRole\x12y\n\x0c\x64isplay_name\x18\x01 \x01(\tBQ\x92\x41\x45\x32\'Display Name of the Organization\'s RoleJ\x1a\"Organization Viewer Role\"\xbaH\x06r\x04\x10\x01\x18\x64H\x00R\x0b\x64isplayName\x88\x01\x01\x12\xa2\x01\n\x0b\x64\x65scription\x18\x02 \x01(\tB{\x92\x41n2&Description of the Organization\'s RoleJD\"Organization Viewer Role will be used only for viewing the objects\"\xbaH\x07r\x05\x10\x01\x18\xd0\x0fH\x01R\x0b\x64\x65scription\x88\x01\x01\x12\x36\n\x07\x64\x65\x66\x61ult\x18\x03 \x01(\x08\x42\x17\x92\x41\x14\x32\x0c\x44\x65\x66\x61ult RoleJ\x04trueH\x02R\x07\x64\x65\x66\x61ult\x88\x01\x01\x42\x0f\n\r_display_nameB\x0e\n\x0c_descriptionB\n\n\x08_default\"\x99\x01\n\x11UpdateRoleRequest\x12%\n\x06\x65nv_id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x05\x65nvId\x12\"\n\x02id\x18\x02 \x01(\tB\x12\xbaH\x0fr\n\x10\x01\x18 :\x04role\xc8\x01\x01R\x02id\x12\x39\n\x04role\x18\x03 \x01(\x0b\x32\x1d.scalekit.v1.roles.UpdateRoleB\x06\xbaH\x03\xc8\x01\x01R\x04role\"A\n\x12UpdateRoleResponse\x12+\n\x04role\x18\x01 \x01(\x0b\x32\x17.scalekit.v1.roles.RoleR\x04role\"^\n\x11\x44\x65leteRoleRequest\x12%\n\x06\x65nv_id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x05\x65nvId\x12\"\n\x02id\x18\x02 \x01(\tB\x12\xbaH\x0fr\n\x10\x01\x18 :\x04role\xc8\x01\x01R\x02id\"\xdf\x01\n\x1d\x43reateOrganizationRoleRequest\x12\x65\n\x06org_id\x18\x01 \x01(\tBN\x92\x41=2$Unique identifier to an OrganizationJ\x15\"org_121312434123312\"\xbaH\x0br\t\x10\x01\x18 :\x03orgR\x05orgId\x12W\n\x04role\x18\x02 \x01(\x0b\x32\x1d.scalekit.v1.roles.CreateRoleB$\x92\x41\x1b\x32\x19Organization role details\xbaH\x03\xc8\x01\x01R\x04role\"M\n\x1e\x43reateOrganizationRoleResponse\x12+\n\x04role\x18\x01 \x01(\x0b\x32\x17.scalekit.v1.roles.RoleR\x04role\"\xdf\x01\n\x1aGetOrganizationRoleRequest\x12\x65\n\x06org_id\x18\x01 \x01(\tBN\x92\x41=2$Unique identifier to an OrganizationJ\x15\"org_121312434123312\"\xbaH\x0br\t\x10\x01\x18 :\x03orgR\x05orgId\x12Z\n\x02id\x18\x02 \x01(\tBJ\x92\x41\x35\x32\x1bUnique identifier to a roleJ\x16\"role_121312434123312\"\xbaH\x0fr\n\x10\x01\x18 :\x04role\xc8\x01\x01R\x02id\"J\n\x1bGetOrganizationRoleResponse\x12+\n\x04role\x18\x01 \x01(\x0b\x32\x17.scalekit.v1.roles.RoleR\x04role\"\xeb\x02\n\x1cListOrganizationRolesRequest\x12h\n\x06org_id\x18\x01 \x01(\tBQ\x92\x41=2$Unique identifier to an OrganizationJ\x15\"org_121312434123312\"\xbaH\x0er\t\x10\x01\x18 :\x03org\xc8\x01\x01R\x05orgId:\xe0\x01\x92\x41\xdc\x01\n\xb6\x01*\x17List Organization Roles2\x91\x01Retrieve a paginated list of all organizations within the environment. Use the page_token from the response to access subsequent pages of results\xd2\x01\x06org_id2!{\"org_id\" : \"org_8756865685762\" }\"j\n\x1dListOrganizationRolesResponse\x12I\n\x05roles\x18\x01 \x03(\x0b\x32\x17.scalekit.v1.roles.RoleB\x1a\x92\x41\x17\x32\x15List of roles objectsR\x05roles\"\xbb\x02\n\x1dUpdateOrganizationRoleRequest\x12\x65\n\x06org_id\x18\x01 \x01(\tBN\x92\x41=2$Unique identifier to an OrganizationJ\x15\"org_121312434123312\"\xbaH\x0br\t\x10\x01\x18 :\x03orgR\x05orgId\x12Z\n\x02id\x18\x02 \x01(\tBJ\x92\x41\x35\x32\x1bUnique identifier to a roleJ\x16\"role_121312434123312\"\xbaH\x0fr\n\x10\x01\x18 :\x04role\xc8\x01\x01R\x02id\x12W\n\x04role\x18\x03 \x01(\x0b\x32\x1d.scalekit.v1.roles.UpdateRoleB$\x92\x41\x1b\x32\x19Organization role details\xbaH\x03\xc8\x01\x01R\x04role\"M\n\x1eUpdateOrganizationRoleResponse\x12+\n\x04role\x18\x01 \x01(\x0b\x32\x17.scalekit.v1.roles.RoleR\x04role\"\xe2\x01\n\x1d\x44\x65leteOrganizationRoleRequest\x12\x65\n\x06org_id\x18\x01 \x01(\tBN\x92\x41=2$Unique identifier to an OrganizationJ\x15\"org_121312434123312\"\xbaH\x0br\t\x10\x01\x18 :\x03orgR\x05orgId\x12Z\n\x02id\x18\x02 \x01(\tBJ\x92\x41\x35\x32\x1bUnique identifier to a roleJ\x16\"role_121312434123312\"\xbaH\x0fr\n\x10\x01\x18 :\x04role\xc8\x01\x01R\x02id2\xab\x18\n\x0cRolesService\x12\xc1\x01\n\nCreateRole\x12$.scalekit.v1.roles.CreateRoleRequest\x1a%.scalekit.v1.roles.CreateRoleResponse\"f\x82\xb5\x18\x02\x18P\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02K\"#/api/v1/environments/{env_id}/roles:\x04roleZ\x1e\"\x1c/api/v1/environments/-/roles\x12\xcb\x01\n\nUpdateRole\x12$.scalekit.v1.roles.UpdateRoleRequest\x1a%.scalekit.v1.roles.UpdateRoleResponse\"p\x82\xb5\x18\x02\x18P\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02U\x1a(/api/v1/environments/{env_id}/roles/{id}:\x04roleZ#\x1a!/api/v1/environments/-/roles/{id}\x12\xbc\x01\n\x07GetRole\x12!.scalekit.v1.roles.GetRoleRequest\x1a\".scalekit.v1.roles.GetRoleResponse\"j\x82\xb5\x18\x02\x18P\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02O\x12(/api/v1/environments/{env_id}/roles/{id}Z#\x12!/api/v1/environments/-/roles/{id}\x12\xb8\x01\n\tListRoles\x12#.scalekit.v1.roles.ListRolesRequest\x1a$.scalekit.v1.roles.ListRolesResponse\"`\x82\xb5\x18\x02\x18p\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x45\x12#/api/v1/environments/{env_id}/rolesZ\x1e\x12\x1c/api/v1/environments/-/roles\x12\xb6\x01\n\nDeleteRole\x12$.scalekit.v1.roles.DeleteRoleRequest\x1a\x16.google.protobuf.Empty\"j\x82\xb5\x18\x02\x18P\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02O*(/api/v1/environments/{env_id}/roles/{id}Z#*!/api/v1/environments/-/roles/{id}\x12\xaf\x03\n\x16\x43reateOrganizationRole\x12\x30.scalekit.v1.roles.CreateOrganizationRoleRequest\x1a\x31.scalekit.v1.roles.CreateOrganizationRoleResponse\"\xaf\x02\x92\x41\xe4\x01\n\x05Roles\x12\x1e\x43reate a new Organization Role\x1aSCreate a new organization role to represent a specific role within the organizationJf\n\x03\x32\x30\x31\x12_\n&Organization Role created successfully\x12\x35\n3\x1a\x31.scalekit.v1.roles.CreateOrganizationRoleResponse\x82\xb5\x18\x02\x18T\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02,\"$/api/v1/organizations/{org_id}/roles:\x04role\x12\xa7\x03\n\x16UpdateOrganizationRole\x12\x30.scalekit.v1.roles.UpdateOrganizationRoleRequest\x1a\x31.scalekit.v1.roles.UpdateOrganizationRoleResponse\"\xa7\x02\x92\x41\xd7\x01\n\x05Roles\x12$Update an existing Organization Role\x1a@Update an existing organization role using its unique identifierJf\n\x03\x32\x30\x30\x12_\n&Organization Role updated successfully\x12\x35\n3\x1a\x31.scalekit.v1.roles.UpdateOrganizationRoleResponse\x82\xb5\x18\x02\x18T\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x31\x1a)/api/v1/organizations/{org_id}/roles/{id}:\x04role\x12\xaf\x03\n\x13GetOrganizationRole\x12-.scalekit.v1.roles.GetOrganizationRoleRequest\x1a..scalekit.v1.roles.GetOrganizationRoleResponse\"\xb8\x02\x92\x41\xee\x01\n\x05Roles\x12\x1aRetrieve Organization Role\x1aZFetch detailed information about a specific organization role using its unique identifier.Jm\n\x03\x32\x30\x30\x12\x66\n0Successfully retrieved organization role details\x12\x32\n0\x1a..scalekit.v1.roles.GetOrganizationRoleResponse\x82\xb5\x18\x02\x18t\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02+\x12)/api/v1/organizations/{org_id}/roles/{id}\x12\xfb\x03\n\x15ListOrganizationRoles\x12/.scalekit.v1.roles.ListOrganizationRolesRequest\x1a\x30.scalekit.v1.roles.ListOrganizationRolesResponse\"\xfe\x02\x92\x41\xb9\x02\n\x05Roles\x12\x1bList All Organization Roles\x1a\x8a\x01Retrieve a paginated list of all roles within the organization. Use the page_token from the response to access subsequent pages of resultsJ\x85\x01\n\x03\x32\x30\x30\x12~\nFSuccessfully retrieved the list of roles within the given organization\x12\x34\n2\x1a\x30.scalekit.v1.roles.ListOrganizationRolesResponse\x82\xb5\x18\x02\x18t\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02&\x12$/api/v1/organizations/{org_id}/roles\x12\xbd\x02\n\x16\x44\x65leteOrganizationRole\x12\x30.scalekit.v1.roles.DeleteOrganizationRoleRequest\x1a\x16.google.protobuf.Empty\"\xd8\x01\x92\x41\x8e\x01\n\x05Roles\x12\x1b\x44\x65lete an Organization Role\x1aIRemove an existing role from the organization using its unique identifierJ\x1d\n\x03\x32\x30\x30\x12\x16\n\x14\x44\x65leted Successfully\x82\xb5\x18\x02\x18T\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02+*)/api/v1/organizations/{org_id}/roles/{id}\x1a\n\x92\x41\x07\n\x05RolesB1Z/github.com/scalekit-inc/scalekit/pkg/grpc/rolesb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1dscalekit/v1/roles/roles.proto\x12\x11scalekit.v1.roles\x1a\x1b\x62uf/validate/validate.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1bgoogle/api/visibility.proto\x1a\x19google/protobuf/any.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a.protoc-gen-openapiv2/options/annotations.proto\x1a!scalekit/v1/commons/commons.proto\x1a!scalekit/v1/options/options.proto\"\x8d\x03\n\x04Role\x12\x1f\n\x02id\x18\x01 \x01(\tB\x0f\xbaH\x0cr\n\x10\x01\x18 :\x04roleR\x02id\x12 \n\x04name\x18\x02 \x01(\tB\x0c\xbaH\tr\x04\x10\x01\x18\x64\xc8\x01\x01R\x04name\x12/\n\x0c\x64isplay_name\x18\x03 \x01(\tB\x0c\xbaH\tr\x04\x10\x01\x18\x64\xc8\x01\x01R\x0b\x64isplayName\x12*\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x08\xbaH\x05r\x03\x18\xd0\x0fR\x0b\x64\x65scription\x12\x18\n\x07\x64\x65\x66\x61ult\x18\x05 \x01(\x08R\x07\x64\x65\x66\x61ult\x12\x66\n\x0f\x64\x65\x66\x61ult_creator\x18\x06 \x01(\x08\x42=\x92\x41:22Indicates if this role is the default creator roleJ\x04trueR\x0e\x64\x65\x66\x61ultCreator\x12\x63\n\x0e\x64\x65\x66\x61ult_member\x18\x07 \x01(\x08\x42<\x92\x41\x39\x32\x31Indicates if this role is the default member roleJ\x04trueR\rdefaultMember\"\xb6\x05\n\nCreateRole\x12t\n\x04name\x18\x02 \x01(\tB`\x92\x41;2&Unique Name of the Organization\'s RoleJ\x11\"org_viewer_role\"\xbaH\x1fr\x1a\x10\x01\x18\x64\x32\x14^[a-zA-Z0-9_]{1,64}$\xc8\x01\x01R\x04name\x12w\n\x0c\x64isplay_name\x18\x03 \x01(\tBT\x92\x41\x45\x32\'Display Name of the Organization\'s RoleJ\x1a\"Organization Viewer Role\"\xbaH\tr\x04\x10\x01\x18\x64\xc8\x01\x01R\x0b\x64isplayName\x12\xa0\x01\n\x0b\x64\x65scription\x18\x04 \x01(\tBy\x92\x41n2&Description of the Organization\'s RoleJD\"Organization Viewer Role will be used only for viewing the objects\"\xbaH\x05r\x03\x18\xd0\x0fH\x00R\x0b\x64\x65scription\x88\x01\x01\x12\x38\n\x07\x64\x65\x66\x61ult\x18\x05 \x01(\x08\x42\x19\x18\x01\x92\x41\x14\x32\x0c\x44\x65\x66\x61ult RoleJ\x04trueH\x01R\x07\x64\x65\x66\x61ult\x88\x01\x01\x12M\n\x0f\x64\x65\x66\x61ult_creator\x18\x06 \x01(\x08\x42\x1f\x92\x41\x1c\x32\x14\x44\x65\x66\x61ult Creator RoleJ\x04trueH\x02R\x0e\x64\x65\x66\x61ultCreator\x88\x01\x01\x12J\n\x0e\x64\x65\x66\x61ult_member\x18\x07 \x01(\x08\x42\x1e\x92\x41\x1b\x32\x13\x44\x65\x66\x61ult Member RoleJ\x04trueH\x03R\rdefaultMember\x88\x01\x01\x42\x0e\n\x0c_descriptionB\n\n\x08_defaultB\x12\n\x10_default_creatorB\x11\n\x0f_default_member\"n\n\x11\x43reateRoleRequest\x12\x1e\n\x06\x65nv_id\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x18 R\x05\x65nvId\x12\x39\n\x04role\x18\x02 \x01(\x0b\x32\x1d.scalekit.v1.roles.CreateRoleB\x06\xbaH\x03\xc8\x01\x01R\x04role\"A\n\x12\x43reateRoleResponse\x12+\n\x04role\x18\x01 \x01(\x0b\x32\x17.scalekit.v1.roles.RoleR\x04role\"T\n\x0eGetRoleRequest\x12\x1e\n\x06\x65nv_id\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x18 R\x05\x65nvId\x12\"\n\x02id\x18\x02 \x01(\tB\x12\xbaH\x0fr\n\x10\x01\x18 :\x04role\xc8\x01\x01R\x02id\">\n\x0fGetRoleResponse\x12+\n\x04role\x18\x01 \x01(\x0b\x32\x17.scalekit.v1.roles.RoleR\x04role\"2\n\x10ListRolesRequest\x12\x1e\n\x06\x65nv_id\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x18 R\x05\x65nvId\"B\n\x11ListRolesResponse\x12-\n\x05roles\x18\x01 \x03(\x0b\x32\x17.scalekit.v1.roles.RoleR\x05roles\"\xd5\x04\n\nUpdateRole\x12y\n\x0c\x64isplay_name\x18\x01 \x01(\tBQ\x92\x41\x45\x32\'Display Name of the Organization\'s RoleJ\x1a\"Organization Viewer Role\"\xbaH\x06r\x04\x10\x01\x18\x64H\x00R\x0b\x64isplayName\x88\x01\x01\x12\xa2\x01\n\x0b\x64\x65scription\x18\x02 \x01(\tB{\x92\x41n2&Description of the Organization\'s RoleJD\"Organization Viewer Role will be used only for viewing the objects\"\xbaH\x07r\x05\x10\x01\x18\xd0\x0fH\x01R\x0b\x64\x65scription\x88\x01\x01\x12\x38\n\x07\x64\x65\x66\x61ult\x18\x03 \x01(\x08\x42\x19\x18\x01\x92\x41\x14\x32\x0c\x44\x65\x66\x61ult RoleJ\x04trueH\x02R\x07\x64\x65\x66\x61ult\x88\x01\x01\x12M\n\x0f\x64\x65\x66\x61ult_creator\x18\x04 \x01(\x08\x42\x1f\x92\x41\x1c\x32\x14\x44\x65\x66\x61ult Creator RoleJ\x04trueH\x03R\x0e\x64\x65\x66\x61ultCreator\x88\x01\x01\x12J\n\x0e\x64\x65\x66\x61ult_member\x18\x05 \x01(\x08\x42\x1e\x92\x41\x1b\x32\x13\x44\x65\x66\x61ult Member RoleJ\x04trueH\x04R\rdefaultMember\x88\x01\x01\x42\x0f\n\r_display_nameB\x0e\n\x0c_descriptionB\n\n\x08_defaultB\x12\n\x10_default_creatorB\x11\n\x0f_default_member\"\x92\x01\n\x11UpdateRoleRequest\x12\x1e\n\x06\x65nv_id\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x18 R\x05\x65nvId\x12\"\n\x02id\x18\x02 \x01(\tB\x12\xbaH\x0fr\n\x10\x01\x18 :\x04role\xc8\x01\x01R\x02id\x12\x39\n\x04role\x18\x03 \x01(\x0b\x32\x1d.scalekit.v1.roles.UpdateRoleB\x06\xbaH\x03\xc8\x01\x01R\x04role\"A\n\x12UpdateRoleResponse\x12+\n\x04role\x18\x01 \x01(\x0b\x32\x17.scalekit.v1.roles.RoleR\x04role\"\xf9\x01\n\x11\x44\x65leteRoleRequest\x12\x1e\n\x06\x65nv_id\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x18 R\x05\x65nvId\x12\"\n\x02id\x18\x02 \x01(\tB\x12\xbaH\x0fr\n\x10\x01\x18 :\x04role\xc8\x01\x01R\x02id\x12\x8a\x01\n\x10reassign_role_id\x18\x03 \x01(\tB[\x92\x41I24Role ID to reassign users to when deleting this roleJ\x11\"role_1234567890\"\xbaH\x0cr\n\x10\x01\x18 :\x04roleH\x00R\x0ereassignRoleId\x88\x01\x01\x42\x13\n\x11_reassign_role_id\"\xdf\x01\n\x1d\x43reateOrganizationRoleRequest\x12\x65\n\x06org_id\x18\x01 \x01(\tBN\x92\x41=2$Unique identifier to an OrganizationJ\x15\"org_121312434123312\"\xbaH\x0br\t\x10\x01\x18 :\x03orgR\x05orgId\x12W\n\x04role\x18\x02 \x01(\x0b\x32\x1d.scalekit.v1.roles.CreateRoleB$\x92\x41\x1b\x32\x19Organization role details\xbaH\x03\xc8\x01\x01R\x04role\"M\n\x1e\x43reateOrganizationRoleResponse\x12+\n\x04role\x18\x01 \x01(\x0b\x32\x17.scalekit.v1.roles.RoleR\x04role\"\xdf\x01\n\x1aGetOrganizationRoleRequest\x12\x65\n\x06org_id\x18\x01 \x01(\tBN\x92\x41=2$Unique identifier to an OrganizationJ\x15\"org_121312434123312\"\xbaH\x0br\t\x10\x01\x18 :\x03orgR\x05orgId\x12Z\n\x02id\x18\x02 \x01(\tBJ\x92\x41\x35\x32\x1bUnique identifier to a roleJ\x16\"role_121312434123312\"\xbaH\x0fr\n\x10\x01\x18 :\x04role\xc8\x01\x01R\x02id\"J\n\x1bGetOrganizationRoleResponse\x12+\n\x04role\x18\x01 \x01(\x0b\x32\x17.scalekit.v1.roles.RoleR\x04role\"\xeb\x02\n\x1cListOrganizationRolesRequest\x12h\n\x06org_id\x18\x01 \x01(\tBQ\x92\x41=2$Unique identifier to an OrganizationJ\x15\"org_121312434123312\"\xbaH\x0er\t\x10\x01\x18 :\x03org\xc8\x01\x01R\x05orgId:\xe0\x01\x92\x41\xdc\x01\n\xb6\x01*\x17List Organization Roles2\x91\x01Retrieve a paginated list of all organizations within the environment. Use the page_token from the response to access subsequent pages of results\xd2\x01\x06org_id2!{\"org_id\" : \"org_8756865685762\" }\"j\n\x1dListOrganizationRolesResponse\x12I\n\x05roles\x18\x01 \x03(\x0b\x32\x17.scalekit.v1.roles.RoleB\x1a\x92\x41\x17\x32\x15List of roles objectsR\x05roles\"\xbb\x02\n\x1dUpdateOrganizationRoleRequest\x12\x65\n\x06org_id\x18\x01 \x01(\tBN\x92\x41=2$Unique identifier to an OrganizationJ\x15\"org_121312434123312\"\xbaH\x0br\t\x10\x01\x18 :\x03orgR\x05orgId\x12Z\n\x02id\x18\x02 \x01(\tBJ\x92\x41\x35\x32\x1bUnique identifier to a roleJ\x16\"role_121312434123312\"\xbaH\x0fr\n\x10\x01\x18 :\x04role\xc8\x01\x01R\x02id\x12W\n\x04role\x18\x03 \x01(\x0b\x32\x1d.scalekit.v1.roles.UpdateRoleB$\x92\x41\x1b\x32\x19Organization role details\xbaH\x03\xc8\x01\x01R\x04role\"M\n\x1eUpdateOrganizationRoleResponse\x12+\n\x04role\x18\x01 \x01(\x0b\x32\x17.scalekit.v1.roles.RoleR\x04role\"\x84\x03\n\x1d\x44\x65leteOrganizationRoleRequest\x12\x65\n\x06org_id\x18\x01 \x01(\tBN\x92\x41=2$Unique identifier to an OrganizationJ\x15\"org_121312434123312\"\xbaH\x0br\t\x10\x01\x18 :\x03orgR\x05orgId\x12Z\n\x02id\x18\x02 \x01(\tBJ\x92\x41\x35\x32\x1bUnique identifier to a roleJ\x16\"role_121312434123312\"\xbaH\x0fr\n\x10\x01\x18 :\x04role\xc8\x01\x01R\x02id\x12\x8a\x01\n\x10reassign_role_id\x18\x03 \x01(\tB[\x92\x41I24Role ID to reassign users to when deleting this roleJ\x11\"role_1234567890\"\xbaH\x0cr\n\x10\x01\x18 :\x04roleH\x00R\x0ereassignRoleId\x88\x01\x01\x42\x13\n\x11_reassign_role_id\"\x96\x01\n\x18GetRoleUsersCountRequest\x12\x1e\n\x06\x65nv_id\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x18 R\x05\x65nvId\x12Z\n\x02id\x18\x02 \x01(\tBJ\x92\x41\x35\x32\x1bUnique identifier to a roleJ\x16\"role_121312434123312\"\xbaH\x0fr\n\x10\x01\x18 :\x04role\xc8\x01\x01R\x02id\"k\n\x19GetRoleUsersCountResponse\x12N\n\x05\x63ount\x18\x01 \x01(\x03\x42\x38\x92\x41.2(Number of users associated with the roleJ\x02\x31\x30\xbaH\x04\x1a\x02 \x00R\x05\x63ount\"\x91\x04\n\x19UpdateDefaultRolesRequest\x12\x1e\n\x06\x65nv_id\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x18 R\x05\x65nvId\x12\xec\x01\n\x0f\x64\x65\x66\x61ult_creator\x18\x02 \x01(\x0b\x32$.scalekit.v1.roles.UpdateDefaultRoleB\x9c\x01\x92\x41\x92\x01\x32\x14\x44\x65\x66\x61ult Creator RoleJz{\"id\": \"role_1234567890\", \"name\": \"creator\", \"display_name\": \"Creator Role\", \"description\": \"Role for creating resources\"}\xbaH\x03\xc8\x01\x01R\x0e\x64\x65\x66\x61ultCreator\x12\xe4\x01\n\x0e\x64\x65\x66\x61ult_member\x18\x03 \x01(\x0b\x32$.scalekit.v1.roles.UpdateDefaultRoleB\x96\x01\x92\x41\x8c\x01\x32\x13\x44\x65\x66\x61ult Member RoleJu{\"id\": \"role_0987654321\", \"name\": \"member\", \"display_name\": \"Member Role\", \"description\": \"Role for regular members\"}\xbaH\x03\xc8\x01\x01R\rdefaultMember\"\xdc\x03\n\x1aUpdateDefaultRolesResponse\x12\xe1\x01\n\x0f\x64\x65\x66\x61ult_creator\x18\x01 \x01(\x0b\x32\x17.scalekit.v1.roles.RoleB\x9e\x01\x92\x41\x9a\x01\x32\x1cUpdated Default Creator RoleJz{\"id\": \"role_1234567890\", \"name\": \"creator\", \"display_name\": \"Creator Role\", \"description\": \"Role for creating resources\"}R\x0e\x64\x65\x66\x61ultCreator\x12\xd9\x01\n\x0e\x64\x65\x66\x61ult_member\x18\x02 \x01(\x0b\x32\x17.scalekit.v1.roles.RoleB\x98\x01\x92\x41\x94\x01\x32\x1bUpdated Default Member RoleJu{\"id\": \"role_0987654321\", \"name\": \"member\", \"display_name\": \"Member Role\", \"description\": \"Role for regular members\"}R\rdefaultMember\"4\n\x11UpdateDefaultRole\x12\x1f\n\x02id\x18\x01 \x01(\tB\x0f\xbaH\x0cr\n\x10\x01\x18 :\x04roleR\x02id2\xcd\x1d\n\x0cRolesService\x12\xdf\x01\n\nCreateRole\x12$.scalekit.v1.roles.CreateRoleRequest\x1a%.scalekit.v1.roles.CreateRoleResponse\"\x83\x01\x82\xb5\x18\x02\x18T\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02h\"\r/api/v1/roles:\x04roleZ$\"\x1c/api/v1/environments/-/roles:\x04roleZ+\"#/api/v1/environments/{env_id}/roles:\x04role\x12\xee\x01\n\nUpdateRole\x12$.scalekit.v1.roles.UpdateRoleRequest\x1a%.scalekit.v1.roles.UpdateRoleResponse\"\x92\x01\x82\xb5\x18\x02\x18T\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02w\x1a\x12/api/v1/roles/{id}:\x04roleZ)\x1a!/api/v1/environments/-/roles/{id}:\x04roleZ0\x1a(/api/v1/environments/{env_id}/roles/{id}:\x04role\x12\xd3\x01\n\x07GetRole\x12!.scalekit.v1.roles.GetRoleRequest\x1a\".scalekit.v1.roles.GetRoleResponse\"\x80\x01\x82\xb5\x18\x02\x18T\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x65\x12\x12/api/v1/roles/{id}Z#\x12!/api/v1/environments/-/roles/{id}Z*\x12(/api/v1/environments/{env_id}/roles/{id}\x12\xc9\x01\n\tListRoles\x12#.scalekit.v1.roles.ListRolesRequest\x1a$.scalekit.v1.roles.ListRolesResponse\"q\x82\xb5\x18\x02\x18t\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02V\x12\r/api/v1/rolesZ\x1e\x12\x1c/api/v1/environments/-/rolesZ%\x12#/api/v1/environments/{env_id}/roles\x12\xcd\x01\n\nDeleteRole\x12$.scalekit.v1.roles.DeleteRoleRequest\x1a\x16.google.protobuf.Empty\"\x80\x01\x82\xb5\x18\x02\x18T\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x65*\x12/api/v1/roles/{id}Z#*!/api/v1/environments/-/roles/{id}Z**(/api/v1/environments/{env_id}/roles/{id}\x12\xaf\x03\n\x16\x43reateOrganizationRole\x12\x30.scalekit.v1.roles.CreateOrganizationRoleRequest\x1a\x31.scalekit.v1.roles.CreateOrganizationRoleResponse\"\xaf\x02\x92\x41\xe4\x01\n\x05Roles\x12\x1e\x43reate a new Organization Role\x1aSCreate a new organization role to represent a specific role within the organizationJf\n\x03\x32\x30\x31\x12_\n&Organization Role created successfully\x12\x35\n3\x1a\x31.scalekit.v1.roles.CreateOrganizationRoleResponse\x82\xb5\x18\x02\x18T\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02,\"$/api/v1/organizations/{org_id}/roles:\x04role\x12\xa7\x03\n\x16UpdateOrganizationRole\x12\x30.scalekit.v1.roles.UpdateOrganizationRoleRequest\x1a\x31.scalekit.v1.roles.UpdateOrganizationRoleResponse\"\xa7\x02\x92\x41\xd7\x01\n\x05Roles\x12$Update an existing Organization Role\x1a@Update an existing organization role using its unique identifierJf\n\x03\x32\x30\x30\x12_\n&Organization Role updated successfully\x12\x35\n3\x1a\x31.scalekit.v1.roles.UpdateOrganizationRoleResponse\x82\xb5\x18\x02\x18T\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x31\x1a)/api/v1/organizations/{org_id}/roles/{id}:\x04role\x12\xaf\x03\n\x13GetOrganizationRole\x12-.scalekit.v1.roles.GetOrganizationRoleRequest\x1a..scalekit.v1.roles.GetOrganizationRoleResponse\"\xb8\x02\x92\x41\xee\x01\n\x05Roles\x12\x1aRetrieve Organization Role\x1aZFetch detailed information about a specific organization role using its unique identifier.Jm\n\x03\x32\x30\x30\x12\x66\n0Successfully retrieved organization role details\x12\x32\n0\x1a..scalekit.v1.roles.GetOrganizationRoleResponse\x82\xb5\x18\x02\x18t\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02+\x12)/api/v1/organizations/{org_id}/roles/{id}\x12\xfb\x03\n\x15ListOrganizationRoles\x12/.scalekit.v1.roles.ListOrganizationRolesRequest\x1a\x30.scalekit.v1.roles.ListOrganizationRolesResponse\"\xfe\x02\x92\x41\xb9\x02\n\x05Roles\x12\x1bList All Organization Roles\x1a\x8a\x01Retrieve a paginated list of all roles within the organization. Use the page_token from the response to access subsequent pages of resultsJ\x85\x01\n\x03\x32\x30\x30\x12~\nFSuccessfully retrieved the list of roles within the given organization\x12\x34\n2\x1a\x30.scalekit.v1.roles.ListOrganizationRolesResponse\x82\xb5\x18\x02\x18t\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02&\x12$/api/v1/organizations/{org_id}/roles\x12\xbd\x02\n\x16\x44\x65leteOrganizationRole\x12\x30.scalekit.v1.roles.DeleteOrganizationRoleRequest\x1a\x16.google.protobuf.Empty\"\xd8\x01\x92\x41\x8e\x01\n\x05Roles\x12\x1b\x44\x65lete an Organization Role\x1aIRemove an existing role from the organization using its unique identifierJ\x1d\n\x03\x32\x30\x30\x12\x16\n\x14\x44\x65leted Successfully\x82\xb5\x18\x02\x18T\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02+*)/api/v1/organizations/{org_id}/roles/{id}\x12\x96\x02\n\x11GetRoleUsersCount\x12+.scalekit.v1.roles.GetRoleUsersCountRequest\x1a,.scalekit.v1.roles.GetRoleUsersCountResponse\"\xa5\x01\x82\xb5\x18\x02\x18P\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x89\x01\x12\x1e/api/v1/roles/{id}/users:countZ/\x12-/api/v1/environments/-/roles/{id}/users:countZ6\x12\x34/api/v1/environments/{env_id}/roles/{id}/users:count\x12\x86\x02\n\x12UpdateDefaultRoles\x12,.scalekit.v1.roles.UpdateDefaultRolesRequest\x1a-.scalekit.v1.roles.UpdateDefaultRolesResponse\"\x92\x01\x82\xb5\x18\x02\x18P\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02w2\x15/api/v1/roles/default:\x01*Z)2$/api/v1/environments/-/roles/default:\x01*Z02+/api/v1/environments/{env_id}/roles/default:\x01*\x1a\n\x92\x41\x07\n\x05RolesB1Z/github.com/scalekit-inc/scalekit/pkg/grpc/rolesb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -42,6 +42,10 @@ _globals['_ROLE'].fields_by_name['display_name']._serialized_options = b'\272H\tr\004\020\001\030d\310\001\001' _globals['_ROLE'].fields_by_name['description']._loaded_options = None _globals['_ROLE'].fields_by_name['description']._serialized_options = b'\272H\005r\003\030\320\017' + _globals['_ROLE'].fields_by_name['default_creator']._loaded_options = None + _globals['_ROLE'].fields_by_name['default_creator']._serialized_options = b'\222A:22Indicates if this role is the default creator roleJ\004true' + _globals['_ROLE'].fields_by_name['default_member']._loaded_options = None + _globals['_ROLE'].fields_by_name['default_member']._serialized_options = b'\222A921Indicates if this role is the default member roleJ\004true' _globals['_CREATEROLE'].fields_by_name['name']._loaded_options = None _globals['_CREATEROLE'].fields_by_name['name']._serialized_options = b'\222A;2&Unique Name of the Organization\'s RoleJ\021\"org_viewer_role\"\272H\037r\032\020\001\030d2\024^[a-zA-Z0-9_]{1,64}$\310\001\001' _globals['_CREATEROLE'].fields_by_name['display_name']._loaded_options = None @@ -49,33 +53,43 @@ _globals['_CREATEROLE'].fields_by_name['description']._loaded_options = None _globals['_CREATEROLE'].fields_by_name['description']._serialized_options = b'\222An2&Description of the Organization\'s RoleJD\"Organization Viewer Role will be used only for viewing the objects\"\272H\005r\003\030\320\017' _globals['_CREATEROLE'].fields_by_name['default']._loaded_options = None - _globals['_CREATEROLE'].fields_by_name['default']._serialized_options = b'\222A\0242\014Default RoleJ\004true' + _globals['_CREATEROLE'].fields_by_name['default']._serialized_options = b'\030\001\222A\0242\014Default RoleJ\004true' + _globals['_CREATEROLE'].fields_by_name['default_creator']._loaded_options = None + _globals['_CREATEROLE'].fields_by_name['default_creator']._serialized_options = b'\222A\0342\024Default Creator RoleJ\004true' + _globals['_CREATEROLE'].fields_by_name['default_member']._loaded_options = None + _globals['_CREATEROLE'].fields_by_name['default_member']._serialized_options = b'\222A\0332\023Default Member RoleJ\004true' _globals['_CREATEROLEREQUEST'].fields_by_name['env_id']._loaded_options = None - _globals['_CREATEROLEREQUEST'].fields_by_name['env_id']._serialized_options = b'\272H\013r\t\020\001\030 :\003env' + _globals['_CREATEROLEREQUEST'].fields_by_name['env_id']._serialized_options = b'\272H\004r\002\030 ' _globals['_CREATEROLEREQUEST'].fields_by_name['role']._loaded_options = None _globals['_CREATEROLEREQUEST'].fields_by_name['role']._serialized_options = b'\272H\003\310\001\001' _globals['_GETROLEREQUEST'].fields_by_name['env_id']._loaded_options = None - _globals['_GETROLEREQUEST'].fields_by_name['env_id']._serialized_options = b'\272H\013r\t\020\001\030 :\003env' + _globals['_GETROLEREQUEST'].fields_by_name['env_id']._serialized_options = b'\272H\004r\002\030 ' _globals['_GETROLEREQUEST'].fields_by_name['id']._loaded_options = None _globals['_GETROLEREQUEST'].fields_by_name['id']._serialized_options = b'\272H\017r\n\020\001\030 :\004role\310\001\001' _globals['_LISTROLESREQUEST'].fields_by_name['env_id']._loaded_options = None - _globals['_LISTROLESREQUEST'].fields_by_name['env_id']._serialized_options = b'\272H\006r\004\020\000\030 ' + _globals['_LISTROLESREQUEST'].fields_by_name['env_id']._serialized_options = b'\272H\004r\002\030 ' _globals['_UPDATEROLE'].fields_by_name['display_name']._loaded_options = None _globals['_UPDATEROLE'].fields_by_name['display_name']._serialized_options = b'\222AE2\'Display Name of the Organization\'s RoleJ\032\"Organization Viewer Role\"\272H\006r\004\020\001\030d' _globals['_UPDATEROLE'].fields_by_name['description']._loaded_options = None _globals['_UPDATEROLE'].fields_by_name['description']._serialized_options = b'\222An2&Description of the Organization\'s RoleJD\"Organization Viewer Role will be used only for viewing the objects\"\272H\007r\005\020\001\030\320\017' _globals['_UPDATEROLE'].fields_by_name['default']._loaded_options = None - _globals['_UPDATEROLE'].fields_by_name['default']._serialized_options = b'\222A\0242\014Default RoleJ\004true' + _globals['_UPDATEROLE'].fields_by_name['default']._serialized_options = b'\030\001\222A\0242\014Default RoleJ\004true' + _globals['_UPDATEROLE'].fields_by_name['default_creator']._loaded_options = None + _globals['_UPDATEROLE'].fields_by_name['default_creator']._serialized_options = b'\222A\0342\024Default Creator RoleJ\004true' + _globals['_UPDATEROLE'].fields_by_name['default_member']._loaded_options = None + _globals['_UPDATEROLE'].fields_by_name['default_member']._serialized_options = b'\222A\0332\023Default Member RoleJ\004true' _globals['_UPDATEROLEREQUEST'].fields_by_name['env_id']._loaded_options = None - _globals['_UPDATEROLEREQUEST'].fields_by_name['env_id']._serialized_options = b'\272H\013r\t\020\001\030 :\003env' + _globals['_UPDATEROLEREQUEST'].fields_by_name['env_id']._serialized_options = b'\272H\004r\002\030 ' _globals['_UPDATEROLEREQUEST'].fields_by_name['id']._loaded_options = None _globals['_UPDATEROLEREQUEST'].fields_by_name['id']._serialized_options = b'\272H\017r\n\020\001\030 :\004role\310\001\001' _globals['_UPDATEROLEREQUEST'].fields_by_name['role']._loaded_options = None _globals['_UPDATEROLEREQUEST'].fields_by_name['role']._serialized_options = b'\272H\003\310\001\001' _globals['_DELETEROLEREQUEST'].fields_by_name['env_id']._loaded_options = None - _globals['_DELETEROLEREQUEST'].fields_by_name['env_id']._serialized_options = b'\272H\013r\t\020\001\030 :\003env' + _globals['_DELETEROLEREQUEST'].fields_by_name['env_id']._serialized_options = b'\272H\004r\002\030 ' _globals['_DELETEROLEREQUEST'].fields_by_name['id']._loaded_options = None _globals['_DELETEROLEREQUEST'].fields_by_name['id']._serialized_options = b'\272H\017r\n\020\001\030 :\004role\310\001\001' + _globals['_DELETEROLEREQUEST'].fields_by_name['reassign_role_id']._loaded_options = None + _globals['_DELETEROLEREQUEST'].fields_by_name['reassign_role_id']._serialized_options = b'\222AI24Role ID to reassign users to when deleting this roleJ\021\"role_1234567890\"\272H\014r\n\020\001\030 :\004role' _globals['_CREATEORGANIZATIONROLEREQUEST'].fields_by_name['org_id']._loaded_options = None _globals['_CREATEORGANIZATIONROLEREQUEST'].fields_by_name['org_id']._serialized_options = b'\222A=2$Unique identifier to an OrganizationJ\025\"org_121312434123312\"\272H\013r\t\020\001\030 :\003org' _globals['_CREATEORGANIZATIONROLEREQUEST'].fields_by_name['role']._loaded_options = None @@ -100,18 +114,38 @@ _globals['_DELETEORGANIZATIONROLEREQUEST'].fields_by_name['org_id']._serialized_options = b'\222A=2$Unique identifier to an OrganizationJ\025\"org_121312434123312\"\272H\013r\t\020\001\030 :\003org' _globals['_DELETEORGANIZATIONROLEREQUEST'].fields_by_name['id']._loaded_options = None _globals['_DELETEORGANIZATIONROLEREQUEST'].fields_by_name['id']._serialized_options = b'\222A52\033Unique identifier to a roleJ\026\"role_121312434123312\"\272H\017r\n\020\001\030 :\004role\310\001\001' + _globals['_DELETEORGANIZATIONROLEREQUEST'].fields_by_name['reassign_role_id']._loaded_options = None + _globals['_DELETEORGANIZATIONROLEREQUEST'].fields_by_name['reassign_role_id']._serialized_options = b'\222AI24Role ID to reassign users to when deleting this roleJ\021\"role_1234567890\"\272H\014r\n\020\001\030 :\004role' + _globals['_GETROLEUSERSCOUNTREQUEST'].fields_by_name['env_id']._loaded_options = None + _globals['_GETROLEUSERSCOUNTREQUEST'].fields_by_name['env_id']._serialized_options = b'\272H\004r\002\030 ' + _globals['_GETROLEUSERSCOUNTREQUEST'].fields_by_name['id']._loaded_options = None + _globals['_GETROLEUSERSCOUNTREQUEST'].fields_by_name['id']._serialized_options = b'\222A52\033Unique identifier to a roleJ\026\"role_121312434123312\"\272H\017r\n\020\001\030 :\004role\310\001\001' + _globals['_GETROLEUSERSCOUNTRESPONSE'].fields_by_name['count']._loaded_options = None + _globals['_GETROLEUSERSCOUNTRESPONSE'].fields_by_name['count']._serialized_options = b'\222A.2(Number of users associated with the roleJ\00210\272H\004\032\002 \000' + _globals['_UPDATEDEFAULTROLESREQUEST'].fields_by_name['env_id']._loaded_options = None + _globals['_UPDATEDEFAULTROLESREQUEST'].fields_by_name['env_id']._serialized_options = b'\272H\004r\002\030 ' + _globals['_UPDATEDEFAULTROLESREQUEST'].fields_by_name['default_creator']._loaded_options = None + _globals['_UPDATEDEFAULTROLESREQUEST'].fields_by_name['default_creator']._serialized_options = b'\222A\222\0012\024Default Creator RoleJz{\"id\": \"role_1234567890\", \"name\": \"creator\", \"display_name\": \"Creator Role\", \"description\": \"Role for creating resources\"}\272H\003\310\001\001' + _globals['_UPDATEDEFAULTROLESREQUEST'].fields_by_name['default_member']._loaded_options = None + _globals['_UPDATEDEFAULTROLESREQUEST'].fields_by_name['default_member']._serialized_options = b'\222A\214\0012\023Default Member RoleJu{\"id\": \"role_0987654321\", \"name\": \"member\", \"display_name\": \"Member Role\", \"description\": \"Role for regular members\"}\272H\003\310\001\001' + _globals['_UPDATEDEFAULTROLESRESPONSE'].fields_by_name['default_creator']._loaded_options = None + _globals['_UPDATEDEFAULTROLESRESPONSE'].fields_by_name['default_creator']._serialized_options = b'\222A\232\0012\034Updated Default Creator RoleJz{\"id\": \"role_1234567890\", \"name\": \"creator\", \"display_name\": \"Creator Role\", \"description\": \"Role for creating resources\"}' + _globals['_UPDATEDEFAULTROLESRESPONSE'].fields_by_name['default_member']._loaded_options = None + _globals['_UPDATEDEFAULTROLESRESPONSE'].fields_by_name['default_member']._serialized_options = b'\222A\224\0012\033Updated Default Member RoleJu{\"id\": \"role_0987654321\", \"name\": \"member\", \"display_name\": \"Member Role\", \"description\": \"Role for regular members\"}' + _globals['_UPDATEDEFAULTROLE'].fields_by_name['id']._loaded_options = None + _globals['_UPDATEDEFAULTROLE'].fields_by_name['id']._serialized_options = b'\272H\014r\n\020\001\030 :\004role' _globals['_ROLESSERVICE']._loaded_options = None _globals['_ROLESSERVICE']._serialized_options = b'\222A\007\n\005Roles' _globals['_ROLESSERVICE'].methods_by_name['CreateRole']._loaded_options = None - _globals['_ROLESSERVICE'].methods_by_name['CreateRole']._serialized_options = b'\202\265\030\002\030P\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\002K\"#/api/v1/environments/{env_id}/roles:\004roleZ\036\"\034/api/v1/environments/-/roles' + _globals['_ROLESSERVICE'].methods_by_name['CreateRole']._serialized_options = b'\202\265\030\002\030T\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\002h\"\r/api/v1/roles:\004roleZ$\"\034/api/v1/environments/-/roles:\004roleZ+\"#/api/v1/environments/{env_id}/roles:\004role' _globals['_ROLESSERVICE'].methods_by_name['UpdateRole']._loaded_options = None - _globals['_ROLESSERVICE'].methods_by_name['UpdateRole']._serialized_options = b'\202\265\030\002\030P\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\002U\032(/api/v1/environments/{env_id}/roles/{id}:\004roleZ#\032!/api/v1/environments/-/roles/{id}' + _globals['_ROLESSERVICE'].methods_by_name['UpdateRole']._serialized_options = b'\202\265\030\002\030T\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\002w\032\022/api/v1/roles/{id}:\004roleZ)\032!/api/v1/environments/-/roles/{id}:\004roleZ0\032(/api/v1/environments/{env_id}/roles/{id}:\004role' _globals['_ROLESSERVICE'].methods_by_name['GetRole']._loaded_options = None - _globals['_ROLESSERVICE'].methods_by_name['GetRole']._serialized_options = b'\202\265\030\002\030P\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\002O\022(/api/v1/environments/{env_id}/roles/{id}Z#\022!/api/v1/environments/-/roles/{id}' + _globals['_ROLESSERVICE'].methods_by_name['GetRole']._serialized_options = b'\202\265\030\002\030T\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\002e\022\022/api/v1/roles/{id}Z#\022!/api/v1/environments/-/roles/{id}Z*\022(/api/v1/environments/{env_id}/roles/{id}' _globals['_ROLESSERVICE'].methods_by_name['ListRoles']._loaded_options = None - _globals['_ROLESSERVICE'].methods_by_name['ListRoles']._serialized_options = b'\202\265\030\002\030p\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\002E\022#/api/v1/environments/{env_id}/rolesZ\036\022\034/api/v1/environments/-/roles' + _globals['_ROLESSERVICE'].methods_by_name['ListRoles']._serialized_options = b'\202\265\030\002\030t\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\002V\022\r/api/v1/rolesZ\036\022\034/api/v1/environments/-/rolesZ%\022#/api/v1/environments/{env_id}/roles' _globals['_ROLESSERVICE'].methods_by_name['DeleteRole']._loaded_options = None - _globals['_ROLESSERVICE'].methods_by_name['DeleteRole']._serialized_options = b'\202\265\030\002\030P\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\002O*(/api/v1/environments/{env_id}/roles/{id}Z#*!/api/v1/environments/-/roles/{id}' + _globals['_ROLESSERVICE'].methods_by_name['DeleteRole']._serialized_options = b'\202\265\030\002\030T\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\002e*\022/api/v1/roles/{id}Z#*!/api/v1/environments/-/roles/{id}Z**(/api/v1/environments/{env_id}/roles/{id}' _globals['_ROLESSERVICE'].methods_by_name['CreateOrganizationRole']._loaded_options = None _globals['_ROLESSERVICE'].methods_by_name['CreateOrganizationRole']._serialized_options = b'\222A\344\001\n\005Roles\022\036Create a new Organization Role\032SCreate a new organization role to represent a specific role within the organizationJf\n\003201\022_\n&Organization Role created successfully\0225\n3\0321.scalekit.v1.roles.CreateOrganizationRoleResponse\202\265\030\002\030T\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\002,\"$/api/v1/organizations/{org_id}/roles:\004role' _globals['_ROLESSERVICE'].methods_by_name['UpdateOrganizationRole']._loaded_options = None @@ -122,48 +156,62 @@ _globals['_ROLESSERVICE'].methods_by_name['ListOrganizationRoles']._serialized_options = b'\222A\271\002\n\005Roles\022\033List All Organization Roles\032\212\001Retrieve a paginated list of all roles within the organization. Use the page_token from the response to access subsequent pages of resultsJ\205\001\n\003200\022~\nFSuccessfully retrieved the list of roles within the given organization\0224\n2\0320.scalekit.v1.roles.ListOrganizationRolesResponse\202\265\030\002\030t\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\002&\022$/api/v1/organizations/{org_id}/roles' _globals['_ROLESSERVICE'].methods_by_name['DeleteOrganizationRole']._loaded_options = None _globals['_ROLESSERVICE'].methods_by_name['DeleteOrganizationRole']._serialized_options = b'\222A\216\001\n\005Roles\022\033Delete an Organization Role\032IRemove an existing role from the organization using its unique identifierJ\035\n\003200\022\026\n\024Deleted Successfully\202\265\030\002\030T\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\002+*)/api/v1/organizations/{org_id}/roles/{id}' + _globals['_ROLESSERVICE'].methods_by_name['GetRoleUsersCount']._loaded_options = None + _globals['_ROLESSERVICE'].methods_by_name['GetRoleUsersCount']._serialized_options = b'\202\265\030\002\030P\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\002\211\001\022\036/api/v1/roles/{id}/users:countZ/\022-/api/v1/environments/-/roles/{id}/users:countZ6\0224/api/v1/environments/{env_id}/roles/{id}/users:count' + _globals['_ROLESSERVICE'].methods_by_name['UpdateDefaultRoles']._loaded_options = None + _globals['_ROLESSERVICE'].methods_by_name['UpdateDefaultRoles']._serialized_options = b'\202\265\030\002\030P\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\002w2\025/api/v1/roles/default:\001*Z)2$/api/v1/environments/-/roles/default:\001*Z02+/api/v1/environments/{env_id}/roles/default:\001*' _globals['_ROLE']._serialized_start=443 - _globals['_ROLE']._serialized_end=635 - _globals['_CREATEROLE']._serialized_start=638 - _globals['_CREATEROLE']._serialized_end=1136 - _globals['_CREATEROLEREQUEST']._serialized_start=1138 - _globals['_CREATEROLEREQUEST']._serialized_end=1255 - _globals['_CREATEROLERESPONSE']._serialized_start=1257 - _globals['_CREATEROLERESPONSE']._serialized_end=1322 - _globals['_GETROLEREQUEST']._serialized_start=1324 - _globals['_GETROLEREQUEST']._serialized_end=1415 - _globals['_GETROLERESPONSE']._serialized_start=1417 - _globals['_GETROLERESPONSE']._serialized_end=1479 - _globals['_LISTROLESREQUEST']._serialized_start=1481 - _globals['_LISTROLESREQUEST']._serialized_end=1533 - _globals['_LISTROLESRESPONSE']._serialized_start=1535 - _globals['_LISTROLESRESPONSE']._serialized_end=1601 - _globals['_UPDATEROLE']._serialized_start=1604 - _globals['_UPDATEROLE']._serialized_end=2005 - _globals['_UPDATEROLEREQUEST']._serialized_start=2008 - _globals['_UPDATEROLEREQUEST']._serialized_end=2161 - _globals['_UPDATEROLERESPONSE']._serialized_start=2163 - _globals['_UPDATEROLERESPONSE']._serialized_end=2228 - _globals['_DELETEROLEREQUEST']._serialized_start=2230 - _globals['_DELETEROLEREQUEST']._serialized_end=2324 - _globals['_CREATEORGANIZATIONROLEREQUEST']._serialized_start=2327 - _globals['_CREATEORGANIZATIONROLEREQUEST']._serialized_end=2550 - _globals['_CREATEORGANIZATIONROLERESPONSE']._serialized_start=2552 - _globals['_CREATEORGANIZATIONROLERESPONSE']._serialized_end=2629 - _globals['_GETORGANIZATIONROLEREQUEST']._serialized_start=2632 - _globals['_GETORGANIZATIONROLEREQUEST']._serialized_end=2855 - _globals['_GETORGANIZATIONROLERESPONSE']._serialized_start=2857 - _globals['_GETORGANIZATIONROLERESPONSE']._serialized_end=2931 - _globals['_LISTORGANIZATIONROLESREQUEST']._serialized_start=2934 - _globals['_LISTORGANIZATIONROLESREQUEST']._serialized_end=3297 - _globals['_LISTORGANIZATIONROLESRESPONSE']._serialized_start=3299 - _globals['_LISTORGANIZATIONROLESRESPONSE']._serialized_end=3405 - _globals['_UPDATEORGANIZATIONROLEREQUEST']._serialized_start=3408 - _globals['_UPDATEORGANIZATIONROLEREQUEST']._serialized_end=3723 - _globals['_UPDATEORGANIZATIONROLERESPONSE']._serialized_start=3725 - _globals['_UPDATEORGANIZATIONROLERESPONSE']._serialized_end=3802 - _globals['_DELETEORGANIZATIONROLEREQUEST']._serialized_start=3805 - _globals['_DELETEORGANIZATIONROLEREQUEST']._serialized_end=4031 - _globals['_ROLESSERVICE']._serialized_start=4034 - _globals['_ROLESSERVICE']._serialized_end=7149 + _globals['_ROLE']._serialized_end=840 + _globals['_CREATEROLE']._serialized_start=843 + _globals['_CREATEROLE']._serialized_end=1537 + _globals['_CREATEROLEREQUEST']._serialized_start=1539 + _globals['_CREATEROLEREQUEST']._serialized_end=1649 + _globals['_CREATEROLERESPONSE']._serialized_start=1651 + _globals['_CREATEROLERESPONSE']._serialized_end=1716 + _globals['_GETROLEREQUEST']._serialized_start=1718 + _globals['_GETROLEREQUEST']._serialized_end=1802 + _globals['_GETROLERESPONSE']._serialized_start=1804 + _globals['_GETROLERESPONSE']._serialized_end=1866 + _globals['_LISTROLESREQUEST']._serialized_start=1868 + _globals['_LISTROLESREQUEST']._serialized_end=1918 + _globals['_LISTROLESRESPONSE']._serialized_start=1920 + _globals['_LISTROLESRESPONSE']._serialized_end=1986 + _globals['_UPDATEROLE']._serialized_start=1989 + _globals['_UPDATEROLE']._serialized_end=2586 + _globals['_UPDATEROLEREQUEST']._serialized_start=2589 + _globals['_UPDATEROLEREQUEST']._serialized_end=2735 + _globals['_UPDATEROLERESPONSE']._serialized_start=2737 + _globals['_UPDATEROLERESPONSE']._serialized_end=2802 + _globals['_DELETEROLEREQUEST']._serialized_start=2805 + _globals['_DELETEROLEREQUEST']._serialized_end=3054 + _globals['_CREATEORGANIZATIONROLEREQUEST']._serialized_start=3057 + _globals['_CREATEORGANIZATIONROLEREQUEST']._serialized_end=3280 + _globals['_CREATEORGANIZATIONROLERESPONSE']._serialized_start=3282 + _globals['_CREATEORGANIZATIONROLERESPONSE']._serialized_end=3359 + _globals['_GETORGANIZATIONROLEREQUEST']._serialized_start=3362 + _globals['_GETORGANIZATIONROLEREQUEST']._serialized_end=3585 + _globals['_GETORGANIZATIONROLERESPONSE']._serialized_start=3587 + _globals['_GETORGANIZATIONROLERESPONSE']._serialized_end=3661 + _globals['_LISTORGANIZATIONROLESREQUEST']._serialized_start=3664 + _globals['_LISTORGANIZATIONROLESREQUEST']._serialized_end=4027 + _globals['_LISTORGANIZATIONROLESRESPONSE']._serialized_start=4029 + _globals['_LISTORGANIZATIONROLESRESPONSE']._serialized_end=4135 + _globals['_UPDATEORGANIZATIONROLEREQUEST']._serialized_start=4138 + _globals['_UPDATEORGANIZATIONROLEREQUEST']._serialized_end=4453 + _globals['_UPDATEORGANIZATIONROLERESPONSE']._serialized_start=4455 + _globals['_UPDATEORGANIZATIONROLERESPONSE']._serialized_end=4532 + _globals['_DELETEORGANIZATIONROLEREQUEST']._serialized_start=4535 + _globals['_DELETEORGANIZATIONROLEREQUEST']._serialized_end=4923 + _globals['_GETROLEUSERSCOUNTREQUEST']._serialized_start=4926 + _globals['_GETROLEUSERSCOUNTREQUEST']._serialized_end=5076 + _globals['_GETROLEUSERSCOUNTRESPONSE']._serialized_start=5078 + _globals['_GETROLEUSERSCOUNTRESPONSE']._serialized_end=5185 + _globals['_UPDATEDEFAULTROLESREQUEST']._serialized_start=5188 + _globals['_UPDATEDEFAULTROLESREQUEST']._serialized_end=5717 + _globals['_UPDATEDEFAULTROLESRESPONSE']._serialized_start=5720 + _globals['_UPDATEDEFAULTROLESRESPONSE']._serialized_end=6196 + _globals['_UPDATEDEFAULTROLE']._serialized_start=6198 + _globals['_UPDATEDEFAULTROLE']._serialized_end=6250 + _globals['_ROLESSERVICE']._serialized_start=6253 + _globals['_ROLESSERVICE']._serialized_end=10042 # @@protoc_insertion_point(module_scope) diff --git a/scalekit/v1/roles/roles_pb2.pyi b/scalekit/v1/roles/roles_pb2.pyi index c4703a9..8c8972b 100644 --- a/scalekit/v1/roles/roles_pb2.pyi +++ b/scalekit/v1/roles/roles_pb2.pyi @@ -18,30 +18,38 @@ from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Map DESCRIPTOR: _descriptor.FileDescriptor class Role(_message.Message): - __slots__ = ("id", "name", "display_name", "description", "default") + __slots__ = ("id", "name", "display_name", "description", "default", "default_creator", "default_member") ID_FIELD_NUMBER: _ClassVar[int] NAME_FIELD_NUMBER: _ClassVar[int] DISPLAY_NAME_FIELD_NUMBER: _ClassVar[int] DESCRIPTION_FIELD_NUMBER: _ClassVar[int] DEFAULT_FIELD_NUMBER: _ClassVar[int] + DEFAULT_CREATOR_FIELD_NUMBER: _ClassVar[int] + DEFAULT_MEMBER_FIELD_NUMBER: _ClassVar[int] id: str name: str display_name: str description: str default: bool - def __init__(self, id: _Optional[str] = ..., name: _Optional[str] = ..., display_name: _Optional[str] = ..., description: _Optional[str] = ..., default: bool = ...) -> None: ... + default_creator: bool + default_member: bool + def __init__(self, id: _Optional[str] = ..., name: _Optional[str] = ..., display_name: _Optional[str] = ..., description: _Optional[str] = ..., default: bool = ..., default_creator: bool = ..., default_member: bool = ...) -> None: ... class CreateRole(_message.Message): - __slots__ = ("name", "display_name", "description", "default") + __slots__ = ("name", "display_name", "description", "default", "default_creator", "default_member") NAME_FIELD_NUMBER: _ClassVar[int] DISPLAY_NAME_FIELD_NUMBER: _ClassVar[int] DESCRIPTION_FIELD_NUMBER: _ClassVar[int] DEFAULT_FIELD_NUMBER: _ClassVar[int] + DEFAULT_CREATOR_FIELD_NUMBER: _ClassVar[int] + DEFAULT_MEMBER_FIELD_NUMBER: _ClassVar[int] name: str display_name: str description: str default: bool - def __init__(self, name: _Optional[str] = ..., display_name: _Optional[str] = ..., description: _Optional[str] = ..., default: bool = ...) -> None: ... + default_creator: bool + default_member: bool + def __init__(self, name: _Optional[str] = ..., display_name: _Optional[str] = ..., description: _Optional[str] = ..., default: bool = ..., default_creator: bool = ..., default_member: bool = ...) -> None: ... class CreateRoleRequest(_message.Message): __slots__ = ("env_id", "role") @@ -84,14 +92,18 @@ class ListRolesResponse(_message.Message): def __init__(self, roles: _Optional[_Iterable[_Union[Role, _Mapping]]] = ...) -> None: ... class UpdateRole(_message.Message): - __slots__ = ("display_name", "description", "default") + __slots__ = ("display_name", "description", "default", "default_creator", "default_member") DISPLAY_NAME_FIELD_NUMBER: _ClassVar[int] DESCRIPTION_FIELD_NUMBER: _ClassVar[int] DEFAULT_FIELD_NUMBER: _ClassVar[int] + DEFAULT_CREATOR_FIELD_NUMBER: _ClassVar[int] + DEFAULT_MEMBER_FIELD_NUMBER: _ClassVar[int] display_name: str description: str default: bool - def __init__(self, display_name: _Optional[str] = ..., description: _Optional[str] = ..., default: bool = ...) -> None: ... + default_creator: bool + default_member: bool + def __init__(self, display_name: _Optional[str] = ..., description: _Optional[str] = ..., default: bool = ..., default_creator: bool = ..., default_member: bool = ...) -> None: ... class UpdateRoleRequest(_message.Message): __slots__ = ("env_id", "id", "role") @@ -110,12 +122,14 @@ class UpdateRoleResponse(_message.Message): def __init__(self, role: _Optional[_Union[Role, _Mapping]] = ...) -> None: ... class DeleteRoleRequest(_message.Message): - __slots__ = ("env_id", "id") + __slots__ = ("env_id", "id", "reassign_role_id") ENV_ID_FIELD_NUMBER: _ClassVar[int] ID_FIELD_NUMBER: _ClassVar[int] + REASSIGN_ROLE_ID_FIELD_NUMBER: _ClassVar[int] env_id: str id: str - def __init__(self, env_id: _Optional[str] = ..., id: _Optional[str] = ...) -> None: ... + reassign_role_id: str + def __init__(self, env_id: _Optional[str] = ..., id: _Optional[str] = ..., reassign_role_id: _Optional[str] = ...) -> None: ... class CreateOrganizationRoleRequest(_message.Message): __slots__ = ("org_id", "role") @@ -174,9 +188,49 @@ class UpdateOrganizationRoleResponse(_message.Message): def __init__(self, role: _Optional[_Union[Role, _Mapping]] = ...) -> None: ... class DeleteOrganizationRoleRequest(_message.Message): - __slots__ = ("org_id", "id") + __slots__ = ("org_id", "id", "reassign_role_id") ORG_ID_FIELD_NUMBER: _ClassVar[int] ID_FIELD_NUMBER: _ClassVar[int] + REASSIGN_ROLE_ID_FIELD_NUMBER: _ClassVar[int] org_id: str id: str - def __init__(self, org_id: _Optional[str] = ..., id: _Optional[str] = ...) -> None: ... + reassign_role_id: str + def __init__(self, org_id: _Optional[str] = ..., id: _Optional[str] = ..., reassign_role_id: _Optional[str] = ...) -> None: ... + +class GetRoleUsersCountRequest(_message.Message): + __slots__ = ("env_id", "id") + ENV_ID_FIELD_NUMBER: _ClassVar[int] + ID_FIELD_NUMBER: _ClassVar[int] + env_id: str + id: str + def __init__(self, env_id: _Optional[str] = ..., id: _Optional[str] = ...) -> None: ... + +class GetRoleUsersCountResponse(_message.Message): + __slots__ = ("count",) + COUNT_FIELD_NUMBER: _ClassVar[int] + count: int + def __init__(self, count: _Optional[int] = ...) -> None: ... + +class UpdateDefaultRolesRequest(_message.Message): + __slots__ = ("env_id", "default_creator", "default_member") + ENV_ID_FIELD_NUMBER: _ClassVar[int] + DEFAULT_CREATOR_FIELD_NUMBER: _ClassVar[int] + DEFAULT_MEMBER_FIELD_NUMBER: _ClassVar[int] + env_id: str + default_creator: UpdateDefaultRole + default_member: UpdateDefaultRole + def __init__(self, env_id: _Optional[str] = ..., default_creator: _Optional[_Union[UpdateDefaultRole, _Mapping]] = ..., default_member: _Optional[_Union[UpdateDefaultRole, _Mapping]] = ...) -> None: ... + +class UpdateDefaultRolesResponse(_message.Message): + __slots__ = ("default_creator", "default_member") + DEFAULT_CREATOR_FIELD_NUMBER: _ClassVar[int] + DEFAULT_MEMBER_FIELD_NUMBER: _ClassVar[int] + default_creator: Role + default_member: Role + def __init__(self, default_creator: _Optional[_Union[Role, _Mapping]] = ..., default_member: _Optional[_Union[Role, _Mapping]] = ...) -> None: ... + +class UpdateDefaultRole(_message.Message): + __slots__ = ("id",) + ID_FIELD_NUMBER: _ClassVar[int] + id: str + def __init__(self, id: _Optional[str] = ...) -> None: ... diff --git a/scalekit/v1/roles/roles_pb2_grpc.py b/scalekit/v1/roles/roles_pb2_grpc.py index 09ee915..77f13c4 100644 --- a/scalekit/v1/roles/roles_pb2_grpc.py +++ b/scalekit/v1/roles/roles_pb2_grpc.py @@ -65,6 +65,16 @@ def __init__(self, channel): request_serializer=scalekit_dot_v1_dot_roles_dot_roles__pb2.DeleteOrganizationRoleRequest.SerializeToString, response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, ) + self.GetRoleUsersCount = channel.unary_unary( + '/scalekit.v1.roles.RolesService/GetRoleUsersCount', + request_serializer=scalekit_dot_v1_dot_roles_dot_roles__pb2.GetRoleUsersCountRequest.SerializeToString, + response_deserializer=scalekit_dot_v1_dot_roles_dot_roles__pb2.GetRoleUsersCountResponse.FromString, + ) + self.UpdateDefaultRoles = channel.unary_unary( + '/scalekit.v1.roles.RolesService/UpdateDefaultRoles', + request_serializer=scalekit_dot_v1_dot_roles_dot_roles__pb2.UpdateDefaultRolesRequest.SerializeToString, + response_deserializer=scalekit_dot_v1_dot_roles_dot_roles__pb2.UpdateDefaultRolesResponse.FromString, + ) class RolesServiceServicer(object): @@ -130,6 +140,18 @@ def DeleteOrganizationRole(self, request, context): context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') + def GetRoleUsersCount(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def UpdateDefaultRoles(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + def add_RolesServiceServicer_to_server(servicer, server): rpc_method_handlers = { @@ -183,6 +205,16 @@ def add_RolesServiceServicer_to_server(servicer, server): request_deserializer=scalekit_dot_v1_dot_roles_dot_roles__pb2.DeleteOrganizationRoleRequest.FromString, response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, ), + 'GetRoleUsersCount': grpc.unary_unary_rpc_method_handler( + servicer.GetRoleUsersCount, + request_deserializer=scalekit_dot_v1_dot_roles_dot_roles__pb2.GetRoleUsersCountRequest.FromString, + response_serializer=scalekit_dot_v1_dot_roles_dot_roles__pb2.GetRoleUsersCountResponse.SerializeToString, + ), + 'UpdateDefaultRoles': grpc.unary_unary_rpc_method_handler( + servicer.UpdateDefaultRoles, + request_deserializer=scalekit_dot_v1_dot_roles_dot_roles__pb2.UpdateDefaultRolesRequest.FromString, + response_serializer=scalekit_dot_v1_dot_roles_dot_roles__pb2.UpdateDefaultRolesResponse.SerializeToString, + ), } generic_handler = grpc.method_handlers_generic_handler( 'scalekit.v1.roles.RolesService', rpc_method_handlers) @@ -362,3 +394,37 @@ def DeleteOrganizationRole(request, google_dot_protobuf_dot_empty__pb2.Empty.FromString, options, channel_credentials, insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def GetRoleUsersCount(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/scalekit.v1.roles.RolesService/GetRoleUsersCount', + scalekit_dot_v1_dot_roles_dot_roles__pb2.GetRoleUsersCountRequest.SerializeToString, + scalekit_dot_v1_dot_roles_dot_roles__pb2.GetRoleUsersCountResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def UpdateDefaultRoles(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/scalekit.v1.roles.RolesService/UpdateDefaultRoles', + scalekit_dot_v1_dot_roles_dot_roles__pb2.UpdateDefaultRolesRequest.SerializeToString, + scalekit_dot_v1_dot_roles_dot_roles__pb2.UpdateDefaultRolesResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) diff --git a/scalekit/v1/users/users_pb2.py b/scalekit/v1/users/users_pb2.py index f328ce9..18c2e4d 100644 --- a/scalekit/v1/users/users_pb2.py +++ b/scalekit/v1/users/users_pb2.py @@ -23,7 +23,7 @@ from scalekit.v1.options import options_pb2 as scalekit_dot_v1_dot_options_dot_options__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1dscalekit/v1/users/users.proto\x12\x11scalekit.v1.users\x1a\x1b\x62uf/validate/validate.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1bgoogle/api/visibility.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a.protoc-gen-openapiv2/options/annotations.proto\x1a!scalekit/v1/commons/commons.proto\x1a!scalekit/v1/options/options.proto\"\xe5\r\n\x04User\x12u\n\x02id\x18\x01 \x01(\tBe\x92\x41\x62\x32HUnique system-generated identifier for the user. Immutable once created.J\x16\"usr_1234abcd5678efgh\"R\x02id\x12\xaf\x01\n\x0e\x65nvironment_id\x18\x02 \x01(\tB\x87\x01\x92\x41r2XIdentifier of the environment where the user was created. System-assigned and read-only.J\x16\"env_9876zyxw5432vuts\"\xe0\x41\x03\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEWR\renvironmentId\x12\x9c\x01\n\x0b\x63reate_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampB_\x92\x41Y2WTimestamp when the user account was initially created. Automatically set by the server.\xe0\x41\x03R\ncreateTime\x12\xa1\x01\n\x0bupdate_time\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampBd\x92\x41^2\\Timestamp of the last modification to the user account. Automatically updated by the server.\xe0\x41\x03R\nupdateTime\x12\x98\x01\n\x05\x65mail\x18\x05 \x01(\tB\x81\x01\x92\x41w2aPrimary email address for the user. Must be unique across the environment and valid per RFC 5322.J\x12\"user@example.com\"\xbaH\x04r\x02`\x01R\x05\x65mail\x12\xa2\x01\n\x0b\x65xternal_id\x18\x06 \x01(\tB|\x92\x41y2cYour application\'s unique identifier for this organization, used to link Scalekit with your system.J\x12\"ext_12345a67b89c\"H\x00R\nexternalId\x88\x01\x01\x12\xa9\x01\n\x0bmemberships\x18\x07 \x03(\x0b\x32+.scalekit.v1.commons.OrganizationMembershipBZ\x92\x41W2UList of organization memberships. Automatically populated based on group assignments.R\x0bmemberships\x12\x9c\x01\n\x0cuser_profile\x18\x08 \x01(\x0b\x32 .scalekit.v1.commons.UserProfileBW\x92\x41T2RUser\'s personal information including name, address, and other profile attributes.R\x0buserProfile\x12\x80\x02\n\x08metadata\x18\t \x03(\x0b\x32%.scalekit.v1.users.User.MetadataEntryB\xbc\x01\x92\x41\x9f\x01\x32\x64\x43ustom key-value pairs for storing additional user context. Keys (3-25 chars), values (1-256 chars).J7{\"department\": \"engineering\", \"location\": \"nyc-office\"}\xbaH\x16\x9a\x01\x13\x10\x14\"\x06r\x04\x10\x03\x18\x19*\x07r\x05\x10\x01\x18\x80\x02R\x08metadata\x12\x95\x01\n\nlast_login\x18\n \x01(\x0b\x32\x1a.google.protobuf.TimestampBZ\x92\x41W2UTimestamp of the user\'s most recent successful authentication. Updated automatically.R\tlastLogin\x1a;\n\rMetadataEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x42\x0e\n\x0c_external_id\"\xa6\x02\n\x1e\x43reateUserAndMembershipRequest\x12\'\n\x0forganization_id\x18\x01 \x01(\tR\x0eorganizationId\x12\x39\n\x04user\x18\x02 \x01(\x0b\x32\x1d.scalekit.v1.users.CreateUserB\x06\xbaH\x03\xc8\x01\x01R\x04user\x12\x85\x01\n\x15send_invitation_email\x18\x03 \x01(\x08\x42L\x92\x41I2AIf true, sends an activation email to the user. Defaults to true.J\x04trueH\x00R\x13sendInvitationEmail\x88\x01\x01\x42\x18\n\x16_send_invitation_email\"N\n\x1f\x43reateUserAndMembershipResponse\x12+\n\x04user\x18\x01 \x01(\x0b\x32\x17.scalekit.v1.users.UserR\x04user\"\xbc\x05\n\nUpdateUser\x12\xa2\x01\n\x0b\x65xternal_id\x18\x06 \x01(\tB|\x92\x41y2cYour application\'s unique identifier for this organization, used to link Scalekit with your system.J\x12\"ext_12345a67b89c\"H\x00R\nexternalId\x88\x01\x01\x12\xa0\x01\n\x0cuser_profile\x18\x08 \x01(\x0b\x32$.scalekit.v1.users.UpdateUserProfileBW\x92\x41T2RUser\'s personal information including name, address, and other profile attributes.R\x0buserProfile\x12\x86\x02\n\x08metadata\x18\t \x03(\x0b\x32+.scalekit.v1.users.UpdateUser.MetadataEntryB\xbc\x01\x92\x41\x9f\x01\x32\x64\x43ustom key-value pairs for storing additional user context. Keys (3-25 chars), values (1-256 chars).J7{\"department\": \"engineering\", \"location\": \"nyc-office\"}\xbaH\x16\x9a\x01\x13\x10\x14\"\x06r\x04\x10\x03\x18\x19*\x07r\x05\x10\x01\x18\x80\x02R\x08metadata\x1a;\n\rMetadataEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x42\x0e\n\x0c_external_idJ\x04\x08\x01\x10\x06J\x04\x08\x07\x10\x08J\x04\x08\n\x10\x0b\"\xc5\x04\n\x11UpdateUserRequest\x12\x8c\x01\n\x02id\x18\x01 \x01(\tBz\x92\x41h2NSystem-generated user ID. Must start with \'usr_\' and be 19-25 characters long.J\x16\"usr_1234abcd5678efgh\"\xbaH\x0cr\n\x10\x13\x18\x19:\x04usr_H\x00R\x02id\x12\x9a\x01\n\x0b\x65xternal_id\x18\x02 \x01(\tBw\x92\x41t2cYour application\'s unique identifier for this organization, used to link Scalekit with your system.J\r\"ext_7890xyz\"H\x00R\nexternalId\x12\xf5\x01\n\x04user\x18\x03 \x01(\x0b\x32\x1d.scalekit.v1.users.UpdateUserB\xc1\x01\x92\x41\xb7\x01\x32qUser fields to update. Only specified fields will be modified. Required fields must be provided if being changed.JB{\"email\": \"new.email@example.com\", \"phone_number\": \"+14155552671\"}\xbaH\x03\xc8\x01\x01R\x04userB\x0c\n\nidentities\"A\n\x12UpdateUserResponse\x12+\n\x04user\x18\x01 \x01(\x0b\x32\x17.scalekit.v1.users.UserR\x04user\"\x93\x02\n\x0eGetUserRequest\x12V\n\x02id\x18\x01 \x01(\tBD\x92\x41\x32\x32\x18System-generated user IDJ\x16\"usr_1234abcd5678efgh\"\xbaH\x0cr\n\x10\x01\x18 :\x04usr_H\x00R\x02id\x12\x9a\x01\n\x0b\x65xternal_id\x18\x02 \x01(\tBw\x92\x41t2cYour application\'s unique identifier for this organization, used to link Scalekit with your system.J\r\"ext_7890xyz\"H\x00R\nexternalIdB\x0c\n\nidentities\">\n\x0fGetUserResponse\x12+\n\x04user\x18\x01 \x01(\x0b\x32\x17.scalekit.v1.users.UserR\x04user\"\xf4\x04\n\x1cListOrganizationUsersRequest\x12\xc9\x01\n\x0forganization_id\x18\x01 \x01(\tB\x9f\x01\x92\x41\x8c\x01\x32rUnique identifier of the organization for which to list users. Must start with \'org_\' and be 1-32 characters long.J\x16\"org_1234abcd5678efgh\"\xbaH\x0cr\n\x10\x01\x18 :\x04org_R\x0eorganizationId\x12\xa9\x01\n\tpage_size\x18\x02 \x01(\rB\x8b\x01\x92\x41\x7f\x32yMaximum number of users to return in a single response. Valid range: 1-100. Server may return fewer users than specified.J\x02\x35\x30\xbaH\x06*\x04\x18\x64(\x00R\x08pageSize\x12\xdb\x01\n\npage_token\x18\x03 \x01(\tB\xbb\x01\x92\x41\xb7\x01\x32\x80\x01Pagination token from a previous ListUserResponse. Used to retrieve the next page of results. Leave empty for the first request.J2\"eyJwYWdlIjogMiwgImxhc3RfaWQiOiAidXNyXzEyMzQ1In0=\"R\tpageToken\"\xa4\x05\n\x1dListOrganizationUsersResponse\x12\xba\x01\n\x0fnext_page_token\x18\x01 \x01(\tB\x91\x01\x92\x41\x8d\x01\x32WOpaque token for retrieving the next page of results. Empty if there are no more pages.J2\"eyJwYWdlIjogMiwgImxhc3RfaWQiOiAidXNyXzEyMzQ1In0=\"R\rnextPageToken\x12x\n\ntotal_size\x18\x02 \x01(\rBY\x92\x41V2NTotal number of users matching the request criteria, regardless of pagination.J\x04\x31\x30\x34\x32R\ttotalSize\x12\x92\x01\n\x05users\x18\x03 \x03(\x0b\x32\x17.scalekit.v1.users.UserBc\x92\x41`2^List of user objects for the current page. May contain fewer entries than requested page_size.R\x05users\x12\xb6\x01\n\x0fprev_page_token\x18\x04 \x01(\tB\x8d\x01\x92\x41\x89\x01\x32SOpaque token for retrieving the previous page of results. Empty for the first page.J2\"eyJwYWdlIjogMCwgImZpcnN0X2lkIjogInVzcl85ODc2NSJ9\"R\rprevPageToken\"\xed\x04\n\x17\x44\x65leteMembershipRequest\x12\xa7\x01\n\x0forganization_id\x18\x01 \x01(\tB~\x92\x41l2RUnique organization identifier. Must start with \'org_\' and be 1-32 characters longJ\x16\"org_1234abcd5678efgh\"\xbaH\x0cr\n\x10\x01\x18 :\x04org_R\x0eorganizationId\x12\x81\x01\n\x02id\x18\x02 \x01(\tBo\x92\x41]2CSystem-generated user ID. Must start with \'usr_\' (19-25 characters)J\x16\"usr_1234abcd5678efgh\"\xbaH\x0cr\n\x10\x13\x18\x19:\x04usr_H\x00R\x02id\x12\x89\x01\n\x0b\x65xternal_id\x18\x03 \x01(\tBf\x92\x41\x63\x32RExternal system identifier from connected directories. Must match existing recordsJ\r\"ext_7890xyz\"H\x00R\nexternalId\x12~\n\x07\x63\x61scade\x18\x05 \x01(\x08\x42_\x92\x41\\2SIf true, if user has no memberships left the user is also deleted. defaults to trueJ\x05\x66\x61lseH\x01R\x07\x63\x61scade\x88\x01\x01\x42\x0c\n\nidentitiesB\n\n\x08_cascade\"\xaa\x06\n\x17\x43reateMembershipRequest\x12\xb7\x01\n\x0forganization_id\x18\x01 \x01(\tB\x8d\x01\x92\x41{2aUnique identifier of the target organization. Must start with \'org_\' and be 1-32 characters long.J\x16\"org_1234abcd5678efgh\"\xbaH\x0cr\n\x10\x01\x18 :\x04org_R\x0eorganizationId\x12\x8f\x01\n\nmembership\x18\x02 \x01(\x0b\x32#.scalekit.v1.users.CreateMembershipBJ\x92\x41\x41\x32?Membership details to create. Required fields must be provided.\xbaH\x03\xc8\x01\x01R\nmembership\x12\x81\x01\n\x02id\x18\x03 \x01(\tBo\x92\x41]2CSystem-generated user ID. Must start with \'usr_\' (19-25 characters)J\x16\"usr_1234abcd5678efgh\"\xbaH\x0cr\n\x10\x13\x18\x19:\x04usr_H\x00R\x02id\x12\x8e\x01\n\x0b\x65xternal_id\x18\x04 \x01(\tBk\x92\x41h2WExternal system identifier from connected directories. Must be unique across the systemJ\r\"ext_7890xyz\"H\x00R\nexternalId\x12\x85\x01\n\x15send_invitation_email\x18\x05 \x01(\x08\x42L\x92\x41I2AIf true, sends an activation email to the user. Defaults to true.J\x04trueH\x01R\x13sendInvitationEmail\x88\x01\x01\x42\x0c\n\nidentitiesB\x18\n\x16_send_invitation_email\"G\n\x18\x43reateMembershipResponse\x12+\n\x04user\x18\x01 \x01(\x0b\x32\x17.scalekit.v1.users.UserR\x04user\"\x9a\x02\n\x10ListUsersRequest\x12t\n\tpage_size\x18\x01 \x01(\rBW\x92\x41T2NMaximum number of organizations to return per page. Must be between 10 and 100J\x02\x33\x30R\x08pageSize\x12\x8f\x01\n\npage_token\x18\x02 \x01(\tBp\x92\x41m2[Pagination token from the previous response. Use to retrieve the next page of organizationsJ\x0e\"\"R\tpageToken\"\xc0\x04\n\x11ListUsersResponse\x12\x42\n\x05users\x18\x01 \x03(\x0b\x32\x17.scalekit.v1.users.UserB\x13\x92\x41\x10\x32\x0eList of users.R\x05users\x12\xb3\x01\n\x0fnext_page_token\x18\x02 \x01(\tB\x8a\x01\x92\x41\x86\x01\x32PToken for retrieving the next page of results. Empty if there are no more pages.J2\"eyJwYWdlIjogMiwgImxhc3RfaWQiOiAidXNyXzEyMzQ1In0=\"R\rnextPageToken\x12x\n\ntotal_size\x18\x03 \x01(\rBY\x92\x41V2NTotal number of users matching the request criteria, regardless of pagination.J\x04\x31\x30\x34\x32R\ttotalSize\x12\xb6\x01\n\x0fprev_page_token\x18\x04 \x01(\tB\x8d\x01\x92\x41\x89\x01\x32SToken for retrieving the previous page of results. Empty if this is the first page.J2\"eyJwYWdlIjogMCwgImZpcnN0X2lkIjogInVzcl85ODc2NSJ9\"R\rprevPageToken\"\xe3\x03\n\x12SearchUsersRequest\x12\xaa\x01\n\x05query\x18\x01 \x01(\tB\x93\x01\x92\x41\x83\x01\x32oSearch term to match against user email, IDs, or external IDs. Must be at least 3 characters. Case insensitive.J\x10john@example.com\xbaH\tr\x04\x10\x03\x18\x64\xc8\x01\x01R\x05query\x12x\n\tpage_size\x18\x02 \x01(\rB[\x92\x41Q2KMaximum number of users to return per page. Value must be between 1 and 30.J\x02\x33\x30\xbaH\x04*\x02\x18\x1eR\x08pageSize\x12\xa5\x01\n\npage_token\x18\x03 \x01(\tB\x85\x01\x92\x41\x81\x01\x32\x61Token from a previous response for pagination. Provide this to retrieve the next page of results.J\x1c\x65yJwYWdlIjoyLCJsaW1pdCI6MzB9R\tpageToken\"\xcb\x04\n\x13SearchUsersResponse\x12\xb3\x01\n\x0fnext_page_token\x18\x01 \x01(\tB\x8a\x01\x92\x41\x86\x01\x32PToken for retrieving the next page of results. Empty if there are no more pages.J2\"eyJwYWdlIjogMiwgImxhc3RfaWQiOiAidXNyXzEyMzQ1In0=\"R\rnextPageToken\x12x\n\ntotal_size\x18\x02 \x01(\rBY\x92\x41V2NTotal number of users matching the request criteria, regardless of pagination.J\x04\x31\x30\x34\x32R\ttotalSize\x12K\n\x05users\x18\x03 \x03(\x0b\x32\x17.scalekit.v1.users.UserB\x1c\x92\x41\x19\x32\x17List of matching users.R\x05users\x12\xb6\x01\n\x0fprev_page_token\x18\x04 \x01(\tB\x8d\x01\x92\x41\x89\x01\x32SToken for retrieving the previous page of results. Empty if this is the first page.J2\"eyJwYWdlIjogMCwgImZpcnN0X2lkIjogInVzcl85ODc2NSJ9\"R\rprevPageToken\"\xb1\x02\n\x11\x44\x65leteUserRequest\x12\x81\x01\n\x02id\x18\x01 \x01(\tBo\x92\x41]2CSystem-generated user ID. Must start with \'usr_\' (19-25 characters)J\x16\"usr_1234abcd5678efgh\"\xbaH\x0cr\n\x10\x13\x18\x19:\x04usr_H\x00R\x02id\x12\x89\x01\n\x0b\x65xternal_id\x18\x02 \x01(\tBf\x92\x41\x63\x32RExternal system identifier from connected directories. Must match existing recordsJ\r\"ext_7890xyz\"H\x00R\nexternalIdB\x0c\n\nidentities\"\x9a\x05\n\x17UpdateMembershipRequest\x12\xcb\x01\n\x0forganization_id\x18\x01 \x01(\tB\xa1\x01\x92\x41\x8e\x01\x32tUnique identifier of the organization containing the membership. Must start with \'org_\' and be 1-32 characters long.J\x16\"org_1234abcd5678efgh\"\xbaH\x0cr\n\x10\x01\x18 :\x04org_R\x0eorganizationId\x12\x8c\x01\n\x02id\x18\x02 \x01(\tBz\x92\x41h2NSystem-generated user ID. Must start with \'usr_\' and be 19-25 characters long.J\x16\"usr_1234abcd5678efgh\"\xbaH\x0cr\n\x10\x13\x18\x19:\x04usr_H\x00R\x02id\x12j\n\x0b\x65xternal_id\x18\x03 \x01(\tBG\x92\x41\x44\x32\x33Your application\'s unique identifier for this user.J\r\"ext_7890xyz\"H\x00R\nexternalId\x12\xa7\x01\n\nmembership\x18\x05 \x01(\x0b\x32#.scalekit.v1.users.UpdateMembershipBb\x92\x41Y2DMembership fields to update. Only specified fields will be modified.J\x11{\"role\": \"admin\"}\xbaH\x03\xc8\x01\x01R\nmembershipB\x0c\n\nidentities\"\xef\x03\n\x10UpdateMembership\x12q\n\x05roles\x18\x04 \x03(\x0b\x32\x19.scalekit.v1.commons.RoleB@\x92\x41=22Role to assign to the user within the organizationJ\x07\"admin\"R\x05roles\x12\x8c\x02\n\x08metadata\x18\x07 \x03(\x0b\x32\x31.scalekit.v1.users.UpdateMembership.MetadataEntryB\xbc\x01\x92\x41\x9f\x01\x32\x64\x43ustom key-value pairs for storing additional user context. Keys (3-25 chars), values (1-256 chars).J7{\"department\": \"engineering\", \"location\": \"nyc-office\"}\xbaH\x16\x9a\x01\x13\x10\x14\"\x06r\x04\x10\x03\x18\x19*\x07r\x05\x10\x01\x18\x80\x02R\x08metadata\x1a;\n\rMetadataEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01J\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03J\x04\x08\x03\x10\x04J\x04\x08\x05\x10\x06J\x04\x08\x06\x10\x07\"\xef\x03\n\x10\x43reateMembership\x12q\n\x05roles\x18\x04 \x03(\x0b\x32\x19.scalekit.v1.commons.RoleB@\x92\x41=22Role to assign to the user within the organizationJ\x07\"admin\"R\x05roles\x12\x8c\x02\n\x08metadata\x18\x07 \x03(\x0b\x32\x31.scalekit.v1.users.CreateMembership.MetadataEntryB\xbc\x01\x92\x41\x9f\x01\x32\x64\x43ustom key-value pairs for storing additional user context. Keys (3-25 chars), values (1-256 chars).J7{\"department\": \"engineering\", \"location\": \"nyc-office\"}\xbaH\x16\x9a\x01\x13\x10\x14\"\x06r\x04\x10\x03\x18\x19*\x07r\x05\x10\x01\x18\x80\x02R\x08metadata\x1a;\n\rMetadataEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01J\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03J\x04\x08\x03\x10\x04J\x04\x08\x05\x10\x06J\x04\x08\x06\x10\x07\"G\n\x18UpdateMembershipResponse\x12+\n\x04user\x18\x01 \x01(\x0b\x32\x17.scalekit.v1.users.UserR\x04user\"\xb7\x05\n\x1eSearchOrganizationUsersRequest\x12\xc5\x01\n\x0forganization_id\x18\x01 \x01(\tB\x9b\x01\x92\x41\x85\x01\x32kUnique identifier of the organization to search within. Must start with \'org_\' and be 1-32 characters long.J\x16\"org_1234abcd5678efgh\"\xbaH\x0fr\n\x10\x01\x18 :\x04org_\xc8\x01\x01R\x0eorganizationId\x12\xaa\x01\n\x05query\x18\x02 \x01(\tB\x93\x01\x92\x41\x83\x01\x32oSearch term to match against user email, IDs, or external IDs. Must be at least 3 characters. Case insensitive.J\x10john@example.com\xbaH\tr\x04\x10\x03\x18\x64\xc8\x01\x01R\x05query\x12x\n\tpage_size\x18\x03 \x01(\rB[\x92\x41Q2KMaximum number of users to return per page. Value must be between 1 and 30.J\x02\x33\x30\xbaH\x04*\x02\x18\x1eR\x08pageSize\x12\xa5\x01\n\npage_token\x18\x04 \x01(\tB\x85\x01\x92\x41\x81\x01\x32\x61Token from a previous response for pagination. Provide this to retrieve the next page of results.J\x1c\x65yJwYWdlIjoyLCJsaW1pdCI6MzB9R\tpageToken\"\xd7\x04\n\x1fSearchOrganizationUsersResponse\x12\xb3\x01\n\x0fnext_page_token\x18\x01 \x01(\tB\x8a\x01\x92\x41\x86\x01\x32PToken for retrieving the next page of results. Empty if there are no more pages.J2\"eyJwYWdlIjogMiwgImxhc3RfaWQiOiAidXNyXzEyMzQ1In0=\"R\rnextPageToken\x12x\n\ntotal_size\x18\x02 \x01(\rBY\x92\x41V2NTotal number of users matching the request criteria, regardless of pagination.J\x04\x31\x30\x34\x32R\ttotalSize\x12K\n\x05users\x18\x03 \x03(\x0b\x32\x17.scalekit.v1.users.UserB\x1c\x92\x41\x19\x32\x17List of matching users.R\x05users\x12\xb6\x01\n\x0fprev_page_token\x18\x04 \x01(\tB\x8d\x01\x92\x41\x89\x01\x32SToken for retrieving the previous page of results. Empty if this is the first page.J2\"eyJwYWdlIjogMCwgImZpcnN0X2lkIjogInVzcl85ODc2NSJ9\"R\rprevPageToken\"\x85\x08\n\nCreateUser\x12\x98\x01\n\x05\x65mail\x18\x05 \x01(\tB\x81\x01\x92\x41w2aPrimary email address for the user. Must be unique across the environment and valid per RFC 5322.J\x12\"user@example.com\"\xbaH\x04r\x02`\x01R\x05\x65mail\x12\xa2\x01\n\x0b\x65xternal_id\x18\x06 \x01(\tB|\x92\x41y2cYour application\'s unique identifier for this organization, used to link Scalekit with your system.J\x12\"ext_12345a67b89c\"H\x00R\nexternalId\x88\x01\x01\x12\x9f\x01\n\nmembership\x18\x07 \x01(\x0b\x32#.scalekit.v1.users.CreateMembershipBZ\x92\x41W2UList of organization memberships. Automatically populated based on group assignments.R\nmembership\x12\xa0\x01\n\x0cuser_profile\x18\x08 \x01(\x0b\x32$.scalekit.v1.users.CreateUserProfileBW\x92\x41T2RUser\'s personal information including name, address, and other profile attributes.R\x0buserProfile\x12\x86\x02\n\x08metadata\x18\t \x03(\x0b\x32+.scalekit.v1.users.CreateUser.MetadataEntryB\xbc\x01\x92\x41\x9f\x01\x32\x64\x43ustom key-value pairs for storing additional user context. Keys (3-25 chars), values (1-256 chars).J7{\"department\": \"engineering\", \"location\": \"nyc-office\"}\xbaH\x16\x9a\x01\x13\x10\x14\"\x06r\x04\x10\x03\x18\x19*\x07r\x05\x10\x01\x18\x80\x02R\x08metadata\x1a;\n\rMetadataEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x42\x0e\n\x0c_external_idJ\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03J\x04\x08\x03\x10\x04J\x04\x08\x04\x10\x05J\x04\x08\n\x10\x0b\"\x92\n\n\x11\x43reateUserProfile\x12^\n\nfirst_name\x18\x02 \x01(\tB?\x92\x41\x34\x32*User\'s given name. Maximum 200 characters.J\x06\"John\"\xbaH\x05r\x03\x18\xc8\x01R\tfirstName\x12\\\n\tlast_name\x18\x03 \x01(\tB?\x92\x41\x34\x32+User\'s family name. Maximum 200 characters.J\x05\"Doe\"\xbaH\x05r\x03\x18\xc8\x01R\x08lastName\x12v\n\x04name\x18\x04 \x01(\tBb\x92\x41_2IFull name in display format. Typically combines first_name and last_name.J\x12\"John Michael Doe\"R\x04name\x12y\n\x06locale\x18\x05 \x01(\tBa\x92\x41^2SUser\'s localization preference in BCP-47 format. Defaults to organization settings.J\x07\"en-US\"R\x06locale\x12\x8a\x01\n\x0cphone_number\x18\x07 \x01(\tBg\x92\x41\x64\x32RPhone number in E.164 international format. Required for SMS-based authentication.J\x0e\"+14155552671\"R\x0bphoneNumber\x12\x8b\x02\n\x08metadata\x18\x08 \x03(\x0b\x32\x32.scalekit.v1.users.CreateUserProfile.MetadataEntryB\xba\x01\x92\x41\x9d\x01\x32^System-managed key-value pairs for internal tracking. Keys (3-25 chars), values (1-256 chars).J;{\"account_status\": \"active\", \"signup_source\": \"mobile_app\"}\xbaH\x16\x9a\x01\x13\x10\x1e\"\x06r\x04\x10\x03\x18\x19*\x07r\x05\x10\x01\x18\x80\x02R\x08metadata\x12\xa2\x02\n\x11\x63ustom_attributes\x18\t \x03(\x0b\x32:.scalekit.v1.users.CreateUserProfile.CustomAttributesEntryB\xb8\x01\x92\x41\x9b\x01\x32ZCustom attributes for extended user profile data. Keys (3-25 chars), values (1-256 chars).J={\"department\": \"engineering\", \"security_clearance\": \"level2\"}\xbaH\x16\x9a\x01\x13\x10\x64\"\x06r\x04\x10\x03\x18\x19*\x07r\x05\x10\x01\x18\x80\x02R\x10\x63ustomAttributes\x1a;\n\rMetadataEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x1a\x43\n\x15\x43ustomAttributesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01J\x04\x08\x01\x10\x02J\x04\x08\x06\x10\x07\"\xed\n\n\x11UpdateUserProfile\x12\x63\n\nfirst_name\x18\x02 \x01(\tB?\x92\x41\x34\x32*User\'s given name. Maximum 200 characters.J\x06\"John\"\xbaH\x05r\x03\x18\xc8\x01H\x00R\tfirstName\x88\x01\x01\x12\x61\n\tlast_name\x18\x03 \x01(\tB?\x92\x41\x34\x32+User\'s family name. Maximum 200 characters.J\x05\"Doe\"\xbaH\x05r\x03\x18\xc8\x01H\x01R\x08lastName\x88\x01\x01\x12{\n\x04name\x18\x04 \x01(\tBb\x92\x41_2IFull name in display format. Typically combines first_name and last_name.J\x12\"John Michael Doe\"H\x02R\x04name\x88\x01\x01\x12~\n\x06locale\x18\x05 \x01(\tBa\x92\x41^2SUser\'s localization preference in BCP-47 format. Defaults to organization settings.J\x07\"en-US\"H\x03R\x06locale\x88\x01\x01\x12\x8f\x01\n\x0cphone_number\x18\x07 \x01(\tBg\x92\x41\x64\x32RPhone number in E.164 international format. Required for SMS-based authentication.J\x0e\"+14155552671\"H\x04R\x0bphoneNumber\x88\x01\x01\x12\x8b\x02\n\x08metadata\x18\x08 \x03(\x0b\x32\x32.scalekit.v1.users.UpdateUserProfile.MetadataEntryB\xba\x01\x92\x41\x9d\x01\x32^System-managed key-value pairs for internal tracking. Keys (3-25 chars), values (1-256 chars).J;{\"account_status\": \"active\", \"signup_source\": \"mobile_app\"}\xbaH\x16\x9a\x01\x13\x10\x1e\"\x06r\x04\x10\x03\x18\x19*\x07r\x05\x10\x01\x18\x80\x02R\x08metadata\x12\xa2\x02\n\x11\x63ustom_attributes\x18\t \x03(\x0b\x32:.scalekit.v1.users.UpdateUserProfile.CustomAttributesEntryB\xb8\x01\x92\x41\x9b\x01\x32ZCustom attributes for extended user profile data. Keys (3-25 chars), values (1-256 chars).J={\"department\": \"engineering\", \"security_clearance\": \"level2\"}\xbaH\x16\x9a\x01\x13\x10\x64\"\x06r\x04\x10\x03\x18\x19*\x07r\x05\x10\x01\x18\x80\x02R\x10\x63ustomAttributes\x1a;\n\rMetadataEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x1a\x43\n\x15\x43ustomAttributesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x42\r\n\x0b_first_nameB\x0c\n\n_last_nameB\x07\n\x05_nameB\t\n\x07_localeB\x0f\n\r_phone_numberJ\x04\x08\x01\x10\x02J\x04\x08\x06\x10\x07\x32\x94v\n\x0bUserService\x12\x81\x07\n\x07GetUser\x12!.scalekit.v1.users.GetUserRequest\x1a\".scalekit.v1.users.GetUserResponse\"\xae\x06\x92\x41\x8a\x06\n\x05Users\x12\x08Get user\x1a\x8e\x01Retrieves all details for a user by system-generated user ID or external ID. The response includes organization memberships and user metadata.J\x9c\x01\n\x03\x32\x30\x30\x12\x94\x01\njUser details retrieved successfully. Returns full user object with system-generated fields and timestamps.\x12&\n$\x1a\".scalekit.v1.users.GetUserResponsej\xc6\x03\n\rx-codeSamples\x12\xb4\x03\x32\xb1\x03\nn*l\n\x16\n\x05label\x12\r\x1a\x0bNode.js SDK\n\x14\n\x04lang\x12\x0c\x1a\njavascript\n<\n\x06source\x12\x32\x1a\x30\x63onst { user } = await sc.user.getUser(user_id);\no*m\n\x15\n\x05label\x12\x0c\x1a\nPython SDK\n\x10\n\x04lang\x12\x08\x1a\x06python\nB\n\x06source\x12\x38\x1a\x36response = users.get_user(organization_id, \n user_id)\n\\*Z\n\x11\n\x05label\x12\x08\x1a\x06Go SDK\n\x0c\n\x04lang\x12\x04\x1a\x02go\n7\n\x06source\x12-\x1a+resp, err := sc.User().GetUser(ctx, userID)\np*n\n\x13\n\x05label\x12\n\x1a\x08Java SDK\n\x0e\n\x04lang\x12\x06\x1a\x04java\nG\n\x06source\x12=\x1a;GetUserResponse resp = scalekit.users().getUser(\n userId);\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02\x14\x12\x12/api/v1/users/{id}\x12\xba\t\n\tListUsers\x12#.scalekit.v1.users.ListUsersRequest\x1a$.scalekit.v1.users.ListUsersResponse\"\xe1\x08\x92\x41\xc2\x08\n\x05Users\x12\x1dList all users in environment\x1a\xbc\x02Retrieves a paginated list of all users across your entire environment. Use this endpoint to view all users regardless of their organization memberships. This is useful for administrative purposes, user audits, or when you need to see all users in your Scalekit environment. Supports pagination for large user bases.JA\n\x03\x32\x30\x30\x12:\n\x0eList of users.\x12(\n&\x1a$.scalekit.v1.users.ListUsersResponsej\x97\x05\n\rx-codeSamples\x12\x85\x05\x32\x82\x05\n}*{\n\x16\n\x05label\x12\r\x1a\x0bNode.js SDK\n\x14\n\x04lang\x12\x0c\x1a\njavascript\nK\n\x06source\x12\x41\x1a?const response = await sc.user.listUsers(\n { pageSize: 100 });\n\xac\x01*\xa9\x01\n\x15\n\x05label\x12\x0c\x1a\nPython SDK\n\x10\n\x04lang\x12\x08\x1a\x06python\n~\n\x06source\x12t\x1ar# pass empty org to fetch all users in environment\nresp,_ = sc.users.list_users(organization_id=\"\", page_size=100)\n\x91\x01*\x8e\x01\n\x11\n\x05label\x12\x08\x1a\x06Go SDK\n\x0c\n\x04lang\x12\x04\x1a\x02go\nk\n\x06source\x12\x61\x1a_all, err := sc.User().ListOrganizationUsers(ctx, \"\", &scalekit.ListUsersOptions{PageSize: 100})\n\xbd\x01*\xba\x01\n\x13\n\x05label\x12\n\x1a\x08Java SDK\n\x0e\n\x04lang\x12\x06\x1a\x04java\n\x92\x01\n\x06source\x12\x87\x01\x1a\x84\x01ListUsersRequest lur = ListUsersRequest.\n newBuilder().setPageSize(100).build();\nListUsersResponse allUsers = users.listUsers(lur);\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02\x0f\x12\r/api/v1/users\x12\xcb\x03\n\x0bSearchUsers\x12%.scalekit.v1.users.SearchUsersRequest\x1a&.scalekit.v1.users.SearchUsersResponse\"\xec\x02\x92\x41\xb7\x02\n\x05Users\x12\x0cSearch users\x1a\x85\x01Searches for users in the environment by email, user ID, or external ID. Returns all users that match the query. Supports pagination.J\x97\x01\n\x03\x32\x30\x30\x12\x8f\x01\naReturns a list of matching users and a page token for pagination if there are additional results.\x12*\n(\x1a&.scalekit.v1.users.SearchUsersResponse\x82\xb5\x18\x02\x18T\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x16\x12\x14/api/v1/users:search\x12\xe0\x04\n\x17SearchOrganizationUsers\x12\x31.scalekit.v1.users.SearchOrganizationUsersRequest\x1a\x32.scalekit.v1.users.SearchOrganizationUsersResponse\"\xdd\x03\x92\x41\x88\x03\n\x05Users\x12\x19Search organization users\x1a\xa5\x01Searches for users within a specific organization by email, user ID, or external ID. Returns all users in the organization that match the query. Supports pagination.J\xbb\x01\n\x03\x32\x30\x30\x12\xb3\x01\nyReturns a list of matching users within the organization and a page token for pagination if there are additional results.\x12\x36\n4\x1a\x32.scalekit.v1.users.SearchOrganizationUsersResponse\x82\xb5\x18\x02\x18T\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x36\x12\x34/api/v1/organizations/{organization_id}/users:search\x12\xda\x11\n\nUpdateUser\x12$.scalekit.v1.users.UpdateUserRequest\x1a%.scalekit.v1.users.UpdateUserResponse\"\xfe\x10\x92\x41\xd4\x10\n\x05Users\x12\x17Update user information\x1a\xe3\x02Modifies user account information including profile details, metadata, and external ID. Use this endpoint to update a user\'s personal information, contact details, or custom metadata. You can update the user\'s profile, phone number, and metadata fields. Note that system-generated fields like user ID, environment ID, and creation time cannot be modified.J\x89\x01\n\x03\x32\x30\x30\x12\x81\x01\nTUser updated successfully. Returns the modified user object with updated timestamps.\x12)\n\'\x1a%.scalekit.v1.users.UpdateUserResponsej\xbf\x0c\n\rx-codeSamples\x12\xad\x0c\x32\xaa\x0c\n\xd1\x01*\xce\x01\n\x16\n\x05label\x12\r\x1a\x0bNode.js SDK\n\x14\n\x04lang\x12\x0c\x1a\njavascript\n\x9d\x01\n\x06source\x12\x92\x01\x1a\x8f\x01\x61wait sc.user.updateUser(\"usr_123\", {\n\tuserProfile: {\n\t\tfirstName: \"John\",\n\t\tlastName: \"Smith\",\n\t},\n\tmetadata: {\n\t\tdepartment: \"sales\",\n\t},\n});\n\xe0\x04*\xdd\x04\n\x15\n\x05label\x12\x0c\x1a\nPython SDK\n\x10\n\x04lang\x12\x08\x1a\x06python\n\xb1\x04\n\x06source\x12\xa6\x04\x1a\xa3\x04import os\nfrom scalekit import ScalekitClient\nfrom scalekit.v1.users.users_pb2 import UpdateUser\nfrom scalekit.v1.commons.\n commons_pb2 import UserProfile\nsc = ScalekitClient(\n env_url=os.getenv(\"SCALEKIT_ENV_URL\"),\n client_id=os.getenv(\"SCALEKIT_CLIENT_ID\"),\n client_secret=os.getenv(\"SCALEKIT_CLIENT_SECRET\"),\n)\nupdate_user = UpdateUser(\n user_profile=UserProfile(\n first_name=\"John\",\n last_name=\"Smith\"\n ),\n metadata={\"department\": \"sales\"}\n)\nsc.users.update_user(organization_id=\"org_123\", \n user=update_user)\n\xae\x02*\xab\x02\n\x11\n\x05label\x12\x08\x1a\x06Go SDK\n\x0c\n\x04lang\x12\x04\x1a\x02go\n\x87\x02\n\x06source\x12\xfc\x01\x1a\xf9\x01upd := &usersv1.UpdateUser{\n UserProfile: &usersv1.UpdateUserProfile{\n FirstName: \"John\",\n LastName: \"Smith\",\n },\n Metadata: map[string]string{\n \"department\": \"sales\",\n },\n}\nsc.User().UpdateUser(ctx, \"usr_123\", upd)\n\xbf\x03*\xbc\x03\n\x13\n\x05label\x12\n\x1a\x08Java SDK\n\x0e\n\x04lang\x12\x06\x1a\x04java\n\x94\x03\n\x06source\x12\x89\x03\x1a\x86\x03UpdateUser upd = UpdateUser.newBuilder()\n .setUserProfile(\n UpdateUserProfile.newBuilder()\n .setFirstName(\"John\")\n .setLastName(\"Smith\")\n .build())\n .putMetadata(\"department\", \"sales\")\n .build();\nUpdateUserRequest updReq = UpdateUserRequest.\n newBuilder().setUser(upd).build();\nusers.updateUser(\"usr_123\", updReq);\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02\x1a\x32\x12/api/v1/users/{id}:\x04user\x12\xd0\x07\n\nDeleteUser\x12$.scalekit.v1.users.DeleteUserRequest\x1a\x16.google.protobuf.Empty\"\x83\x07\x92\x41\xdf\x06\n\x05Users\x12\x17\x44\x65lete user permanently\x1a\xb0\x02Permanently removes a user from your environment and deletes all associated data. Use this endpoint when you need to completely remove a user account. This action deletes the user\'s profile, memberships, and all related data across all organizations. This operation cannot be undone, so use with caution.J7\n\x03\x32\x30\x30\x12\x30\n.User successfully deleted. No content returnedj\xd0\x03\n\rx-codeSamples\x12\xbe\x03\x32\xbb\x03\nb*`\n\x16\n\x05label\x12\r\x1a\x0bNode.js SDK\n\x14\n\x04lang\x12\x0c\x1a\njavascript\n0\n\x06source\x12&\x1a$await sc.user.deleteUser(\"usr_123\");\n~*|\n\x15\n\x05label\x12\x0c\x1a\nPython SDK\n\x10\n\x04lang\x12\x08\x1a\x06python\nQ\n\x06source\x12G\x1a\x45sc.users.delete_user(organization_id=\"org_123\", \n user_id=\"usr_123\")\n\x81\x01*\x7f\n\x11\n\x05label\x12\x08\x1a\x06Go SDK\n\x0c\n\x04lang\x12\x04\x1a\x02go\n\\\n\x06source\x12R\x1aPif err := sc.User().DeleteUser(ctx, \n \"usr_123\"); err != nil {\n panic(err)\n}\nQ*O\n\x13\n\x05label\x12\n\x1a\x08Java SDK\n\x0e\n\x04lang\x12\x06\x1a\x04java\n(\n\x06source\x12\x1e\x1a\x1cusers.deleteUser(\"usr_123\");\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02\x14*\x12/api/v1/users/{id}\x12\x9e\x18\n\x10\x43reateMembership\x12*.scalekit.v1.users.CreateMembershipRequest\x1a+.scalekit.v1.users.CreateMembershipResponse\"\xb0\x17\x92\x41\xd4\x16\n\x05Users\x12!Add existing user to organization\x1a\x95\x02\x41\x64\x64s an existing user to an organization and assigns them specific roles and permissions. Use this endpoint when you want to grant an existing user access to a particular organization. You can specify roles, metadata, and other membership details during the invitation process.J\x96\x01\n\x03\x32\x30\x31\x12\x8e\x01\n[User successfully added to the organization. Returns details of the updated user membership\x12/\n-\x1a+.scalekit.v1.users.CreateMembershipResponsej\xf6\x12\n\rx-codeSamples\x12\xe4\x12\x32\xe1\x12\n\x92\x03*\x8f\x03\n\x16\n\x05label\x12\r\x1a\x0bNode.js SDK\n\x14\n\x04lang\x12\x0c\x1a\njavascript\n\xde\x02\n\x06source\x12\xd3\x02\x1a\xd0\x02import { ScalekitClient } from \"@scalekit-sdk/node\";\nconst sc = new ScalekitClient(\n\tprocess.env.SCALEKIT_ENV_URL,\n\tprocess.env.SCALEKIT_CLIENT_ID,\n\tprocess.env.SCALEKIT_CLIENT_SECRET\n);\nawait sc.user.createMembership(\"org_123\", \"usr_123\", {\n\troles: [\"admin\"],\n\tmetadata: {\n\t\tdepartment: \"engineering\",\n\t\tlocation: \"nyc-office\",\n\t},\n});\n\xe0\x03*\xdd\x03\n\x15\n\x05label\x12\x0c\x1a\nPython SDK\n\x10\n\x04lang\x12\x08\x1a\x06python\n\xb1\x03\n\x06source\x12\xa6\x03\x1a\xa3\x03import os\nfrom scalekit import ScalekitClient\nsc = ScalekitClient(\n env_url=os.getenv(\"SCALEKIT_ENV_URL\"),\n client_id=os.getenv(\"SCALEKIT_CLIENT_ID\"),\n client_secret=os.getenv(\"SCALEKIT_CLIENT_SECRET\"),\n)\n# The Python SDK currently exposes a helper that \n #simply links an existing\n# user to an organization.\nresp, _ = sc.users.add_user_to_organization(\n organization_id=\"org_123\",\n user_id=\"usr_123\",\n)\n\x85\x05*\x82\x05\n\x11\n\x05label\x12\x08\x1a\x06Go SDK\n\x0c\n\x04lang\x12\x04\x1a\x02go\n\xde\x04\n\x06source\x12\xd3\x04\x1a\xd0\x04\x66unc main() {\n sc := scalekit.NewScalekitClient(\n os.Getenv(\"SCALEKIT_ENV_URL\"),\n os.Getenv(\"SCALEKIT_CLIENT_ID\"),\n os.Getenv(\"SCALEKIT_CLIENT_SECRET\"),\n )\n membership := &usersv1.CreateMembership{\n Roles: []*usersv1.Role{{Name: \"admin\"}},\n Metadata: map[string]string{\n \"department\": \"engineering\",\n \"location\": \"nyc-office\",\n },\n }\n resp, \n err := sc.User().CreateMembership(\n context.Background(), \"org_123\", \n \"usr_123\", membership, false)\n if err != nil {\n panic(err)\n }\n}\n\xde\x06*\xdb\x06\n\x13\n\x05label\x12\n\x1a\x08Java SDK\n\x0e\n\x04lang\x12\x06\x1a\x04java\n\xb3\x06\n\x06source\x12\xa8\x06\x1a\xa5\x06import com.scalekit.ScalekitClient;\nimport com.scalekit.api.UserClient;\nimport com.scalekit.grpc.scalekit.v1.users.*;\nScalekitClient sk = new ScalekitClient(\n System.getenv(\"SCALEKIT_ENV_URL\"),\n System.getenv(\"SCALEKIT_CLIENT_ID\"),\n System.getenv(\"SCALEKIT_CLIENT_SECRET\")\n);\nUserClient users = sk.users();\nCreateMembershipRequest membershipReq = CreateMemb\n ershipRequest.newBuilder()\n .setMembership(\n CreateMembership.newBuilder()\n .addRoles(Role.newBuilder(\n ).setName(\"admin\").build())\n .putMetadata(\"department\", \"engineering\")\n .putMetadata(\"location\", \"nyc-office\")\n .build())\n .build();\nCreateMembershipResponse res = users.\n createMembership(\"org_123\", \"usr_123\", \n membershipReq);\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02L\">/api/v1/memberships/organizations/{organization_id}/users/{id}:\nmembership\x12\xf0\x03\n\x10\x44\x65leteMembership\x12*.scalekit.v1.users.DeleteMembershipRequest\x1a\x16.google.protobuf.Empty\"\x97\x03\x92\x41\xb8\x02\n\x05Users\x12\x0b\x44\x65lete user\x1a\xdc\x01Removes a user from an organization by user ID or external ID. If the user has no memberships left and cascade is true, the user is also deleted. This action is irreversible and may also remove related group memberships.JC\n\x03\x32\x30\x30\x12<\n:User successfully marked for deletion. No content returned\x82\xb5\x18\x02\x18T\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02@*>/api/v1/memberships/organizations/{organization_id}/users/{id}\x12\xfb\x03\n\x10UpdateMembership\x12*.scalekit.v1.users.UpdateMembershipRequest\x1a+.scalekit.v1.users.UpdateMembershipResponse\"\x8d\x03\x92\x41\xa2\x02\n\x05Users\x12\x16Update user membership\x1a\x83\x01Updates a user\'s membership details within an organization by user ID or external ID. You can update roles and membership metadata.J{\n\x03\x32\x30\x30\x12t\nAMembership updated successfully. Returns the updated user object.\x12/\n-\x1a+.scalekit.v1.users.UpdateMembershipResponse\x82\xb5\x18\x02\x18T\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02L2>/api/v1/memberships/organizations/{organization_id}/users/{id}:\nmembership\x12\x9d\x18\n\x17\x43reateUserAndMembership\x12\x31.scalekit.v1.users.CreateUserAndMembershipRequest\x1a\x32.scalekit.v1.users.CreateUserAndMembershipResponse\"\x9a\x17\x92\x41\xd5\x16\n\x05Users\x12\x1f\x43reate new user in organization\x1a\x83\x03\x43reates a new user account and immediately adds them to the specified organization. Use this endpoint when you want to create a user and grant them access to an organization in a single operation. You can provide user profile information, assign roles, and configure membership metadata. The user receives an activation email unless this feature is disabled in the organization settings.J\xb3\x01\n\x03\x32\x30\x31\x12\xab\x01\nqUser created successfully. Returns the created user object, including system-generated identifiers and timestamps\x12\x36\n4\x1a\x32.scalekit.v1.users.CreateUserAndMembershipResponsej\xee\x11\n\rx-codeSamples\x12\xdc\x11\x32\xd9\x11\n\xd0\x02*\xcd\x02\n\x16\n\x05label\x12\r\x1a\x0bNode.js SDK\n\x14\n\x04lang\x12\x0c\x1a\njavascript\n\x9c\x02\n\x06source\x12\x91\x02\x1a\x8e\x02\x63onst {\n user } = await sc.user.\n createUserAndMembership(\"org_123\", {\n\temail: \"user@example.com\",\n\texternalId: \"ext_12345a67b89c\",\n\tmetadata: { department: \"engineering\", \n\t location: \"nyc-office\" },\n\tuserProfile: {\n\t\tfirstName: \"John\",\n\t\tlastName: \"Doe\",\n\t},\n});\n\xaa\x05*\xa7\x05\n\x15\n\x05label\x12\x0c\x1a\nPython SDK\n\x10\n\x04lang\x12\x08\x1a\x06python\n\xfb\x04\n\x06source\x12\xf0\x04\x1a\xed\x04import os\nfrom scalekit import ScalekitClient\nfrom scalekit.v1.users.users_pb2 import User\nfrom scalekit.v1.commons.\n commons_pb2 import UserProfile\nsc = ScalekitClient(\n env_url=os.getenv(\"SCALEKIT_ENV_URL\"),\n client_id=os.getenv(\"SCALEKIT_CLIENT_ID\"),\n client_secret=os.getenv(\"SCALEKIT_CLIENT_SECRET\"),\n)\nuser_msg = User(\n email=\"user@example.com\",\n external_id=\"ext_12345a67b89c\",\n metadata={\"department\": \"engineering\", \"location\": \"nyc-office\"},\n user_profile=UserProfile(\n first_name=\"John\",\n last_name=\"Doe\"\n )\n)\ncreate_resp, \n _ = sc.users.create_user(\"org_123\", user_msg)\n\xf1\x03*\xee\x03\n\x11\n\x05label\x12\x08\x1a\x06Go SDK\n\x0c\n\x04lang\x12\x04\x1a\x02go\n\xca\x03\n\x06source\x12\xbf\x03\x1a\xbc\x03newUser := &usersv1.CreateUser{\n Email: \"user@example.com\",\n ExternalId: \"ext_12345a67b89c\",\n Metadata: map[string]string{\n \"department\": \"engineering\",\n \"location\": \"nyc-office\",\n },\n UserProfile: &usersv1.CreateUserProfile{\n FirstName: \"John\",\n LastName: \"Doe\",\n },\n}\ncuResp, \n err := sc.User().CreateUserAndMembership(ctx, \"org_123\", newUser, false)\nif err != nil { /* handle error */ }\n\xe2\x05*\xdf\x05\n\x13\n\x05label\x12\n\x1a\x08Java SDK\n\x0e\n\x04lang\x12\x06\x1a\x04java\n\xb7\x05\n\x06source\x12\xac\x05\x1a\xa9\x05\x43reateUser createUser = CreateUser.newBuilder()\n .setEmail(\"user@example.com\")\n .setExternalId(\"ext_12345a67b89c\")\n .putMetadata(\"department\", \"engineering\")\n .putMetadata(\"location\", \"nyc-office\")\n .setUserProfile(\n CreateUserProfile.newBuilder()\n .setFirstName(\"John\")\n .setLastName(\"Doe\")\n .build())\n .build();\nCreateUserAndMembershipRequest cuReq = CreateUserA\n ndMembershipRequest.newBuilder()\n .setUser(createUser)\n .build();\nCreateUserAndMembershipResponse cuResp = users.\n createUserAndMembership(\"org_123\", cuReq);\nSystem.out.println(cuResp.getUser().getId());\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02\x35\"-/api/v1/organizations/{organization_id}/users:\x04user\x12\xa4\x0b\n\x15ListOrganizationUsers\x12/.scalekit.v1.users.ListOrganizationUsersRequest\x1a\x30.scalekit.v1.users.ListOrganizationUsersResponse\"\xa7\n\x92\x41\xe8\t\n\x05Users\x12\x17List organization users\x1a\x87\x02Retrieves a paginated list of all users who are members of the specified organization. Use this endpoint to view all users with access to a particular organization, including their roles, metadata, and membership details. Supports pagination for large user lists.J{\n\x03\x32\x30\x30\x12t\n\n\x0fGetUserResponse\x12+\n\x04user\x18\x01 \x01(\x0b\x32\x17.scalekit.v1.users.UserR\x04user\"\xf4\x04\n\x1cListOrganizationUsersRequest\x12\xc9\x01\n\x0forganization_id\x18\x01 \x01(\tB\x9f\x01\x92\x41\x8c\x01\x32rUnique identifier of the organization for which to list users. Must start with \'org_\' and be 1-32 characters long.J\x16\"org_1234abcd5678efgh\"\xbaH\x0cr\n\x10\x01\x18 :\x04org_R\x0eorganizationId\x12\xa9\x01\n\tpage_size\x18\x02 \x01(\rB\x8b\x01\x92\x41\x7f\x32yMaximum number of users to return in a single response. Valid range: 1-100. Server may return fewer users than specified.J\x02\x35\x30\xbaH\x06*\x04\x18\x64(\x00R\x08pageSize\x12\xdb\x01\n\npage_token\x18\x03 \x01(\tB\xbb\x01\x92\x41\xb7\x01\x32\x80\x01Pagination token from a previous ListUserResponse. Used to retrieve the next page of results. Leave empty for the first request.J2\"eyJwYWdlIjogMiwgImxhc3RfaWQiOiAidXNyXzEyMzQ1In0=\"R\tpageToken\"\xa4\x05\n\x1dListOrganizationUsersResponse\x12\xba\x01\n\x0fnext_page_token\x18\x01 \x01(\tB\x91\x01\x92\x41\x8d\x01\x32WOpaque token for retrieving the next page of results. Empty if there are no more pages.J2\"eyJwYWdlIjogMiwgImxhc3RfaWQiOiAidXNyXzEyMzQ1In0=\"R\rnextPageToken\x12x\n\ntotal_size\x18\x02 \x01(\rBY\x92\x41V2NTotal number of users matching the request criteria, regardless of pagination.J\x04\x31\x30\x34\x32R\ttotalSize\x12\x92\x01\n\x05users\x18\x03 \x03(\x0b\x32\x17.scalekit.v1.users.UserBc\x92\x41`2^List of user objects for the current page. May contain fewer entries than requested page_size.R\x05users\x12\xb6\x01\n\x0fprev_page_token\x18\x04 \x01(\tB\x8d\x01\x92\x41\x89\x01\x32SOpaque token for retrieving the previous page of results. Empty for the first page.J2\"eyJwYWdlIjogMCwgImZpcnN0X2lkIjogInVzcl85ODc2NSJ9\"R\rprevPageToken\"\xfd\x04\n\x17\x44\x65leteMembershipRequest\x12\xa7\x01\n\x0forganization_id\x18\x01 \x01(\tB~\x92\x41l2RUnique organization identifier. Must start with \'org_\' and be 1-32 characters longJ\x16\"org_1234abcd5678efgh\"\xbaH\x0cr\n\x10\x01\x18 :\x04org_R\x0eorganizationId\x12\x81\x01\n\x02id\x18\x02 \x01(\tBo\x92\x41]2CSystem-generated user ID. Must start with \'usr_\' (19-25 characters)J\x16\"usr_1234abcd5678efgh\"\xbaH\x0cr\n\x10\x13\x18\x19:\x04usr_H\x00R\x02id\x12\x89\x01\n\x0b\x65xternal_id\x18\x03 \x01(\tBf\x92\x41\x63\x32RExternal system identifier from connected directories. Must match existing recordsJ\r\"ext_7890xyz\"H\x00R\nexternalId\x12\x8d\x01\n\x07\x63\x61scade\x18\x05 \x01(\x08\x42n\x92\x41\\2SIf true, if user has no memberships left the user is also deleted. defaults to trueJ\x05\x66\x61lse\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEWH\x01R\x07\x63\x61scade\x88\x01\x01\x42\x0c\n\nidentitiesB\n\n\x08_cascade\"\xaa\x06\n\x17\x43reateMembershipRequest\x12\xb7\x01\n\x0forganization_id\x18\x01 \x01(\tB\x8d\x01\x92\x41{2aUnique identifier of the target organization. Must start with \'org_\' and be 1-32 characters long.J\x16\"org_1234abcd5678efgh\"\xbaH\x0cr\n\x10\x01\x18 :\x04org_R\x0eorganizationId\x12\x8f\x01\n\nmembership\x18\x02 \x01(\x0b\x32#.scalekit.v1.users.CreateMembershipBJ\x92\x41\x41\x32?Membership details to create. Required fields must be provided.\xbaH\x03\xc8\x01\x01R\nmembership\x12\x81\x01\n\x02id\x18\x03 \x01(\tBo\x92\x41]2CSystem-generated user ID. Must start with \'usr_\' (19-25 characters)J\x16\"usr_1234abcd5678efgh\"\xbaH\x0cr\n\x10\x13\x18\x19:\x04usr_H\x00R\x02id\x12\x8e\x01\n\x0b\x65xternal_id\x18\x04 \x01(\tBk\x92\x41h2WExternal system identifier from connected directories. Must be unique across the systemJ\r\"ext_7890xyz\"H\x00R\nexternalId\x12\x85\x01\n\x15send_invitation_email\x18\x05 \x01(\x08\x42L\x92\x41I2AIf true, sends an activation email to the user. Defaults to true.J\x04trueH\x01R\x13sendInvitationEmail\x88\x01\x01\x42\x0c\n\nidentitiesB\x18\n\x16_send_invitation_email\"G\n\x18\x43reateMembershipResponse\x12+\n\x04user\x18\x01 \x01(\x0b\x32\x17.scalekit.v1.users.UserR\x04user\"\x9a\x02\n\x10ListUsersRequest\x12t\n\tpage_size\x18\x01 \x01(\rBW\x92\x41T2NMaximum number of organizations to return per page. Must be between 10 and 100J\x02\x33\x30R\x08pageSize\x12\x8f\x01\n\npage_token\x18\x02 \x01(\tBp\x92\x41m2[Pagination token from the previous response. Use to retrieve the next page of organizationsJ\x0e\"\"R\tpageToken\"\xc0\x04\n\x11ListUsersResponse\x12\x42\n\x05users\x18\x01 \x03(\x0b\x32\x17.scalekit.v1.users.UserB\x13\x92\x41\x10\x32\x0eList of users.R\x05users\x12\xb3\x01\n\x0fnext_page_token\x18\x02 \x01(\tB\x8a\x01\x92\x41\x86\x01\x32PToken for retrieving the next page of results. Empty if there are no more pages.J2\"eyJwYWdlIjogMiwgImxhc3RfaWQiOiAidXNyXzEyMzQ1In0=\"R\rnextPageToken\x12x\n\ntotal_size\x18\x03 \x01(\rBY\x92\x41V2NTotal number of users matching the request criteria, regardless of pagination.J\x04\x31\x30\x34\x32R\ttotalSize\x12\xb6\x01\n\x0fprev_page_token\x18\x04 \x01(\tB\x8d\x01\x92\x41\x89\x01\x32SToken for retrieving the previous page of results. Empty if this is the first page.J2\"eyJwYWdlIjogMCwgImZpcnN0X2lkIjogInVzcl85ODc2NSJ9\"R\rprevPageToken\"\xe3\x03\n\x12SearchUsersRequest\x12\xaa\x01\n\x05query\x18\x01 \x01(\tB\x93\x01\x92\x41\x83\x01\x32oSearch term to match against user email, IDs, or external IDs. Must be at least 3 characters. Case insensitive.J\x10john@example.com\xbaH\tr\x04\x10\x03\x18\x64\xc8\x01\x01R\x05query\x12x\n\tpage_size\x18\x02 \x01(\rB[\x92\x41Q2KMaximum number of users to return per page. Value must be between 1 and 30.J\x02\x33\x30\xbaH\x04*\x02\x18\x1eR\x08pageSize\x12\xa5\x01\n\npage_token\x18\x03 \x01(\tB\x85\x01\x92\x41\x81\x01\x32\x61Token from a previous response for pagination. Provide this to retrieve the next page of results.J\x1c\x65yJwYWdlIjoyLCJsaW1pdCI6MzB9R\tpageToken\"\xcb\x04\n\x13SearchUsersResponse\x12\xb3\x01\n\x0fnext_page_token\x18\x01 \x01(\tB\x8a\x01\x92\x41\x86\x01\x32PToken for retrieving the next page of results. Empty if there are no more pages.J2\"eyJwYWdlIjogMiwgImxhc3RfaWQiOiAidXNyXzEyMzQ1In0=\"R\rnextPageToken\x12x\n\ntotal_size\x18\x02 \x01(\rBY\x92\x41V2NTotal number of users matching the request criteria, regardless of pagination.J\x04\x31\x30\x34\x32R\ttotalSize\x12K\n\x05users\x18\x03 \x03(\x0b\x32\x17.scalekit.v1.users.UserB\x1c\x92\x41\x19\x32\x17List of matching users.R\x05users\x12\xb6\x01\n\x0fprev_page_token\x18\x04 \x01(\tB\x8d\x01\x92\x41\x89\x01\x32SToken for retrieving the previous page of results. Empty if this is the first page.J2\"eyJwYWdlIjogMCwgImZpcnN0X2lkIjogInVzcl85ODc2NSJ9\"R\rprevPageToken\"\xb1\x02\n\x11\x44\x65leteUserRequest\x12\x81\x01\n\x02id\x18\x01 \x01(\tBo\x92\x41]2CSystem-generated user ID. Must start with \'usr_\' (19-25 characters)J\x16\"usr_1234abcd5678efgh\"\xbaH\x0cr\n\x10\x13\x18\x19:\x04usr_H\x00R\x02id\x12\x89\x01\n\x0b\x65xternal_id\x18\x02 \x01(\tBf\x92\x41\x63\x32RExternal system identifier from connected directories. Must match existing recordsJ\r\"ext_7890xyz\"H\x00R\nexternalIdB\x0c\n\nidentities\"\x9a\x05\n\x17UpdateMembershipRequest\x12\xcb\x01\n\x0forganization_id\x18\x01 \x01(\tB\xa1\x01\x92\x41\x8e\x01\x32tUnique identifier of the organization containing the membership. Must start with \'org_\' and be 1-32 characters long.J\x16\"org_1234abcd5678efgh\"\xbaH\x0cr\n\x10\x01\x18 :\x04org_R\x0eorganizationId\x12\x8c\x01\n\x02id\x18\x02 \x01(\tBz\x92\x41h2NSystem-generated user ID. Must start with \'usr_\' and be 19-25 characters long.J\x16\"usr_1234abcd5678efgh\"\xbaH\x0cr\n\x10\x13\x18\x19:\x04usr_H\x00R\x02id\x12j\n\x0b\x65xternal_id\x18\x03 \x01(\tBG\x92\x41\x44\x32\x33Your application\'s unique identifier for this user.J\r\"ext_7890xyz\"H\x00R\nexternalId\x12\xa7\x01\n\nmembership\x18\x05 \x01(\x0b\x32#.scalekit.v1.users.UpdateMembershipBb\x92\x41Y2DMembership fields to update. Only specified fields will be modified.J\x11{\"role\": \"admin\"}\xbaH\x03\xc8\x01\x01R\nmembershipB\x0c\n\nidentities\"\xef\x03\n\x10UpdateMembership\x12q\n\x05roles\x18\x04 \x03(\x0b\x32\x19.scalekit.v1.commons.RoleB@\x92\x41=22Role to assign to the user within the organizationJ\x07\"admin\"R\x05roles\x12\x8c\x02\n\x08metadata\x18\x07 \x03(\x0b\x32\x31.scalekit.v1.users.UpdateMembership.MetadataEntryB\xbc\x01\x92\x41\x9f\x01\x32\x64\x43ustom key-value pairs for storing additional user context. Keys (3-25 chars), values (1-256 chars).J7{\"department\": \"engineering\", \"location\": \"nyc-office\"}\xbaH\x16\x9a\x01\x13\x10\x14\"\x06r\x04\x10\x03\x18\x19*\x07r\x05\x10\x01\x18\x80\x02R\x08metadata\x1a;\n\rMetadataEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01J\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03J\x04\x08\x03\x10\x04J\x04\x08\x05\x10\x06J\x04\x08\x06\x10\x07\"\xef\x03\n\x10\x43reateMembership\x12q\n\x05roles\x18\x04 \x03(\x0b\x32\x19.scalekit.v1.commons.RoleB@\x92\x41=22Role to assign to the user within the organizationJ\x07\"admin\"R\x05roles\x12\x8c\x02\n\x08metadata\x18\x07 \x03(\x0b\x32\x31.scalekit.v1.users.CreateMembership.MetadataEntryB\xbc\x01\x92\x41\x9f\x01\x32\x64\x43ustom key-value pairs for storing additional user context. Keys (3-25 chars), values (1-256 chars).J7{\"department\": \"engineering\", \"location\": \"nyc-office\"}\xbaH\x16\x9a\x01\x13\x10\x14\"\x06r\x04\x10\x03\x18\x19*\x07r\x05\x10\x01\x18\x80\x02R\x08metadata\x1a;\n\rMetadataEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01J\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03J\x04\x08\x03\x10\x04J\x04\x08\x05\x10\x06J\x04\x08\x06\x10\x07\"G\n\x18UpdateMembershipResponse\x12+\n\x04user\x18\x01 \x01(\x0b\x32\x17.scalekit.v1.users.UserR\x04user\"\xb7\x05\n\x1eSearchOrganizationUsersRequest\x12\xc5\x01\n\x0forganization_id\x18\x01 \x01(\tB\x9b\x01\x92\x41\x85\x01\x32kUnique identifier of the organization to search within. Must start with \'org_\' and be 1-32 characters long.J\x16\"org_1234abcd5678efgh\"\xbaH\x0fr\n\x10\x01\x18 :\x04org_\xc8\x01\x01R\x0eorganizationId\x12\xaa\x01\n\x05query\x18\x02 \x01(\tB\x93\x01\x92\x41\x83\x01\x32oSearch term to match against user email, IDs, or external IDs. Must be at least 3 characters. Case insensitive.J\x10john@example.com\xbaH\tr\x04\x10\x03\x18\x64\xc8\x01\x01R\x05query\x12x\n\tpage_size\x18\x03 \x01(\rB[\x92\x41Q2KMaximum number of users to return per page. Value must be between 1 and 30.J\x02\x33\x30\xbaH\x04*\x02\x18\x1eR\x08pageSize\x12\xa5\x01\n\npage_token\x18\x04 \x01(\tB\x85\x01\x92\x41\x81\x01\x32\x61Token from a previous response for pagination. Provide this to retrieve the next page of results.J\x1c\x65yJwYWdlIjoyLCJsaW1pdCI6MzB9R\tpageToken\"\xd7\x04\n\x1fSearchOrganizationUsersResponse\x12\xb3\x01\n\x0fnext_page_token\x18\x01 \x01(\tB\x8a\x01\x92\x41\x86\x01\x32PToken for retrieving the next page of results. Empty if there are no more pages.J2\"eyJwYWdlIjogMiwgImxhc3RfaWQiOiAidXNyXzEyMzQ1In0=\"R\rnextPageToken\x12x\n\ntotal_size\x18\x02 \x01(\rBY\x92\x41V2NTotal number of users matching the request criteria, regardless of pagination.J\x04\x31\x30\x34\x32R\ttotalSize\x12K\n\x05users\x18\x03 \x03(\x0b\x32\x17.scalekit.v1.users.UserB\x1c\x92\x41\x19\x32\x17List of matching users.R\x05users\x12\xb6\x01\n\x0fprev_page_token\x18\x04 \x01(\tB\x8d\x01\x92\x41\x89\x01\x32SToken for retrieving the previous page of results. Empty if this is the first page.J2\"eyJwYWdlIjogMCwgImZpcnN0X2lkIjogInVzcl85ODc2NSJ9\"R\rprevPageToken\"\x85\x08\n\nCreateUser\x12\x98\x01\n\x05\x65mail\x18\x05 \x01(\tB\x81\x01\x92\x41w2aPrimary email address for the user. Must be unique across the environment and valid per RFC 5322.J\x12\"user@example.com\"\xbaH\x04r\x02`\x01R\x05\x65mail\x12\xa2\x01\n\x0b\x65xternal_id\x18\x06 \x01(\tB|\x92\x41y2cYour application\'s unique identifier for this organization, used to link Scalekit with your system.J\x12\"ext_12345a67b89c\"H\x00R\nexternalId\x88\x01\x01\x12\x9f\x01\n\nmembership\x18\x07 \x01(\x0b\x32#.scalekit.v1.users.CreateMembershipBZ\x92\x41W2UList of organization memberships. Automatically populated based on group assignments.R\nmembership\x12\xa0\x01\n\x0cuser_profile\x18\x08 \x01(\x0b\x32$.scalekit.v1.users.CreateUserProfileBW\x92\x41T2RUser\'s personal information including name, address, and other profile attributes.R\x0buserProfile\x12\x86\x02\n\x08metadata\x18\t \x03(\x0b\x32+.scalekit.v1.users.CreateUser.MetadataEntryB\xbc\x01\x92\x41\x9f\x01\x32\x64\x43ustom key-value pairs for storing additional user context. Keys (3-25 chars), values (1-256 chars).J7{\"department\": \"engineering\", \"location\": \"nyc-office\"}\xbaH\x16\x9a\x01\x13\x10\x14\"\x06r\x04\x10\x03\x18\x19*\x07r\x05\x10\x01\x18\x80\x02R\x08metadata\x1a;\n\rMetadataEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x42\x0e\n\x0c_external_idJ\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03J\x04\x08\x03\x10\x04J\x04\x08\x04\x10\x05J\x04\x08\n\x10\x0b\"\x92\n\n\x11\x43reateUserProfile\x12^\n\nfirst_name\x18\x02 \x01(\tB?\x92\x41\x34\x32*User\'s given name. Maximum 200 characters.J\x06\"John\"\xbaH\x05r\x03\x18\xc8\x01R\tfirstName\x12\\\n\tlast_name\x18\x03 \x01(\tB?\x92\x41\x34\x32+User\'s family name. Maximum 200 characters.J\x05\"Doe\"\xbaH\x05r\x03\x18\xc8\x01R\x08lastName\x12v\n\x04name\x18\x04 \x01(\tBb\x92\x41_2IFull name in display format. Typically combines first_name and last_name.J\x12\"John Michael Doe\"R\x04name\x12y\n\x06locale\x18\x05 \x01(\tBa\x92\x41^2SUser\'s localization preference in BCP-47 format. Defaults to organization settings.J\x07\"en-US\"R\x06locale\x12\x8a\x01\n\x0cphone_number\x18\x07 \x01(\tBg\x92\x41\x64\x32RPhone number in E.164 international format. Required for SMS-based authentication.J\x0e\"+14155552671\"R\x0bphoneNumber\x12\x8b\x02\n\x08metadata\x18\x08 \x03(\x0b\x32\x32.scalekit.v1.users.CreateUserProfile.MetadataEntryB\xba\x01\x92\x41\x9d\x01\x32^System-managed key-value pairs for internal tracking. Keys (3-25 chars), values (1-256 chars).J;{\"account_status\": \"active\", \"signup_source\": \"mobile_app\"}\xbaH\x16\x9a\x01\x13\x10\x1e\"\x06r\x04\x10\x03\x18\x19*\x07r\x05\x10\x01\x18\x80\x02R\x08metadata\x12\xa2\x02\n\x11\x63ustom_attributes\x18\t \x03(\x0b\x32:.scalekit.v1.users.CreateUserProfile.CustomAttributesEntryB\xb8\x01\x92\x41\x9b\x01\x32ZCustom attributes for extended user profile data. Keys (3-25 chars), values (1-256 chars).J={\"department\": \"engineering\", \"security_clearance\": \"level2\"}\xbaH\x16\x9a\x01\x13\x10\x64\"\x06r\x04\x10\x03\x18\x19*\x07r\x05\x10\x01\x18\x80\x02R\x10\x63ustomAttributes\x1a;\n\rMetadataEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x1a\x43\n\x15\x43ustomAttributesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01J\x04\x08\x01\x10\x02J\x04\x08\x06\x10\x07\"\xed\n\n\x11UpdateUserProfile\x12\x63\n\nfirst_name\x18\x02 \x01(\tB?\x92\x41\x34\x32*User\'s given name. Maximum 200 characters.J\x06\"John\"\xbaH\x05r\x03\x18\xc8\x01H\x00R\tfirstName\x88\x01\x01\x12\x61\n\tlast_name\x18\x03 \x01(\tB?\x92\x41\x34\x32+User\'s family name. Maximum 200 characters.J\x05\"Doe\"\xbaH\x05r\x03\x18\xc8\x01H\x01R\x08lastName\x88\x01\x01\x12{\n\x04name\x18\x04 \x01(\tBb\x92\x41_2IFull name in display format. Typically combines first_name and last_name.J\x12\"John Michael Doe\"H\x02R\x04name\x88\x01\x01\x12~\n\x06locale\x18\x05 \x01(\tBa\x92\x41^2SUser\'s localization preference in BCP-47 format. Defaults to organization settings.J\x07\"en-US\"H\x03R\x06locale\x88\x01\x01\x12\x8f\x01\n\x0cphone_number\x18\x07 \x01(\tBg\x92\x41\x64\x32RPhone number in E.164 international format. Required for SMS-based authentication.J\x0e\"+14155552671\"H\x04R\x0bphoneNumber\x88\x01\x01\x12\x8b\x02\n\x08metadata\x18\x08 \x03(\x0b\x32\x32.scalekit.v1.users.UpdateUserProfile.MetadataEntryB\xba\x01\x92\x41\x9d\x01\x32^System-managed key-value pairs for internal tracking. Keys (3-25 chars), values (1-256 chars).J;{\"account_status\": \"active\", \"signup_source\": \"mobile_app\"}\xbaH\x16\x9a\x01\x13\x10\x1e\"\x06r\x04\x10\x03\x18\x19*\x07r\x05\x10\x01\x18\x80\x02R\x08metadata\x12\xa2\x02\n\x11\x63ustom_attributes\x18\t \x03(\x0b\x32:.scalekit.v1.users.UpdateUserProfile.CustomAttributesEntryB\xb8\x01\x92\x41\x9b\x01\x32ZCustom attributes for extended user profile data. Keys (3-25 chars), values (1-256 chars).J={\"department\": \"engineering\", \"security_clearance\": \"level2\"}\xbaH\x16\x9a\x01\x13\x10\x64\"\x06r\x04\x10\x03\x18\x19*\x07r\x05\x10\x01\x18\x80\x02R\x10\x63ustomAttributes\x1a;\n\rMetadataEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x1a\x43\n\x15\x43ustomAttributesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x42\r\n\x0b_first_nameB\x0c\n\n_last_nameB\x07\n\x05_nameB\t\n\x07_localeB\x0f\n\r_phone_numberJ\x04\x08\x01\x10\x02J\x04\x08\x06\x10\x07\x32\xe6w\n\x0bUserService\x12\x81\x07\n\x07GetUser\x12!.scalekit.v1.users.GetUserRequest\x1a\".scalekit.v1.users.GetUserResponse\"\xae\x06\x92\x41\x8a\x06\n\x05Users\x12\x08Get user\x1a\x8e\x01Retrieves all details for a user by system-generated user ID or external ID. The response includes organization memberships and user metadata.J\x9c\x01\n\x03\x32\x30\x30\x12\x94\x01\njUser details retrieved successfully. Returns full user object with system-generated fields and timestamps.\x12&\n$\x1a\".scalekit.v1.users.GetUserResponsej\xc6\x03\n\rx-codeSamples\x12\xb4\x03\x32\xb1\x03\nn*l\n\x16\n\x05label\x12\r\x1a\x0bNode.js SDK\n\x14\n\x04lang\x12\x0c\x1a\njavascript\n<\n\x06source\x12\x32\x1a\x30\x63onst { user } = await sc.user.getUser(user_id);\no*m\n\x15\n\x05label\x12\x0c\x1a\nPython SDK\n\x10\n\x04lang\x12\x08\x1a\x06python\nB\n\x06source\x12\x38\x1a\x36response = users.get_user(organization_id, \n user_id)\n\\*Z\n\x11\n\x05label\x12\x08\x1a\x06Go SDK\n\x0c\n\x04lang\x12\x04\x1a\x02go\n7\n\x06source\x12-\x1a+resp, err := sc.User().GetUser(ctx, userID)\np*n\n\x13\n\x05label\x12\n\x1a\x08Java SDK\n\x0e\n\x04lang\x12\x06\x1a\x04java\nG\n\x06source\x12=\x1a;GetUserResponse resp = scalekit.users().getUser(\n userId);\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02\x14\x12\x12/api/v1/users/{id}\x12\xba\t\n\tListUsers\x12#.scalekit.v1.users.ListUsersRequest\x1a$.scalekit.v1.users.ListUsersResponse\"\xe1\x08\x92\x41\xc2\x08\n\x05Users\x12\x1dList all users in environment\x1a\xbc\x02Retrieves a paginated list of all users across your entire environment. Use this endpoint to view all users regardless of their organization memberships. This is useful for administrative purposes, user audits, or when you need to see all users in your Scalekit environment. Supports pagination for large user bases.JA\n\x03\x32\x30\x30\x12:\n\x0eList of users.\x12(\n&\x1a$.scalekit.v1.users.ListUsersResponsej\x97\x05\n\rx-codeSamples\x12\x85\x05\x32\x82\x05\n}*{\n\x16\n\x05label\x12\r\x1a\x0bNode.js SDK\n\x14\n\x04lang\x12\x0c\x1a\njavascript\nK\n\x06source\x12\x41\x1a?const response = await sc.user.listUsers(\n { pageSize: 100 });\n\xac\x01*\xa9\x01\n\x15\n\x05label\x12\x0c\x1a\nPython SDK\n\x10\n\x04lang\x12\x08\x1a\x06python\n~\n\x06source\x12t\x1ar# pass empty org to fetch all users in environment\nresp,_ = sc.users.list_users(organization_id=\"\", page_size=100)\n\x91\x01*\x8e\x01\n\x11\n\x05label\x12\x08\x1a\x06Go SDK\n\x0c\n\x04lang\x12\x04\x1a\x02go\nk\n\x06source\x12\x61\x1a_all, err := sc.User().ListOrganizationUsers(ctx, \"\", &scalekit.ListUsersOptions{PageSize: 100})\n\xbd\x01*\xba\x01\n\x13\n\x05label\x12\n\x1a\x08Java SDK\n\x0e\n\x04lang\x12\x06\x1a\x04java\n\x92\x01\n\x06source\x12\x87\x01\x1a\x84\x01ListUsersRequest lur = ListUsersRequest.\n newBuilder().setPageSize(100).build();\nListUsersResponse allUsers = users.listUsers(lur);\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02\x0f\x12\r/api/v1/users\x12\xcb\x03\n\x0bSearchUsers\x12%.scalekit.v1.users.SearchUsersRequest\x1a&.scalekit.v1.users.SearchUsersResponse\"\xec\x02\x92\x41\xb7\x02\n\x05Users\x12\x0cSearch users\x1a\x85\x01Searches for users in the environment by email, user ID, or external ID. Returns all users that match the query. Supports pagination.J\x97\x01\n\x03\x32\x30\x30\x12\x8f\x01\naReturns a list of matching users and a page token for pagination if there are additional results.\x12*\n(\x1a&.scalekit.v1.users.SearchUsersResponse\x82\xb5\x18\x02\x18T\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x16\x12\x14/api/v1/users:search\x12\xe0\x04\n\x17SearchOrganizationUsers\x12\x31.scalekit.v1.users.SearchOrganizationUsersRequest\x1a\x32.scalekit.v1.users.SearchOrganizationUsersResponse\"\xdd\x03\x92\x41\x88\x03\n\x05Users\x12\x19Search organization users\x1a\xa5\x01Searches for users within a specific organization by email, user ID, or external ID. Returns all users in the organization that match the query. Supports pagination.J\xbb\x01\n\x03\x32\x30\x30\x12\xb3\x01\nyReturns a list of matching users within the organization and a page token for pagination if there are additional results.\x12\x36\n4\x1a\x32.scalekit.v1.users.SearchOrganizationUsersResponse\x82\xb5\x18\x02\x18T\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x36\x12\x34/api/v1/organizations/{organization_id}/users:search\x12\xd8\x11\n\nUpdateUser\x12$.scalekit.v1.users.UpdateUserRequest\x1a%.scalekit.v1.users.UpdateUserResponse\"\xfc\x10\x92\x41\xd2\x10\n\x05Users\x12\x17Update user information\x1a\xe1\x02Modifies user account information including profile details, metadata, and external ID. Use this endpoint to update a user\'s personal information, contact details, or custom metadata. You can update the user\'s profile, phone number, and metadata fields. Note that fields like user ID, email address, environment ID, and creation time cannot be modified.J\x89\x01\n\x03\x32\x30\x30\x12\x81\x01\nTUser updated successfully. Returns the modified user object with updated timestamps.\x12)\n\'\x1a%.scalekit.v1.users.UpdateUserResponsej\xbf\x0c\n\rx-codeSamples\x12\xad\x0c\x32\xaa\x0c\n\xd1\x01*\xce\x01\n\x16\n\x05label\x12\r\x1a\x0bNode.js SDK\n\x14\n\x04lang\x12\x0c\x1a\njavascript\n\x9d\x01\n\x06source\x12\x92\x01\x1a\x8f\x01\x61wait sc.user.updateUser(\"usr_123\", {\n\tuserProfile: {\n\t\tfirstName: \"John\",\n\t\tlastName: \"Smith\",\n\t},\n\tmetadata: {\n\t\tdepartment: \"sales\",\n\t},\n});\n\xe0\x04*\xdd\x04\n\x15\n\x05label\x12\x0c\x1a\nPython SDK\n\x10\n\x04lang\x12\x08\x1a\x06python\n\xb1\x04\n\x06source\x12\xa6\x04\x1a\xa3\x04import os\nfrom scalekit import ScalekitClient\nfrom scalekit.v1.users.users_pb2 import UpdateUser\nfrom scalekit.v1.commons.\n commons_pb2 import UserProfile\nsc = ScalekitClient(\n env_url=os.getenv(\"SCALEKIT_ENV_URL\"),\n client_id=os.getenv(\"SCALEKIT_CLIENT_ID\"),\n client_secret=os.getenv(\"SCALEKIT_CLIENT_SECRET\"),\n)\nupdate_user = UpdateUser(\n user_profile=UserProfile(\n first_name=\"John\",\n last_name=\"Smith\"\n ),\n metadata={\"department\": \"sales\"}\n)\nsc.users.update_user(organization_id=\"org_123\", \n user=update_user)\n\xae\x02*\xab\x02\n\x11\n\x05label\x12\x08\x1a\x06Go SDK\n\x0c\n\x04lang\x12\x04\x1a\x02go\n\x87\x02\n\x06source\x12\xfc\x01\x1a\xf9\x01upd := &usersv1.UpdateUser{\n UserProfile: &usersv1.UpdateUserProfile{\n FirstName: \"John\",\n LastName: \"Smith\",\n },\n Metadata: map[string]string{\n \"department\": \"sales\",\n },\n}\nsc.User().UpdateUser(ctx, \"usr_123\", upd)\n\xbf\x03*\xbc\x03\n\x13\n\x05label\x12\n\x1a\x08Java SDK\n\x0e\n\x04lang\x12\x06\x1a\x04java\n\x94\x03\n\x06source\x12\x89\x03\x1a\x86\x03UpdateUser upd = UpdateUser.newBuilder()\n .setUserProfile(\n UpdateUserProfile.newBuilder()\n .setFirstName(\"John\")\n .setLastName(\"Smith\")\n .build())\n .putMetadata(\"department\", \"sales\")\n .build();\nUpdateUserRequest updReq = UpdateUserRequest.\n newBuilder().setUser(upd).build();\nusers.updateUser(\"usr_123\", updReq);\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02\x1a\x32\x12/api/v1/users/{id}:\x04user\x12\xd0\x07\n\nDeleteUser\x12$.scalekit.v1.users.DeleteUserRequest\x1a\x16.google.protobuf.Empty\"\x83\x07\x92\x41\xdf\x06\n\x05Users\x12\x17\x44\x65lete user permanently\x1a\xb0\x02Permanently removes a user from your environment and deletes all associated data. Use this endpoint when you need to completely remove a user account. This action deletes the user\'s profile, memberships, and all related data across all organizations. This operation cannot be undone, so use with caution.J7\n\x03\x32\x30\x30\x12\x30\n.User successfully deleted. No content returnedj\xd0\x03\n\rx-codeSamples\x12\xbe\x03\x32\xbb\x03\nb*`\n\x16\n\x05label\x12\r\x1a\x0bNode.js SDK\n\x14\n\x04lang\x12\x0c\x1a\njavascript\n0\n\x06source\x12&\x1a$await sc.user.deleteUser(\"usr_123\");\n~*|\n\x15\n\x05label\x12\x0c\x1a\nPython SDK\n\x10\n\x04lang\x12\x08\x1a\x06python\nQ\n\x06source\x12G\x1a\x45sc.users.delete_user(organization_id=\"org_123\", \n user_id=\"usr_123\")\n\x81\x01*\x7f\n\x11\n\x05label\x12\x08\x1a\x06Go SDK\n\x0c\n\x04lang\x12\x04\x1a\x02go\n\\\n\x06source\x12R\x1aPif err := sc.User().DeleteUser(ctx, \n \"usr_123\"); err != nil {\n panic(err)\n}\nQ*O\n\x13\n\x05label\x12\n\x1a\x08Java SDK\n\x0e\n\x04lang\x12\x06\x1a\x04java\n(\n\x06source\x12\x1e\x1a\x1cusers.deleteUser(\"usr_123\");\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02\x14*\x12/api/v1/users/{id}\x12\xa1\x18\n\x10\x43reateMembership\x12*.scalekit.v1.users.CreateMembershipRequest\x1a+.scalekit.v1.users.CreateMembershipResponse\"\xb3\x17\x92\x41\xd7\x16\n\x05Users\x12!Add existing user to organization\x1a\x95\x02\x41\x64\x64s an existing user to an organization and assigns them specific roles and permissions. Use this endpoint when you want to grant an existing user access to a particular organization. You can specify roles, metadata, and other membership details during the invitation process.J\x99\x01\n\x03\x32\x30\x31\x12\x91\x01\n^User successfully added to the organization. Returns details of the updated membership details\x12/\n-\x1a+.scalekit.v1.users.CreateMembershipResponsej\xf6\x12\n\rx-codeSamples\x12\xe4\x12\x32\xe1\x12\n\x92\x03*\x8f\x03\n\x16\n\x05label\x12\r\x1a\x0bNode.js SDK\n\x14\n\x04lang\x12\x0c\x1a\njavascript\n\xde\x02\n\x06source\x12\xd3\x02\x1a\xd0\x02import { ScalekitClient } from \"@scalekit-sdk/node\";\nconst sc = new ScalekitClient(\n\tprocess.env.SCALEKIT_ENV_URL,\n\tprocess.env.SCALEKIT_CLIENT_ID,\n\tprocess.env.SCALEKIT_CLIENT_SECRET\n);\nawait sc.user.createMembership(\"org_123\", \"usr_123\", {\n\troles: [\"admin\"],\n\tmetadata: {\n\t\tdepartment: \"engineering\",\n\t\tlocation: \"nyc-office\",\n\t},\n});\n\xe0\x03*\xdd\x03\n\x15\n\x05label\x12\x0c\x1a\nPython SDK\n\x10\n\x04lang\x12\x08\x1a\x06python\n\xb1\x03\n\x06source\x12\xa6\x03\x1a\xa3\x03import os\nfrom scalekit import ScalekitClient\nsc = ScalekitClient(\n env_url=os.getenv(\"SCALEKIT_ENV_URL\"),\n client_id=os.getenv(\"SCALEKIT_CLIENT_ID\"),\n client_secret=os.getenv(\"SCALEKIT_CLIENT_SECRET\"),\n)\n# The Python SDK currently exposes a helper that \n #simply links an existing\n# user to an organization.\nresp, _ = sc.users.add_user_to_organization(\n organization_id=\"org_123\",\n user_id=\"usr_123\",\n)\n\x85\x05*\x82\x05\n\x11\n\x05label\x12\x08\x1a\x06Go SDK\n\x0c\n\x04lang\x12\x04\x1a\x02go\n\xde\x04\n\x06source\x12\xd3\x04\x1a\xd0\x04\x66unc main() {\n sc := scalekit.NewScalekitClient(\n os.Getenv(\"SCALEKIT_ENV_URL\"),\n os.Getenv(\"SCALEKIT_CLIENT_ID\"),\n os.Getenv(\"SCALEKIT_CLIENT_SECRET\"),\n )\n membership := &usersv1.CreateMembership{\n Roles: []*usersv1.Role{{Name: \"admin\"}},\n Metadata: map[string]string{\n \"department\": \"engineering\",\n \"location\": \"nyc-office\",\n },\n }\n resp, \n err := sc.User().CreateMembership(\n context.Background(), \"org_123\", \n \"usr_123\", membership, false)\n if err != nil {\n panic(err)\n }\n}\n\xde\x06*\xdb\x06\n\x13\n\x05label\x12\n\x1a\x08Java SDK\n\x0e\n\x04lang\x12\x06\x1a\x04java\n\xb3\x06\n\x06source\x12\xa8\x06\x1a\xa5\x06import com.scalekit.ScalekitClient;\nimport com.scalekit.api.UserClient;\nimport com.scalekit.grpc.scalekit.v1.users.*;\nScalekitClient sk = new ScalekitClient(\n System.getenv(\"SCALEKIT_ENV_URL\"),\n System.getenv(\"SCALEKIT_CLIENT_ID\"),\n System.getenv(\"SCALEKIT_CLIENT_SECRET\")\n);\nUserClient users = sk.users();\nCreateMembershipRequest membershipReq = CreateMemb\n ershipRequest.newBuilder()\n .setMembership(\n CreateMembership.newBuilder()\n .addRoles(Role.newBuilder(\n ).setName(\"admin\").build())\n .putMetadata(\"department\", \"engineering\")\n .putMetadata(\"location\", \"nyc-office\")\n .build())\n .build();\nCreateMembershipResponse res = users.\n createMembership(\"org_123\", \"usr_123\", \n membershipReq);\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02L\">/api/v1/memberships/organizations/{organization_id}/users/{id}:\nmembership\x12\xb0\x05\n\x10\x44\x65leteMembership\x12*.scalekit.v1.users.DeleteMembershipRequest\x1a\x16.google.protobuf.Empty\"\xd7\x04\x92\x41\x87\x04\n\x05Users\x12\'Delete organization membership for user\x1a\xdc\x01Removes a user from an organization by user ID or external ID. If the user has no memberships left and cascade is true, the user is also deleted. This action is irreversible and may also remove related group memberships.JC\n\x03\x32\x30\x30\x12<\n:User successfully marked for deletion. No content returnedj\xb0\x01\n\rx-codeSamples\x12\x9e\x01\x32\x9b\x01\n\x98\x01*\x95\x01\n\x15\n\x05label\x12\x0c\x1a\nPython SDK\n\x10\n\x04lang\x12\x08\x1a\x06python\nj\n\x06source\x12`\x1a^response = scalekit_client.users.delete_membership(\n organization_id=org_id,user_id=user_id\n)\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02@*>/api/v1/memberships/organizations/{organization_id}/users/{id}\x12\x8c\x04\n\x10UpdateMembership\x12*.scalekit.v1.users.UpdateMembershipRequest\x1a+.scalekit.v1.users.UpdateMembershipResponse\"\x9e\x03\x92\x41\xb3\x02\n\x05Users\x12\'Update organization membership for user\x1a\x83\x01Updates a user\'s membership details within an organization by user ID or external ID. You can update roles and membership metadata.J{\n\x03\x32\x30\x30\x12t\nAMembership updated successfully. Returns the updated user object.\x12/\n-\x1a+.scalekit.v1.users.UpdateMembershipResponse\x82\xb5\x18\x02\x18T\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02L2>/api/v1/memberships/organizations/{organization_id}/users/{id}:\nmembership\x12\x9d\x18\n\x17\x43reateUserAndMembership\x12\x31.scalekit.v1.users.CreateUserAndMembershipRequest\x1a\x32.scalekit.v1.users.CreateUserAndMembershipResponse\"\x9a\x17\x92\x41\xd5\x16\n\x05Users\x12\x1f\x43reate new user in organization\x1a\x83\x03\x43reates a new user account and immediately adds them to the specified organization. Use this endpoint when you want to create a user and grant them access to an organization in a single operation. You can provide user profile information, assign roles, and configure membership metadata. The user receives an activation email unless this feature is disabled in the organization settings.J\xb3\x01\n\x03\x32\x30\x31\x12\xab\x01\nqUser created successfully. Returns the created user object, including system-generated identifiers and timestamps\x12\x36\n4\x1a\x32.scalekit.v1.users.CreateUserAndMembershipResponsej\xee\x11\n\rx-codeSamples\x12\xdc\x11\x32\xd9\x11\n\xd0\x02*\xcd\x02\n\x16\n\x05label\x12\r\x1a\x0bNode.js SDK\n\x14\n\x04lang\x12\x0c\x1a\njavascript\n\x9c\x02\n\x06source\x12\x91\x02\x1a\x8e\x02\x63onst {\n user } = await sc.user.\n createUserAndMembership(\"org_123\", {\n\temail: \"user@example.com\",\n\texternalId: \"ext_12345a67b89c\",\n\tmetadata: { department: \"engineering\", \n\t location: \"nyc-office\" },\n\tuserProfile: {\n\t\tfirstName: \"John\",\n\t\tlastName: \"Doe\",\n\t},\n});\n\xaa\x05*\xa7\x05\n\x15\n\x05label\x12\x0c\x1a\nPython SDK\n\x10\n\x04lang\x12\x08\x1a\x06python\n\xfb\x04\n\x06source\x12\xf0\x04\x1a\xed\x04import os\nfrom scalekit import ScalekitClient\nfrom scalekit.v1.users.users_pb2 import User\nfrom scalekit.v1.commons.\n commons_pb2 import UserProfile\nsc = ScalekitClient(\n env_url=os.getenv(\"SCALEKIT_ENV_URL\"),\n client_id=os.getenv(\"SCALEKIT_CLIENT_ID\"),\n client_secret=os.getenv(\"SCALEKIT_CLIENT_SECRET\"),\n)\nuser_msg = User(\n email=\"user@example.com\",\n external_id=\"ext_12345a67b89c\",\n metadata={\"department\": \"engineering\", \"location\": \"nyc-office\"},\n user_profile=UserProfile(\n first_name=\"John\",\n last_name=\"Doe\"\n )\n)\ncreate_resp, \n _ = sc.users.create_user(\"org_123\", user_msg)\n\xf1\x03*\xee\x03\n\x11\n\x05label\x12\x08\x1a\x06Go SDK\n\x0c\n\x04lang\x12\x04\x1a\x02go\n\xca\x03\n\x06source\x12\xbf\x03\x1a\xbc\x03newUser := &usersv1.CreateUser{\n Email: \"user@example.com\",\n ExternalId: \"ext_12345a67b89c\",\n Metadata: map[string]string{\n \"department\": \"engineering\",\n \"location\": \"nyc-office\",\n },\n UserProfile: &usersv1.CreateUserProfile{\n FirstName: \"John\",\n LastName: \"Doe\",\n },\n}\ncuResp, \n err := sc.User().CreateUserAndMembership(ctx, \"org_123\", newUser, false)\nif err != nil { /* handle error */ }\n\xe2\x05*\xdf\x05\n\x13\n\x05label\x12\n\x1a\x08Java SDK\n\x0e\n\x04lang\x12\x06\x1a\x04java\n\xb7\x05\n\x06source\x12\xac\x05\x1a\xa9\x05\x43reateUser createUser = CreateUser.newBuilder()\n .setEmail(\"user@example.com\")\n .setExternalId(\"ext_12345a67b89c\")\n .putMetadata(\"department\", \"engineering\")\n .putMetadata(\"location\", \"nyc-office\")\n .setUserProfile(\n CreateUserProfile.newBuilder()\n .setFirstName(\"John\")\n .setLastName(\"Doe\")\n .build())\n .build();\nCreateUserAndMembershipRequest cuReq = CreateUserA\n ndMembershipRequest.newBuilder()\n .setUser(createUser)\n .build();\nCreateUserAndMembershipResponse cuResp = users.\n createUserAndMembership(\"org_123\", cuReq);\nSystem.out.println(cuResp.getUser().getId());\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02\x35\"-/api/v1/organizations/{organization_id}/users:\x04user\x12\xa4\x0b\n\x15ListOrganizationUsers\x12/.scalekit.v1.users.ListOrganizationUsersRequest\x1a\x30.scalekit.v1.users.ListOrganizationUsersResponse\"\xa7\n\x92\x41\xe8\t\n\x05Users\x12\x17List organization users\x1a\x87\x02Retrieves a paginated list of all users who are members of the specified organization. Use this endpoint to view all users with access to a particular organization, including their roles, metadata, and membership details. Supports pagination for large user lists.J{\n\x03\x32\x30\x30\x12t\n/api/v1/memberships/organizations/{organization_id}/users/{id}:\nmembership' + _globals['_USERSERVICE'].methods_by_name['CreateMembership']._serialized_options = b'\222A\327\026\n\005Users\022!Add existing user to organization\032\225\002Adds an existing user to an organization and assigns them specific roles and permissions. Use this endpoint when you want to grant an existing user access to a particular organization. You can specify roles, metadata, and other membership details during the invitation process.J\231\001\n\003201\022\221\001\n^User successfully added to the organization. Returns details of the updated membership details\022/\n-\032+.scalekit.v1.users.CreateMembershipResponsej\366\022\n\rx-codeSamples\022\344\0222\341\022\n\222\003*\217\003\n\026\n\005label\022\r\032\013Node.js SDK\n\024\n\004lang\022\014\032\njavascript\n\336\002\n\006source\022\323\002\032\320\002import { ScalekitClient } from \"@scalekit-sdk/node\";\nconst sc = new ScalekitClient(\n\tprocess.env.SCALEKIT_ENV_URL,\n\tprocess.env.SCALEKIT_CLIENT_ID,\n\tprocess.env.SCALEKIT_CLIENT_SECRET\n);\nawait sc.user.createMembership(\"org_123\", \"usr_123\", {\n\troles: [\"admin\"],\n\tmetadata: {\n\t\tdepartment: \"engineering\",\n\t\tlocation: \"nyc-office\",\n\t},\n});\n\340\003*\335\003\n\025\n\005label\022\014\032\nPython SDK\n\020\n\004lang\022\010\032\006python\n\261\003\n\006source\022\246\003\032\243\003import os\nfrom scalekit import ScalekitClient\nsc = ScalekitClient(\n env_url=os.getenv(\"SCALEKIT_ENV_URL\"),\n client_id=os.getenv(\"SCALEKIT_CLIENT_ID\"),\n client_secret=os.getenv(\"SCALEKIT_CLIENT_SECRET\"),\n)\n# The Python SDK currently exposes a helper that \n #simply links an existing\n# user to an organization.\nresp, _ = sc.users.add_user_to_organization(\n organization_id=\"org_123\",\n user_id=\"usr_123\",\n)\n\205\005*\202\005\n\021\n\005label\022\010\032\006Go SDK\n\014\n\004lang\022\004\032\002go\n\336\004\n\006source\022\323\004\032\320\004func main() {\n sc := scalekit.NewScalekitClient(\n os.Getenv(\"SCALEKIT_ENV_URL\"),\n os.Getenv(\"SCALEKIT_CLIENT_ID\"),\n os.Getenv(\"SCALEKIT_CLIENT_SECRET\"),\n )\n membership := &usersv1.CreateMembership{\n Roles: []*usersv1.Role{{Name: \"admin\"}},\n Metadata: map[string]string{\n \"department\": \"engineering\",\n \"location\": \"nyc-office\",\n },\n }\n resp, \n err := sc.User().CreateMembership(\n context.Background(), \"org_123\", \n \"usr_123\", membership, false)\n if err != nil {\n panic(err)\n }\n}\n\336\006*\333\006\n\023\n\005label\022\n\032\010Java SDK\n\016\n\004lang\022\006\032\004java\n\263\006\n\006source\022\250\006\032\245\006import com.scalekit.ScalekitClient;\nimport com.scalekit.api.UserClient;\nimport com.scalekit.grpc.scalekit.v1.users.*;\nScalekitClient sk = new ScalekitClient(\n System.getenv(\"SCALEKIT_ENV_URL\"),\n System.getenv(\"SCALEKIT_CLIENT_ID\"),\n System.getenv(\"SCALEKIT_CLIENT_SECRET\")\n);\nUserClient users = sk.users();\nCreateMembershipRequest membershipReq = CreateMemb\n ershipRequest.newBuilder()\n .setMembership(\n CreateMembership.newBuilder()\n .addRoles(Role.newBuilder(\n ).setName(\"admin\").build())\n .putMetadata(\"department\", \"engineering\")\n .putMetadata(\"location\", \"nyc-office\")\n .build())\n .build();\nCreateMembershipResponse res = users.\n createMembership(\"org_123\", \"usr_123\", \n membershipReq);\202\265\030\002\030T\202\323\344\223\002L\">/api/v1/memberships/organizations/{organization_id}/users/{id}:\nmembership' _globals['_USERSERVICE'].methods_by_name['DeleteMembership']._loaded_options = None - _globals['_USERSERVICE'].methods_by_name['DeleteMembership']._serialized_options = b'\222A\270\002\n\005Users\022\013Delete user\032\334\001Removes a user from an organization by user ID or external ID. If the user has no memberships left and cascade is true, the user is also deleted. This action is irreversible and may also remove related group memberships.JC\n\003200\022<\n:User successfully marked for deletion. No content returned\202\265\030\002\030T\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\002@*>/api/v1/memberships/organizations/{organization_id}/users/{id}' + _globals['_USERSERVICE'].methods_by_name['DeleteMembership']._serialized_options = b'\222A\207\004\n\005Users\022\'Delete organization membership for user\032\334\001Removes a user from an organization by user ID or external ID. If the user has no memberships left and cascade is true, the user is also deleted. This action is irreversible and may also remove related group memberships.JC\n\003200\022<\n:User successfully marked for deletion. No content returnedj\260\001\n\rx-codeSamples\022\236\0012\233\001\n\230\001*\225\001\n\025\n\005label\022\014\032\nPython SDK\n\020\n\004lang\022\010\032\006python\nj\n\006source\022`\032^response = scalekit_client.users.delete_membership(\n organization_id=org_id,user_id=user_id\n)\202\265\030\002\030T\202\323\344\223\002@*>/api/v1/memberships/organizations/{organization_id}/users/{id}' _globals['_USERSERVICE'].methods_by_name['UpdateMembership']._loaded_options = None - _globals['_USERSERVICE'].methods_by_name['UpdateMembership']._serialized_options = b'\222A\242\002\n\005Users\022\026Update user membership\032\203\001Updates a user\'s membership details within an organization by user ID or external ID. You can update roles and membership metadata.J{\n\003200\022t\nAMembership updated successfully. Returns the updated user object.\022/\n-\032+.scalekit.v1.users.UpdateMembershipResponse\202\265\030\002\030T\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\002L2>/api/v1/memberships/organizations/{organization_id}/users/{id}:\nmembership' + _globals['_USERSERVICE'].methods_by_name['UpdateMembership']._serialized_options = b'\222A\263\002\n\005Users\022\'Update organization membership for user\032\203\001Updates a user\'s membership details within an organization by user ID or external ID. You can update roles and membership metadata.J{\n\003200\022t\nAMembership updated successfully. Returns the updated user object.\022/\n-\032+.scalekit.v1.users.UpdateMembershipResponse\202\265\030\002\030T\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\002L2>/api/v1/memberships/organizations/{organization_id}/users/{id}:\nmembership' _globals['_USERSERVICE'].methods_by_name['CreateUserAndMembership']._loaded_options = None _globals['_USERSERVICE'].methods_by_name['CreateUserAndMembership']._serialized_options = b'\222A\325\026\n\005Users\022\037Create new user in organization\032\203\003Creates a new user account and immediately adds them to the specified organization. Use this endpoint when you want to create a user and grant them access to an organization in a single operation. You can provide user profile information, assign roles, and configure membership metadata. The user receives an activation email unless this feature is disabled in the organization settings.J\263\001\n\003201\022\253\001\nqUser created successfully. Returns the created user object, including system-generated identifiers and timestamps\0226\n4\0322.scalekit.v1.users.CreateUserAndMembershipResponsej\356\021\n\rx-codeSamples\022\334\0212\331\021\n\320\002*\315\002\n\026\n\005label\022\r\032\013Node.js SDK\n\024\n\004lang\022\014\032\njavascript\n\234\002\n\006source\022\221\002\032\216\002const {\n user } = await sc.user.\n createUserAndMembership(\"org_123\", {\n\temail: \"user@example.com\",\n\texternalId: \"ext_12345a67b89c\",\n\tmetadata: { department: \"engineering\", \n\t location: \"nyc-office\" },\n\tuserProfile: {\n\t\tfirstName: \"John\",\n\t\tlastName: \"Doe\",\n\t},\n});\n\252\005*\247\005\n\025\n\005label\022\014\032\nPython SDK\n\020\n\004lang\022\010\032\006python\n\373\004\n\006source\022\360\004\032\355\004import os\nfrom scalekit import ScalekitClient\nfrom scalekit.v1.users.users_pb2 import User\nfrom scalekit.v1.commons.\n commons_pb2 import UserProfile\nsc = ScalekitClient(\n env_url=os.getenv(\"SCALEKIT_ENV_URL\"),\n client_id=os.getenv(\"SCALEKIT_CLIENT_ID\"),\n client_secret=os.getenv(\"SCALEKIT_CLIENT_SECRET\"),\n)\nuser_msg = User(\n email=\"user@example.com\",\n external_id=\"ext_12345a67b89c\",\n metadata={\"department\": \"engineering\", \"location\": \"nyc-office\"},\n user_profile=UserProfile(\n first_name=\"John\",\n last_name=\"Doe\"\n )\n)\ncreate_resp, \n _ = sc.users.create_user(\"org_123\", user_msg)\n\361\003*\356\003\n\021\n\005label\022\010\032\006Go SDK\n\014\n\004lang\022\004\032\002go\n\312\003\n\006source\022\277\003\032\274\003newUser := &usersv1.CreateUser{\n Email: \"user@example.com\",\n ExternalId: \"ext_12345a67b89c\",\n Metadata: map[string]string{\n \"department\": \"engineering\",\n \"location\": \"nyc-office\",\n },\n UserProfile: &usersv1.CreateUserProfile{\n FirstName: \"John\",\n LastName: \"Doe\",\n },\n}\ncuResp, \n err := sc.User().CreateUserAndMembership(ctx, \"org_123\", newUser, false)\nif err != nil { /* handle error */ }\n\342\005*\337\005\n\023\n\005label\022\n\032\010Java SDK\n\016\n\004lang\022\006\032\004java\n\267\005\n\006source\022\254\005\032\251\005CreateUser createUser = CreateUser.newBuilder()\n .setEmail(\"user@example.com\")\n .setExternalId(\"ext_12345a67b89c\")\n .putMetadata(\"department\", \"engineering\")\n .putMetadata(\"location\", \"nyc-office\")\n .setUserProfile(\n CreateUserProfile.newBuilder()\n .setFirstName(\"John\")\n .setLastName(\"Doe\")\n .build())\n .build();\nCreateUserAndMembershipRequest cuReq = CreateUserA\n ndMembershipRequest.newBuilder()\n .setUser(createUser)\n .build();\nCreateUserAndMembershipResponse cuResp = users.\n createUserAndMembership(\"org_123\", cuReq);\nSystem.out.println(cuResp.getUser().getId());\202\265\030\002\030T\202\323\344\223\0025\"-/api/v1/organizations/{organization_id}/users:\004user' _globals['_USERSERVICE'].methods_by_name['ListOrganizationUsers']._loaded_options = None @@ -258,65 +258,65 @@ _globals['_UPDATEUSER_METADATAENTRY']._serialized_start=2044 _globals['_UPDATEUSER_METADATAENTRY']._serialized_end=2103 _globals['_UPDATEUSERREQUEST']._serialized_start=3202 - _globals['_UPDATEUSERREQUEST']._serialized_end=3783 - _globals['_UPDATEUSERRESPONSE']._serialized_start=3785 - _globals['_UPDATEUSERRESPONSE']._serialized_end=3850 - _globals['_GETUSERREQUEST']._serialized_start=3853 - _globals['_GETUSERREQUEST']._serialized_end=4128 - _globals['_GETUSERRESPONSE']._serialized_start=4130 - _globals['_GETUSERRESPONSE']._serialized_end=4192 - _globals['_LISTORGANIZATIONUSERSREQUEST']._serialized_start=4195 - _globals['_LISTORGANIZATIONUSERSREQUEST']._serialized_end=4823 - _globals['_LISTORGANIZATIONUSERSRESPONSE']._serialized_start=4826 - _globals['_LISTORGANIZATIONUSERSRESPONSE']._serialized_end=5502 - _globals['_DELETEMEMBERSHIPREQUEST']._serialized_start=5505 - _globals['_DELETEMEMBERSHIPREQUEST']._serialized_end=6126 - _globals['_CREATEMEMBERSHIPREQUEST']._serialized_start=6129 - _globals['_CREATEMEMBERSHIPREQUEST']._serialized_end=6939 - _globals['_CREATEMEMBERSHIPRESPONSE']._serialized_start=6941 - _globals['_CREATEMEMBERSHIPRESPONSE']._serialized_end=7012 - _globals['_LISTUSERSREQUEST']._serialized_start=7015 - _globals['_LISTUSERSREQUEST']._serialized_end=7297 - _globals['_LISTUSERSRESPONSE']._serialized_start=7300 - _globals['_LISTUSERSRESPONSE']._serialized_end=7876 - _globals['_SEARCHUSERSREQUEST']._serialized_start=7879 - _globals['_SEARCHUSERSREQUEST']._serialized_end=8362 - _globals['_SEARCHUSERSRESPONSE']._serialized_start=8365 - _globals['_SEARCHUSERSRESPONSE']._serialized_end=8952 - _globals['_DELETEUSERREQUEST']._serialized_start=8955 - _globals['_DELETEUSERREQUEST']._serialized_end=9260 - _globals['_UPDATEMEMBERSHIPREQUEST']._serialized_start=9263 - _globals['_UPDATEMEMBERSHIPREQUEST']._serialized_end=9929 - _globals['_UPDATEMEMBERSHIP']._serialized_start=9932 - _globals['_UPDATEMEMBERSHIP']._serialized_end=10427 + _globals['_UPDATEUSERREQUEST']._serialized_end=3757 + _globals['_UPDATEUSERRESPONSE']._serialized_start=3759 + _globals['_UPDATEUSERRESPONSE']._serialized_end=3824 + _globals['_GETUSERREQUEST']._serialized_start=3827 + _globals['_GETUSERREQUEST']._serialized_end=4102 + _globals['_GETUSERRESPONSE']._serialized_start=4104 + _globals['_GETUSERRESPONSE']._serialized_end=4166 + _globals['_LISTORGANIZATIONUSERSREQUEST']._serialized_start=4169 + _globals['_LISTORGANIZATIONUSERSREQUEST']._serialized_end=4797 + _globals['_LISTORGANIZATIONUSERSRESPONSE']._serialized_start=4800 + _globals['_LISTORGANIZATIONUSERSRESPONSE']._serialized_end=5476 + _globals['_DELETEMEMBERSHIPREQUEST']._serialized_start=5479 + _globals['_DELETEMEMBERSHIPREQUEST']._serialized_end=6116 + _globals['_CREATEMEMBERSHIPREQUEST']._serialized_start=6119 + _globals['_CREATEMEMBERSHIPREQUEST']._serialized_end=6929 + _globals['_CREATEMEMBERSHIPRESPONSE']._serialized_start=6931 + _globals['_CREATEMEMBERSHIPRESPONSE']._serialized_end=7002 + _globals['_LISTUSERSREQUEST']._serialized_start=7005 + _globals['_LISTUSERSREQUEST']._serialized_end=7287 + _globals['_LISTUSERSRESPONSE']._serialized_start=7290 + _globals['_LISTUSERSRESPONSE']._serialized_end=7866 + _globals['_SEARCHUSERSREQUEST']._serialized_start=7869 + _globals['_SEARCHUSERSREQUEST']._serialized_end=8352 + _globals['_SEARCHUSERSRESPONSE']._serialized_start=8355 + _globals['_SEARCHUSERSRESPONSE']._serialized_end=8942 + _globals['_DELETEUSERREQUEST']._serialized_start=8945 + _globals['_DELETEUSERREQUEST']._serialized_end=9250 + _globals['_UPDATEMEMBERSHIPREQUEST']._serialized_start=9253 + _globals['_UPDATEMEMBERSHIPREQUEST']._serialized_end=9919 + _globals['_UPDATEMEMBERSHIP']._serialized_start=9922 + _globals['_UPDATEMEMBERSHIP']._serialized_end=10417 _globals['_UPDATEMEMBERSHIP_METADATAENTRY']._serialized_start=2044 _globals['_UPDATEMEMBERSHIP_METADATAENTRY']._serialized_end=2103 - _globals['_CREATEMEMBERSHIP']._serialized_start=10430 - _globals['_CREATEMEMBERSHIP']._serialized_end=10925 + _globals['_CREATEMEMBERSHIP']._serialized_start=10420 + _globals['_CREATEMEMBERSHIP']._serialized_end=10915 _globals['_CREATEMEMBERSHIP_METADATAENTRY']._serialized_start=2044 _globals['_CREATEMEMBERSHIP_METADATAENTRY']._serialized_end=2103 - _globals['_UPDATEMEMBERSHIPRESPONSE']._serialized_start=10927 - _globals['_UPDATEMEMBERSHIPRESPONSE']._serialized_end=10998 - _globals['_SEARCHORGANIZATIONUSERSREQUEST']._serialized_start=11001 - _globals['_SEARCHORGANIZATIONUSERSREQUEST']._serialized_end=11696 - _globals['_SEARCHORGANIZATIONUSERSRESPONSE']._serialized_start=11699 - _globals['_SEARCHORGANIZATIONUSERSRESPONSE']._serialized_end=12298 - _globals['_CREATEUSER']._serialized_start=12301 - _globals['_CREATEUSER']._serialized_end=13330 + _globals['_UPDATEMEMBERSHIPRESPONSE']._serialized_start=10917 + _globals['_UPDATEMEMBERSHIPRESPONSE']._serialized_end=10988 + _globals['_SEARCHORGANIZATIONUSERSREQUEST']._serialized_start=10991 + _globals['_SEARCHORGANIZATIONUSERSREQUEST']._serialized_end=11686 + _globals['_SEARCHORGANIZATIONUSERSRESPONSE']._serialized_start=11689 + _globals['_SEARCHORGANIZATIONUSERSRESPONSE']._serialized_end=12288 + _globals['_CREATEUSER']._serialized_start=12291 + _globals['_CREATEUSER']._serialized_end=13320 _globals['_CREATEUSER_METADATAENTRY']._serialized_start=2044 _globals['_CREATEUSER_METADATAENTRY']._serialized_end=2103 - _globals['_CREATEUSERPROFILE']._serialized_start=13333 - _globals['_CREATEUSERPROFILE']._serialized_end=14631 + _globals['_CREATEUSERPROFILE']._serialized_start=13323 + _globals['_CREATEUSERPROFILE']._serialized_end=14621 _globals['_CREATEUSERPROFILE_METADATAENTRY']._serialized_start=2044 _globals['_CREATEUSERPROFILE_METADATAENTRY']._serialized_end=2103 - _globals['_CREATEUSERPROFILE_CUSTOMATTRIBUTESENTRY']._serialized_start=14552 - _globals['_CREATEUSERPROFILE_CUSTOMATTRIBUTESENTRY']._serialized_end=14619 - _globals['_UPDATEUSERPROFILE']._serialized_start=14634 - _globals['_UPDATEUSERPROFILE']._serialized_end=16023 + _globals['_CREATEUSERPROFILE_CUSTOMATTRIBUTESENTRY']._serialized_start=14542 + _globals['_CREATEUSERPROFILE_CUSTOMATTRIBUTESENTRY']._serialized_end=14609 + _globals['_UPDATEUSERPROFILE']._serialized_start=14624 + _globals['_UPDATEUSERPROFILE']._serialized_end=16013 _globals['_UPDATEUSERPROFILE_METADATAENTRY']._serialized_start=2044 _globals['_UPDATEUSERPROFILE_METADATAENTRY']._serialized_end=2103 - _globals['_UPDATEUSERPROFILE_CUSTOMATTRIBUTESENTRY']._serialized_start=14552 - _globals['_UPDATEUSERPROFILE_CUSTOMATTRIBUTESENTRY']._serialized_end=14619 - _globals['_USERSERVICE']._serialized_start=16026 - _globals['_USERSERVICE']._serialized_end=31150 + _globals['_UPDATEUSERPROFILE_CUSTOMATTRIBUTESENTRY']._serialized_start=14542 + _globals['_UPDATEUSERPROFILE_CUSTOMATTRIBUTESENTRY']._serialized_end=14609 + _globals['_USERSERVICE']._serialized_start=16016 + _globals['_USERSERVICE']._serialized_end=31350 # @@protoc_insertion_point(module_scope) diff --git a/tests/test_roles.py b/tests/test_roles.py new file mode 100644 index 0000000..1030d4d --- /dev/null +++ b/tests/test_roles.py @@ -0,0 +1,377 @@ +import os +from faker import Faker +from tests.basetest import BaseTest + +from scalekit.v1.roles.roles_pb2 import CreateRole, UpdateRole + + +class TestRoles(BaseTest): + """ Class definition for Test Roles Class """ + + def setUp(self): + """ """ + self.env_id = os.getenv('testEnv') + if not self.env_id: + raise ValueError("testEnv environment variable is not set") + self.role_id = None + self.faker = Faker() + + def test_create_role(self): + """ Method to test create role """ + role_name = f"test_role_{self.faker.unique.random_number()}" + display_name = f"Test Role {self.faker.unique.random_number()}" + description = "Test role for unit testing" + + role = CreateRole( + name=role_name, + display_name=display_name, + description=description, + default_creator=False, + default_member=False + ) + + response = self.scalekit_client.roles.create_role( + env_id=self.env_id, + role=role + ) + self.assertEqual(response[1].code().name, "OK") + self.assertTrue(response[0] is not None) + self.assertEqual(response[0].role.name, role_name) + self.assertEqual(response[0].role.display_name, display_name) + self.assertEqual(response[0].role.description, description) + self.assertEqual(response[0].role.default_creator, False) + self.assertEqual(response[0].role.default_member, False) + self.role_id = response[0].role.id + + def test_create_role_with_default_flags(self): + """ Method to test create role with default flags """ + role_name = f"test_default_role_{self.faker.unique.random_number()}" + display_name = f"Test Default Role {self.faker.unique.random_number()}" + + role = CreateRole( + name=role_name, + display_name=display_name, + description="Test default role", + default_creator=True, + default_member=False + ) + print("CreateRole", role) + + response = self.scalekit_client.roles.create_role( + env_id=self.env_id, + role=role + ) + print("CreateRole response", response) + self.assertEqual(response[1].code().name, "OK") + self.assertTrue(response[0] is not None) + self.assertEqual(response[0].role.name, role_name) + self.assertEqual(response[0].role.default_creator, True) + self.assertEqual(response[0].role.default_member, False) + self.role_id = response[0].role.id + + def test_get_role(self): + """ Method to test get role """ + role_name = f"test_role_{self.faker.unique.random_number()}" + display_name = f"Test Role {self.faker.unique.random_number()}" + + role = CreateRole( + name=role_name, + display_name=display_name, + description="Test role for get operation" + ) + + create_response = self.scalekit_client.roles.create_role( + env_id=self.env_id, + role=role + ) + self.role_id = create_response[0].role.id + + response = self.scalekit_client.roles.get_role( + env_id=self.env_id, + role_id=self.role_id + ) + self.assertEqual(response[1].code().name, "OK") + self.assertTrue(response[0] is not None) + self.assertEqual(response[0].role.id, self.role_id) + self.assertEqual(response[0].role.name, role_name) + self.assertEqual(response[0].role.display_name, display_name) + self.assertEqual(response[0].role.description, "Test role for get operation") + + def test_list_roles(self): + """ Method to test list roles """ + role_name = f"test_role_{self.faker.unique.random_number()}" + display_name = f"Test Role {self.faker.unique.random_number()}" + + role = CreateRole( + name=role_name, + display_name=display_name, + description="Test role for list operation" + ) + + create_response = self.scalekit_client.roles.create_role( + env_id=self.env_id, + role=role + ) + self.role_id = create_response[0].role.id + + response = self.scalekit_client.roles.list_roles(env_id=self.env_id) + self.assertEqual(response[1].code().name, "OK") + self.assertTrue(response[0] is not None) + self.assertTrue(len(response[0].roles) > 0) + + # Verify our created role is in the list + found_role = None + for role_item in response[0].roles: + if role_item.id == self.role_id: + found_role = role_item + break + + self.assertIsNotNone(found_role) + self.assertEqual(found_role.name, role_name) + self.assertEqual(found_role.display_name, display_name) + + def test_update_role(self): + """ Method to test update role """ + role_name = f"test_role_{self.faker.unique.random_number()}" + display_name = f"Test Role {self.faker.unique.random_number()}" + + role = CreateRole( + name=role_name, + display_name=display_name, + description="Original description" + ) + + create_response = self.scalekit_client.roles.create_role( + env_id=self.env_id, + role=role + ) + self.role_id = create_response[0].role.id + print("CreateRole for update response", create_response) + + # Update the role + updated_display_name = f"Updated Role {self.faker.unique.random_number()}" + updated_description = "Updated description for testing" + + update_role = UpdateRole( + display_name=updated_display_name, + description=updated_description, + default_creator=False, + default_member=True + ) + print("UpdateRole", update_role) + + response = self.scalekit_client.roles.update_role( + env_id=self.env_id, + role_id=self.role_id, + role=update_role + ) + print("UpdateRole response", response) + self.assertEqual(response[1].code().name, "OK") + self.assertTrue(response[0] is not None) + self.assertEqual(response[0].role.id, self.role_id) + self.assertEqual(response[0].role.name, role_name) # Name should not change + self.assertEqual(response[0].role.display_name, updated_display_name) + self.assertEqual(response[0].role.description, updated_description) + self.assertEqual(response[0].role.default_creator, False) + self.assertEqual(response[0].role.default_member, True) + + def test_update_role_partial(self): + """ Method to test update role with partial fields """ + role_name = f"test_role_{self.faker.unique.random_number()}" + display_name = f"Test Role {self.faker.unique.random_number()}" + + role = CreateRole( + name=role_name, + display_name=display_name, + description="Original description" + ) + + create_response = self.scalekit_client.roles.create_role( + env_id=self.env_id, + role=role + ) + self.role_id = create_response[0].role.id + + # Update only display name + updated_display_name = f"Partial Update Role {self.faker.unique.random_number()}" + update_role = UpdateRole(display_name=updated_display_name) + + response = self.scalekit_client.roles.update_role( + env_id=self.env_id, + role_id=self.role_id, + role=update_role + ) + self.assertEqual(response[1].code().name, "OK") + self.assertTrue(response[0] is not None) + self.assertEqual(response[0].role.id, self.role_id) + self.assertEqual(response[0].role.display_name, updated_display_name) + self.assertEqual(response[0].role.description, "Original description") # Should remain unchanged + + def test_delete_role(self): + """ Method to test delete role """ + role_name = f"test_role_{self.faker.unique.random_number()}" + display_name = f"Test Role {self.faker.unique.random_number()}" + + role = CreateRole( + name=role_name, + display_name=display_name, + description="Test role for deletion" + ) + + create_response = self.scalekit_client.roles.create_role( + env_id=self.env_id, + role=role + ) + self.role_id = create_response[0].role.id + + response = self.scalekit_client.roles.delete_role( + env_id=self.env_id, + role_id=self.role_id + ) + self.assertEqual(response[1].code().name, "OK") + + # Verify role is deleted by trying to get it + try: + self.scalekit_client.roles.get_role( + env_id=self.env_id, + role_id=self.role_id + ) + self.fail("Role should have been deleted") + except Exception as exp: + # Expected behavior - role should not be found + self.assertTrue("not found" in str(exp) or "does not exist" in str(exp)) + self.role_id = None + + def test_delete_role_with_reassignment(self): + """ Method to test delete role with reassignment """ + # Create first role + role1_name = f"test_role_1_{self.faker.unique.random_number()}" + role1 = CreateRole( + name=role1_name, + display_name=f"Test Role 1 {self.faker.unique.random_number()}", + description="First test role" + ) + + create_response1 = self.scalekit_client.roles.create_role( + env_id=self.env_id, + role=role1 + ) + role1_id = create_response1[0].role.id + + # Create second role for reassignment + role2_name = f"test_role_2_{self.faker.unique.random_number()}" + role2 = CreateRole( + name=role2_name, + display_name=f"Test Role 2 {self.faker.unique.random_number()}", + description="Second test role for reassignment" + ) + + create_response2 = self.scalekit_client.roles.create_role( + env_id=self.env_id, + role=role2 + ) + role2_id = create_response2[0].role.id + + # Delete first role with reassignment to second role + response = self.scalekit_client.roles.delete_role( + env_id=self.env_id, + role_id=role1_id, + reassign_role_id=role2_id + ) + self.assertEqual(response[1].code().name, "OK") + + # Verify first role is deleted + try: + self.scalekit_client.roles.get_role( + env_id=self.env_id, + role_id=role1_id + ) + self.fail("Role should have been deleted") + except Exception as exp: + # Expected behavior - role should not be found + self.assertTrue("not found" in str(exp) or "does not exist" in str(exp)) + + # Verify second role still exists + get_response = self.scalekit_client.roles.get_role( + env_id=self.env_id, + role_id=role2_id + ) + self.assertEqual(get_response[1].code().name, "OK") + self.assertEqual(get_response[0].role.id, role2_id) + + # Clean up second role + self.scalekit_client.roles.delete_role( + env_id=self.env_id, + role_id=role2_id + ) + + def test_create_role_validation(self): + """ Method to test role creation validation """ + # Test with missing required fields + role = CreateRole( + display_name="Test Role without name" + # Missing name field + ) + + try: + self.scalekit_client.roles.create_role( + env_id=self.env_id, + role=role + ) + self.fail("Should have failed due to missing name") + except Exception as exp: + # Expected behavior - validation error + self.assertTrue("name" in str(exp).lower() or "required" in str(exp).lower()) + + def test_role_name_uniqueness(self): + """ Method to test role name uniqueness """ + role_name = f"unique_test_role_{self.faker.unique.random_number()}" + + role1 = CreateRole( + name=role_name, + display_name=f"Test Role 1 {self.faker.unique.random_number()}", + description="First role with same name" + ) + + role2 = CreateRole( + name=role_name, # Same name + display_name=f"Test Role 2 {self.faker.unique.random_number()}", + description="Second role with same name" + ) + + # Create first role + create_response1 = self.scalekit_client.roles.create_role( + env_id=self.env_id, + role=role1 + ) + self.assertEqual(create_response1[1].code().name, "OK") + role1_id = create_response1[0].role.id + + # Try to create second role with same name + try: + self.scalekit_client.roles.create_role( + env_id=self.env_id, + role=role2 + ) + self.fail("Should have failed due to duplicate name") + except Exception as exp: + # Expected behavior - duplicate name error + self.assertTrue("already exists" in str(exp) or "duplicate" in str(exp) or "unique" in str(exp)) + + # Clean up first role + self.scalekit_client.roles.delete_role( + env_id=self.env_id, + role_id=role1_id + ) + + def tearDown(self): + """ Method to clean up """ + if self.role_id: + try: + self.scalekit_client.roles.delete_role( + env_id=self.env_id, + role_id=self.role_id + ) + except Exception: + # Role might already be deleted or not exist + pass \ No newline at end of file