diff --git a/Makefile b/Makefile index 6701b64..bf5cb94 100644 --- a/Makefile +++ b/Makefile @@ -12,7 +12,7 @@ VENV_PYTHON := $(VENV_DIR)/bin/python VENV_PIP := $(VENV_PYTHON) -m pip PROTO_REPO_URL := https://github.com/scalekit-inc/scalekit.git -PROTO_REF ?= v0.1.116.0 +PROTO_REF ?= v0.1.121.2 PROTO_SUBDIR := proto TEMP_DIR := temp_scalekit diff --git a/scalekit/organization.py b/scalekit/organization.py index 95952d4..6a1a552 100644 --- a/scalekit/organization.py +++ b/scalekit/organization.py @@ -2,6 +2,7 @@ from google.protobuf import wrappers_pb2 from scalekit.core import CoreClient +from scalekit.v1.commons.commons_pb2 import TimeUnit from scalekit.v1.organizations.organizations_pb2 import ( ListOrganizationsRequest, ListOrganizationsResponse, @@ -20,6 +21,17 @@ UpdateOrganizationSettingsRequest, OrganizationUserManagementSettings, UpsertUserManagementSettingsRequest, + UpdateOrganizationSessionPolicyRequest, + UpdateOrganizationSessionPolicyResponse, + SessionPolicyType, + GetOrganizationSessionPolicyRequest, + GetOrganizationSessionPolicyResponse, + GetApplicationSessionPolicyRequest, + GetApplicationSessionPolicyResponse, + SearchOrganizationsRequest, + SearchOrganizationsResponse, + GetOrganizationUserManagementSettingsRequest, + GetOrganizationUserManagementSettingsResponse, ) from scalekit.v1.organizations.organizations_pb2_grpc import OrganizationServiceStub @@ -219,3 +231,115 @@ def upsert_user_management_settings(self, organization_id: str, max_allowed_user ) ) return response[0].settings + + def update_organization_session_policy( + self, + organization_id: str, + policy_source, + absolute_session_timeout: Optional[int] = None, + absolute_session_timeout_unit=None, + idle_session_timeout_enabled: Optional[bool] = None, + idle_session_timeout: Optional[int] = None, + idle_session_timeout_unit=None, + ) -> UpdateOrganizationSessionPolicyResponse: + """ + Method to update the session policy for an organization + + :param organization_id : Organization id + :type : ``` str ``` + :param policy_source : Session policy type (APPLICATION or CUSTOM) + :type : ``` SessionPolicyType ``` + :param absolute_session_timeout : Absolute session timeout value (optional) + :type : ``` int | None ``` + :param absolute_session_timeout_unit : Unit for absolute session timeout (optional) + :type : ``` TimeUnit | None ``` + :param idle_session_timeout_enabled : Whether idle session timeout is enabled (optional) + :type : ``` bool | None ``` + :param idle_session_timeout : Idle session timeout value (optional) + :type : ``` int | None ``` + :param idle_session_timeout_unit : Unit for idle session timeout (optional) + :type : ``` TimeUnit | None ``` + :returns: + Update Organization Session Policy Response + """ + request = UpdateOrganizationSessionPolicyRequest( + organization_id=organization_id, + policy_source=policy_source, + **({} if absolute_session_timeout is None else {"absolute_session_timeout": wrappers_pb2.Int32Value(value=absolute_session_timeout)}), + **({} if absolute_session_timeout_unit is None else {"absolute_session_timeout_unit": absolute_session_timeout_unit}), + **({} if idle_session_timeout_enabled is None else {"idle_session_timeout_enabled": wrappers_pb2.BoolValue(value=idle_session_timeout_enabled)}), + **({} if idle_session_timeout is None else {"idle_session_timeout": wrappers_pb2.Int32Value(value=idle_session_timeout)}), + **({} if idle_session_timeout_unit is None else {"idle_session_timeout_unit": idle_session_timeout_unit}), + ) + return self.core_client.grpc_exec( + self.organization_service.UpdateOrganizationSessionPolicy.with_call, + request, + ) + + def get_organization_session_policy(self, organization_id: str) -> GetOrganizationSessionPolicyResponse: + """ + Method to get the session policy for an organization + + :param organization_id : Organization id + :type : ``` str ``` + :returns: + Get Organization Session Policy Response + """ + return self.core_client.grpc_exec( + self.organization_service.GetOrganizationSessionPolicy.with_call, + GetOrganizationSessionPolicyRequest(organization_id=organization_id), + ) + + def get_application_session_policy(self, organization_id: str) -> GetApplicationSessionPolicyResponse: + """ + Method to get the application-level default session policy in the context of an organization + + :param organization_id : Organization id + :type : ``` str ``` + :returns: + Get Application Session Policy Response + """ + return self.core_client.grpc_exec( + self.organization_service.GetApplicationSessionPolicy.with_call, + GetApplicationSessionPolicyRequest(organization_id=organization_id), + ) + + def search_organizations( + self, + query: str, + page_size: int = 20, + page_token: Optional[str] = None, + ) -> SearchOrganizationsResponse: + """ + Method to search organizations by query + + :param query : Search query string + :type : ``` str ``` + :param page_size : Page size for pagination + :type : ``` int ``` + :param page_token : Page token for pagination + :type : ``` str | None ``` + :returns: + Search Organizations Response + """ + request = SearchOrganizationsRequest(query=query, page_size=page_size) + if page_token is not None: + request.page_token = page_token + return self.core_client.grpc_exec( + self.organization_service.SearchOrganization.with_call, + request, + ) + + def get_organization_user_management_setting(self, organization_id: str) -> GetOrganizationUserManagementSettingsResponse: + """ + Method to get the user management settings for an organization + + :param organization_id : Organization id + :type : ``` str ``` + :returns: + Get Organization User Management Settings Response + """ + return self.core_client.grpc_exec( + self.organization_service.GetOrganizationUserManagementSetting.with_call, + GetOrganizationUserManagementSettingsRequest(organization_id=organization_id), + ) diff --git a/scalekit/users.py b/scalekit/users.py index fdeec7c..f9ce7fd 100644 --- a/scalekit/users.py +++ b/scalekit/users.py @@ -2,6 +2,9 @@ from scalekit.core import CoreClient from scalekit.v1.users.users_pb2 import ( + AssignRoleRequest, + AssignUserRolesRequest, + AssignUserRolesResponse, CreateMembership, CreateMembershipRequest, CreateMembershipResponse, @@ -20,8 +23,13 @@ ListUserRolesResponse, ListUsersRequest, ListUsersResponse, + RemoveUserRoleRequest, ResendInviteRequest, ResendInviteResponse, + SearchOrganizationUsersRequest, + SearchOrganizationUsersResponse, + SearchUsersRequest, + SearchUsersResponse, UpdateMembership, UpdateMembershipRequest, UpdateMembershipResponse, @@ -463,4 +471,120 @@ def list_user_permissions( ), ) + def search_users( + self, + query: str, + page_size: int = 20, + page_token: Optional[str] = None, + ) -> SearchUsersResponse: + """ + Method to search users by query + + :param query : Search query string + :type : ``` str ``` + :param page_size : Page size for pagination + :type : ``` int ``` + :param page_token : Page token for pagination + :type : ``` str | None ``` + + :returns: + Search Users Response + """ + request = SearchUsersRequest(query=query, page_size=page_size) + if page_token is not None: + request.page_token = page_token + return self.core_client.grpc_exec( + self.user_service.SearchUsers.with_call, + request, + ) + + def search_organization_users( + self, + organization_id: str, + query: str, + page_size: int = 20, + page_token: Optional[str] = None, + ) -> SearchOrganizationUsersResponse: + """ + Method to search users within an organization by query + + :param organization_id : Organization id to search users in + :type : ``` str ``` + :param query : Search query string + :type : ``` str ``` + :param page_size : Page size for pagination + :type : ``` int ``` + :param page_token : Page token for pagination + :type : ``` str | None ``` + + :returns: + Search Organization Users Response + """ + request = SearchOrganizationUsersRequest( + organization_id=organization_id, + query=query, + page_size=page_size, + ) + if page_token is not None: + request.page_token = page_token + return self.core_client.grpc_exec( + self.user_service.SearchOrganizationUsers.with_call, + request, + ) + + def assign_user_roles( + self, + organization_id: str, + user_id: str, + role_ids: list, + ) -> AssignUserRolesResponse: + """ + Method to assign roles to a user in an organization + + :param organization_id : Organization id + :type : ``` str ``` + :param user_id : User id to assign roles to + :type : ``` str ``` + :param role_ids : List of role IDs to assign + :type : ``` list ``` + + :returns: + Assign User Roles Response + """ + roles = [AssignRoleRequest(id=role_id) for role_id in role_ids] + return self.core_client.grpc_exec( + self.user_service.AssignUserRoles.with_call, + AssignUserRolesRequest( + organization_id=organization_id, + user_id=user_id, + roles=roles, + ), + ) + + def remove_user_role( + self, + organization_id: str, + user_id: str, + role_id: str, + ): + """ + Method to remove a role from a user in an organization + + :param organization_id : Organization id + :type : ``` str ``` + :param user_id : User id to remove role from + :type : ``` str ``` + :param role_id : Role name/id to remove + :type : ``` str ``` + :returns: + None + """ + return self.core_client.grpc_exec( + self.user_service.RemoveUserRole.with_call, + RemoveUserRoleRequest( + organization_id=organization_id, + user_id=user_id, + role_name=role_id, + ), + ) diff --git a/scalekit/v1/agentkit_logs/__init__.py b/scalekit/v1/agentkit_logs/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/scalekit/v1/agentkit_logs/agentkit_analytics_pb2.py b/scalekit/v1/agentkit_logs/agentkit_analytics_pb2.py new file mode 100644 index 0000000..ca09db0 --- /dev/null +++ b/scalekit/v1/agentkit_logs/agentkit_analytics_pb2.py @@ -0,0 +1,62 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: scalekit/v1/agentkit_logs/agentkit_analytics.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.api import field_behavior_pb2 as google_dot_api_dot_field__behavior__pb2 +from google.api import visibility_pb2 as google_dot_api_dot_visibility__pb2 +from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 +from protoc_gen_openapiv2.options import annotations_pb2 as protoc__gen__openapiv2_dot_options_dot_annotations__pb2 +from scalekit.v1.options import options_pb2 as scalekit_dot_v1_dot_options_dot_options__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n2scalekit/v1/agentkit_logs/agentkit_analytics.proto\x12\x19scalekit.v1.agentkit_logs\x1a\x1b\x62uf/validate/validate.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1bgoogle/api/visibility.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a.protoc-gen-openapiv2/options/annotations.proto\x1a!scalekit/v1/options/options.proto\"\xbe\x04\n\x17GetOverviewStatsRequest\x12>\n\nstart_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x02R\tstartTime\x12:\n\x08\x65nd_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x02R\x07\x65ndTime\x12O\n\x08provider\x18\x03 \x03(\tB3\x92\x41\x30\x32.Filter by connector provider slug, e.g. gmail.R\x08provider\x12g\n\x06status\x18\x04 \x03(\tBO\x92\x41L2JFilter by status. Allowed values: success, provider_error, platform_error.R\x06status\x12>\n\nerror_code\x18\x05 \x03(\tB\x1f\x92\x41\x1c\x32\x1a\x46ilter by error code slug.R\terrorCode\x12\x98\x01\n\x0f\x63onnection_name\x18\x06 \x01(\tBj\x92\x41_2OFilter by connection name (partial, case-insensitive match). e.g. \'gmail-prod\'.J\x0c\"gmail-prod\"\xbaH\x05r\x03\x18\xff\x01H\x00R\x0e\x63onnectionName\x88\x01\x01\x42\x12\n\x10_connection_name\"\xa5\x03\n\rOverviewStats\x12\x14\n\x05total\x18\x01 \x01(\x03R\x05total\x12\x18\n\x07success\x18\x02 \x01(\x03R\x07success\x12\x16\n\x06\x65rrors\x18\x03 \x01(\x03R\x06\x65rrors\x12\'\n\x0fprovider_errors\x18\x04 \x01(\x03R\x0eproviderErrors\x12\'\n\x0fplatform_errors\x18\x05 \x01(\x03R\x0eplatformErrors\x12Q\n\x0ftop_error_codes\x18\x06 \x03(\x0b\x32).scalekit.v1.agentkit_logs.ErrorCodeCountR\rtopErrorCodes\x12Y\n\x13\x63onnector_breakdown\x18\x07 \x03(\x0b\x32(.scalekit.v1.agentkit_logs.ConnectorStatR\x12\x63onnectorBreakdown\x12L\n\x0btime_series\x18\x08 \x03(\x0b\x32+.scalekit.v1.agentkit_logs.TimeSeriesBucketR\ntimeSeries\"E\n\x0e\x45rrorCodeCount\x12\x1d\n\nerror_code\x18\x01 \x01(\tR\terrorCode\x12\x14\n\x05\x63ount\x18\x02 \x01(\x03R\x05\x63ount\"\xc5\x01\n\rConnectorStat\x12\x1a\n\x08provider\x18\x01 \x01(\tR\x08provider\x12\x14\n\x05total\x18\x02 \x01(\x03R\x05total\x12\x18\n\x07success\x18\x03 \x01(\x03R\x07success\x12\x16\n\x06\x65rrors\x18\x04 \x01(\x03R\x06\x65rrors\x12\'\n\x0fprovider_errors\x18\x05 \x01(\x03R\x0eproviderErrors\x12\'\n\x0fplatform_errors\x18\x06 \x01(\x03R\x0eplatformErrors\"\xc8\x03\n\x10TimeSeriesBucket\x12\x32\n\x06\x62ucket\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x06\x62ucket\x12\x14\n\x05total\x18\x02 \x01(\x03R\x05total\x12\x18\n\x07success\x18\x03 \x01(\x03R\x07success\x12\x16\n\x06\x65rrors\x18\x04 \x01(\x03R\x06\x65rrors\x12\xe5\x01\n\x17\x62ucket_duration_seconds\x18\x05 \x01(\x03\x42\xac\x01\x92\x41\xa8\x01\x32\xa5\x01Width of this bucket in seconds. The server picks granularity adaptively (5m, 15m, 30m, 1h, 2h, 6h, 12h, 1d, 3d, or 7d) so that any window returns at most 30 points.R\x15\x62ucketDurationSeconds\x12\'\n\x0fprovider_errors\x18\x06 \x01(\x03R\x0eproviderErrors\x12\'\n\x0fplatform_errors\x18\x07 \x01(\x03R\x0eplatformErrors2\xf7\x03\n\x18\x41gentkitAnalyticsService\x12\xc1\x03\n\x10GetOverviewStats\x12\x32.scalekit.v1.agentkit_logs.GetOverviewStatsRequest\x1a(.scalekit.v1.agentkit_logs.OverviewStats\"\xce\x02\x92\x41\x8a\x02\n\x12\x41gentKit Analytics\x12!Get tool call overview statistics\x1a~Returns aggregated tool call metrics for the environment over the specified time window. Used to power the Overview dashboard.J3\n\x03\x32\x30\x30\x12,\n*Overview statistics retrieved successfullyJ\x1c\n\x03\x34\x30\x30\x12\x15\n\x13Invalid time window\x82\xb5\x18\x02\x18T\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02%\x12#/api/v1/agentkit/analytics/overview\x1a\x17\x92\x41\x14\n\x12\x41gentKit AnalyticsB9Z7github.com/scalekit-inc/scalekit/pkg/grpc/agentkit_logsb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'scalekit.v1.agentkit_logs.agentkit_analytics_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'Z7github.com/scalekit-inc/scalekit/pkg/grpc/agentkit_logs' + _globals['_GETOVERVIEWSTATSREQUEST'].fields_by_name['start_time']._loaded_options = None + _globals['_GETOVERVIEWSTATSREQUEST'].fields_by_name['start_time']._serialized_options = b'\340A\002' + _globals['_GETOVERVIEWSTATSREQUEST'].fields_by_name['end_time']._loaded_options = None + _globals['_GETOVERVIEWSTATSREQUEST'].fields_by_name['end_time']._serialized_options = b'\340A\002' + _globals['_GETOVERVIEWSTATSREQUEST'].fields_by_name['provider']._loaded_options = None + _globals['_GETOVERVIEWSTATSREQUEST'].fields_by_name['provider']._serialized_options = b'\222A02.Filter by connector provider slug, e.g. gmail.' + _globals['_GETOVERVIEWSTATSREQUEST'].fields_by_name['status']._loaded_options = None + _globals['_GETOVERVIEWSTATSREQUEST'].fields_by_name['status']._serialized_options = b'\222AL2JFilter by status. Allowed values: success, provider_error, platform_error.' + _globals['_GETOVERVIEWSTATSREQUEST'].fields_by_name['error_code']._loaded_options = None + _globals['_GETOVERVIEWSTATSREQUEST'].fields_by_name['error_code']._serialized_options = b'\222A\0342\032Filter by error code slug.' + _globals['_GETOVERVIEWSTATSREQUEST'].fields_by_name['connection_name']._loaded_options = None + _globals['_GETOVERVIEWSTATSREQUEST'].fields_by_name['connection_name']._serialized_options = b'\222A_2OFilter by connection name (partial, case-insensitive match). e.g. \'gmail-prod\'.J\014\"gmail-prod\"\272H\005r\003\030\377\001' + _globals['_TIMESERIESBUCKET'].fields_by_name['bucket_duration_seconds']._loaded_options = None + _globals['_TIMESERIESBUCKET'].fields_by_name['bucket_duration_seconds']._serialized_options = b'\222A\250\0012\245\001Width of this bucket in seconds. The server picks granularity adaptively (5m, 15m, 30m, 1h, 2h, 6h, 12h, 1d, 3d, or 7d) so that any window returns at most 30 points.' + _globals['_AGENTKITANALYTICSSERVICE']._loaded_options = None + _globals['_AGENTKITANALYTICSSERVICE']._serialized_options = b'\222A\024\n\022AgentKit Analytics' + _globals['_AGENTKITANALYTICSSERVICE'].methods_by_name['GetOverviewStats']._loaded_options = None + _globals['_AGENTKITANALYTICSSERVICE'].methods_by_name['GetOverviewStats']._serialized_options = b'\222A\212\002\n\022AgentKit Analytics\022!Get tool call overview statistics\032~Returns aggregated tool call metrics for the environment over the specified time window. Used to power the Overview dashboard.J3\n\003200\022,\n*Overview statistics retrieved successfullyJ\034\n\003400\022\025\n\023Invalid time window\202\265\030\002\030T\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\002%\022#/api/v1/agentkit/analytics/overview' + _globals['_GETOVERVIEWSTATSREQUEST']._serialized_start=319 + _globals['_GETOVERVIEWSTATSREQUEST']._serialized_end=893 + _globals['_OVERVIEWSTATS']._serialized_start=896 + _globals['_OVERVIEWSTATS']._serialized_end=1317 + _globals['_ERRORCODECOUNT']._serialized_start=1319 + _globals['_ERRORCODECOUNT']._serialized_end=1388 + _globals['_CONNECTORSTAT']._serialized_start=1391 + _globals['_CONNECTORSTAT']._serialized_end=1588 + _globals['_TIMESERIESBUCKET']._serialized_start=1591 + _globals['_TIMESERIESBUCKET']._serialized_end=2047 + _globals['_AGENTKITANALYTICSSERVICE']._serialized_start=2050 + _globals['_AGENTKITANALYTICSSERVICE']._serialized_end=2553 +# @@protoc_insertion_point(module_scope) diff --git a/scalekit/v1/agentkit_logs/agentkit_analytics_pb2.pyi b/scalekit/v1/agentkit_logs/agentkit_analytics_pb2.pyi new file mode 100644 index 0000000..363b77b --- /dev/null +++ b/scalekit/v1/agentkit_logs/agentkit_analytics_pb2.pyi @@ -0,0 +1,91 @@ +from buf.validate import validate_pb2 as _validate_pb2 +from google.api import annotations_pb2 as _annotations_pb2 +from google.api import field_behavior_pb2 as _field_behavior_pb2 +from google.api import visibility_pb2 as _visibility_pb2 +from google.protobuf import timestamp_pb2 as _timestamp_pb2 +from protoc_gen_openapiv2.options import annotations_pb2 as _annotations_pb2_1 +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 GetOverviewStatsRequest(_message.Message): + __slots__ = ("start_time", "end_time", "provider", "status", "error_code", "connection_name") + START_TIME_FIELD_NUMBER: _ClassVar[int] + END_TIME_FIELD_NUMBER: _ClassVar[int] + PROVIDER_FIELD_NUMBER: _ClassVar[int] + STATUS_FIELD_NUMBER: _ClassVar[int] + ERROR_CODE_FIELD_NUMBER: _ClassVar[int] + CONNECTION_NAME_FIELD_NUMBER: _ClassVar[int] + start_time: _timestamp_pb2.Timestamp + end_time: _timestamp_pb2.Timestamp + provider: _containers.RepeatedScalarFieldContainer[str] + status: _containers.RepeatedScalarFieldContainer[str] + error_code: _containers.RepeatedScalarFieldContainer[str] + connection_name: str + def __init__(self, start_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., end_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., provider: _Optional[_Iterable[str]] = ..., status: _Optional[_Iterable[str]] = ..., error_code: _Optional[_Iterable[str]] = ..., connection_name: _Optional[str] = ...) -> None: ... + +class OverviewStats(_message.Message): + __slots__ = ("total", "success", "errors", "provider_errors", "platform_errors", "top_error_codes", "connector_breakdown", "time_series") + TOTAL_FIELD_NUMBER: _ClassVar[int] + SUCCESS_FIELD_NUMBER: _ClassVar[int] + ERRORS_FIELD_NUMBER: _ClassVar[int] + PROVIDER_ERRORS_FIELD_NUMBER: _ClassVar[int] + PLATFORM_ERRORS_FIELD_NUMBER: _ClassVar[int] + TOP_ERROR_CODES_FIELD_NUMBER: _ClassVar[int] + CONNECTOR_BREAKDOWN_FIELD_NUMBER: _ClassVar[int] + TIME_SERIES_FIELD_NUMBER: _ClassVar[int] + total: int + success: int + errors: int + provider_errors: int + platform_errors: int + top_error_codes: _containers.RepeatedCompositeFieldContainer[ErrorCodeCount] + connector_breakdown: _containers.RepeatedCompositeFieldContainer[ConnectorStat] + time_series: _containers.RepeatedCompositeFieldContainer[TimeSeriesBucket] + def __init__(self, total: _Optional[int] = ..., success: _Optional[int] = ..., errors: _Optional[int] = ..., provider_errors: _Optional[int] = ..., platform_errors: _Optional[int] = ..., top_error_codes: _Optional[_Iterable[_Union[ErrorCodeCount, _Mapping]]] = ..., connector_breakdown: _Optional[_Iterable[_Union[ConnectorStat, _Mapping]]] = ..., time_series: _Optional[_Iterable[_Union[TimeSeriesBucket, _Mapping]]] = ...) -> None: ... + +class ErrorCodeCount(_message.Message): + __slots__ = ("error_code", "count") + ERROR_CODE_FIELD_NUMBER: _ClassVar[int] + COUNT_FIELD_NUMBER: _ClassVar[int] + error_code: str + count: int + def __init__(self, error_code: _Optional[str] = ..., count: _Optional[int] = ...) -> None: ... + +class ConnectorStat(_message.Message): + __slots__ = ("provider", "total", "success", "errors", "provider_errors", "platform_errors") + PROVIDER_FIELD_NUMBER: _ClassVar[int] + TOTAL_FIELD_NUMBER: _ClassVar[int] + SUCCESS_FIELD_NUMBER: _ClassVar[int] + ERRORS_FIELD_NUMBER: _ClassVar[int] + PROVIDER_ERRORS_FIELD_NUMBER: _ClassVar[int] + PLATFORM_ERRORS_FIELD_NUMBER: _ClassVar[int] + provider: str + total: int + success: int + errors: int + provider_errors: int + platform_errors: int + def __init__(self, provider: _Optional[str] = ..., total: _Optional[int] = ..., success: _Optional[int] = ..., errors: _Optional[int] = ..., provider_errors: _Optional[int] = ..., platform_errors: _Optional[int] = ...) -> None: ... + +class TimeSeriesBucket(_message.Message): + __slots__ = ("bucket", "total", "success", "errors", "bucket_duration_seconds", "provider_errors", "platform_errors") + BUCKET_FIELD_NUMBER: _ClassVar[int] + TOTAL_FIELD_NUMBER: _ClassVar[int] + SUCCESS_FIELD_NUMBER: _ClassVar[int] + ERRORS_FIELD_NUMBER: _ClassVar[int] + BUCKET_DURATION_SECONDS_FIELD_NUMBER: _ClassVar[int] + PROVIDER_ERRORS_FIELD_NUMBER: _ClassVar[int] + PLATFORM_ERRORS_FIELD_NUMBER: _ClassVar[int] + bucket: _timestamp_pb2.Timestamp + total: int + success: int + errors: int + bucket_duration_seconds: int + provider_errors: int + platform_errors: int + def __init__(self, bucket: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., total: _Optional[int] = ..., success: _Optional[int] = ..., errors: _Optional[int] = ..., bucket_duration_seconds: _Optional[int] = ..., provider_errors: _Optional[int] = ..., platform_errors: _Optional[int] = ...) -> None: ... diff --git a/scalekit/v1/agentkit_logs/agentkit_analytics_pb2_grpc.py b/scalekit/v1/agentkit_logs/agentkit_analytics_pb2_grpc.py new file mode 100644 index 0000000..7119e59 --- /dev/null +++ b/scalekit/v1/agentkit_logs/agentkit_analytics_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.agentkit_logs import agentkit_analytics_pb2 as scalekit_dot_v1_dot_agentkit__logs_dot_agentkit__analytics__pb2 + + +class AgentkitAnalyticsServiceStub(object): + """Missing associated documentation comment in .proto file.""" + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.GetOverviewStats = channel.unary_unary( + '/scalekit.v1.agentkit_logs.AgentkitAnalyticsService/GetOverviewStats', + request_serializer=scalekit_dot_v1_dot_agentkit__logs_dot_agentkit__analytics__pb2.GetOverviewStatsRequest.SerializeToString, + response_deserializer=scalekit_dot_v1_dot_agentkit__logs_dot_agentkit__analytics__pb2.OverviewStats.FromString, + ) + + +class AgentkitAnalyticsServiceServicer(object): + """Missing associated documentation comment in .proto file.""" + + def GetOverviewStats(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_AgentkitAnalyticsServiceServicer_to_server(servicer, server): + rpc_method_handlers = { + 'GetOverviewStats': grpc.unary_unary_rpc_method_handler( + servicer.GetOverviewStats, + request_deserializer=scalekit_dot_v1_dot_agentkit__logs_dot_agentkit__analytics__pb2.GetOverviewStatsRequest.FromString, + response_serializer=scalekit_dot_v1_dot_agentkit__logs_dot_agentkit__analytics__pb2.OverviewStats.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'scalekit.v1.agentkit_logs.AgentkitAnalyticsService', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) + + + # This class is part of an EXPERIMENTAL API. +class AgentkitAnalyticsService(object): + """Missing associated documentation comment in .proto file.""" + + @staticmethod + def GetOverviewStats(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.agentkit_logs.AgentkitAnalyticsService/GetOverviewStats', + scalekit_dot_v1_dot_agentkit__logs_dot_agentkit__analytics__pb2.GetOverviewStatsRequest.SerializeToString, + scalekit_dot_v1_dot_agentkit__logs_dot_agentkit__analytics__pb2.OverviewStats.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) diff --git a/scalekit/v1/agentkit_logs/agentkit_logs_pb2.py b/scalekit/v1/agentkit_logs/agentkit_logs_pb2.py new file mode 100644 index 0000000..67c4f5e --- /dev/null +++ b/scalekit/v1/agentkit_logs/agentkit_logs_pb2.py @@ -0,0 +1,80 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: scalekit/v1/agentkit_logs/agentkit_logs.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.api import field_behavior_pb2 as google_dot_api_dot_field__behavior__pb2 +from google.api import visibility_pb2 as google_dot_api_dot_visibility__pb2 +from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 +from protoc_gen_openapiv2.options import annotations_pb2 as protoc__gen__openapiv2_dot_options_dot_annotations__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/agentkit_logs/agentkit_logs.proto\x12\x19scalekit.v1.agentkit_logs\x1a\x1b\x62uf/validate/validate.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1bgoogle/api/visibility.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a.protoc-gen-openapiv2/options/annotations.proto\x1a!scalekit/v1/options/options.proto\"\xc6\t\n\x17ListToolCallLogsRequest\x12\x39\n\nstart_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tstartTime\x12\x35\n\x08\x65nd_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x07\x65ndTime\x12g\n\x06status\x18\x03 \x03(\tBO\x92\x41L2JFilter by status. Allowed values: success, provider_error, platform_error.R\x06status\x12O\n\x08provider\x18\x04 \x03(\tB3\x92\x41\x30\x32.Filter by connector provider slug, e.g. gmail.R\x08provider\x12Z\n\rconnection_id\x18\x05 \x01(\tB0\x92\x41-2\x18\x46ilter by connection ID.J\x11\"conn_1234567890\"H\x00R\x0c\x63onnectionId\x88\x01\x01\x12l\n\x14\x63onnected_account_id\x18\x06 \x01(\tB5\x92\x41\x32\x32\x1f\x46ilter by connected account ID.J\x0f\"ca_1234567890\"H\x01R\x12\x63onnectedAccountId\x88\x01\x01\x12{\n\nidentifier\x18\x07 \x01(\tBV\x92\x41K2IFilter by connected account identifier (customer-defined end-user label).\xbaH\x05r\x03\x18\xff\x01H\x02R\nidentifier\x88\x01\x01\x12\x86\x01\n\x0c\x61gent_run_id\x18\x08 \x01(\tB_\x92\x41T2DFilter by agent run ID to see all tool calls for a single agent run.J\x0c\"run_abc123\"\xbaH\x05r\x03\x18\xff\x01H\x03R\nagentRunId\x88\x01\x01\x12\\\n\tpage_size\x18\t \x01(\rB?\x92\x41<2:Maximum number of records to return (1\xe2\x80\x93\x31\x30\x30, default 20).R\x08pageSize\x12i\n\npage_token\x18\n \x01(\tBJ\x92\x41G2EOpaque pagination token returned by a previous ListToolCallLogs call.R\tpageToken\x12\x86\x01\n\x0f\x63onnection_name\x18\x0b \x01(\tBX\x92\x41M2=Filter by connection name (partial match). e.g. \'gmail-prod\'.J\x0c\"gmail-prod\"\xbaH\x05r\x03\x18\xff\x01H\x04R\x0e\x63onnectionName\x88\x01\x01\x42\x10\n\x0e_connection_idB\x17\n\x15_connected_account_idB\r\n\x0b_identifierB\x0f\n\r_agent_run_idB\x12\n\x10_connection_name\"\xb4\x02\n\x18ListToolCallLogsResponse\x12L\n\x0etool_call_logs\x18\x01 \x03(\x0b\x32&.scalekit.v1.agentkit_logs.ToolCallLogR\x0ctoolCallLogs\x12&\n\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken\x12\x1d\n\ntotal_size\x18\x03 \x01(\x03R\ttotalSize\x12\x82\x01\n\x0fprev_page_token\x18\x04 \x01(\tBZ\x92\x41W2UPagination token to fetch the previous page of results. Empty when on the first page.R\rprevPageToken\"z\n\x15GetToolCallLogRequest\x12\x61\n\x0c\x65xecution_id\x18\x01 \x01(\tB>\x92\x41/2\x1e\x45xecution ID of the tool call.J\r\"exec_abc123\"\xe0\x41\x02\xbaH\x06r\x04\x10\x01\x18@R\x0b\x65xecutionId\"\xf8\x07\n\x0bToolCallLog\x12\x46\n\x02id\x18\x01 \x01(\tB6\x92\x41\x33\x32\x1fUnique tool call log record ID.J\x10\"tcl_1234567890\"R\x02id\x12%\n\x0e\x65nvironment_id\x18\x02 \x01(\tR\renvironmentId\x12O\n\x0c\x65xecution_id\x18\x03 \x01(\tB,\x92\x41)2\'Unique execution ID for this tool call.R\x0b\x65xecutionId\x12%\n\x0c\x61gent_run_id\x18\x04 \x01(\tH\x00R\nagentRunId\x88\x01\x01\x12\x1b\n\ttool_name\x18\x05 \x01(\tR\x08toolName\x12\x1a\n\x08provider\x18\x06 \x01(\tR\x08provider\x12\x30\n\x14\x63onnected_account_id\x18\x07 \x01(\tR\x12\x63onnectedAccountId\x12#\n\rconnection_id\x18\x08 \x01(\tR\x0c\x63onnectionId\x12\'\n\x0f\x63onnection_name\x18\t \x01(\tR\x0e\x63onnectionName\x12\x1e\n\nidentifier\x18\n \x01(\tR\nidentifier\x12\x17\n\x07user_id\x18\x0b \x01(\tR\x06userId\x12,\n\x0forganization_id\x18\x0c \x01(\tH\x01R\x0eorganizationId\x88\x01\x01\x12;\n\x06source\x18\r \x01(\tB#\x92\x41 2\x1eInvocation source: API or MCP.R\x06source\x12Q\n\x06status\x18\x0e \x01(\tB9\x92\x41\x36\x32\x34Outcome: success, provider_error, or platform_error.R\x06status\x12\x1d\n\nerror_tier\x18\x0f \x01(\tR\terrorTier\x12\x1d\n\nerror_code\x18\x10 \x01(\tR\terrorCode\x12#\n\rerror_message\x18\x11 \x01(\tR\x0c\x65rrorMessage\x12\x1f\n\x0b\x64uration_ms\x18\x12 \x01(\x03R\ndurationMs\x12\x39\n\nstarted_at\x18\x13 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tstartedAt\x12]\n\x0cworkspace_id\x18\x14 \x01(\tB5\x92\x41\x32\x32\x1eWorkspace this log belongs to.J\x10\"wks_1234567890\"H\x02R\x0bworkspaceId\x88\x01\x01\x42\x0f\n\r_agent_run_idB\x12\n\x10_organization_idB\x0f\n\r_workspace_id2\xd7\x06\n\x13\x41gentkitLogsService\x12\xba\x03\n\x10ListToolCallLogs\x12\x32.scalekit.v1.agentkit_logs.ListToolCallLogsRequest\x1a\x33.scalekit.v1.agentkit_logs.ListToolCallLogsResponse\"\xbc\x02\x92\x41\xfc\x01\n\rAgentKit Logs\x12\x13List tool call logs\x1a\x80\x01Returns paginated tool call execution records for the environment. Filter by time range, status, provider, or connected account.J.\n\x03\x32\x30\x30\x12\'\n%Tool call logs retrieved successfullyJ#\n\x03\x34\x30\x30\x12\x1c\n\x1aInvalid request parameters\x82\xb5\x18\x02\x18T\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02!\x12\x1f/api/v1/agentkit/tool_call_logs\x12\xee\x02\n\x0eGetToolCallLog\x12\x30.scalekit.v1.agentkit_logs.GetToolCallLogRequest\x1a&.scalekit.v1.agentkit_logs.ToolCallLog\"\x81\x02\x92\x41\xb2\x01\n\rAgentKit Logs\x12\x13Get a tool call log\x1a None: ... + +class ListToolCallLogsResponse(_message.Message): + __slots__ = ("tool_call_logs", "next_page_token", "total_size", "prev_page_token") + TOOL_CALL_LOGS_FIELD_NUMBER: _ClassVar[int] + NEXT_PAGE_TOKEN_FIELD_NUMBER: _ClassVar[int] + TOTAL_SIZE_FIELD_NUMBER: _ClassVar[int] + PREV_PAGE_TOKEN_FIELD_NUMBER: _ClassVar[int] + tool_call_logs: _containers.RepeatedCompositeFieldContainer[ToolCallLog] + next_page_token: str + total_size: int + prev_page_token: str + def __init__(self, tool_call_logs: _Optional[_Iterable[_Union[ToolCallLog, _Mapping]]] = ..., next_page_token: _Optional[str] = ..., total_size: _Optional[int] = ..., prev_page_token: _Optional[str] = ...) -> None: ... + +class GetToolCallLogRequest(_message.Message): + __slots__ = ("execution_id",) + EXECUTION_ID_FIELD_NUMBER: _ClassVar[int] + execution_id: str + def __init__(self, execution_id: _Optional[str] = ...) -> None: ... + +class ToolCallLog(_message.Message): + __slots__ = ("id", "environment_id", "execution_id", "agent_run_id", "tool_name", "provider", "connected_account_id", "connection_id", "connection_name", "identifier", "user_id", "organization_id", "source", "status", "error_tier", "error_code", "error_message", "duration_ms", "started_at", "workspace_id") + ID_FIELD_NUMBER: _ClassVar[int] + ENVIRONMENT_ID_FIELD_NUMBER: _ClassVar[int] + EXECUTION_ID_FIELD_NUMBER: _ClassVar[int] + AGENT_RUN_ID_FIELD_NUMBER: _ClassVar[int] + TOOL_NAME_FIELD_NUMBER: _ClassVar[int] + PROVIDER_FIELD_NUMBER: _ClassVar[int] + CONNECTED_ACCOUNT_ID_FIELD_NUMBER: _ClassVar[int] + CONNECTION_ID_FIELD_NUMBER: _ClassVar[int] + CONNECTION_NAME_FIELD_NUMBER: _ClassVar[int] + IDENTIFIER_FIELD_NUMBER: _ClassVar[int] + USER_ID_FIELD_NUMBER: _ClassVar[int] + ORGANIZATION_ID_FIELD_NUMBER: _ClassVar[int] + SOURCE_FIELD_NUMBER: _ClassVar[int] + STATUS_FIELD_NUMBER: _ClassVar[int] + ERROR_TIER_FIELD_NUMBER: _ClassVar[int] + ERROR_CODE_FIELD_NUMBER: _ClassVar[int] + ERROR_MESSAGE_FIELD_NUMBER: _ClassVar[int] + DURATION_MS_FIELD_NUMBER: _ClassVar[int] + STARTED_AT_FIELD_NUMBER: _ClassVar[int] + WORKSPACE_ID_FIELD_NUMBER: _ClassVar[int] + id: str + environment_id: str + execution_id: str + agent_run_id: str + tool_name: str + provider: str + connected_account_id: str + connection_id: str + connection_name: str + identifier: str + user_id: str + organization_id: str + source: str + status: str + error_tier: str + error_code: str + error_message: str + duration_ms: int + started_at: _timestamp_pb2.Timestamp + workspace_id: str + def __init__(self, id: _Optional[str] = ..., environment_id: _Optional[str] = ..., execution_id: _Optional[str] = ..., agent_run_id: _Optional[str] = ..., tool_name: _Optional[str] = ..., provider: _Optional[str] = ..., connected_account_id: _Optional[str] = ..., connection_id: _Optional[str] = ..., connection_name: _Optional[str] = ..., identifier: _Optional[str] = ..., user_id: _Optional[str] = ..., organization_id: _Optional[str] = ..., source: _Optional[str] = ..., status: _Optional[str] = ..., error_tier: _Optional[str] = ..., error_code: _Optional[str] = ..., error_message: _Optional[str] = ..., duration_ms: _Optional[int] = ..., started_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., workspace_id: _Optional[str] = ...) -> None: ... diff --git a/scalekit/v1/agentkit_logs/agentkit_logs_pb2_grpc.py b/scalekit/v1/agentkit_logs/agentkit_logs_pb2_grpc.py new file mode 100644 index 0000000..384ee32 --- /dev/null +++ b/scalekit/v1/agentkit_logs/agentkit_logs_pb2_grpc.py @@ -0,0 +1,99 @@ +# 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.agentkit_logs import agentkit_logs_pb2 as scalekit_dot_v1_dot_agentkit__logs_dot_agentkit__logs__pb2 + + +class AgentkitLogsServiceStub(object): + """Missing associated documentation comment in .proto file.""" + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.ListToolCallLogs = channel.unary_unary( + '/scalekit.v1.agentkit_logs.AgentkitLogsService/ListToolCallLogs', + request_serializer=scalekit_dot_v1_dot_agentkit__logs_dot_agentkit__logs__pb2.ListToolCallLogsRequest.SerializeToString, + response_deserializer=scalekit_dot_v1_dot_agentkit__logs_dot_agentkit__logs__pb2.ListToolCallLogsResponse.FromString, + ) + self.GetToolCallLog = channel.unary_unary( + '/scalekit.v1.agentkit_logs.AgentkitLogsService/GetToolCallLog', + request_serializer=scalekit_dot_v1_dot_agentkit__logs_dot_agentkit__logs__pb2.GetToolCallLogRequest.SerializeToString, + response_deserializer=scalekit_dot_v1_dot_agentkit__logs_dot_agentkit__logs__pb2.ToolCallLog.FromString, + ) + + +class AgentkitLogsServiceServicer(object): + """Missing associated documentation comment in .proto file.""" + + def ListToolCallLogs(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 GetToolCallLog(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_AgentkitLogsServiceServicer_to_server(servicer, server): + rpc_method_handlers = { + 'ListToolCallLogs': grpc.unary_unary_rpc_method_handler( + servicer.ListToolCallLogs, + request_deserializer=scalekit_dot_v1_dot_agentkit__logs_dot_agentkit__logs__pb2.ListToolCallLogsRequest.FromString, + response_serializer=scalekit_dot_v1_dot_agentkit__logs_dot_agentkit__logs__pb2.ListToolCallLogsResponse.SerializeToString, + ), + 'GetToolCallLog': grpc.unary_unary_rpc_method_handler( + servicer.GetToolCallLog, + request_deserializer=scalekit_dot_v1_dot_agentkit__logs_dot_agentkit__logs__pb2.GetToolCallLogRequest.FromString, + response_serializer=scalekit_dot_v1_dot_agentkit__logs_dot_agentkit__logs__pb2.ToolCallLog.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'scalekit.v1.agentkit_logs.AgentkitLogsService', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) + + + # This class is part of an EXPERIMENTAL API. +class AgentkitLogsService(object): + """Missing associated documentation comment in .proto file.""" + + @staticmethod + def ListToolCallLogs(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.agentkit_logs.AgentkitLogsService/ListToolCallLogs', + scalekit_dot_v1_dot_agentkit__logs_dot_agentkit__logs__pb2.ListToolCallLogsRequest.SerializeToString, + scalekit_dot_v1_dot_agentkit__logs_dot_agentkit__logs__pb2.ListToolCallLogsResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def GetToolCallLog(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.agentkit_logs.AgentkitLogsService/GetToolCallLog', + scalekit_dot_v1_dot_agentkit__logs_dot_agentkit__logs__pb2.GetToolCallLogRequest.SerializeToString, + scalekit_dot_v1_dot_agentkit__logs_dot_agentkit__logs__pb2.ToolCallLog.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 d58e5db..f7dfa04 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\"0\n\x16ListAuthMethodsRequest\x12\x16\n\x06intent\x18\x01 \x01(\tR\x06intent\"Z\n\x17ListAuthMethodsResponse\x12?\n\x0c\x61uth_methods\x18\x01 \x03(\x0b\x32\x1c.scalekit.v1.auth.AuthMethodR\x0b\x61uthMethods\"\x89\t\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\x12\x1a\n\x08provider\x18\x03 \x01(\tR\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\x12\xa3\x01\n!enable_webauthn_auto_registration\x18\x07 \x01(\x08\x42S\x92\x41P2GIndicates if WebAuthn auto-registration is enabled for this auth method:\x05\x66\x61lseH\x02R\x1e\x65nableWebauthnAutoRegistration\x88\x01\x01\x12\x63\n\x13show_passkey_button\x18\x08 \x01(\x08\x42.\x92\x41+2#Show passkey button on login screen:\x04trueH\x03R\x11showPasskeyButton\x88\x01\x01\x12\x83\x01\n!enable_webauthn_conditional_login\x18\t \x01(\x08\x42\x33\x92\x41\x30\x32(Allow autofill of passkeys in login page:\x04trueH\x04R\x1e\x65nableWebauthnConditionalLogin\x88\x01\x01\x42\x14\n\x12_passwordless_typeB\x18\n\x16_code_challenge_lengthB$\n\"_enable_webauthn_auto_registrationB\x16\n\x14_show_passkey_buttonB$\n\"_enable_webauthn_conditional_login\"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\"\x8f\x03\n\x0ePortalSettings\x12\x98\x01\n\x0f\x63ustom_branding\x18\x01 \x01(\x08\x42o\x92\x41l2dIndicates whether custom portal branding is enabled for this workspace based on billing subscriptionJ\x04trueR\x0e\x63ustomBranding\x12\xc5\x01\n\x17new_self_serve_sso_scim\x18\x02 \x01(\x08\x42\x89\x01\x92\x41\x85\x01\x32|Indicates whether the new self-serve SSO/SCIM flow should be shown in the hosted pages (rollout-driven, not billing-derived)J\x05\x66\x61lseH\x00R\x13newSelfServeSsoScim\x88\x01\x01\x42\x1a\n\x18_new_self_serve_sso_scim\"\xb2\x01\n\x1dGetAuthCustomizationsResponse\x12N\n\x16\x63ustomization_settings\x18\x02 \x01(\x0b\x32\x17.google.protobuf.StructR\x15\x63ustomizationSettings\x12\x41\n\x08settings\x18\x03 \x01(\x0b\x32 .scalekit.v1.auth.PortalSettingsB\x03\xe0\x41\x03R\x08settings\"N\n\x17GetAuthFeaturesResponse\x12\x33\n\x08\x66\x65\x61tures\x18\x01 \x01(\x0b\x32\x17.google.protobuf.StructR\x08\x66\x65\x61tures\"U\n\x1cVerifyPasswordLessOtpRequest\x12\x35\n\x07otp_req\x18\x02 \x01(\x0b\x32\x1c.scalekit.v1.auth.OTPRequestR\x06otpReq\"\x1f\n\x1dVerifyPasswordLessOtpResponse\"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\"\x8b\x04\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\x12=\n\x18invitation_inviter_email\x18\x04 \x01(\tH\x00R\x16invitationInviterEmail\x88\x01\x01\x12U\n\x16invitation_accepted_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x01R\x14invitationAcceptedAt\x88\x01\x01\x12S\n\x15invitation_created_at\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x02R\x13invitationCreatedAt\x88\x01\x01\x12S\n\x15invitation_expires_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x03R\x13invitationExpiresAt\x88\x01\x01\x42\x1b\n\x19_invitation_inviter_emailB\x19\n\x17_invitation_accepted_atB\x18\n\x16_invitation_created_atB\x18\n\x16_invitation_expires_at\"_\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\"\xb6\x0e\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\x12\xb1\x01\n\x18organization_external_id\x18\x0f \x01(\tBr\x92\x41o2EIdentifier for the user\xe2\x80\x99s organization within the identity providerJ&\"132d085d-d89d-4a2e-95bb-49bde680d14f\"H\x00R\x16organizationExternalId\x88\x01\x01\x12S\n\x05roles\x18\x10 \x03(\tB=\x92\x41:2#List of roles assigned to the user.J\x13[\"admin\", \"editor\"]R\x05rolesB\x1b\n\x19_organization_external_id\"\xb1\x02\n\x14GetAuthStateResponse\x12:\n\nauth_state\x18\x01 \x01(\x0e\x32\x1b.scalekit.v1.auth.AuthStateR\tauthState\x12\x31\n\x04user\x18\x02 \x01(\x0b\x32\x1d.scalekit.v1.auth.UserDetailsR\x04user\x12\xa9\x01\n\nlogin_hint\x18\x03 \x01(\tB\x89\x01\x92\x41\x85\x01\x32oLogin hint from the original authorize request. Typically an email address used to pre-fill the login UI input.J\x12\"user@example.com\"R\tloginHint\"\x8c\x01\n\x13GetAuthErrorRequest\x12u\n\x08\x65rror_id\x18\x01 \x01(\tBZ\x92\x41H2.Unique identifier for the authentication errorJ\x16\"err_1234567890abcdef\"\xbaH\x0cr\n\x10\x01\x18@:\x04\x65rr_R\x07\x65rrorId\"Y\n\x14GetAuthErrorResponse\x12\x14\n\x05\x65rror\x18\x01 \x01(\tR\x05\x65rror\x12+\n\x11\x65rror_description\x18\x02 \x01(\tR\x10\x65rrorDescription*:\n\x06Intent\x12\x16\n\x12INTENT_UNSPECIFIED\x10\x00\x12\x0b\n\x07sign_in\x10\x01\x12\x0b\n\x07sign_up\x10\x02*\xb4\x04\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\x12\x15\n\x11WEBAUTHN_VERIFIED\x10\x0f\x12 \n\x1cVERIFICATION_MAGIC_LINK_SENT\x10\x10\x12$\n VERIFICATION_MAGIC_LINK_OTP_SENT\x10\x11\x12\x19\n\x15VERIFICATION_OTP_SENT\x10\x12\x12\x1a\n\x16VERIFICATION_COMPLETED\x10\x13\x32\xa7\x10\n\x0b\x41uthService\x12\x98\x01\n\x0fListAuthMethods\x12(.scalekit.v1.auth.ListAuthMethodsRequest\x1a).scalekit.v1.auth.ListAuthMethodsResponse\"0\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x15\x12\x13/api/v1/authmethods\x12\xba\x01\n\x13\x44iscoveryAuthMethod\x12,.scalekit.v1.auth.DiscoveryAuthMethodRequest\x1a-.scalekit.v1.auth.DiscoveryAuthMethodResponse\"F\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02+\"\x16/api/v1/auth:discovery:\x11\x64iscovery_request\x12\xc0\x01\n\x15VerifyPasswordLessOtp\x12..scalekit.v1.auth.VerifyPasswordLessOtpRequest\x1a/.scalekit.v1.auth.VerifyPasswordLessOtpResponse\"F\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02+\" /api/v1/auth/passwordless:verify:\x07otp_req\x12\x83\x01\n\x12ResendPasswordless\x12\x16.google.protobuf.Empty\x1a\x16.google.protobuf.Empty\"=\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\"\" /api/v1/auth/passwordless:resend\x12\x99\x01\n\x15ListUserOrganizations\x12\x16.google.protobuf.Empty\x1a/.scalekit.v1.auth.ListUserOrganizationsResponse\"7\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x1c\x12\x1a/api/v1/auth:organizations\x12\xa4\x01\n\x12SignupOrganization\x12+.scalekit.v1.auth.SignupOrganizationRequest\x1a,.scalekit.v1.auth.SignupOrganizationResponse\"3\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x18\"\x13/api/v1/auth:signup:\x01*\x12\x7f\n\x0cGetAuthState\x12\x16.google.protobuf.Empty\x1a&.scalekit.v1.auth.GetAuthStateResponse\"/\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x14\x12\x12/api/v1/auth/state\x12\xb6\x01\n\x0cGetAuthError\x12%.scalekit.v1.auth.GetAuthErrorRequest\x1a&.scalekit.v1.auth.GetAuthErrorResponse\"W\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02<\x12\x19/api/v1/errors/{error_id}Z\x1f\x12\x1d/api/v1/auth/error/{error_id}\x12j\n\x06Logout\x12\x16.google.protobuf.Empty\x1a\x16.google.protobuf.Empty\"0\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x15\"\x13/api/v1/auth/logout\x12\xb2\x01\n\x15GetAuthCustomizations\x12..scalekit.v1.auth.GetAuthCustomizationsRequest\x1a/.scalekit.v1.auth.GetAuthCustomizationsResponse\"8\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x1d\x12\x1b/api/v1/auth:customizations\x12\x88\x01\n\x0fGetAuthFeatures\x12\x16.google.protobuf.Empty\x1a).scalekit.v1.auth.GetAuthFeaturesResponse\"2\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\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\"0\n\x16ListAuthMethodsRequest\x12\x16\n\x06intent\x18\x01 \x01(\tR\x06intent\"Z\n\x17ListAuthMethodsResponse\x12?\n\x0c\x61uth_methods\x18\x01 \x03(\x0b\x32\x1c.scalekit.v1.auth.AuthMethodR\x0b\x61uthMethods\"\x89\t\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\x12\x1a\n\x08provider\x18\x03 \x01(\tR\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\x12\xa3\x01\n!enable_webauthn_auto_registration\x18\x07 \x01(\x08\x42S\x92\x41P2GIndicates if WebAuthn auto-registration is enabled for this auth method:\x05\x66\x61lseH\x02R\x1e\x65nableWebauthnAutoRegistration\x88\x01\x01\x12\x63\n\x13show_passkey_button\x18\x08 \x01(\x08\x42.\x92\x41+2#Show passkey button on login screen:\x04trueH\x03R\x11showPasskeyButton\x88\x01\x01\x12\x83\x01\n!enable_webauthn_conditional_login\x18\t \x01(\x08\x42\x33\x92\x41\x30\x32(Allow autofill of passkeys in login page:\x04trueH\x04R\x1e\x65nableWebauthnConditionalLogin\x88\x01\x01\x42\x14\n\x12_passwordless_typeB\x18\n\x16_code_challenge_lengthB$\n\"_enable_webauthn_auto_registrationB\x16\n\x14_show_passkey_buttonB$\n\"_enable_webauthn_conditional_login\"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\"\x8f\x03\n\x0ePortalSettings\x12\x98\x01\n\x0f\x63ustom_branding\x18\x01 \x01(\x08\x42o\x92\x41l2dIndicates whether custom portal branding is enabled for this workspace based on billing subscriptionJ\x04trueR\x0e\x63ustomBranding\x12\xc5\x01\n\x17new_self_serve_sso_scim\x18\x02 \x01(\x08\x42\x89\x01\x92\x41\x85\x01\x32|Indicates whether the new self-serve SSO/SCIM flow should be shown in the hosted pages (rollout-driven, not billing-derived)J\x05\x66\x61lseH\x00R\x13newSelfServeSsoScim\x88\x01\x01\x42\x1a\n\x18_new_self_serve_sso_scim\"\xb2\x01\n\x1dGetAuthCustomizationsResponse\x12N\n\x16\x63ustomization_settings\x18\x02 \x01(\x0b\x32\x17.google.protobuf.StructR\x15\x63ustomizationSettings\x12\x41\n\x08settings\x18\x03 \x01(\x0b\x32 .scalekit.v1.auth.PortalSettingsB\x03\xe0\x41\x03R\x08settings\"N\n\x17GetAuthFeaturesResponse\x12\x33\n\x08\x66\x65\x61tures\x18\x01 \x01(\x0b\x32\x17.google.protobuf.StructR\x08\x66\x65\x61tures\"U\n\x1cVerifyPasswordLessOtpRequest\x12\x35\n\x07otp_req\x18\x02 \x01(\x0b\x32\x1c.scalekit.v1.auth.OTPRequestR\x06otpReq\"\x1f\n\x1dVerifyPasswordLessOtpResponse\"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\"\x8b\x04\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\x12=\n\x18invitation_inviter_email\x18\x04 \x01(\tH\x00R\x16invitationInviterEmail\x88\x01\x01\x12U\n\x16invitation_accepted_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x01R\x14invitationAcceptedAt\x88\x01\x01\x12S\n\x15invitation_created_at\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x02R\x13invitationCreatedAt\x88\x01\x01\x12S\n\x15invitation_expires_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x03R\x13invitationExpiresAt\x88\x01\x01\x42\x1b\n\x19_invitation_inviter_emailB\x19\n\x17_invitation_accepted_atB\x18\n\x16_invitation_created_atB\x18\n\x16_invitation_expires_at\"_\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\"\x95\x10\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\x12\xb1\x01\n\x18organization_external_id\x18\x0f \x01(\tBr\x92\x41o2EIdentifier for the user\xe2\x80\x99s organization within the identity providerJ&\"132d085d-d89d-4a2e-95bb-49bde680d14f\"H\x00R\x16organizationExternalId\x88\x01\x01\x12S\n\x05roles\x18\x10 \x03(\tB=\x92\x41:2#List of roles assigned to the user.J\x13[\"admin\", \"editor\"]R\x05roles\x12\xbd\x01\n\x1aorganization_external_name\x18\x11 \x01(\tBz\x92\x41o2`Name of the organization the user is authenticating into. Used to display on the consent screen.J\x0b\"Acme Corp\"\xbaH\x05r\x03\x18\xc8\x01H\x01R\x18organizationExternalName\x88\x01\x01\x42\x1b\n\x19_organization_external_idB\x1d\n\x1b_organization_external_name\"\xb1\x02\n\x14GetAuthStateResponse\x12:\n\nauth_state\x18\x01 \x01(\x0e\x32\x1b.scalekit.v1.auth.AuthStateR\tauthState\x12\x31\n\x04user\x18\x02 \x01(\x0b\x32\x1d.scalekit.v1.auth.UserDetailsR\x04user\x12\xa9\x01\n\nlogin_hint\x18\x03 \x01(\tB\x89\x01\x92\x41\x85\x01\x32oLogin hint from the original authorize request. Typically an email address used to pre-fill the login UI input.J\x12\"user@example.com\"R\tloginHint\"\x8c\x01\n\x13GetAuthErrorRequest\x12u\n\x08\x65rror_id\x18\x01 \x01(\tBZ\x92\x41H2.Unique identifier for the authentication errorJ\x16\"err_1234567890abcdef\"\xbaH\x0cr\n\x10\x01\x18@:\x04\x65rr_R\x07\x65rrorId\"Y\n\x14GetAuthErrorResponse\x12\x14\n\x05\x65rror\x18\x01 \x01(\tR\x05\x65rror\x12+\n\x11\x65rror_description\x18\x02 \x01(\tR\x10\x65rrorDescription*:\n\x06Intent\x12\x16\n\x12INTENT_UNSPECIFIED\x10\x00\x12\x0b\n\x07sign_in\x10\x01\x12\x0b\n\x07sign_up\x10\x02*\xb4\x04\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\x12\x15\n\x11WEBAUTHN_VERIFIED\x10\x0f\x12 \n\x1cVERIFICATION_MAGIC_LINK_SENT\x10\x10\x12$\n VERIFICATION_MAGIC_LINK_OTP_SENT\x10\x11\x12\x19\n\x15VERIFICATION_OTP_SENT\x10\x12\x12\x1a\n\x16VERIFICATION_COMPLETED\x10\x13\x32\xa7\x10\n\x0b\x41uthService\x12\x98\x01\n\x0fListAuthMethods\x12(.scalekit.v1.auth.ListAuthMethodsRequest\x1a).scalekit.v1.auth.ListAuthMethodsResponse\"0\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x15\x12\x13/api/v1/authmethods\x12\xba\x01\n\x13\x44iscoveryAuthMethod\x12,.scalekit.v1.auth.DiscoveryAuthMethodRequest\x1a-.scalekit.v1.auth.DiscoveryAuthMethodResponse\"F\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02+\"\x16/api/v1/auth:discovery:\x11\x64iscovery_request\x12\xc0\x01\n\x15VerifyPasswordLessOtp\x12..scalekit.v1.auth.VerifyPasswordLessOtpRequest\x1a/.scalekit.v1.auth.VerifyPasswordLessOtpResponse\"F\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02+\" /api/v1/auth/passwordless:verify:\x07otp_req\x12\x83\x01\n\x12ResendPasswordless\x12\x16.google.protobuf.Empty\x1a\x16.google.protobuf.Empty\"=\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\"\" /api/v1/auth/passwordless:resend\x12\x99\x01\n\x15ListUserOrganizations\x12\x16.google.protobuf.Empty\x1a/.scalekit.v1.auth.ListUserOrganizationsResponse\"7\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x1c\x12\x1a/api/v1/auth:organizations\x12\xa4\x01\n\x12SignupOrganization\x12+.scalekit.v1.auth.SignupOrganizationRequest\x1a,.scalekit.v1.auth.SignupOrganizationResponse\"3\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x18\"\x13/api/v1/auth:signup:\x01*\x12\x7f\n\x0cGetAuthState\x12\x16.google.protobuf.Empty\x1a&.scalekit.v1.auth.GetAuthStateResponse\"/\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x14\x12\x12/api/v1/auth/state\x12\xb6\x01\n\x0cGetAuthError\x12%.scalekit.v1.auth.GetAuthErrorRequest\x1a&.scalekit.v1.auth.GetAuthErrorResponse\"W\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02<\x12\x19/api/v1/errors/{error_id}Z\x1f\x12\x1d/api/v1/auth/error/{error_id}\x12j\n\x06Logout\x12\x16.google.protobuf.Empty\x1a\x16.google.protobuf.Empty\"0\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x15\"\x13/api/v1/auth/logout\x12\xb2\x01\n\x15GetAuthCustomizations\x12..scalekit.v1.auth.GetAuthCustomizationsRequest\x1a/.scalekit.v1.auth.GetAuthCustomizationsResponse\"8\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x1d\x12\x1b/api/v1/auth:customizations\x12\x88\x01\n\x0fGetAuthFeatures\x12\x16.google.protobuf.Empty\x1a).scalekit.v1.auth.GetAuthFeaturesResponse\"2\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\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) @@ -97,6 +97,8 @@ _globals['_USER'].fields_by_name['organization_external_id']._serialized_options = b'\222Ao2EIdentifier for the user\342\200\231s organization within the identity providerJ&\"132d085d-d89d-4a2e-95bb-49bde680d14f\"' _globals['_USER'].fields_by_name['roles']._loaded_options = None _globals['_USER'].fields_by_name['roles']._serialized_options = b'\222A:2#List of roles assigned to the user.J\023[\"admin\", \"editor\"]' + _globals['_USER'].fields_by_name['organization_external_name']._loaded_options = None + _globals['_USER'].fields_by_name['organization_external_name']._serialized_options = b'\222Ao2`Name of the organization the user is authenticating into. Used to display on the consent screen.J\013\"Acme Corp\"\272H\005r\003\030\310\001' _globals['_GETAUTHSTATERESPONSE'].fields_by_name['login_hint']._loaded_options = None _globals['_GETAUTHSTATERESPONSE'].fields_by_name['login_hint']._serialized_options = b'\222A\205\0012oLogin hint from the original authorize request. Typically an email address used to pre-fill the login UI input.J\022\"user@example.com\"' _globals['_GETAUTHERRORREQUEST'].fields_by_name['error_id']._loaded_options = None @@ -125,10 +127,10 @@ _globals['_AUTHSERVICE'].methods_by_name['GetAuthFeatures']._serialized_options = b'\202\265\030\002\030\001\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\002\027\022\025/api/v1/auth:features' _globals['_AUTHSERVICE'].methods_by_name['UpdateLoginUserDetails']._loaded_options = None _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=6927 - _globals['_INTENT']._serialized_end=6985 - _globals['_AUTHSTATE']._serialized_start=6988 - _globals['_AUTHSTATE']._serialized_end=7552 + _globals['_INTENT']._serialized_start=7150 + _globals['_INTENT']._serialized_end=7208 + _globals['_AUTHSTATE']._serialized_start=7211 + _globals['_AUTHSTATE']._serialized_end=7775 _globals['_LISTAUTHMETHODSREQUEST']._serialized_start=423 _globals['_LISTAUTHMETHODSREQUEST']._serialized_end=471 _globals['_LISTAUTHMETHODSRESPONSE']._serialized_start=473 @@ -168,13 +170,13 @@ _globals['_UPDATELOGINUSERDETAILSREQUEST']._serialized_start=4192 _globals['_UPDATELOGINUSERDETAILSREQUEST']._serialized_end=4534 _globals['_USER']._serialized_start=4537 - _globals['_USER']._serialized_end=6383 - _globals['_GETAUTHSTATERESPONSE']._serialized_start=6386 - _globals['_GETAUTHSTATERESPONSE']._serialized_end=6691 - _globals['_GETAUTHERRORREQUEST']._serialized_start=6694 - _globals['_GETAUTHERRORREQUEST']._serialized_end=6834 - _globals['_GETAUTHERRORRESPONSE']._serialized_start=6836 - _globals['_GETAUTHERRORRESPONSE']._serialized_end=6925 - _globals['_AUTHSERVICE']._serialized_start=7555 - _globals['_AUTHSERVICE']._serialized_end=9642 + _globals['_USER']._serialized_end=6606 + _globals['_GETAUTHSTATERESPONSE']._serialized_start=6609 + _globals['_GETAUTHSTATERESPONSE']._serialized_end=6914 + _globals['_GETAUTHERRORREQUEST']._serialized_start=6917 + _globals['_GETAUTHERRORREQUEST']._serialized_end=7057 + _globals['_GETAUTHERRORRESPONSE']._serialized_start=7059 + _globals['_GETAUTHERRORRESPONSE']._serialized_end=7148 + _globals['_AUTHSERVICE']._serialized_start=7778 + _globals['_AUTHSERVICE']._serialized_end=9865 # @@protoc_insertion_point(module_scope) diff --git a/scalekit/v1/auth/auth_pb2.pyi b/scalekit/v1/auth/auth_pb2.pyi index f8d321a..06084bc 100644 --- a/scalekit/v1/auth/auth_pb2.pyi +++ b/scalekit/v1/auth/auth_pb2.pyi @@ -236,7 +236,7 @@ class UpdateLoginUserDetailsRequest(_message.Message): def __init__(self, connection_id: _Optional[str] = ..., login_request_id: _Optional[str] = ..., user: _Optional[_Union[User, _Mapping]] = ...) -> None: ... class User(_message.Message): - __slots__ = ("sub", "email", "given_name", "family_name", "email_verified", "phone_number", "phone_number_verified", "name", "preferred_username", "picture", "gender", "locale", "groups", "custom_attributes", "organization_external_id", "roles") + __slots__ = ("sub", "email", "given_name", "family_name", "email_verified", "phone_number", "phone_number_verified", "name", "preferred_username", "picture", "gender", "locale", "groups", "custom_attributes", "organization_external_id", "roles", "organization_external_name") SUB_FIELD_NUMBER: _ClassVar[int] EMAIL_FIELD_NUMBER: _ClassVar[int] GIVEN_NAME_FIELD_NUMBER: _ClassVar[int] @@ -253,6 +253,7 @@ class User(_message.Message): CUSTOM_ATTRIBUTES_FIELD_NUMBER: _ClassVar[int] ORGANIZATION_EXTERNAL_ID_FIELD_NUMBER: _ClassVar[int] ROLES_FIELD_NUMBER: _ClassVar[int] + ORGANIZATION_EXTERNAL_NAME_FIELD_NUMBER: _ClassVar[int] sub: str email: str given_name: str @@ -269,7 +270,8 @@ class User(_message.Message): custom_attributes: _struct_pb2.Struct organization_external_id: str roles: _containers.RepeatedScalarFieldContainer[str] - def __init__(self, sub: _Optional[str] = ..., email: _Optional[str] = ..., given_name: _Optional[str] = ..., family_name: _Optional[str] = ..., email_verified: bool = ..., phone_number: _Optional[str] = ..., phone_number_verified: bool = ..., name: _Optional[str] = ..., preferred_username: _Optional[str] = ..., picture: _Optional[str] = ..., gender: _Optional[str] = ..., locale: _Optional[str] = ..., groups: _Optional[_Iterable[str]] = ..., custom_attributes: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ..., organization_external_id: _Optional[str] = ..., roles: _Optional[_Iterable[str]] = ...) -> None: ... + organization_external_name: str + def __init__(self, sub: _Optional[str] = ..., email: _Optional[str] = ..., given_name: _Optional[str] = ..., family_name: _Optional[str] = ..., email_verified: bool = ..., phone_number: _Optional[str] = ..., phone_number_verified: bool = ..., name: _Optional[str] = ..., preferred_username: _Optional[str] = ..., picture: _Optional[str] = ..., gender: _Optional[str] = ..., locale: _Optional[str] = ..., groups: _Optional[_Iterable[str]] = ..., custom_attributes: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ..., organization_external_id: _Optional[str] = ..., roles: _Optional[_Iterable[str]] = ..., organization_external_name: _Optional[str] = ...) -> None: ... class GetAuthStateResponse(_message.Message): __slots__ = ("auth_state", "user", "login_hint") diff --git a/scalekit/v1/clients/clients_pb2.py b/scalekit/v1/clients/clients_pb2.py index d7780b8..55fdcfe 100644 --- a/scalekit/v1/clients/clients_pb2.py +++ b/scalekit/v1/clients/clients_pb2.py @@ -29,7 +29,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/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\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/connections/connections.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\"\x8e\r\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\x12K\n\x04name\x18\x02 \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\x03 \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\xab\x01\n\x0cresource_uri\x18\x04 \x01(\tB\x87\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\"R\x0bresourceUri\x12g\n\x13\x61\x63\x63\x65ss_token_expiry\x18\x05 \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\x06 \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\x07 \x01(\x08\x42P\x92\x41M2EIndicates if dynamic client registration is allowed for this resourceJ\x04trueR disableDynamicClientRegistration\x12\x61\n\x08logo_uri\x18\x08 \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\t \x01(\tB<\x92\x41\x31\x32$Connection provider for the resourceJ\t\"DESCOPE\"\xbaH\x05r\x03\x18\x80\x04R\x08provider\x12\xa9\x01\n\x0bresource_id\x18\n \x01(\tB\x87\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\"R\nresourceId\x12i\n\x06scopes\x18\x0b \x03(\tBQ\x92\x41N21List of OAuth scopes associated with the resourceJ\x19[\"usr:read\", \"usr:write\"]R\x06scopes\x12\xac\x01\n intersect_scopes_user_permission\x18\x0c \x01(\x08\x42\x63\x92\x41`2XIndicates if the scopes should be intersected with user permissions for granular controlJ\x04trueR\x1dintersectScopesUserPermission\x12\x7f\n\x0b\x65nable_cimd\x18\r \x01(\x08\x42^\x92\x41[2RSpecifies whether Client ID Metadata Document (CIMD) is activated for the resourceJ\x05\x66\x61lseR\nenableCimd\"\x8c\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\"https://example.com/.well-known/oauth-protected-resource/mcp\"R\x14protectedMetadataUri\x12\xb2\x01\n\x0bresource_id\x18\x0f \x01(\tB\x90\x01\x92\x41\x84\x01\x32\x62Resource identifier for the resource. This could be the URL used to access the resource resourcesJ\x1e\"https://resource.example.com\"\xbaH\x05r\x03\x18\x80\x04R\nresourceId\x12\xfb\x01\n\x06scopes\x18\x10 \x03(\x0b\x32\x1a.scalekit.v1.clients.ScopeB\xc6\x01\x92\x41\xc2\x01\x32OList of OAuth scopes associated with the resource with enabled or disabled flagJo[{\"id\": \"perm_\", \"name\": \"usr:read\", \"description\": \"Reading basic information of the users\", \"enabled\": true}]R\x06scopes\x12\xc3\x01\n\x12\x63onnection_details\x18\x11 \x01(\x0b\x32\'.scalekit.v1.clients.ResourceConnectionBk\x92\x41\x65\x32\x63\x44\x65tails of the own auth connection if any. For full stack this field will be empty or not populated\xe0\x41\x03R\x11\x63onnectionDetails\x12\x91\x01\n\x1a\x64isallow_connection_update\x18\x12 \x01(\x08\x42S\x92\x41M2DIndicates if updating the connection is disallowed for this resourceJ\x05\x66\x61lse\xe0\x41\x03R\x18\x64isallowConnectionUpdate\x12\xac\x01\n intersect_scopes_user_permission\x18\x13 \x01(\x08\x42\x63\x92\x41`2XIndicates if the scopes should be intersected with user permissions for granular controlJ\x04trueR\x1dintersectScopesUserPermission\x12\x7f\n\x0b\x65nable_cimd\x18\x14 \x01(\x08\x42^\x92\x41[2RSpecifies whether Client ID Metadata Document (CIMD) is activated for the resourceJ\x05\x66\x61lseR\nenableCimd\"\xf2\x01\n\x15RegisterClientRequest\x12i\n\x06res_id\x18\x01 \x01(\tBR\x92\x41\x43\x32(Unique identifier of the client resourceJ\x17\"app_69388798466720005\"\xbaH\tr\x04\x10\x01\x18 \xc8\x01\x01R\x05resId\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\"\x96\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\x12g\n\rredirect_uris\x18\x03 \x03(\tBB\x92\x41?2\x1bRedirect URI for the clientJ [\"https://example.com/callback\"]R\x0credirectUris\x12Y\n\x05scope\x18\x04 \x01(\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\"\xb9\x17\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\xbe\x01\n\x06scopes\x18\x07 \x03(\tB\xa5\x01\x92\x41\xa1\x01\x32uThe OAuth 2.0 scopes granted to this client. These scopes determine what resources and actions the client can access.J([\"deploy:resources\", \"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\xc4\x01\n\x0bresource_id\x18\x0b \x01(\tB\xa2\x01\x92\x41\x9e\x01\x32\x83\x01The 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\x16\"app_1231234233424344\"R\nresourceId\x12\xd1\x01\n\rredirect_uris\x18\x0c \x03(\tB\xab\x01\x92\x41\xa7\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 [\"https://example.com/callback\"]R\x0credirectUris\x12~\n\rclient_secret\x18\r \x01(\tBY\x92\x41V24Client secret value (only returned once at creation)J\x1e\"CdExsdErfccxDDssddfffgfeFHH1\"R\x0c\x63lientSecret\x12\xce\x01\n\x18\x63lient_secret_expires_at\x18\x0e \x01(\x05\x42\x94\x01\x92\x41\x90\x01\x32rClient secret expiry time in RFC3339 format. If the client secret does not expire, this field will be set to null.J\x1a\"2024-12-31T23:59:59.000Z\"R\x15\x63lientSecretExpiresAt\"\xdd\x02\n\x14ListResourcesRequest\x12r\n\rresource_type\x18\x01 \x01(\x0e\x32!.scalekit.v1.clients.ResourceTypeB*\x92\x41!2\x18\x46ilter resources by typeJ\x05\"WEB\"\xbaH\x03\xc8\x01\x01R\x0cresourceType\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\x12r\n\tpage_size\x18\x03 \x01(\rBU\x92\x41K2ENumber of resources to return per page. Maximum is 30. Default is 10.J\x02\x32\x30\xbaH\x04*\x02\x18\x1eR\x08pageSize\"\xdb\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\x12S\n\x0fprev_page_token\x18\x04 \x01(\tB+\x92\x41(2&Token for the previous page of resultsR\rprevPageToken\"\xaf\x02\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\x12;\n\x0bupdate_mask\x18\x63 \x01(\x0b\x32\x1a.google.protobuf.FieldMaskR\nupdateMask\"\xa1\x0e\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\xab\x01\n\x0cresource_uri\x18\x03 \x01(\tB\x87\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\"R\x0bresourceUri\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\xbb\x01\n#disable_dynamic_client_registration\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.BoolValueBP\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\x12\xa9\x01\n\x0bresource_id\x18\x0b \x01(\tB\x87\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\"R\nresourceId\x12i\n\x06scopes\x18\x0c \x03(\tBQ\x92\x41N21List of OAuth scopes associated with the resourceJ\x19[\"usr:read\", \"usr:write\"]R\x06scopes\x12\xa7\x01\n\x1a\x63ustom_connection_settings\x18\r \x01(\x0b\x32\x35.scalekit.v1.clients.ResourceCustomConnectionSettingsB0\x92\x41-2+Custom connection settings for the resourceH\x00R\x18\x63ustomConnectionSettings\x12\xc8\x01\n intersect_scopes_user_permission\x18\x0e \x01(\x0b\x32\x1a.google.protobuf.BoolValueBc\x92\x41`2XIndicates if the scopes should be intersected with user permissions for granular controlJ\x04trueR\x1dintersectScopesUserPermission\x12\x94\x01\n\x0b\x65nable_cimd\x18\x0f \x01(\x0b\x32\x1a.google.protobuf.BoolValueBW\x92\x41T2KIndicates if CIMD (Client ID Metadata Document) is enabled for the resourceJ\x05\x66\x61lseR\nenableCimdB\n\n\x08settings\"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\"\xc7\x03\n\x1bUpdateResourceClientRequest\x12i\n\x0bresource_id\x18\x01 \x01(\tBH\x92\x41<2!Unique identifier of the resourceJ\x17\"res_69388798466720005\"\xbaH\x06r\x04\x10\x01\x18 R\nresourceId\x12\x63\n\tclient_id\x18\x02 \x01(\tBF\x92\x41:2\x1fUnique identifier of the clientJ\x17\"m2m_12345678901234567\"\xbaH\x06r\x04\x10\x01\x18 R\x08\x63lientId\x12\x66\n\x06\x63lient\x18\x03 \x01(\x0b\x32#.scalekit.v1.clients.ResourceClientB)\x92\x41 2\x1e\x46ields of the client to update\xbaH\x03\xc8\x01\x01R\x06\x63lient\x12p\n\x0bupdate_mask\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.FieldMaskB3\x92\x41\x30\x32.Mask specifying which fields should be updatedR\nupdateMask\"s\n\x1cUpdateResourceClientResponse\x12S\n\x06\x63lient\x18\x01 \x01(\x0b\x32\x1e.scalekit.v1.clients.M2MClientB\x1b\x92\x41\x18\x32\x16Updated client detailsR\x06\x63lient\"\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\x41Y2\x92\x41;2.Case-insensitive search over external user IDsJ\t\"usr_123\"R\x06search\x12[\n\tpage_size\x18\x03 \x01(\rB>\x92\x41\x34\x32.Number of consents to return per page (max 30)J\x02\x32\x30\xbaH\x04*\x02\x18\x1eR\x08pageSize\x12\x63\n\npage_token\x18\x04 \x01(\tBD\x92\x41\x41\x32\x33Pagination token to fetch the next or previous pageJ\n\">:abc123\"R\tpageToken\"\x8c\x03\n ListResourceUserConsentsResponse\x12V\n\ntotal_size\x18\x01 \x01(\rB7\x92\x41\x34\x32\x32Total number of user consents matching the requestR\ttotalSize\x12T\n\x0fnext_page_token\x18\x02 \x01(\tB,\x92\x41)2\'Pagination token to fetch the next pageR\rnextPageToken\x12`\n\x08\x63onsents\x18\x03 \x03(\x0b\x32(.scalekit.v1.clients.ResourceUserConsentB\x1a\x92\x41\x17\x32\x15List of user consentsR\x08\x63onsents\x12X\n\x0fprev_page_token\x18\x04 \x01(\tB0\x92\x41-2+Pagination token to fetch the previous pageR\rprevPageToken\"\xdc\x04\n\x13ResourceUserConsent\x12X\n\x02id\x18\x01 \x01(\tBH\x92\x41\x45\x32%Unique identifier of the user consentJ\x1c\"usrcnst_102709535608668163\"R\x02id\x12r\n\x10\x65xternal_user_id\x18\x02 \x01(\tBH\x92\x41\x45\x32*External identifier of the consenting userJ\x17\"usr_83562895790637841\"R\x0e\x65xternalUserId\x12`\n\tclient_id\x18\x03 \x01(\tBC\x92\x41@2-Client identifier associated with the consentJ\x0f\"m2m_123123123\"R\x08\x63lientId\x12\x44\n\x0b\x63lient_name\x18\x04 \x01(\tB#\x92\x41 2\x14Readable client nameJ\x08\"MCPJam\"R\nclientName\x12O\n\x06scopes\x18\x05 \x03(\tB7\x92\x41\x34\x32\x1dScopes granted in the consentJ\x13[\"openid\", \"email\"]R\x06scopes\x12~\n\ngranted_at\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampBC\x92\x41@2\"Timestamp when consent was grantedJ\x1a\"2025-12-09T13:27:29.810Z\"R\tgrantedAt\"\xa0\x01\n\x1aListResourceClientsRequest\x12\x81\x01\n\x0bresource_id\x18\x01 \x01(\tB`\x92\x41T2@Unique identifier of the resource whose clients are to be listedJ\x10\"skc_1234567890\"\xbaH\x06r\x04\x10\x01\x18 R\nresourceId\"\xf0\x02\n\x1bListResourceClientsResponse\x12k\n\x07\x63lients\x18\x02 \x03(\x0b\x32\x1e.scalekit.v1.clients.M2MClientB1\x92\x41.2,List of clients associated with the resourceR\x07\x63lients\x12i\n\x11total_dcr_clients\x18\x03 \x01(\x05\x42=\x92\x41:28Total number of DCR clients associated with the resourceR\x0ftotalDcrClients\x12s\n\x14total_static_clients\x18\x04 \x01(\x05\x42\x41\x92\x41>2\"R\tpageToken:\xec\x01\x92\x41\xe8\x01\n\xa8\x01*!List Organization Clients Request2\x82\x01Request message for listing API clients within a specific organization. Supports pagination for handling large numbers of clients.*;\n\x11\x41PI Documentation\x12&https://docs.scalekit.com/m2m/overview\"\xa5\x06\n\x1fListOrganizationClientsResponse\x12\x97\x01\n\x0fnext_page_token\x18\x01 \x01(\tBo\x92\x41l2UPagination token for the next page of results. Use this token to fetch the next page.J\x13\"\"R\rnextPageToken\x12X\n\ntotal_size\x18\x02 \x01(\rB9\x92\x41\x36\x32\x30Total number of API clients in the organization.J\x02\x33\x30R\ttotalSize\x12\xe0\x01\n\x07\x63lients\x18\x03 \x03(\x0b\x32\x1e.scalekit.v1.clients.M2MClientB\xa5\x01\x92\x41\xa1\x01\x32\x9e\x01List of API client objects for the organization. Each client includes its configuration, metadata, and active secrets (without exposing actual secret values).R\x07\x63lients\x12\x9f\x01\n\x0fprev_page_token\x18\x04 \x01(\tBw\x92\x41t2]Pagination token for the previous page of results. Use this token to fetch the previous page.J\x13\"\"R\rprevPageToken:\x88\x01\x92\x41\x84\x01\n\x81\x01*\"List Organization Clients Response2[Response message containing a paginated list of API clients for the specified organization.\"\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\"\xa5\x01\n\x10GetClientRequest\x12\x90\x01\n\tclient_id\x18\x01 \x01(\tBs\x92\x41g2SUnique identifier of the client resource to retrieve. Must be 1-32 characters long.J\x10\"skc_1234567890\"\xbaH\x06r\x04\x10\x01\x18 R\x08\x63lientId\"\xf5\x01\n\x11GetClientResponse\x12\xdf\x01\n\x06\x63lient\x18\x01 \x01(\x0b\x32\x1b.scalekit.v1.clients.ClientB\xa9\x01\x92\x41\xa5\x01\x32\xa2\x01\x43omplete client configuration including authentication settings, redirect URIs, and secrets. This contains all current settings for the requested client resource.R\x06\x63lient\"\xe1\x06\n\x12ListClientsRequest\x12\xf2\x01\n\x14include_plain_secret\x18\x01 \x01(\x08\x42\xbf\x01\x92\x41\xbb\x01\x32\xb1\x01Whether to include plain secret values in the response. Enable only during initial client creation, then store secrets securely. Not available when filtering by ALL client typesJ\x05\x66\x61lseR\x12includePlainSecret\x12\x85\x01\n\x06\x66ilter\x18\x03 \x01(\x0b\x32..scalekit.v1.clients.ListClientsRequest.FilterB=\x92\x41:28Filters clients by type: ENV, WEB_APP, NTV, SPA, or ALL.R\x06\x66ilter\x12]\n\npage_token\x18\x04 \x01(\tB>\x92\x41;2\"Token for the next page of resultsJ\x15\"next_page_token_123\"R\tpageToken\x12\x64\n\tpage_size\x18\x05 \x01(\rBG\x92\x41=27Number of clients per page. Defaults to 10, maximum 30.J\x02\x33\x30\xbaH\x04*\x02\x18\x1eR\x08pageSize\x1a\x82\x02\n\x06\x46ilter\x12\xf7\x01\n\x0b\x63lient_type\x18\x01 \x03(\tB\xd5\x01\x92\x41\xd1\x01\x32\xce\x01\x46ilters clients by type. Valid values: ENV, WEB_APP, NTV, SPA, ALL. Defaults to ENV. ALL takes precedence and other types are ignored. For resource-specific clients (e.g., M2M), use ListResourceClients API.R\nclientTypeJ\x04\x08\x02\x10\x03\"\xf1\x03\n\x13ListClientsResponse\x12Z\n\ntotal_size\x18\x01 \x01(\rB;\x92\x41\x38\x32\x32Total number of client resources in the workspace.J\x02\x31\x32R\ttotalSize\x12\xc1\x01\n\x07\x63lients\x18\x02 \x03(\x0b\x32\x1b.scalekit.v1.clients.ClientB\x89\x01\x92\x41\x85\x01\x32\x82\x01List of client resource configurations matching the query criteria. Each client includes its metadata and authentication settings.R\x07\x63lients\x12\x65\n\x0fnext_page_token\x18\x03 \x01(\tB=\x92\x41:28Pagination token that retrieves the next page of resultsR\rnextPageToken\x12S\n\x0fprev_page_token\x18\x04 \x01(\tB+\x92\x41(2&Token for the previous page of resultsR\rprevPageToken\"\xed\x01\n\x13\x43reateClientRequest\x12\xd5\x01\n\x06\x63lient\x18\x01 \x01(\x0b\x32!.scalekit.v1.clients.CreateClientB\x99\x01\x92\x41\x8f\x01\x32\x1b\x43lient parameters to createJp{\"post_login_uris\": [\"https://app.example.com/callback\"], \"initiate_login_uri\": \"https://app.example.com/login\"}\xbaH\x03\xc8\x01\x01R\x06\x63lient\"\xeb\x17\n\x0c\x43reateClient\x12\xde\x01\n\x04name\x18\x01 \x01(\tB\xc9\x01\x92\x41\xba\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\x17\"My Application Client\"\xbaH\x08r\x03\x18\x80\x01\xc8\x01\x01R\x04name\x12\xd6\x01\n\x0b\x63lient_type\x18\x02 \x01(\tB\xb4\x01\x92\x41\xa5\x01\x32\x99\x01\x43lient application type. Valid values: WEB_APP (web applications), SPA (single-page applications), NTV (native applications including mobile and desktop)J\x07WEB_APP\xbaH\x08r\x03\x18\x80\x01\xc8\x01\x01R\nclientType\x12\xb6\x02\n\x18\x62\x61\x63k_channel_logout_uris\x18\x03 \x03(\tB\xfc\x01\x92\x41\xe9\x01\x32wHTTPS endpoints that receive back-channel logout notifications for application-initiated logout and session management.Jn[\"https://app.example.com/backchannel-logout-internal\", \"https://app.example.com/backchannel-logout-external\"]\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\x04 \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\x05 \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\x00R\x10initiateLoginUri\x88\x01\x01\x12\x9c\x02\n\x0fpost_login_uris\x18\x06 \x03(\tB\xf3\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\x05\x92\x01\x02\x18\x01R\rpostLoginUris\x12g\n\x13\x61\x63\x63\x65ss_token_expiry\x18\x07 \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\x12\xb3\x01\n\x06scopes\x18\x08 \x03(\tB\x9a\x01\x92\x41\x96\x01\x32wList of scopes to be attached to this client. These scopes must be a subset of the scopes available in the environment.J\x1b[\"data:read\", \"data:write\"]R\x06scopes\x12\xc6\x01\n\rcustom_claims\x18\t \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\xf0\x01\n\x1c\x64isallow_scalekit_api_access\x18\n \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x92\x01\x92\x41\x8e\x01\x32\x85\x01If set to true, the client will be restricted from accessing Scalekit APIs directly, enhancing security by limiting its capabilities.J\x04trueR\x19\x64isallowScalekitApiAccess\x12\xe0\x01\n\x0bgrant_types\x18\x0b \x03(\tB\xbe\x01\x92\x41\xba\x01\x32yList of OAuth 2.0 grant types that the client is authorized to use. This defines how the client can obtain access tokens.J=[\"authorization_code\", \"refresh_token\", \"client_credentials\"]R\ngrantTypes\x12\xe1\x01\n\x0c\x65nforce_pkce\x18\x0c \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\xa1\x01\x92\x41\x9d\x01\x32\x94\x01Whether Proof Key for Code Exchange (PKCE) is required. PKCE mitigates authorization code interception attacks. Defaults to true for public clients.J\x04trueR\x0b\x65nforcePkce:\xd4\x01\x92\x41\xd0\x01\n\x9c\x01*\rCreate Client2\x8a\x01Request message for creating a new API client with specified configuration parameters including redirect URIs and authentication settings.*/\n\x11\x41PI Documentation\x12\x1ahttps://docs.scalekit.com/B\x15\n\x13_initiate_login_uri\"\x8c\x01\n\x14\x43reateClientResponse\x12t\n\x06\x63lient\x18\x01 \x01(\x0b\x32\x1b.scalekit.v1.clients.ClientB?\x92\x41<2:Created client with all settings reflected in the responseR\x06\x63lient\"\xc3\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\xe8\x01\n\x06\x63lient\x18\x02 \x01(\x0b\x32!.scalekit.v1.clients.UpdateClientB\xac\x01\x92\x41\xa2\x01\x32\x65\x41pplication configuration parameters to update. Contains post_login_uris and authentication settings.J9{\"post_login_uris\": [\"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\"\xf4\x16\n\x0cUpdateClient\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\x00R\x10initiateLoginUri\x88\x01\x01\x12\x9c\x02\n\x0fpost_login_uris\x18\x07 \x03(\tB\xf3\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\x05\x92\x01\x02\x18\x01R\rpostLoginUris\x12\xd3\x01\n\x04name\x18\x08 \x01(\tB\xbe\x01\x92\x41\xba\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\x17\"My Application Client\"R\x04name\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\x12\xb3\x01\n\x06scopes\x18\x0b \x03(\tB\x9a\x01\x92\x41\x96\x01\x32wList of scopes to be attached to this client. These scopes must be a subset of the scopes available in the environment.J\x1b[\"data:read\", \"data:write\"]R\x06scopes\x12\xc6\x01\n\rcustom_claims\x18\x0c \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\xf0\x01\n\x1c\x64isallow_scalekit_api_access\x18\r \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x92\x01\x92\x41\x8e\x01\x32\x85\x01If set to true, the client will be restricted from accessing Scalekit APIs directly, enhancing security by limiting its capabilities.J\x04trueR\x19\x64isallowScalekitApiAccess\x12\xe0\x01\n\x0bgrant_types\x18\x0e \x03(\tB\xbe\x01\x92\x41\xba\x01\x32yList of OAuth 2.0 grant types that the client is authorized to use. This defines how the client can obtain access tokens.J=[\"authorization_code\", \"refresh_token\", \"client_credentials\"]R\ngrantTypes\x12\xe1\x01\n\x0c\x65nforce_pkce\x18\x0f \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\xa1\x01\x92\x41\x9d\x01\x32\x94\x01Whether Proof Key for Code Exchange (PKCE) is required. PKCE mitigates authorization code interception attacks. Defaults to true for public clients.J\x04trueR\x0b\x65nforcePkce:\x83\x02\x92\x41\xff\x01\n\xbf\x01*\x1bUpdate Client Configuration2\x9f\x01Parameters for updating an API client application\'s configuration. This allows modification of post_login_uris, logout settings, and other security parameters.*;\n\x11\x41PI Documentation\x12&https://docs.scalekit.com/m2m/overviewB\x15\n\x13_initiate_login_uriJ\x04\x08\x02\x10\x03J\x04\x08\x03\x10\x04R\rredirect_urisR\x14\x64\x65\x66\x61ult_redirect_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\"\xec\x01\n\x12UpdateClientSecret\x12\xd5\x01\n\x06status\x18\x01 \x01(\x0e\x32\'.scalekit.v1.clients.ClientSecretStatusB\x93\x01\x92\x41\x8f\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\x08INACTIVER\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\"\x85\x01\n\x13\x44\x65leteClientRequest\x12n\n\tclient_id\x18\x01 \x01(\tBQ\x92\x41\x45\x32*Unique identifier of the client to delete.J\x17\"webc_01H9XPQR7ZY2AJKL\"\xbaH\x06r\x04\x10\x01\x18 R\x08\x63lientId\"\xb3\x02\n\x19\x44\x65leteClientSecretRequest\x12q\n\tclient_id\x18\x01 \x01(\tBT\x92\x41H2.Identifier of the client containing the secretJ\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\"\xa8\x1e\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\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\xab\x02\n\x0fpost_login_uris\x18\x0b \x03(\tB\x82\x02\x92\x41\xfe\x01\x32\xb3\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. Maximum of 5 URIs allowed.JF[\"https://auth.your-app.com/callback\", \"https://dev.example.com/auth\"]R\rpostLoginUris\x12t\n\x04name\x18\x0c \x01(\tB`\x92\x41]2BA descriptive name for the client that helps identify its purpose.J\x17\"My Application Client\"R\x04name\x12l\n\x13\x61\x63\x63\x65ss_token_expiry\x18\r \x01(\x03\x42\x37\x92\x41\x34\x32,Expiry time in seconds for the access token.J\x04\x33\x36\x30\x30H\x00R\x11\x61\x63\x63\x65ssTokenExpiry\x88\x01\x01\x12g\n\x06scopes\x18\x0e \x03(\tBO\x92\x41L2-List of scopes to be attached to this client.J\x1b[\"data:read\", \"data:write\"]R\x06scopes\x12\xc6\x01\n\rcustom_claims\x18\x0f \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\x8f\x01\n\x1c\x64isallow_scalekit_api_access\x18\x10 \x01(\x08\x42N\x92\x41K2CIf true, the client will be restricted from accessing Scalekit APIsJ\x04trueR\x19\x64isallowScalekitApiAccess\x12\xaa\x01\n\x0bgrant_types\x18\x11 \x03(\tB\x88\x01\x92\x41\x84\x01\x32\x43List of OAuth 2.0 grant types that the client is authorized to use.J=[\"authorization_code\", \"refresh_token\", \"client_credentials\"]R\ngrantTypes\x12\x61\n\x0b\x63lient_type\x18\x12 \x01(\tB@\x92\x41=24Type of client. Valid values: ENV, WEB_APP, NTV, SPAJ\x05\"ENV\"R\nclientType\x12\xc5\x01\n\x0c\x65nforce_pkce\x18\x13 \x01(\x08\x42\xa1\x01\x92\x41\x9d\x01\x32\x94\x01Whether Proof Key for Code Exchange (PKCE) is required. PKCE mitigates authorization code interception attacks. Defaults to true for public clients.J\x04trueR\x0b\x65nforcePkce:\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.B\x16\n\x14_access_token_expiryJ\x04\x08\x05\x10\x06J\x04\x08\x06\x10\x07R\rredirect_urisR\x14\x64\x65\x66\x61ult_redirect_uri\"\xc1\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\x86\x02\n\x06status\x18\x06 \x01(\x0e\x32\'.scalekit.v1.clients.ClientSecretStatusB\xc4\x01\x92\x41\xc0\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\n\"INACTIVE\"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\"\xb8\x02\n\x05Scope\x12\xa8\x01\n\x02id\x18\x01 \x01(\tB\x97\x01\x92\x41\x8a\x01\x32tUnique identifier for the scope resource. Must be between 1 and 100 characters long and match the specified pattern.J\x12\"scope_1234567890\"\xbaH\x06r\x04\x10\x01\x18\x64R\x02id\x12\x36\n\x04name\x18\x02 \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\x03 \x01(\tB\x08\xbaH\x05r\x03\x18\xd0\x0fR\x0b\x64\x65scription\x12 \n\x07\x65nabled\x18\x04 \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\"\xf3\x01\n\x12\x43reateScopeRequest\x12>\n\x05scope\x18\x01 \x01(\x0b\x32 .scalekit.v1.clients.CreateScopeB\x06\xbaH\x03\xc8\x01\x01R\x05scope\x12\x9c\x01\n\x06\x65nv_id\x18\x02 \x01(\tB\x84\x01\x92\x41x2dUnique identifier of the environment where the scope will be created. Must start with \'env_\' prefix.J\x10\"env_1234567890\"\xbaH\x06r\x04\x10\x00\x18 R\x05\x65nvId\"G\n\x13\x43reateScopeResponse\x12\x30\n\x05scope\x18\x01 \x01(\x0b\x32\x1a.scalekit.v1.clients.ScopeR\x05scope\"\xaa\x01\n\x11ListScopesRequest\x12\x94\x01\n\x06\x65nv_id\x18\x01 \x01(\tB}\x92\x41q2]Unique identifier of the environment for which to list scopes. Must start with \'env_\' prefix.J\x10\"env_1234567890\"\xbaH\x06r\x04\x10\x00\x18 R\x05\x65nvId\"H\n\x12ListScopesResponse\x12\x32\n\x06scopes\x18\x01 \x03(\x0b\x32\x1a.scalekit.v1.clients.ScopeR\x06scopes\"o\n\x12UpdateScopeRequest\x12\x19\n\x02id\x18\x01 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18\x64R\x02id\x12>\n\x05scope\x18\x02 \x01(\x0b\x32 .scalekit.v1.clients.UpdateScopeB\x06\xbaH\x03\xc8\x01\x01R\x05scope\"o\n\x0bUpdateScope\x12*\n\x0b\x64\x65scription\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x18\xd0\x0fR\x0b\x64\x65scription\x12\x34\n\x07\x65nabled\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.BoolValueR\x07\x65nabled\"G\n\x13UpdateScopeResponse\x12\x30\n\x05scope\x18\x01 \x01(\x0b\x32\x1a.scalekit.v1.clients.ScopeR\x05scope\"1\n\x12\x44\x65leteScopeRequest\x12\x1b\n\x02id\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06:\x04scp_R\x02id\"\xdc\x04\n\x19GetConsentDetailsResponse\x12\x61\n\x08resource\x18\x01 \x01(\x0b\x32\x1d.scalekit.v1.clients.ResourceB&\x92\x41#2!Details of the requested resourceR\x08resource\x12[\n\x04user\x18\x02 \x01(\x0b\x32\x19.scalekit.v1.clients.UserB,\x92\x41)2\'Details of the user who granted consentR\x04user\x12r\n\x06\x63lient\x18\x03 \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\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\x12m\n\x0b\x61pplication\x18\x05 \x01(\x0b\x32 .scalekit.v1.clients.ApplicationB)\x92\x41&2$Details of the requested applicationR\x0b\x61pplication\"\xba\x05\n\rConsentClient\x12R\n\x04name\x18\x01 \x01(\tB>\x92\x41;2.Name of the client resource requesting consentJ\t\"VS Code\"R\x04name\x12x\n\x0bprivacy_uri\x18\x02 \x01(\tBW\x92\x41M2,Privacy policy URI of the client applicationJ\x1d\"https://yourapp.com/privacy\"\xbaH\x04r\x02\x18\x64R\nprivacyUri\x12q\n\x07tos_uri\x18\x03 \x01(\tBX\x92\x41M2.Terms of service URI of the client applicationJ\x1b\"https://yourapp.com/terms\"\xbaH\x05r\x03\x18\xd0\x0fR\x06tosUri\x12o\n\tclient_id\x18\x04 \x01(\tBR\x92\x41O2;Unique identifier of the client resource requesting consentJ\x10\"m2m_1234567890\"R\x08\x63lientId\x12\x8e\x01\n\x0cmetadata_uri\x18\x05 \x01(\tBk\x92\x41h2AMetadata URI of the client application - applicable for CIMD onlyJ#\"https://example.com/metadata.json\"R\x0bmetadataUri\x12\x66\n\x08logo_uri\x18\x06 \x01(\tBK\x92\x41H2\"Logo URI of the client applicationJ\"\"https://cdn.example.com/logo.png\"R\x07logoUri\"\\\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\"\xa2\x02\n\x18RevokeUserConsentRequest\x12\x87\x01\n\tclient_id\x18\x01 \x01(\tBj\x92\x41X2DUnique identifier of the client resource for which to revoke consentJ\x10\"m2m_1234567890\"\xbaH\x0cr\n\x10\x01\x18 :\x04m2m_R\x08\x63lientId\x12|\n\nconsent_id\x18\x02 \x01(\tB]\x92\x41G2/Unique identifier of the user consent to revokeJ\x14\"usrcnst_1234567890\"\xbaH\x10r\x0e\x10\x01\x18 :\x08usrcnst_R\tconsentId\"\x1b\n\x19RevokeUserConsentResponse\"\x9f\x01\n\x1f\x45nsureResourceConnectionRequest\x12|\n\x0bresource_id\x18\x01 \x01(\tB[\x92\x41O24Unique identifier of the client resource to retrieveJ\x17\"app_69388798466720005\"\xbaH\x06r\x04\x10\x01\x18 R\nresourceId\"\xd4\x01\n EnsureResourceConnectionResponse\x12\xaf\x01\n\nconnection\x18\x01 \x01(\x0b\x32\'.scalekit.v1.clients.ResourceConnectionBf\x92\x41]2[Details of the connection resource. Contains configuration settings and status information.\xbaH\x03\xc8\x01\x01R\nconnection\"\xb0\x07\n\x12ResourceConnection\x12T\n\x02id\x18\x01 \x01(\tBD\x92\x41\x41\x32,Unique identifier of the connection resourceJ\x11\"conn_1234567890\"R\x02id\x12\xa1\x01\n\x04type\x18\x02 \x01(\x0e\x32+.scalekit.v1.clients.ResourceConnectionTypeB`\x92\x41]2QType of connection. Determines the authentication method used for the connection.J\x08\"CUSTOM\"R\x04type\x12\x94\x01\n\x06status\x18\x03 \x01(\tB|\x92\x41y2mCurrent status of the connection. Indicates whether the connection is active, inactive, or in an error state.J\x08\"ACTIVE\"R\x06status\x12\x89\x01\n\x07\x65nabled\x18\x04 \x01(\x08\x42o\x92\x41l2dIndicates whether the connection is enabled. Disabled connections cannot be used for authentication.J\x04trueR\x07\x65nabled\x12\xe7\x01\n\x08settings\x18\x05 \x01(\x0b\x32\x17.google.protobuf.StructB\xb1\x01\x92\x41\xad\x01\x32kConfiguration settings for the connection. The structure of this field varies based on the connection type.J>{\"api_key\": \"abcd1234\", \"endpoint\": \"https://api.example.com\"}R\x08settings\x12\x92\x01\n\x08provider\x18\x06 \x01(\tBv\x92\x41s2^The provider of the connection. Indicates the service or platform that manages the connection.J\x11\"custom_provider\"R\x08provider\"\xdc\x01\n ResourceCustomConnectionSettings\x12\xb7\x01\n\rauthorize_uri\x18\x01 \x01(\tB\x91\x01\x92\x41\x83\x01\x32[The URI where users are redirected to authorize the application. Must be a valid HTTPS URL.J$\"https://auth.example.com/authorize\"\xbaH\x07r\x05\x10\x01\x88\x01\x01R\x0c\x61uthorizeUri*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*1\n\x16ResourceConnectionType\x12\x0b\n\x07INVALID\x10\x00\x12\n\n\x06\x43USTOM\x10\x01\x32\xc3\x8a\x01\n\rClientService\x12\xa0\x03\n\nListClient\x12\'.scalekit.v1.clients.ListClientsRequest\x1a(.scalekit.v1.clients.ListClientsResponse\"\xbe\x02\x92\x41\x8e\x02\n\x08\x41PI Auth\x12\x10List API clients\x1a\x90\x01Retrieves a paginated list of API client applications in the environment. Returns only environment-level clients, not resource-specific clients.J]\n\x03\x32\x30\x30\x12V\n&List of clients returned successfully.\x12,\n*\x1a(.scalekit.v1.clients.ListClientsResponse\x82\xb5\x18\x02\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x11\x12\x0f/api/v1/clients\x12\xb4\x03\n\x0c\x43reateClient\x12(.scalekit.v1.clients.CreateClientRequest\x1a).scalekit.v1.clients.CreateClientResponse\"\xce\x02\x92\x41\x96\x02\n\x06\x43lient\x12\rCreate Client\x1a\x81\x01\x43reates an OAuth client with properties including post-login URIs, scopes, and custom claims. Required fields: name, client_type.Jy\n\x03\x32\x30\x30\x12r\nAClient created successfully. Returns the created client resource.\x12-\n+\x1a).scalekit.v1.clients.CreateClientResponse\x82\xb5\x18\x02\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x19\"\x0f/api/v1/clients:\x06\x63lient\x12\xd0\x04\n\tGetClient\x12%.scalekit.v1.clients.GetClientRequest\x1a&.scalekit.v1.clients.GetClientResponse\"\xf3\x03\x92\x41\xb7\x03\n\x0e\x43lient Configs\x12\x18Get Client Configuration\x1a\xc5\x01Retrieves complete client configuration including scopes, custom claims, redirect URIs, and access token expiration time. Use this endpoint to view or verify client settings and security parametersJ\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\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x1d\x12\x1b/api/v1/clients/{client_id}\x12\xcd\x05\n\x0cUpdateClient\x12(.scalekit.v1.clients.UpdateClientRequest\x1a).scalekit.v1.clients.UpdateClientResponse\"\xe7\x04\x92\x41\xa3\x04\n\x0e\x43lient Configs\x12\x1bUpdate Client Configuration\x1a\xba\x02Updates the configuration settings for a client. Only fields included in the request are modified. Updatable fields include post_login_uris, post_logout_redirect_uris, back_channel_logout_uris, initiate_login_uri, scopes, audience, and custom claims. 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\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02%2\x1b/api/v1/clients/{client_id}:\x06\x63lient\x12\x9a\x03\n\x0c\x44\x65leteClient\x12(.scalekit.v1.clients.DeleteClientRequest\x1a\x16.google.protobuf.Empty\"\xc7\x02\x92\x41\x8b\x02\n\x06\x43lient\x12\rDelete Client\x1a\xb2\x01Permanently deletes a client and associated secrets. This operation cannot be undone. Supports WEB_APP, NTV, and SPA client types only. Cannot delete default environment clients.J=\n\x03\x32\x30\x30\x12\x36\n4Client successfully deleted and no longer accessible\x82\xb5\x18\x02\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x1d*\x1b/api/v1/clients/{client_id}\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\x18\x44\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\x18\x44\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\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x31*//api/v1/clients/{client_id}/secrets/{secret_id}\x12\x92\x05\n\x18\x43reateOrganizationClient\x12\x34.scalekit.v1.clients.CreateOrganizationClientRequest\x1a\x35.scalekit.v1.clients.CreateOrganizationClientResponse\"\x88\x04\x92\x41\xbf\x03\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.CreateOrganizationClientResponse\x82\xb5\x18\x02\x18\x44\x82\xd3\xe4\x93\x02\x39\"//api/v1/organizations/{organization_id}/clients:\x06\x63lient\x12\xb5\x04\n\x15GetOrganizationClient\x12\x31.scalekit.v1.clients.GetOrganizationClientRequest\x1a\x32.scalekit.v1.clients.GetOrganizationClientResponse\"\xb4\x03\x92\x41\xe7\x02\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.GetOrganizationClientResponse\x82\xb5\x18\x02\x18\x44\x82\xd3\xe4\x93\x02=\x12;/api/v1/organizations/{organization_id}/clients/{client_id}\x12\x89\x05\n\x1e\x43reateOrganizationClientSecret\x12:.scalekit.v1.clients.CreateOrganizationClientSecretRequest\x1a;.scalekit.v1.clients.CreateOrganizationClientSecretResponse\"\xed\x03\x92\x41\x98\x03\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.CreateOrganizationClientSecretResponse\x82\xb5\x18\x02\x18\x44\x82\xd3\xe4\x93\x02\x45\"C/api/v1/organizations/{organization_id}/clients/{client_id}/secrets\x12\xaf\x03\n\x1e\x44\x65leteOrganizationClientSecret\x12:.scalekit.v1.clients.DeleteOrganizationClientSecretRequest\x1a\x16.google.protobuf.Empty\"\xb8\x02\x92\x41\xd7\x01\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 accessible\x82\xb5\x18\x02\x18\x44\x82\xd3\xe4\x93\x02Q*O/api/v1/organizations/{organization_id}/clients/{client_id}/secrets/{secret_id}\x12\xc2\x04\n\x18UpdateOrganizationClient\x12\x34.scalekit.v1.clients.UpdateOrganizationClientRequest\x1a\x35.scalekit.v1.clients.UpdateOrganizationClientResponse\"\xb8\x03\x92\x41\xe3\x02\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.UpdateOrganizationClientResponse\x82\xb5\x18\x02\x18\x44\x82\xd3\xe4\x93\x02\x45\x32;/api/v1/organizations/{organization_id}/clients/{client_id}:\x06\x63lient\x12\xa3\x04\n\x18\x44\x65leteOrganizationClient\x12\x34.scalekit.v1.clients.DeleteOrganizationClientRequest\x1a\x16.google.protobuf.Empty\"\xb8\x03\x92\x41\xeb\x02\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 accessible\x82\xb5\x18\x02\x18\x44\x82\xd3\xe4\x93\x02=*;/api/v1/organizations/{organization_id}/clients/{client_id}\x12\xe8\x04\n\x17ListOrganizationClients\x12\x33.scalekit.v1.clients.ListOrganizationClientsRequest\x1a\x34.scalekit.v1.clients.ListOrganizationClientsResponse\"\xe1\x03\x92\x41\xa0\x03\n\x08\x41PI Auth\x12\x1dList organization API clients\x1a\xb9\x01Retrieves a paginated list of API clients for a specific organization. Returns client details including metadata, scopes, and secret information (without exposing actual secret values).J\xb8\x01\n\x03\x32\x30\x30\x12\xb0\x01\ntList of organization API clients returned successfully. Each client includes its configuration details and metadata.\x12\x38\n6\x1a\x34.scalekit.v1.clients.ListOrganizationClientsResponse\x82\xb5\x18\x02\x18\x44\x82\xd3\xe4\x93\x02\x31\x12//api/v1/organizations/{organization_id}/clients\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\x18\x44\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\x18\x44\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\x18\x44\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\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x31\"\'/api/v1/resources/{resource_id}/clients:\x06\x63lient\x12\xcf\x03\n\x14UpdateResourceClient\x12\x30.scalekit.v1.clients.UpdateResourceClientRequest\x1a\x31.scalekit.v1.clients.UpdateResourceClientResponse\"\xd1\x02\x92\x41\xf5\x01\n\x08\x41PI Auth\x12\x16Update Resource Client\x1aHUpdates the configuration of an API client under the specified resource.J\x86\x01\n\x03\x32\x30\x30\x12\x7f\nFClient updated successfully. Returns the updated client configuration.\x12\x35\n3\x1a\x31.scalekit.v1.clients.UpdateResourceClientResponse\x82\xb5\x18\x02\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02=23/api/v1/resources/{resource_id}/clients/{client_id}:\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\x18\x44\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\xe7\x03\n\x13ListResourceClients\x12/.scalekit.v1.clients.ListResourceClientsRequest\x1a\x30.scalekit.v1.clients.ListResourceClientsResponse\"\xec\x02\x92\x41\xa4\x02\n\x08\x41PI Auth\x12\x19List Resource API Clients\x1aPRetrieves a list of API clients associated with a specific application resource.J\xaa\x01\n\x03\x32\x30\x30\x12\xa2\x01\njList of clients retrieved successfully. Returns the resource details and associated client configurations.\x12\x34\n2\x1a\x30.scalekit.v1.clients.ListResourceClientsResponse\x82\xb5\x18\x02\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02)\x12\'/api/v1/resources/{resource_id}/clients\x12\xcb\x03\n\x18ListResourceUserConsents\x12\x34.scalekit.v1.clients.ListResourceUserConsentsRequest\x1a\x35.scalekit.v1.clients.ListResourceUserConsentsResponse\"\xc1\x02\x92\x41\x8b\x02\n\x08\x41PI Auth\x12!List user consents for a resource\x1ajRetrieves a paginated list of user consents for a given resource, with optional search by external user IDJp\n\x03\x32\x30\x30\x12i\n,List of user consents retrieved successfully\x12\x39\n7\x1a\x35.scalekit.v1.clients.ListResourceUserConsentsResponse\x82\xb5\x18\x02\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x17\x12\x15/api/v1/user_consents\x12\x87\x03\n\x14\x44\x65leteResourceClient\x12\x30.scalekit.v1.clients.DeleteResourceClientRequest\x1a\x31.scalekit.v1.clients.DeleteResourceClientResponse\"\x89\x02\x92\x41\xb5\x01\n\x08\x41PI Auth\x12\x16\x44\x65lete Resource Client\x1a\x33\x44\x65letes an API client under the specified resource.J\\\n\x03\x32\x30\x30\x12U\n\x1c\x43lient deleted successfully.\x12\x35\n3\x1a\x31.scalekit.v1.clients.DeleteResourceClientResponse\x82\xb5\x18\x02\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x35*3/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/{res_id}/clients:register:\x06\x63lient\x12\xb6\x05\n\x0b\x43reateScope\x12\'.scalekit.v1.clients.CreateScopeRequest\x1a(.scalekit.v1.clients.CreateScopeResponse\"\xd3\x04\x88\x02\x01\x92\x41\xeb\x03\x12\x19\x43reate scope (Deprecated)\x1a\xa1\x02\x44\x45PRECATED: Use permission management APIs instead. Creates a new OAuth scope for API authorization. Scopes define the level of access granted to API clients. Reserved OpenID Connect scopes (profile, email, address, phone) cannot be created as they are automatically managed by the system.J\xa9\x01\n\x03\x32\x30\x31\x12\xa1\x01\nqOAuth scope created successfully. Returns the newly created scope with its name, description, and enabled status.\x12,\n*\x1a(.scalekit.v1.clients.CreateScopeResponse\x82\xb5\x18\x02\x18@\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x46\"\x0e/api/v1/scopes:\x05scopeZ-\"$/api/v1/environments/{env_id}/scopes:\x05scope\x12\xe9\x03\n\nListScopes\x12&.scalekit.v1.clients.ListScopesRequest\x1a\'.scalekit.v1.clients.ListScopesResponse\"\x89\x03\x92\x41\xb2\x02\x12\x0bList scopes\x1a\x7fRetrieves all OAuth scopes configured for the environment. Returns both custom scopes and system-managed OpenID Connect scopes.J\xa1\x01\n\x03\x32\x30\x30\x12\x99\x01\njList of OAuth scopes returned successfully. Each scope includes its name, description, and enabled status.\x12+\n)\x1a\'.scalekit.v1.clients.ListScopesResponse\x82\xb5\x18\x02\x18`\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x38\x12\x0e/api/v1/scopesZ&\x12$/api/v1/environments/{env_id}/scopes\x12\xaf\x04\n\x0bUpdateScope\x12\'.scalekit.v1.clients.UpdateScopeRequest\x1a(.scalekit.v1.clients.UpdateScopeResponse\"\xcc\x03\x88\x02\x01\x92\x41\x8e\x03\x12\x19Update scope (Deprecated)\x1a\xe0\x01\x44\x45PRECATED: Use permission management APIs instead. Updates an existing OAuth scope\'s description and enabled status. Reserved OpenID Connect scopes (profile, email, address, phone) cannot be modified through this endpoint.J\x8d\x01\n\x03\x32\x30\x30\x12\x85\x01\nUOAuth scope updated successfully. Returns the updated scope with all current details.\x12,\n*\x1a(.scalekit.v1.clients.UpdateScopeResponse\x82\xb5\x18\x02\x18@\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x1c\x32\x13/api/v1/scopes/{id}:\x05scope\x12\xe0\x03\n\x0b\x44\x65leteScope\x12\'.scalekit.v1.clients.DeleteScopeRequest\x1a\x16.google.protobuf.Empty\"\x8f\x03\x88\x02\x01\x92\x41\xd8\x02\x12\x19\x44\x65lete scope (Deprecated)\x1a\xf6\x01\x44\x45PRECATED: Use permission management APIs instead. Permanently deletes an OAuth scope from the environment. This operation cannot be undone. Reserved OpenID Connect scopes (profile, email, address, phone) cannot be deleted through this endpoint.JB\n\x03\x32\x30\x30\x12;\n9OAuth scope successfully deleted and no longer accessible\x82\xb5\x18\x02\x18@\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x15*\x13/api/v1/scopes/{id}\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\x12\xc2\x01\n\x11RevokeUserConsent\x12-.scalekit.v1.clients.RevokeUserConsentRequest\x1a..scalekit.v1.clients.RevokeUserConsentResponse\"N\x82\xb5\x18\x02\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x33*1/api/v1/clients/{client_id}/consents/{consent_id}\x12\xea\x03\n\x18\x45nsureResourceConnection\x12\x34.scalekit.v1.clients.EnsureResourceConnectionRequest\x1a\x35.scalekit.v1.clients.EnsureResourceConnectionResponse\"\xe0\x02\x92\x41\x91\x02\n\x08\x41PI Auth\x12!Get or Create Resource Connection\x1aSRetrieves an existing resource connection or creates a new one if it doesn\'t exist.J\x8c\x01\n\x03\x32\x30\x30\x12\x84\x01\nBReturns the existing or newly created resource connection details.\x12>\n<\x1a:.scalekit.v1.clients.GetOrCreateResourceConnectionResponse\x82\xb5\x18\x02\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x30\"+/api/v1/resources/{resource_id}/connections:\x01*\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\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/connections/connections.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\"\x8e\r\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\x12K\n\x04name\x18\x02 \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\x03 \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\xab\x01\n\x0cresource_uri\x18\x04 \x01(\tB\x87\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\"R\x0bresourceUri\x12g\n\x13\x61\x63\x63\x65ss_token_expiry\x18\x05 \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\x06 \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\x07 \x01(\x08\x42P\x92\x41M2EIndicates if dynamic client registration is allowed for this resourceJ\x04trueR disableDynamicClientRegistration\x12\x61\n\x08logo_uri\x18\x08 \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\t \x01(\tB<\x92\x41\x31\x32$Connection provider for the resourceJ\t\"DESCOPE\"\xbaH\x05r\x03\x18\x80\x04R\x08provider\x12\xa9\x01\n\x0bresource_id\x18\n \x01(\tB\x87\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\"R\nresourceId\x12i\n\x06scopes\x18\x0b \x03(\tBQ\x92\x41N21List of OAuth scopes associated with the resourceJ\x19[\"usr:read\", \"usr:write\"]R\x06scopes\x12\xac\x01\n intersect_scopes_user_permission\x18\x0c \x01(\x08\x42\x63\x92\x41`2XIndicates if the scopes should be intersected with user permissions for granular controlJ\x04trueR\x1dintersectScopesUserPermission\x12\x7f\n\x0b\x65nable_cimd\x18\r \x01(\x08\x42^\x92\x41[2RSpecifies whether Client ID Metadata Document (CIMD) is activated for the resourceJ\x05\x66\x61lseR\nenableCimd\"\x8c\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\"https://example.com/.well-known/oauth-protected-resource/mcp\"R\x14protectedMetadataUri\x12\xb2\x01\n\x0bresource_id\x18\x0f \x01(\tB\x90\x01\x92\x41\x84\x01\x32\x62Resource identifier for the resource. This could be the URL used to access the resource resourcesJ\x1e\"https://resource.example.com\"\xbaH\x05r\x03\x18\x80\x04R\nresourceId\x12\xfb\x01\n\x06scopes\x18\x10 \x03(\x0b\x32\x1a.scalekit.v1.clients.ScopeB\xc6\x01\x92\x41\xc2\x01\x32OList of OAuth scopes associated with the resource with enabled or disabled flagJo[{\"id\": \"perm_\", \"name\": \"usr:read\", \"description\": \"Reading basic information of the users\", \"enabled\": true}]R\x06scopes\x12\xc3\x01\n\x12\x63onnection_details\x18\x11 \x01(\x0b\x32\'.scalekit.v1.clients.ResourceConnectionBk\x92\x41\x65\x32\x63\x44\x65tails of the own auth connection if any. For full stack this field will be empty or not populated\xe0\x41\x03R\x11\x63onnectionDetails\x12\x91\x01\n\x1a\x64isallow_connection_update\x18\x12 \x01(\x08\x42S\x92\x41M2DIndicates if updating the connection is disallowed for this resourceJ\x05\x66\x61lse\xe0\x41\x03R\x18\x64isallowConnectionUpdate\x12\xac\x01\n intersect_scopes_user_permission\x18\x13 \x01(\x08\x42\x63\x92\x41`2XIndicates if the scopes should be intersected with user permissions for granular controlJ\x04trueR\x1dintersectScopesUserPermission\x12\x7f\n\x0b\x65nable_cimd\x18\x14 \x01(\x08\x42^\x92\x41[2RSpecifies whether Client ID Metadata Document (CIMD) is activated for the resourceJ\x05\x66\x61lseR\nenableCimd\"\xf2\x01\n\x15RegisterClientRequest\x12i\n\x06res_id\x18\x01 \x01(\tBR\x92\x41\x43\x32(Unique identifier of the client resourceJ\x17\"app_69388798466720005\"\xbaH\tr\x04\x10\x01\x18 \xc8\x01\x01R\x05resId\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\"\x96\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\x12g\n\rredirect_uris\x18\x03 \x03(\tBB\x92\x41?2\x1bRedirect URI for the clientJ [\"https://example.com/callback\"]R\x0credirectUris\x12Y\n\x05scope\x18\x04 \x01(\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\"\xb9\x17\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\xbe\x01\n\x06scopes\x18\x07 \x03(\tB\xa5\x01\x92\x41\xa1\x01\x32uThe OAuth 2.0 scopes granted to this client. These scopes determine what resources and actions the client can access.J([\"deploy:resources\", \"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\xc4\x01\n\x0bresource_id\x18\x0b \x01(\tB\xa2\x01\x92\x41\x9e\x01\x32\x83\x01The 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\x16\"app_1231234233424344\"R\nresourceId\x12\xd1\x01\n\rredirect_uris\x18\x0c \x03(\tB\xab\x01\x92\x41\xa7\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 [\"https://example.com/callback\"]R\x0credirectUris\x12~\n\rclient_secret\x18\r \x01(\tBY\x92\x41V24Client secret value (only returned once at creation)J\x1e\"CdExsdErfccxDDssddfffgfeFHH1\"R\x0c\x63lientSecret\x12\xce\x01\n\x18\x63lient_secret_expires_at\x18\x0e \x01(\x05\x42\x94\x01\x92\x41\x90\x01\x32rClient secret expiry time in RFC3339 format. If the client secret does not expire, this field will be set to null.J\x1a\"2024-12-31T23:59:59.000Z\"R\x15\x63lientSecretExpiresAt\"\xdd\x02\n\x14ListResourcesRequest\x12r\n\rresource_type\x18\x01 \x01(\x0e\x32!.scalekit.v1.clients.ResourceTypeB*\x92\x41!2\x18\x46ilter resources by typeJ\x05\"WEB\"\xbaH\x03\xc8\x01\x01R\x0cresourceType\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\x12r\n\tpage_size\x18\x03 \x01(\rBU\x92\x41K2ENumber of resources to return per page. Maximum is 30. Default is 10.J\x02\x32\x30\xbaH\x04*\x02\x18\x1eR\x08pageSize\"\xdb\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\x12S\n\x0fprev_page_token\x18\x04 \x01(\tB+\x92\x41(2&Token for the previous page of resultsR\rprevPageToken\"\xaf\x02\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\x12;\n\x0bupdate_mask\x18\x63 \x01(\x0b\x32\x1a.google.protobuf.FieldMaskR\nupdateMask\"\xa1\x0e\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\xab\x01\n\x0cresource_uri\x18\x03 \x01(\tB\x87\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\"R\x0bresourceUri\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\xbb\x01\n#disable_dynamic_client_registration\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.BoolValueBP\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\x12\xa9\x01\n\x0bresource_id\x18\x0b \x01(\tB\x87\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\"R\nresourceId\x12i\n\x06scopes\x18\x0c \x03(\tBQ\x92\x41N21List of OAuth scopes associated with the resourceJ\x19[\"usr:read\", \"usr:write\"]R\x06scopes\x12\xa7\x01\n\x1a\x63ustom_connection_settings\x18\r \x01(\x0b\x32\x35.scalekit.v1.clients.ResourceCustomConnectionSettingsB0\x92\x41-2+Custom connection settings for the resourceH\x00R\x18\x63ustomConnectionSettings\x12\xc8\x01\n intersect_scopes_user_permission\x18\x0e \x01(\x0b\x32\x1a.google.protobuf.BoolValueBc\x92\x41`2XIndicates if the scopes should be intersected with user permissions for granular controlJ\x04trueR\x1dintersectScopesUserPermission\x12\x94\x01\n\x0b\x65nable_cimd\x18\x0f \x01(\x0b\x32\x1a.google.protobuf.BoolValueBW\x92\x41T2KIndicates if CIMD (Client ID Metadata Document) is enabled for the resourceJ\x05\x66\x61lseR\nenableCimdB\n\n\x08settings\"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\"\xc7\x03\n\x1bUpdateResourceClientRequest\x12i\n\x0bresource_id\x18\x01 \x01(\tBH\x92\x41<2!Unique identifier of the resourceJ\x17\"res_69388798466720005\"\xbaH\x06r\x04\x10\x01\x18 R\nresourceId\x12\x63\n\tclient_id\x18\x02 \x01(\tBF\x92\x41:2\x1fUnique identifier of the clientJ\x17\"m2m_12345678901234567\"\xbaH\x06r\x04\x10\x01\x18 R\x08\x63lientId\x12\x66\n\x06\x63lient\x18\x03 \x01(\x0b\x32#.scalekit.v1.clients.ResourceClientB)\x92\x41 2\x1e\x46ields of the client to update\xbaH\x03\xc8\x01\x01R\x06\x63lient\x12p\n\x0bupdate_mask\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.FieldMaskB3\x92\x41\x30\x32.Mask specifying which fields should be updatedR\nupdateMask\"s\n\x1cUpdateResourceClientResponse\x12S\n\x06\x63lient\x18\x01 \x01(\x0b\x32\x1e.scalekit.v1.clients.M2MClientB\x1b\x92\x41\x18\x32\x16Updated client detailsR\x06\x63lient\"\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\x41Y2\x92\x41;2.Case-insensitive search over external user IDsJ\t\"usr_123\"R\x06search\x12[\n\tpage_size\x18\x03 \x01(\rB>\x92\x41\x34\x32.Number of consents to return per page (max 30)J\x02\x32\x30\xbaH\x04*\x02\x18\x1eR\x08pageSize\x12\x63\n\npage_token\x18\x04 \x01(\tBD\x92\x41\x41\x32\x33Pagination token to fetch the next or previous pageJ\n\">:abc123\"R\tpageToken\"\x8c\x03\n ListResourceUserConsentsResponse\x12V\n\ntotal_size\x18\x01 \x01(\rB7\x92\x41\x34\x32\x32Total number of user consents matching the requestR\ttotalSize\x12T\n\x0fnext_page_token\x18\x02 \x01(\tB,\x92\x41)2\'Pagination token to fetch the next pageR\rnextPageToken\x12`\n\x08\x63onsents\x18\x03 \x03(\x0b\x32(.scalekit.v1.clients.ResourceUserConsentB\x1a\x92\x41\x17\x32\x15List of user consentsR\x08\x63onsents\x12X\n\x0fprev_page_token\x18\x04 \x01(\tB0\x92\x41-2+Pagination token to fetch the previous pageR\rprevPageToken\"\xdc\x04\n\x13ResourceUserConsent\x12X\n\x02id\x18\x01 \x01(\tBH\x92\x41\x45\x32%Unique identifier of the user consentJ\x1c\"usrcnst_102709535608668163\"R\x02id\x12r\n\x10\x65xternal_user_id\x18\x02 \x01(\tBH\x92\x41\x45\x32*External identifier of the consenting userJ\x17\"usr_83562895790637841\"R\x0e\x65xternalUserId\x12`\n\tclient_id\x18\x03 \x01(\tBC\x92\x41@2-Client identifier associated with the consentJ\x0f\"m2m_123123123\"R\x08\x63lientId\x12\x44\n\x0b\x63lient_name\x18\x04 \x01(\tB#\x92\x41 2\x14Readable client nameJ\x08\"MCPJam\"R\nclientName\x12O\n\x06scopes\x18\x05 \x03(\tB7\x92\x41\x34\x32\x1dScopes granted in the consentJ\x13[\"openid\", \"email\"]R\x06scopes\x12~\n\ngranted_at\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampBC\x92\x41@2\"Timestamp when consent was grantedJ\x1a\"2025-12-09T13:27:29.810Z\"R\tgrantedAt\"\xa0\x01\n\x1aListResourceClientsRequest\x12\x81\x01\n\x0bresource_id\x18\x01 \x01(\tB`\x92\x41T2@Unique identifier of the resource whose clients are to be listedJ\x10\"skc_1234567890\"\xbaH\x06r\x04\x10\x01\x18 R\nresourceId\"\xf0\x02\n\x1bListResourceClientsResponse\x12k\n\x07\x63lients\x18\x02 \x03(\x0b\x32\x1e.scalekit.v1.clients.M2MClientB1\x92\x41.2,List of clients associated with the resourceR\x07\x63lients\x12i\n\x11total_dcr_clients\x18\x03 \x01(\x05\x42=\x92\x41:28Total number of DCR clients associated with the resourceR\x0ftotalDcrClients\x12s\n\x14total_static_clients\x18\x04 \x01(\x05\x42\x41\x92\x41>2\"R\tpageToken:\xec\x01\x92\x41\xe8\x01\n\xa8\x01*!List Organization Clients Request2\x82\x01Request message for listing API clients within a specific organization. Supports pagination for handling large numbers of clients.*;\n\x11\x41PI Documentation\x12&https://docs.scalekit.com/m2m/overview\"\xa5\x06\n\x1fListOrganizationClientsResponse\x12\x97\x01\n\x0fnext_page_token\x18\x01 \x01(\tBo\x92\x41l2UPagination token for the next page of results. Use this token to fetch the next page.J\x13\"\"R\rnextPageToken\x12X\n\ntotal_size\x18\x02 \x01(\rB9\x92\x41\x36\x32\x30Total number of API clients in the organization.J\x02\x33\x30R\ttotalSize\x12\xe0\x01\n\x07\x63lients\x18\x03 \x03(\x0b\x32\x1e.scalekit.v1.clients.M2MClientB\xa5\x01\x92\x41\xa1\x01\x32\x9e\x01List of API client objects for the organization. Each client includes its configuration, metadata, and active secrets (without exposing actual secret values).R\x07\x63lients\x12\x9f\x01\n\x0fprev_page_token\x18\x04 \x01(\tBw\x92\x41t2]Pagination token for the previous page of results. Use this token to fetch the previous page.J\x13\"\"R\rprevPageToken:\x88\x01\x92\x41\x84\x01\n\x81\x01*\"List Organization Clients Response2[Response message containing a paginated list of API clients for the specified organization.\"\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\"\xa5\x01\n\x10GetClientRequest\x12\x90\x01\n\tclient_id\x18\x01 \x01(\tBs\x92\x41g2SUnique identifier of the client resource to retrieve. Must be 1-32 characters long.J\x10\"skc_1234567890\"\xbaH\x06r\x04\x10\x01\x18 R\x08\x63lientId\"\xf5\x01\n\x11GetClientResponse\x12\xdf\x01\n\x06\x63lient\x18\x01 \x01(\x0b\x32\x1b.scalekit.v1.clients.ClientB\xa9\x01\x92\x41\xa5\x01\x32\xa2\x01\x43omplete client configuration including authentication settings, redirect URIs, and secrets. This contains all current settings for the requested client resource.R\x06\x63lient\"\xe1\x06\n\x12ListClientsRequest\x12\xf2\x01\n\x14include_plain_secret\x18\x01 \x01(\x08\x42\xbf\x01\x92\x41\xbb\x01\x32\xb1\x01Whether to include plain secret values in the response. Enable only during initial client creation, then store secrets securely. Not available when filtering by ALL client typesJ\x05\x66\x61lseR\x12includePlainSecret\x12\x85\x01\n\x06\x66ilter\x18\x03 \x01(\x0b\x32..scalekit.v1.clients.ListClientsRequest.FilterB=\x92\x41:28Filters clients by type: ENV, WEB_APP, NTV, SPA, or ALL.R\x06\x66ilter\x12]\n\npage_token\x18\x04 \x01(\tB>\x92\x41;2\"Token for the next page of resultsJ\x15\"next_page_token_123\"R\tpageToken\x12\x64\n\tpage_size\x18\x05 \x01(\rBG\x92\x41=27Number of clients per page. Defaults to 10, maximum 30.J\x02\x33\x30\xbaH\x04*\x02\x18\x1eR\x08pageSize\x1a\x82\x02\n\x06\x46ilter\x12\xf7\x01\n\x0b\x63lient_type\x18\x01 \x03(\tB\xd5\x01\x92\x41\xd1\x01\x32\xce\x01\x46ilters clients by type. Valid values: ENV, WEB_APP, NTV, SPA, ALL. Defaults to ENV. ALL takes precedence and other types are ignored. For resource-specific clients (e.g., M2M), use ListResourceClients API.R\nclientTypeJ\x04\x08\x02\x10\x03\"\xf1\x03\n\x13ListClientsResponse\x12Z\n\ntotal_size\x18\x01 \x01(\rB;\x92\x41\x38\x32\x32Total number of client resources in the workspace.J\x02\x31\x32R\ttotalSize\x12\xc1\x01\n\x07\x63lients\x18\x02 \x03(\x0b\x32\x1b.scalekit.v1.clients.ClientB\x89\x01\x92\x41\x85\x01\x32\x82\x01List of client resource configurations matching the query criteria. Each client includes its metadata and authentication settings.R\x07\x63lients\x12\x65\n\x0fnext_page_token\x18\x03 \x01(\tB=\x92\x41:28Pagination token that retrieves the next page of resultsR\rnextPageToken\x12S\n\x0fprev_page_token\x18\x04 \x01(\tB+\x92\x41(2&Token for the previous page of resultsR\rprevPageToken\"\xed\x01\n\x13\x43reateClientRequest\x12\xd5\x01\n\x06\x63lient\x18\x01 \x01(\x0b\x32!.scalekit.v1.clients.CreateClientB\x99\x01\x92\x41\x8f\x01\x32\x1b\x43lient parameters to createJp{\"post_login_uris\": [\"https://app.example.com/callback\"], \"initiate_login_uri\": \"https://app.example.com/login\"}\xbaH\x03\xc8\x01\x01R\x06\x63lient\"\xeb\x17\n\x0c\x43reateClient\x12\xde\x01\n\x04name\x18\x01 \x01(\tB\xc9\x01\x92\x41\xba\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\x17\"My Application Client\"\xbaH\x08r\x03\x18\x80\x01\xc8\x01\x01R\x04name\x12\xd6\x01\n\x0b\x63lient_type\x18\x02 \x01(\tB\xb4\x01\x92\x41\xa5\x01\x32\x99\x01\x43lient application type. Valid values: WEB_APP (web applications), SPA (single-page applications), NTV (native applications including mobile and desktop)J\x07WEB_APP\xbaH\x08r\x03\x18\x80\x01\xc8\x01\x01R\nclientType\x12\xb6\x02\n\x18\x62\x61\x63k_channel_logout_uris\x18\x03 \x03(\tB\xfc\x01\x92\x41\xe9\x01\x32wHTTPS endpoints that receive back-channel logout notifications for application-initiated logout and session management.Jn[\"https://app.example.com/backchannel-logout-internal\", \"https://app.example.com/backchannel-logout-external\"]\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\x04 \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\x05 \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\x00R\x10initiateLoginUri\x88\x01\x01\x12\x9c\x02\n\x0fpost_login_uris\x18\x06 \x03(\tB\xf3\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\x05\x92\x01\x02\x18\x01R\rpostLoginUris\x12g\n\x13\x61\x63\x63\x65ss_token_expiry\x18\x07 \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\x12\xb3\x01\n\x06scopes\x18\x08 \x03(\tB\x9a\x01\x92\x41\x96\x01\x32wList of scopes to be attached to this client. These scopes must be a subset of the scopes available in the environment.J\x1b[\"data:read\", \"data:write\"]R\x06scopes\x12\xc6\x01\n\rcustom_claims\x18\t \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\xf0\x01\n\x1c\x64isallow_scalekit_api_access\x18\n \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x92\x01\x92\x41\x8e\x01\x32\x85\x01If set to true, the client will be restricted from accessing Scalekit APIs directly, enhancing security by limiting its capabilities.J\x04trueR\x19\x64isallowScalekitApiAccess\x12\xe0\x01\n\x0bgrant_types\x18\x0b \x03(\tB\xbe\x01\x92\x41\xba\x01\x32yList of OAuth 2.0 grant types that the client is authorized to use. This defines how the client can obtain access tokens.J=[\"authorization_code\", \"refresh_token\", \"client_credentials\"]R\ngrantTypes\x12\xe1\x01\n\x0c\x65nforce_pkce\x18\x0c \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\xa1\x01\x92\x41\x9d\x01\x32\x94\x01Whether Proof Key for Code Exchange (PKCE) is required. PKCE mitigates authorization code interception attacks. Defaults to true for public clients.J\x04trueR\x0b\x65nforcePkce:\xd4\x01\x92\x41\xd0\x01\n\x9c\x01*\rCreate Client2\x8a\x01Request message for creating a new API client with specified configuration parameters including redirect URIs and authentication settings.*/\n\x11\x41PI Documentation\x12\x1ahttps://docs.scalekit.com/B\x15\n\x13_initiate_login_uri\"\x8c\x01\n\x14\x43reateClientResponse\x12t\n\x06\x63lient\x18\x01 \x01(\x0b\x32\x1b.scalekit.v1.clients.ClientB?\x92\x41<2:Created client with all settings reflected in the responseR\x06\x63lient\"\xc3\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\xe8\x01\n\x06\x63lient\x18\x02 \x01(\x0b\x32!.scalekit.v1.clients.UpdateClientB\xac\x01\x92\x41\xa2\x01\x32\x65\x41pplication configuration parameters to update. Contains post_login_uris and authentication settings.J9{\"post_login_uris\": [\"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\"\xf4\x16\n\x0cUpdateClient\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\x00R\x10initiateLoginUri\x88\x01\x01\x12\x9c\x02\n\x0fpost_login_uris\x18\x07 \x03(\tB\xf3\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\x05\x92\x01\x02\x18\x01R\rpostLoginUris\x12\xd3\x01\n\x04name\x18\x08 \x01(\tB\xbe\x01\x92\x41\xba\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\x17\"My Application Client\"R\x04name\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\x12\xb3\x01\n\x06scopes\x18\x0b \x03(\tB\x9a\x01\x92\x41\x96\x01\x32wList of scopes to be attached to this client. These scopes must be a subset of the scopes available in the environment.J\x1b[\"data:read\", \"data:write\"]R\x06scopes\x12\xc6\x01\n\rcustom_claims\x18\x0c \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\xf0\x01\n\x1c\x64isallow_scalekit_api_access\x18\r \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x92\x01\x92\x41\x8e\x01\x32\x85\x01If set to true, the client will be restricted from accessing Scalekit APIs directly, enhancing security by limiting its capabilities.J\x04trueR\x19\x64isallowScalekitApiAccess\x12\xe0\x01\n\x0bgrant_types\x18\x0e \x03(\tB\xbe\x01\x92\x41\xba\x01\x32yList of OAuth 2.0 grant types that the client is authorized to use. This defines how the client can obtain access tokens.J=[\"authorization_code\", \"refresh_token\", \"client_credentials\"]R\ngrantTypes\x12\xe1\x01\n\x0c\x65nforce_pkce\x18\x0f \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\xa1\x01\x92\x41\x9d\x01\x32\x94\x01Whether Proof Key for Code Exchange (PKCE) is required. PKCE mitigates authorization code interception attacks. Defaults to true for public clients.J\x04trueR\x0b\x65nforcePkce:\x83\x02\x92\x41\xff\x01\n\xbf\x01*\x1bUpdate Client Configuration2\x9f\x01Parameters for updating an API client application\'s configuration. This allows modification of post_login_uris, logout settings, and other security parameters.*;\n\x11\x41PI Documentation\x12&https://docs.scalekit.com/m2m/overviewB\x15\n\x13_initiate_login_uriJ\x04\x08\x02\x10\x03J\x04\x08\x03\x10\x04R\rredirect_urisR\x14\x64\x65\x66\x61ult_redirect_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\"\xec\x01\n\x12UpdateClientSecret\x12\xd5\x01\n\x06status\x18\x01 \x01(\x0e\x32\'.scalekit.v1.clients.ClientSecretStatusB\x93\x01\x92\x41\x8f\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\x08INACTIVER\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\"\x85\x01\n\x13\x44\x65leteClientRequest\x12n\n\tclient_id\x18\x01 \x01(\tBQ\x92\x41\x45\x32*Unique identifier of the client to delete.J\x17\"webc_01H9XPQR7ZY2AJKL\"\xbaH\x06r\x04\x10\x01\x18 R\x08\x63lientId\"\xb3\x02\n\x19\x44\x65leteClientSecretRequest\x12q\n\tclient_id\x18\x01 \x01(\tBT\x92\x41H2.Identifier of the client containing the secretJ\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\"\xa8\x1e\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\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\xab\x02\n\x0fpost_login_uris\x18\x0b \x03(\tB\x82\x02\x92\x41\xfe\x01\x32\xb3\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. Maximum of 5 URIs allowed.JF[\"https://auth.your-app.com/callback\", \"https://dev.example.com/auth\"]R\rpostLoginUris\x12t\n\x04name\x18\x0c \x01(\tB`\x92\x41]2BA descriptive name for the client that helps identify its purpose.J\x17\"My Application Client\"R\x04name\x12l\n\x13\x61\x63\x63\x65ss_token_expiry\x18\r \x01(\x03\x42\x37\x92\x41\x34\x32,Expiry time in seconds for the access token.J\x04\x33\x36\x30\x30H\x00R\x11\x61\x63\x63\x65ssTokenExpiry\x88\x01\x01\x12g\n\x06scopes\x18\x0e \x03(\tBO\x92\x41L2-List of scopes to be attached to this client.J\x1b[\"data:read\", \"data:write\"]R\x06scopes\x12\xc6\x01\n\rcustom_claims\x18\x0f \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\x8f\x01\n\x1c\x64isallow_scalekit_api_access\x18\x10 \x01(\x08\x42N\x92\x41K2CIf true, the client will be restricted from accessing Scalekit APIsJ\x04trueR\x19\x64isallowScalekitApiAccess\x12\xaa\x01\n\x0bgrant_types\x18\x11 \x03(\tB\x88\x01\x92\x41\x84\x01\x32\x43List of OAuth 2.0 grant types that the client is authorized to use.J=[\"authorization_code\", \"refresh_token\", \"client_credentials\"]R\ngrantTypes\x12\x61\n\x0b\x63lient_type\x18\x12 \x01(\tB@\x92\x41=24Type of client. Valid values: ENV, WEB_APP, NTV, SPAJ\x05\"ENV\"R\nclientType\x12\xc5\x01\n\x0c\x65nforce_pkce\x18\x13 \x01(\x08\x42\xa1\x01\x92\x41\x9d\x01\x32\x94\x01Whether Proof Key for Code Exchange (PKCE) is required. PKCE mitigates authorization code interception attacks. Defaults to true for public clients.J\x04trueR\x0b\x65nforcePkce:\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.B\x16\n\x14_access_token_expiryJ\x04\x08\x05\x10\x06J\x04\x08\x06\x10\x07R\rredirect_urisR\x14\x64\x65\x66\x61ult_redirect_uri\"\xc1\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\x86\x02\n\x06status\x18\x06 \x01(\x0e\x32\'.scalekit.v1.clients.ClientSecretStatusB\xc4\x01\x92\x41\xc0\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\n\"INACTIVE\"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\"\xb8\x02\n\x05Scope\x12\xa8\x01\n\x02id\x18\x01 \x01(\tB\x97\x01\x92\x41\x8a\x01\x32tUnique identifier for the scope resource. Must be between 1 and 100 characters long and match the specified pattern.J\x12\"scope_1234567890\"\xbaH\x06r\x04\x10\x01\x18\x64R\x02id\x12\x36\n\x04name\x18\x02 \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\x03 \x01(\tB\x08\xbaH\x05r\x03\x18\xd0\x0fR\x0b\x64\x65scription\x12 \n\x07\x65nabled\x18\x04 \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\"\xf3\x01\n\x12\x43reateScopeRequest\x12>\n\x05scope\x18\x01 \x01(\x0b\x32 .scalekit.v1.clients.CreateScopeB\x06\xbaH\x03\xc8\x01\x01R\x05scope\x12\x9c\x01\n\x06\x65nv_id\x18\x02 \x01(\tB\x84\x01\x92\x41x2dUnique identifier of the environment where the scope will be created. Must start with \'env_\' prefix.J\x10\"env_1234567890\"\xbaH\x06r\x04\x10\x00\x18 R\x05\x65nvId\"G\n\x13\x43reateScopeResponse\x12\x30\n\x05scope\x18\x01 \x01(\x0b\x32\x1a.scalekit.v1.clients.ScopeR\x05scope\"\xaa\x01\n\x11ListScopesRequest\x12\x94\x01\n\x06\x65nv_id\x18\x01 \x01(\tB}\x92\x41q2]Unique identifier of the environment for which to list scopes. Must start with \'env_\' prefix.J\x10\"env_1234567890\"\xbaH\x06r\x04\x10\x00\x18 R\x05\x65nvId\"H\n\x12ListScopesResponse\x12\x32\n\x06scopes\x18\x01 \x03(\x0b\x32\x1a.scalekit.v1.clients.ScopeR\x06scopes\"o\n\x12UpdateScopeRequest\x12\x19\n\x02id\x18\x01 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18\x64R\x02id\x12>\n\x05scope\x18\x02 \x01(\x0b\x32 .scalekit.v1.clients.UpdateScopeB\x06\xbaH\x03\xc8\x01\x01R\x05scope\"o\n\x0bUpdateScope\x12*\n\x0b\x64\x65scription\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x18\xd0\x0fR\x0b\x64\x65scription\x12\x34\n\x07\x65nabled\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.BoolValueR\x07\x65nabled\"G\n\x13UpdateScopeResponse\x12\x30\n\x05scope\x18\x01 \x01(\x0b\x32\x1a.scalekit.v1.clients.ScopeR\x05scope\"1\n\x12\x44\x65leteScopeRequest\x12\x1b\n\x02id\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06:\x04scp_R\x02id\"\xdd\x05\n\x19GetConsentDetailsResponse\x12\x61\n\x08resource\x18\x01 \x01(\x0b\x32\x1d.scalekit.v1.clients.ResourceB&\x92\x41#2!Details of the requested resourceR\x08resource\x12[\n\x04user\x18\x02 \x01(\x0b\x32\x19.scalekit.v1.clients.UserB,\x92\x41)2\'Details of the user who granted consentR\x04user\x12r\n\x06\x63lient\x18\x03 \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\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\x12m\n\x0b\x61pplication\x18\x05 \x01(\x0b\x32 .scalekit.v1.clients.ApplicationB)\x92\x41&2$Details of the requested applicationR\x0b\x61pplication\x12\x7f\n\x0corganization\x18\x06 \x01(\x0b\x32(.scalekit.v1.clients.ConsentOrganizationB1\x92\x41.2,Organization context for the consent screen.R\x0corganization\"\xf7\x02\n\x13\x43onsentOrganization\x12\x99\x01\n\x11organization_name\x18\x01 \x01(\tBg\x92\x41\x64\x32UName of the organization the user is authenticating into. Omitted when not available.J\x0b\"Acme Corp\"H\x00R\x10organizationName\x88\x01\x01\x12\xad\x01\n\x16organization_meta_name\x18\x02 \x01(\tBw\x92\x41t2bEnvironment-level label for what an organization is called (e.g. Workspace, Team). Always present.J\x0e\"Organization\"R\x14organizationMetaNameB\x14\n\x12_organization_name\"\xba\x05\n\rConsentClient\x12R\n\x04name\x18\x01 \x01(\tB>\x92\x41;2.Name of the client resource requesting consentJ\t\"VS Code\"R\x04name\x12x\n\x0bprivacy_uri\x18\x02 \x01(\tBW\x92\x41M2,Privacy policy URI of the client applicationJ\x1d\"https://yourapp.com/privacy\"\xbaH\x04r\x02\x18\x64R\nprivacyUri\x12q\n\x07tos_uri\x18\x03 \x01(\tBX\x92\x41M2.Terms of service URI of the client applicationJ\x1b\"https://yourapp.com/terms\"\xbaH\x05r\x03\x18\xd0\x0fR\x06tosUri\x12o\n\tclient_id\x18\x04 \x01(\tBR\x92\x41O2;Unique identifier of the client resource requesting consentJ\x10\"m2m_1234567890\"R\x08\x63lientId\x12\x8e\x01\n\x0cmetadata_uri\x18\x05 \x01(\tBk\x92\x41h2AMetadata URI of the client application - applicable for CIMD onlyJ#\"https://example.com/metadata.json\"R\x0bmetadataUri\x12\x66\n\x08logo_uri\x18\x06 \x01(\tBK\x92\x41H2\"Logo URI of the client applicationJ\"\"https://cdn.example.com/logo.png\"R\x07logoUri\"\\\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\"\xa2\x02\n\x18RevokeUserConsentRequest\x12\x87\x01\n\tclient_id\x18\x01 \x01(\tBj\x92\x41X2DUnique identifier of the client resource for which to revoke consentJ\x10\"m2m_1234567890\"\xbaH\x0cr\n\x10\x01\x18 :\x04m2m_R\x08\x63lientId\x12|\n\nconsent_id\x18\x02 \x01(\tB]\x92\x41G2/Unique identifier of the user consent to revokeJ\x14\"usrcnst_1234567890\"\xbaH\x10r\x0e\x10\x01\x18 :\x08usrcnst_R\tconsentId\"\x1b\n\x19RevokeUserConsentResponse\"\x9f\x01\n\x1f\x45nsureResourceConnectionRequest\x12|\n\x0bresource_id\x18\x01 \x01(\tB[\x92\x41O24Unique identifier of the client resource to retrieveJ\x17\"app_69388798466720005\"\xbaH\x06r\x04\x10\x01\x18 R\nresourceId\"\xd4\x01\n EnsureResourceConnectionResponse\x12\xaf\x01\n\nconnection\x18\x01 \x01(\x0b\x32\'.scalekit.v1.clients.ResourceConnectionBf\x92\x41]2[Details of the connection resource. Contains configuration settings and status information.\xbaH\x03\xc8\x01\x01R\nconnection\"\xb0\x07\n\x12ResourceConnection\x12T\n\x02id\x18\x01 \x01(\tBD\x92\x41\x41\x32,Unique identifier of the connection resourceJ\x11\"conn_1234567890\"R\x02id\x12\xa1\x01\n\x04type\x18\x02 \x01(\x0e\x32+.scalekit.v1.clients.ResourceConnectionTypeB`\x92\x41]2QType of connection. Determines the authentication method used for the connection.J\x08\"CUSTOM\"R\x04type\x12\x94\x01\n\x06status\x18\x03 \x01(\tB|\x92\x41y2mCurrent status of the connection. Indicates whether the connection is active, inactive, or in an error state.J\x08\"ACTIVE\"R\x06status\x12\x89\x01\n\x07\x65nabled\x18\x04 \x01(\x08\x42o\x92\x41l2dIndicates whether the connection is enabled. Disabled connections cannot be used for authentication.J\x04trueR\x07\x65nabled\x12\xe7\x01\n\x08settings\x18\x05 \x01(\x0b\x32\x17.google.protobuf.StructB\xb1\x01\x92\x41\xad\x01\x32kConfiguration settings for the connection. The structure of this field varies based on the connection type.J>{\"api_key\": \"abcd1234\", \"endpoint\": \"https://api.example.com\"}R\x08settings\x12\x92\x01\n\x08provider\x18\x06 \x01(\tBv\x92\x41s2^The provider of the connection. Indicates the service or platform that manages the connection.J\x11\"custom_provider\"R\x08provider\"\xdc\x01\n ResourceCustomConnectionSettings\x12\xb7\x01\n\rauthorize_uri\x18\x01 \x01(\tB\x91\x01\x92\x41\x83\x01\x32[The URI where users are redirected to authorize the application. Must be a valid HTTPS URL.J$\"https://auth.example.com/authorize\"\xbaH\x07r\x05\x10\x01\x88\x01\x01R\x0c\x61uthorizeUri*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*1\n\x16ResourceConnectionType\x12\x0b\n\x07INVALID\x10\x00\x12\n\n\x06\x43USTOM\x10\x01\x32\xc3\x8a\x01\n\rClientService\x12\xa0\x03\n\nListClient\x12\'.scalekit.v1.clients.ListClientsRequest\x1a(.scalekit.v1.clients.ListClientsResponse\"\xbe\x02\x92\x41\x8e\x02\n\x08\x41PI Auth\x12\x10List API clients\x1a\x90\x01Retrieves a paginated list of API client applications in the environment. Returns only environment-level clients, not resource-specific clients.J]\n\x03\x32\x30\x30\x12V\n&List of clients returned successfully.\x12,\n*\x1a(.scalekit.v1.clients.ListClientsResponse\x82\xb5\x18\x02\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x11\x12\x0f/api/v1/clients\x12\xb4\x03\n\x0c\x43reateClient\x12(.scalekit.v1.clients.CreateClientRequest\x1a).scalekit.v1.clients.CreateClientResponse\"\xce\x02\x92\x41\x96\x02\n\x06\x43lient\x12\rCreate Client\x1a\x81\x01\x43reates an OAuth client with properties including post-login URIs, scopes, and custom claims. Required fields: name, client_type.Jy\n\x03\x32\x30\x30\x12r\nAClient created successfully. Returns the created client resource.\x12-\n+\x1a).scalekit.v1.clients.CreateClientResponse\x82\xb5\x18\x02\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x19\"\x0f/api/v1/clients:\x06\x63lient\x12\xd0\x04\n\tGetClient\x12%.scalekit.v1.clients.GetClientRequest\x1a&.scalekit.v1.clients.GetClientResponse\"\xf3\x03\x92\x41\xb7\x03\n\x0e\x43lient Configs\x12\x18Get Client Configuration\x1a\xc5\x01Retrieves complete client configuration including scopes, custom claims, redirect URIs, and access token expiration time. Use this endpoint to view or verify client settings and security parametersJ\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\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x1d\x12\x1b/api/v1/clients/{client_id}\x12\xcd\x05\n\x0cUpdateClient\x12(.scalekit.v1.clients.UpdateClientRequest\x1a).scalekit.v1.clients.UpdateClientResponse\"\xe7\x04\x92\x41\xa3\x04\n\x0e\x43lient Configs\x12\x1bUpdate Client Configuration\x1a\xba\x02Updates the configuration settings for a client. Only fields included in the request are modified. Updatable fields include post_login_uris, post_logout_redirect_uris, back_channel_logout_uris, initiate_login_uri, scopes, audience, and custom claims. 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\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02%2\x1b/api/v1/clients/{client_id}:\x06\x63lient\x12\x9a\x03\n\x0c\x44\x65leteClient\x12(.scalekit.v1.clients.DeleteClientRequest\x1a\x16.google.protobuf.Empty\"\xc7\x02\x92\x41\x8b\x02\n\x06\x43lient\x12\rDelete Client\x1a\xb2\x01Permanently deletes a client and associated secrets. This operation cannot be undone. Supports WEB_APP, NTV, and SPA client types only. Cannot delete default environment clients.J=\n\x03\x32\x30\x30\x12\x36\n4Client successfully deleted and no longer accessible\x82\xb5\x18\x02\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x1d*\x1b/api/v1/clients/{client_id}\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\x18\x44\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\x18\x44\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\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x31*//api/v1/clients/{client_id}/secrets/{secret_id}\x12\x92\x05\n\x18\x43reateOrganizationClient\x12\x34.scalekit.v1.clients.CreateOrganizationClientRequest\x1a\x35.scalekit.v1.clients.CreateOrganizationClientResponse\"\x88\x04\x92\x41\xbf\x03\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.CreateOrganizationClientResponse\x82\xb5\x18\x02\x18\x44\x82\xd3\xe4\x93\x02\x39\"//api/v1/organizations/{organization_id}/clients:\x06\x63lient\x12\xb5\x04\n\x15GetOrganizationClient\x12\x31.scalekit.v1.clients.GetOrganizationClientRequest\x1a\x32.scalekit.v1.clients.GetOrganizationClientResponse\"\xb4\x03\x92\x41\xe7\x02\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.GetOrganizationClientResponse\x82\xb5\x18\x02\x18\x44\x82\xd3\xe4\x93\x02=\x12;/api/v1/organizations/{organization_id}/clients/{client_id}\x12\x89\x05\n\x1e\x43reateOrganizationClientSecret\x12:.scalekit.v1.clients.CreateOrganizationClientSecretRequest\x1a;.scalekit.v1.clients.CreateOrganizationClientSecretResponse\"\xed\x03\x92\x41\x98\x03\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.CreateOrganizationClientSecretResponse\x82\xb5\x18\x02\x18\x44\x82\xd3\xe4\x93\x02\x45\"C/api/v1/organizations/{organization_id}/clients/{client_id}/secrets\x12\xaf\x03\n\x1e\x44\x65leteOrganizationClientSecret\x12:.scalekit.v1.clients.DeleteOrganizationClientSecretRequest\x1a\x16.google.protobuf.Empty\"\xb8\x02\x92\x41\xd7\x01\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 accessible\x82\xb5\x18\x02\x18\x44\x82\xd3\xe4\x93\x02Q*O/api/v1/organizations/{organization_id}/clients/{client_id}/secrets/{secret_id}\x12\xc2\x04\n\x18UpdateOrganizationClient\x12\x34.scalekit.v1.clients.UpdateOrganizationClientRequest\x1a\x35.scalekit.v1.clients.UpdateOrganizationClientResponse\"\xb8\x03\x92\x41\xe3\x02\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.UpdateOrganizationClientResponse\x82\xb5\x18\x02\x18\x44\x82\xd3\xe4\x93\x02\x45\x32;/api/v1/organizations/{organization_id}/clients/{client_id}:\x06\x63lient\x12\xa3\x04\n\x18\x44\x65leteOrganizationClient\x12\x34.scalekit.v1.clients.DeleteOrganizationClientRequest\x1a\x16.google.protobuf.Empty\"\xb8\x03\x92\x41\xeb\x02\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 accessible\x82\xb5\x18\x02\x18\x44\x82\xd3\xe4\x93\x02=*;/api/v1/organizations/{organization_id}/clients/{client_id}\x12\xe8\x04\n\x17ListOrganizationClients\x12\x33.scalekit.v1.clients.ListOrganizationClientsRequest\x1a\x34.scalekit.v1.clients.ListOrganizationClientsResponse\"\xe1\x03\x92\x41\xa0\x03\n\x08\x41PI Auth\x12\x1dList organization API clients\x1a\xb9\x01Retrieves a paginated list of API clients for a specific organization. Returns client details including metadata, scopes, and secret information (without exposing actual secret values).J\xb8\x01\n\x03\x32\x30\x30\x12\xb0\x01\ntList of organization API clients returned successfully. Each client includes its configuration details and metadata.\x12\x38\n6\x1a\x34.scalekit.v1.clients.ListOrganizationClientsResponse\x82\xb5\x18\x02\x18\x44\x82\xd3\xe4\x93\x02\x31\x12//api/v1/organizations/{organization_id}/clients\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\x18\x44\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\x18\x44\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\x18\x44\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\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x31\"\'/api/v1/resources/{resource_id}/clients:\x06\x63lient\x12\xcf\x03\n\x14UpdateResourceClient\x12\x30.scalekit.v1.clients.UpdateResourceClientRequest\x1a\x31.scalekit.v1.clients.UpdateResourceClientResponse\"\xd1\x02\x92\x41\xf5\x01\n\x08\x41PI Auth\x12\x16Update Resource Client\x1aHUpdates the configuration of an API client under the specified resource.J\x86\x01\n\x03\x32\x30\x30\x12\x7f\nFClient updated successfully. Returns the updated client configuration.\x12\x35\n3\x1a\x31.scalekit.v1.clients.UpdateResourceClientResponse\x82\xb5\x18\x02\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02=23/api/v1/resources/{resource_id}/clients/{client_id}:\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\x18\x44\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\xe7\x03\n\x13ListResourceClients\x12/.scalekit.v1.clients.ListResourceClientsRequest\x1a\x30.scalekit.v1.clients.ListResourceClientsResponse\"\xec\x02\x92\x41\xa4\x02\n\x08\x41PI Auth\x12\x19List Resource API Clients\x1aPRetrieves a list of API clients associated with a specific application resource.J\xaa\x01\n\x03\x32\x30\x30\x12\xa2\x01\njList of clients retrieved successfully. Returns the resource details and associated client configurations.\x12\x34\n2\x1a\x30.scalekit.v1.clients.ListResourceClientsResponse\x82\xb5\x18\x02\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02)\x12\'/api/v1/resources/{resource_id}/clients\x12\xcb\x03\n\x18ListResourceUserConsents\x12\x34.scalekit.v1.clients.ListResourceUserConsentsRequest\x1a\x35.scalekit.v1.clients.ListResourceUserConsentsResponse\"\xc1\x02\x92\x41\x8b\x02\n\x08\x41PI Auth\x12!List user consents for a resource\x1ajRetrieves a paginated list of user consents for a given resource, with optional search by external user IDJp\n\x03\x32\x30\x30\x12i\n,List of user consents retrieved successfully\x12\x39\n7\x1a\x35.scalekit.v1.clients.ListResourceUserConsentsResponse\x82\xb5\x18\x02\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x17\x12\x15/api/v1/user_consents\x12\x87\x03\n\x14\x44\x65leteResourceClient\x12\x30.scalekit.v1.clients.DeleteResourceClientRequest\x1a\x31.scalekit.v1.clients.DeleteResourceClientResponse\"\x89\x02\x92\x41\xb5\x01\n\x08\x41PI Auth\x12\x16\x44\x65lete Resource Client\x1a\x33\x44\x65letes an API client under the specified resource.J\\\n\x03\x32\x30\x30\x12U\n\x1c\x43lient deleted successfully.\x12\x35\n3\x1a\x31.scalekit.v1.clients.DeleteResourceClientResponse\x82\xb5\x18\x02\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x35*3/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/{res_id}/clients:register:\x06\x63lient\x12\xb6\x05\n\x0b\x43reateScope\x12\'.scalekit.v1.clients.CreateScopeRequest\x1a(.scalekit.v1.clients.CreateScopeResponse\"\xd3\x04\x88\x02\x01\x92\x41\xeb\x03\x12\x19\x43reate scope (Deprecated)\x1a\xa1\x02\x44\x45PRECATED: Use permission management APIs instead. Creates a new OAuth scope for API authorization. Scopes define the level of access granted to API clients. Reserved OpenID Connect scopes (profile, email, address, phone) cannot be created as they are automatically managed by the system.J\xa9\x01\n\x03\x32\x30\x31\x12\xa1\x01\nqOAuth scope created successfully. Returns the newly created scope with its name, description, and enabled status.\x12,\n*\x1a(.scalekit.v1.clients.CreateScopeResponse\x82\xb5\x18\x02\x18@\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x46\"\x0e/api/v1/scopes:\x05scopeZ-\"$/api/v1/environments/{env_id}/scopes:\x05scope\x12\xe9\x03\n\nListScopes\x12&.scalekit.v1.clients.ListScopesRequest\x1a\'.scalekit.v1.clients.ListScopesResponse\"\x89\x03\x92\x41\xb2\x02\x12\x0bList scopes\x1a\x7fRetrieves all OAuth scopes configured for the environment. Returns both custom scopes and system-managed OpenID Connect scopes.J\xa1\x01\n\x03\x32\x30\x30\x12\x99\x01\njList of OAuth scopes returned successfully. Each scope includes its name, description, and enabled status.\x12+\n)\x1a\'.scalekit.v1.clients.ListScopesResponse\x82\xb5\x18\x02\x18`\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x38\x12\x0e/api/v1/scopesZ&\x12$/api/v1/environments/{env_id}/scopes\x12\xaf\x04\n\x0bUpdateScope\x12\'.scalekit.v1.clients.UpdateScopeRequest\x1a(.scalekit.v1.clients.UpdateScopeResponse\"\xcc\x03\x88\x02\x01\x92\x41\x8e\x03\x12\x19Update scope (Deprecated)\x1a\xe0\x01\x44\x45PRECATED: Use permission management APIs instead. Updates an existing OAuth scope\'s description and enabled status. Reserved OpenID Connect scopes (profile, email, address, phone) cannot be modified through this endpoint.J\x8d\x01\n\x03\x32\x30\x30\x12\x85\x01\nUOAuth scope updated successfully. Returns the updated scope with all current details.\x12,\n*\x1a(.scalekit.v1.clients.UpdateScopeResponse\x82\xb5\x18\x02\x18@\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x1c\x32\x13/api/v1/scopes/{id}:\x05scope\x12\xe0\x03\n\x0b\x44\x65leteScope\x12\'.scalekit.v1.clients.DeleteScopeRequest\x1a\x16.google.protobuf.Empty\"\x8f\x03\x88\x02\x01\x92\x41\xd8\x02\x12\x19\x44\x65lete scope (Deprecated)\x1a\xf6\x01\x44\x45PRECATED: Use permission management APIs instead. Permanently deletes an OAuth scope from the environment. This operation cannot be undone. Reserved OpenID Connect scopes (profile, email, address, phone) cannot be deleted through this endpoint.JB\n\x03\x32\x30\x30\x12;\n9OAuth scope successfully deleted and no longer accessible\x82\xb5\x18\x02\x18@\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x15*\x13/api/v1/scopes/{id}\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\x12\xc2\x01\n\x11RevokeUserConsent\x12-.scalekit.v1.clients.RevokeUserConsentRequest\x1a..scalekit.v1.clients.RevokeUserConsentResponse\"N\x82\xb5\x18\x02\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x33*1/api/v1/clients/{client_id}/consents/{consent_id}\x12\xea\x03\n\x18\x45nsureResourceConnection\x12\x34.scalekit.v1.clients.EnsureResourceConnectionRequest\x1a\x35.scalekit.v1.clients.EnsureResourceConnectionResponse\"\xe0\x02\x92\x41\x91\x02\n\x08\x41PI Auth\x12!Get or Create Resource Connection\x1aSRetrieves an existing resource connection or creates a new one if it doesn\'t exist.J\x8c\x01\n\x03\x32\x30\x30\x12\x84\x01\nBReturns the existing or newly created resource connection details.\x12>\n<\x1a:.scalekit.v1.clients.GetOrCreateResourceConnectionResponse\x82\xb5\x18\x02\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x30\"+/api/v1/resources/{resource_id}/connections:\x01*\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) @@ -625,6 +625,12 @@ _globals['_GETCONSENTDETAILSRESPONSE'].fields_by_name['scopes']._serialized_options = b'\222A]2[List of scopes for which consent was granted. Each scope includes its name and description.' _globals['_GETCONSENTDETAILSRESPONSE'].fields_by_name['application']._loaded_options = None _globals['_GETCONSENTDETAILSRESPONSE'].fields_by_name['application']._serialized_options = b'\222A&2$Details of the requested application' + _globals['_GETCONSENTDETAILSRESPONSE'].fields_by_name['organization']._loaded_options = None + _globals['_GETCONSENTDETAILSRESPONSE'].fields_by_name['organization']._serialized_options = b'\222A.2,Organization context for the consent screen.' + _globals['_CONSENTORGANIZATION'].fields_by_name['organization_name']._loaded_options = None + _globals['_CONSENTORGANIZATION'].fields_by_name['organization_name']._serialized_options = b'\222Ad2UName of the organization the user is authenticating into. Omitted when not available.J\013\"Acme Corp\"' + _globals['_CONSENTORGANIZATION'].fields_by_name['organization_meta_name']._loaded_options = None + _globals['_CONSENTORGANIZATION'].fields_by_name['organization_meta_name']._serialized_options = b'\222At2bEnvironment-level label for what an organization is called (e.g. Workspace, Team). Always present.J\016\"Organization\"' _globals['_CONSENTCLIENT'].fields_by_name['name']._loaded_options = None _globals['_CONSENTCLIENT'].fields_by_name['name']._serialized_options = b'\222A;2.Name of the client resource requesting consentJ\t\"VS Code\"' _globals['_CONSENTCLIENT'].fields_by_name['privacy_uri']._loaded_options = None @@ -737,12 +743,12 @@ _globals['_CLIENTSERVICE'].methods_by_name['RevokeUserConsent']._serialized_options = b'\202\265\030\002\030D\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\0023*1/api/v1/clients/{client_id}/consents/{consent_id}' _globals['_CLIENTSERVICE'].methods_by_name['EnsureResourceConnection']._loaded_options = None _globals['_CLIENTSERVICE'].methods_by_name['EnsureResourceConnection']._serialized_options = b'\222A\221\002\n\010API Auth\022!Get or Create Resource Connection\032SRetrieves an existing resource connection or creates a new one if it doesn\'t exist.J\214\001\n\003200\022\204\001\nBReturns the existing or newly created resource connection details.\022>\n<\032:.scalekit.v1.clients.GetOrCreateResourceConnectionResponse\202\265\030\002\030D\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\0020\"+/api/v1/resources/{resource_id}/connections:\001*' - _globals['_RESOURCETYPE']._serialized_start=51696 - _globals['_RESOURCETYPE']._serialized_end=51803 - _globals['_CLIENTSECRETSTATUS']._serialized_start=51805 - _globals['_CLIENTSECRETSTATUS']._serialized_end=51851 - _globals['_RESOURCECONNECTIONTYPE']._serialized_start=51853 - _globals['_RESOURCECONNECTIONTYPE']._serialized_end=51902 + _globals['_RESOURCETYPE']._serialized_start=52203 + _globals['_RESOURCETYPE']._serialized_end=52310 + _globals['_CLIENTSECRETSTATUS']._serialized_start=52312 + _globals['_CLIENTSECRETSTATUS']._serialized_end=52358 + _globals['_RESOURCECONNECTIONTYPE']._serialized_start=52360 + _globals['_RESOURCECONNECTIONTYPE']._serialized_end=52409 _globals['_CREATERESOURCEREQUEST']._serialized_start=558 _globals['_CREATERESOURCEREQUEST']._serialized_end=696 _globals['_CREATERESOURCE']._serialized_start=699 @@ -898,25 +904,27 @@ _globals['_DELETESCOPEREQUEST']._serialized_start=48258 _globals['_DELETESCOPEREQUEST']._serialized_end=48307 _globals['_GETCONSENTDETAILSRESPONSE']._serialized_start=48310 - _globals['_GETCONSENTDETAILSRESPONSE']._serialized_end=48914 - _globals['_CONSENTCLIENT']._serialized_start=48917 - _globals['_CONSENTCLIENT']._serialized_end=49615 - _globals['_CONSENTSCOPE']._serialized_start=49617 - _globals['_CONSENTSCOPE']._serialized_end=49709 - _globals['_USER']._serialized_start=49711 - _globals['_USER']._serialized_end=49825 - _globals['_REVOKEUSERCONSENTREQUEST']._serialized_start=49828 - _globals['_REVOKEUSERCONSENTREQUEST']._serialized_end=50118 - _globals['_REVOKEUSERCONSENTRESPONSE']._serialized_start=50120 - _globals['_REVOKEUSERCONSENTRESPONSE']._serialized_end=50147 - _globals['_ENSURERESOURCECONNECTIONREQUEST']._serialized_start=50150 - _globals['_ENSURERESOURCECONNECTIONREQUEST']._serialized_end=50309 - _globals['_ENSURERESOURCECONNECTIONRESPONSE']._serialized_start=50312 - _globals['_ENSURERESOURCECONNECTIONRESPONSE']._serialized_end=50524 - _globals['_RESOURCECONNECTION']._serialized_start=50527 - _globals['_RESOURCECONNECTION']._serialized_end=51471 - _globals['_RESOURCECUSTOMCONNECTIONSETTINGS']._serialized_start=51474 - _globals['_RESOURCECUSTOMCONNECTIONSETTINGS']._serialized_end=51694 - _globals['_CLIENTSERVICE']._serialized_start=51906 - _globals['_CLIENTSERVICE']._serialized_end=69637 + _globals['_GETCONSENTDETAILSRESPONSE']._serialized_end=49043 + _globals['_CONSENTORGANIZATION']._serialized_start=49046 + _globals['_CONSENTORGANIZATION']._serialized_end=49421 + _globals['_CONSENTCLIENT']._serialized_start=49424 + _globals['_CONSENTCLIENT']._serialized_end=50122 + _globals['_CONSENTSCOPE']._serialized_start=50124 + _globals['_CONSENTSCOPE']._serialized_end=50216 + _globals['_USER']._serialized_start=50218 + _globals['_USER']._serialized_end=50332 + _globals['_REVOKEUSERCONSENTREQUEST']._serialized_start=50335 + _globals['_REVOKEUSERCONSENTREQUEST']._serialized_end=50625 + _globals['_REVOKEUSERCONSENTRESPONSE']._serialized_start=50627 + _globals['_REVOKEUSERCONSENTRESPONSE']._serialized_end=50654 + _globals['_ENSURERESOURCECONNECTIONREQUEST']._serialized_start=50657 + _globals['_ENSURERESOURCECONNECTIONREQUEST']._serialized_end=50816 + _globals['_ENSURERESOURCECONNECTIONRESPONSE']._serialized_start=50819 + _globals['_ENSURERESOURCECONNECTIONRESPONSE']._serialized_end=51031 + _globals['_RESOURCECONNECTION']._serialized_start=51034 + _globals['_RESOURCECONNECTION']._serialized_end=51978 + _globals['_RESOURCECUSTOMCONNECTIONSETTINGS']._serialized_start=51981 + _globals['_RESOURCECUSTOMCONNECTIONSETTINGS']._serialized_end=52201 + _globals['_CLIENTSERVICE']._serialized_start=52413 + _globals['_CLIENTSERVICE']._serialized_end=70144 # @@protoc_insertion_point(module_scope) diff --git a/scalekit/v1/clients/clients_pb2.pyi b/scalekit/v1/clients/clients_pb2.pyi index c522049..f3f99f8 100644 --- a/scalekit/v1/clients/clients_pb2.pyi +++ b/scalekit/v1/clients/clients_pb2.pyi @@ -934,18 +934,28 @@ class DeleteScopeRequest(_message.Message): def __init__(self, id: _Optional[str] = ...) -> None: ... class GetConsentDetailsResponse(_message.Message): - __slots__ = ("resource", "user", "client", "scopes", "application") + __slots__ = ("resource", "user", "client", "scopes", "application", "organization") RESOURCE_FIELD_NUMBER: _ClassVar[int] USER_FIELD_NUMBER: _ClassVar[int] CLIENT_FIELD_NUMBER: _ClassVar[int] SCOPES_FIELD_NUMBER: _ClassVar[int] APPLICATION_FIELD_NUMBER: _ClassVar[int] + ORGANIZATION_FIELD_NUMBER: _ClassVar[int] resource: Resource user: User client: ConsentClient scopes: _containers.RepeatedCompositeFieldContainer[ConsentScope] application: Application - def __init__(self, resource: _Optional[_Union[Resource, _Mapping]] = ..., user: _Optional[_Union[User, _Mapping]] = ..., client: _Optional[_Union[ConsentClient, _Mapping]] = ..., scopes: _Optional[_Iterable[_Union[ConsentScope, _Mapping]]] = ..., application: _Optional[_Union[Application, _Mapping]] = ...) -> None: ... + organization: ConsentOrganization + def __init__(self, resource: _Optional[_Union[Resource, _Mapping]] = ..., user: _Optional[_Union[User, _Mapping]] = ..., client: _Optional[_Union[ConsentClient, _Mapping]] = ..., scopes: _Optional[_Iterable[_Union[ConsentScope, _Mapping]]] = ..., application: _Optional[_Union[Application, _Mapping]] = ..., organization: _Optional[_Union[ConsentOrganization, _Mapping]] = ...) -> None: ... + +class ConsentOrganization(_message.Message): + __slots__ = ("organization_name", "organization_meta_name") + ORGANIZATION_NAME_FIELD_NUMBER: _ClassVar[int] + ORGANIZATION_META_NAME_FIELD_NUMBER: _ClassVar[int] + organization_name: str + organization_meta_name: str + def __init__(self, organization_name: _Optional[str] = ..., organization_meta_name: _Optional[str] = ...) -> None: ... class ConsentClient(_message.Message): __slots__ = ("name", "privacy_uri", "tos_uri", "client_id", "metadata_uri", "logo_uri") diff --git a/scalekit/v1/commons/commons_pb2.py b/scalekit/v1/commons/commons_pb2.py index 3c27a16..ebe06b5 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\"\xf4\x12\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\x9a\x01\n\x04name\x18\x05 \x01(\tB\x80\x01\x92\x41}2oOrganization name. This field stores the formal organization name used for identification and display purposes.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\xea\x01\n\x0c\x64isplay_name\x18\t \x01(\tB\xc1\x01\x92\x41\xbd\x01\x32\xa6\x01Organization display name. This field stores a user-friendly name for the organization that may be different from the formal name, often used for UI display purposes.J\x12\"Acme Corporation\"H\x01R\x0b\x64isplayName\x88\x01\x01\x12T\n\rinviter_email\x18\n \x01(\tB*\x92\x41\'2%ID of the user who invited this user.H\x02R\x0cinviterEmail\x88\x01\x01\x12o\n\ncreated_at\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.TimestampB/\x92\x41,2*Timestamp when the invitation was created.H\x03R\tcreatedAt\x88\x01\x01\x12w\n\x0b\x61\x63\x63\x65pted_at\x18\x0c \x01(\x0b\x32\x1a.google.protobuf.TimestampB5\x92\x41\x32\x32\x30Timestamp when the user accepted the invitation.H\x04R\nacceptedAt\x88\x01\x01\x12k\n\nexpires_at\x18\r \x01(\x0b\x32\x1a.google.protobuf.TimestampB+\x92\x41(2&Timestamp when the invitation expired.H\x05R\texpiresAt\x88\x01\x01\x12\xa8\x03\n\x13provisioning_method\x18\x0e \x01(\tB\xf1\x02\x92\x41\xed\x02\x32\xea\x02How the user was provisioned. \nPossible values: \n- `jit_using_sso` (Just-in-time provisioning during SSO login)\n- `allowed_email_domain` (User joined via allowed email domain matching)\n- `org_creator` (User created the organization)\n- `direct_provision` (User was directly provisioned via API or SCIM)\n- `invitation` (User was invited and accepted an invitation)H\x06R\x12provisioningMethod\x88\x01\x01\x12\x97\x02\n\x0bpermissions\x18\x0f \x03(\tB\xf4\x01\x92\x41\xf0\x01\x32\xbb\x01\x45\x66\x66\x65\x63tive permissions granted to the user within the organization (including inherited permissions from assigned roles). Lists the specific actions and access rights the user can perform.J0[\"read_projects\", \"write_tasks\", \"manage_users\"]R\x0bpermissions\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_nameB\x10\n\x0e_inviter_emailB\r\n\x0b_created_atB\x0e\n\x0c_accepted_atB\r\n\x0b_expires_atB\x16\n\x14_provisioning_method\"\xdf\x02\n\x04Role\x12\x39\n\x02id\x18\x01 \x01(\tB)\x92\x41#2\x07Role IDJ\x18\"role_79643236410327240\"\xe0\x41\x03R\x02id\x12\xc5\x01\n\x04name\x18\x02 \x01(\tB\xb0\x01\x92\x41\xac\x01\x32\x9d\x01\x41ttribute name/identifier for the role used in system operations and API calls. This should be a machine-readable identifier that follows naming conventions.J\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\"\xe7\x30\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\xeb\x02\n\ngiven_name\x18\x02 \x01(\tB\xcb\x02\x92\x41\xbf\x02\x32\xb4\x02The user\'s given name (first name). This field stores the user\'s first name and is used for personalization, display purposes, and when generating the full display name. The given name appears in user interfaces, formal communications, and user listings throughout the system. Maximum 255 characters allowed.J\x06\"John\"\xbaH\x05r\x03\x18\xff\x01R\tgivenName\x12\xe9\x02\n\x0b\x66\x61mily_name\x18\x03 \x01(\tB\xc7\x02\x92\x41\xbb\x02\x32\xb1\x02The user\'s family name (last name or surname). This field stores the user\'s last name and is combined with the given name to create the full display name. The family name is used in formal communications, user listings, and organizational directories throughout the system. Maximum 255 characters allowed.J\x05\"Doe\"\xbaH\x05r\x03\x18\xff\x01R\nfamilyName\x12\xeb\x03\n\x04name\x18\x04 \x01(\tB\xd6\x03\x92\x41\xd2\x03\x32\xbb\x03The user\'s complete display name in formatted form. This field stores the full name as a single string and is typically used when you want to set the complete name rather than using separate given and family names. This name appears in user interfaces, reports, directory listings, and anywhere a formatted display name is needed. This field serves as a formatted display name that complements the individual given_name and family_name fields.J\x12\"John Michael Doe\"R\x04name\x12\x9a\x03\n\x06locale\x18\x05 \x01(\tB\x81\x03\x92\x41\xfd\x02\x32\xf1\x02The user\'s preferred language and region settings using BCP-47 format codes. This field customizes the user\'s experience with localized content, date formats, number formatting, and UI language throughout the system. When not specified, the user inherits the organization\'s default locale settings. Common values include `en-US`, `en-GB`, `fr-FR`, `de-DE`, and `es-ES`.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\xd4\x02\n\x0cphone_number\x18\x07 \x01(\tB\xb0\x02\x92\x41\xac\x02\x32\x99\x02The user\'s phone number in E.164 international format. This field stores the phone number for user contact and identification purposes. The phone number must include the country code and be formatted according to E.164 standards (e.g., `+1` for US numbers). This field is optional.J\x0e\"+14155552671\"R\x0bphoneNumber\x12\xa0\x05\n\x08metadata\x18\x08 \x03(\x0b\x32..scalekit.v1.commons.UserProfile.MetadataEntryB\xd3\x04\x92\x41\xb6\x04\x32\xde\x03Raw attributes received from identity providers during authentication. This field stores the original user profile data as received from external IdP systems (SAML, OIDC, etc.) including provider-specific claims and attributes. These fields preserve the complete set of attributes received from the identity source and are used for mapping, synchronization, and audit purposes. Keys must be 3-25 characters, values must be 1-256 characters, with a maximum of 20 key-value pairs.JS{\"idp_user_id\": \"12345\", \"department\": \"engineering\", \"employee_type\": \"full-time\"}\xbaH\x16\x9a\x01\x13\x10\x14\"\x06r\x04\x10\x03\x18\x19*\x07r\x05\x10\x01\x18\x80\x02R\x08metadata\x12\xdc\x05\n\x11\x63ustom_attributes\x18\t \x03(\x0b\x32\x36.scalekit.v1.commons.UserProfile.CustomAttributesEntryB\xf6\x04\x92\x41\xd9\x04\x32\x97\x04\x43ustom attributes for extended user profile data and application-specific information. This field stores business-specific user data like department, job title, security clearances, project assignments, or any other organizational attributes your application requires. Unlike system metadata, these attributes are typically managed by administrators or applications and are visible to end users for personalization and business logic. Keys must be 3-25 characters, values must be 1-256 characters, with a maximum of 20 key-value pairs.J={\"department\": \"engineering\", \"security_clearance\": \"level2\"}\xbaH\x16\x9a\x01\x13\x10\x14\"\x06r\x04\x10\x03\x18\x19*\x07r\x05\x10\x01\x18\x80\x02R\x10\x63ustomAttributes\x12\x94\x01\n\nfirst_name\x18\x15 \x01(\tBu\x18\x01\x92\x41Y2O[DEPRECATED] Use given_name instead. User\'s given name. Maximum 255 characters.J\x06\"John\"\xbaH\x05r\x03\x18\xff\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEWR\tfirstName\x12\x93\x01\n\tlast_name\x18\x16 \x01(\tBv\x18\x01\x92\x41Z2Q[DEPRECATED] Use family_name instead. User\'s family name. Maximum 255 characters.J\x05\"Doe\"\xbaH\x05r\x03\x18\xff\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEWR\x08lastName\x12\xab\x03\n\x12preferred_username\x18\x0c \x01(\tB\xfb\x02\x92\x41\xef\x02\x32\xe1\x02The user\'s preferred username for display and identification purposes. This field stores a custom username that the user prefers to be known by, which may differ from their email or formal name. This username appears in user interfaces, mentions, informal communications, and collaborative features throughout the system. Maximum 512 characters allowed.J\t\"johndoe\"\xbaH\x05r\x03\x18\x80\x04R\x11preferredUsername\x12\x9e\x01\n\x15phone_number_verified\x18\r \x01(\x08\x42j\x92\x41\x64\x32\\Indicates if the user\'s phone number has been verified. Automatically updated by the system.J\x04true\xe0\x41\x03R\x13phoneNumberVerified\x12\xe4\x03\n\x07picture\x18\x0e \x01(\tB\xc9\x03\x92\x41\xc5\x03\x32\xa0\x03The URL to the user\'s profile picture or avatar image. This field stores the location of the user\'s profile photo that appears in user interfaces, directory listings, and collaborative features throughout the system. The URL should point to a publicly accessible image file. Supported formats typically include JPEG, PNG, and GIF. This image is used for visual identification and personalization across the platform.J \"https://example.com/avatar.jpg\"R\x07picture\x12\xc7\x03\n\x06groups\x18\x0f \x03(\tB\xae\x03\x92\x41\xaa\x03\x32\x8f\x03The list of group names the user belongs to within the organization. This field stores the user\'s group memberships for role-based access control, team assignments, and organizational structure. Groups are typically used for permission management, collaborative access, and organizational hierarchy. Each group name represents a distinct organizational unit or team that the user is associated with.J\x16[\"admin\", \"developer\"]R\x06groups\x12\x9f\x03\n\x06gender\x18\x10 \x01(\tB\x86\x03\x92\x41\x82\x03\x32\xf7\x02The user\'s gender identity information. This field stores the user\'s gender identity for personalization, compliance reporting, or organizational analytics purposes. This field supports any string value to accommodate diverse gender identities and should be handled with appropriate privacy considerations according to your organization\'s policies and applicable regulations.J\x06\"male\"R\x06gender\x12\xa7\x01\n\x13\x65xternal_identities\x18\n \x03(\x0b\x32%.scalekit.v1.commons.ExternalIdentityBO\x92\x41I2GList of external identity connections associated with the user profile.\xe0\x41\x03R\x12\x65xternalIdentities\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\"\xa4\n\n\x10\x45xternalIdentity\x12\x96\x01\n\rconnection_id\x18\x01 \x01(\tBq\x92\x41k2PUnique identifier for the external identity connection. Immutable and read-only.J\x17\"conn_1234abcd5678efgh\"\xe0\x41\x03R\x0c\x63onnectionId\x12\x63\n\x0f\x63onnection_type\x18\x02 \x01(\tB:\x92\x41\x34\x32)Name of the external identity connection.J\x07\"OAUTH\"\xe0\x41\x03R\x0e\x63onnectionType\x12\x8c\x01\n\x13\x63onnection_provider\x18\x03 \x01(\x0e\x32).scalekit.v1.commons.IdentityProviderTypeB0\x92\x41*2\x1eType of the identity provider.J\x08\"GOOGLE\"\xe0\x41\x03R\x12\x63onnectionProvider\x12\xa9\x01\n\x12\x63onnection_user_id\x18\x04 \x01(\tB{\x92\x41u2aUnique identifier for the user in the external identity provider system. Immutable and read-only.J\x10\"ext_user_12345\"\xe0\x41\x03R\x10\x63onnectionUserId\x12\x9b\x01\n\tis_social\x18\x05 \x01(\x08\x42~\x92\x41x2pIndicates if the identity provider is a social provider (true) or enterprise/custom provider (false). Read-only.J\x04true\xe0\x41\x03R\x08isSocial\x12\xc3\x01\n\x0flast_login_time\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x7f\x92\x41y2wTimestamp of the user\'s last successful login via this external identity provider. Automatically updated by the system.\xe0\x41\x03R\rlastLoginTime\x12\xa3\x01\n\x0c\x63reated_time\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampBd\x92\x41^2\\Timestamp when this external identity connection was first created. Immutable and read-only.\xe0\x41\x03R\x0b\x63reatedTime\x12\xcc\x01\n\x10last_synced_time\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x85\x01\x92\x41\x7f\x32}Timestamp of the last data synchronization for this external identity from the provider. Automatically updated by the system.\xe0\x41\x03R\x0elastSyncedTime*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*w\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\x12\x12\n\x0eINVITE_EXPIRED\x10\x04*\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*`\n\x12\x41uthenticationMode\x12#\n\x1f\x41UTHENTICATION_MODE_UNSPECIFIED\x10\x00\x12\x10\n\x0cMODULAR_AUTH\x10\x01\x12\x13\n\x0f\x46ULL_STACK_AUTH\x10\x02\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\"\xf4\x12\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\x9a\x01\n\x04name\x18\x05 \x01(\tB\x80\x01\x92\x41}2oOrganization name. This field stores the formal organization name used for identification and display purposes.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\xea\x01\n\x0c\x64isplay_name\x18\t \x01(\tB\xc1\x01\x92\x41\xbd\x01\x32\xa6\x01Organization display name. This field stores a user-friendly name for the organization that may be different from the formal name, often used for UI display purposes.J\x12\"Acme Corporation\"H\x01R\x0b\x64isplayName\x88\x01\x01\x12T\n\rinviter_email\x18\n \x01(\tB*\x92\x41\'2%ID of the user who invited this user.H\x02R\x0cinviterEmail\x88\x01\x01\x12o\n\ncreated_at\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.TimestampB/\x92\x41,2*Timestamp when the invitation was created.H\x03R\tcreatedAt\x88\x01\x01\x12w\n\x0b\x61\x63\x63\x65pted_at\x18\x0c \x01(\x0b\x32\x1a.google.protobuf.TimestampB5\x92\x41\x32\x32\x30Timestamp when the user accepted the invitation.H\x04R\nacceptedAt\x88\x01\x01\x12k\n\nexpires_at\x18\r \x01(\x0b\x32\x1a.google.protobuf.TimestampB+\x92\x41(2&Timestamp when the invitation expired.H\x05R\texpiresAt\x88\x01\x01\x12\xa8\x03\n\x13provisioning_method\x18\x0e \x01(\tB\xf1\x02\x92\x41\xed\x02\x32\xea\x02How the user was provisioned. \nPossible values: \n- `jit_using_sso` (Just-in-time provisioning during SSO login)\n- `allowed_email_domain` (User joined via allowed email domain matching)\n- `org_creator` (User created the organization)\n- `direct_provision` (User was directly provisioned via API or SCIM)\n- `invitation` (User was invited and accepted an invitation)H\x06R\x12provisioningMethod\x88\x01\x01\x12\x97\x02\n\x0bpermissions\x18\x0f \x03(\tB\xf4\x01\x92\x41\xf0\x01\x32\xbb\x01\x45\x66\x66\x65\x63tive permissions granted to the user within the organization (including inherited permissions from assigned roles). Lists the specific actions and access rights the user can perform.J0[\"read_projects\", \"write_tasks\", \"manage_users\"]R\x0bpermissions\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_nameB\x10\n\x0e_inviter_emailB\r\n\x0b_created_atB\x0e\n\x0c_accepted_atB\r\n\x0b_expires_atB\x16\n\x14_provisioning_method\"\xdf\x02\n\x04Role\x12\x39\n\x02id\x18\x01 \x01(\tB)\x92\x41#2\x07Role IDJ\x18\"role_79643236410327240\"\xe0\x41\x03R\x02id\x12\xc5\x01\n\x04name\x18\x02 \x01(\tB\xb0\x01\x92\x41\xac\x01\x32\x9d\x01\x41ttribute name/identifier for the role used in system operations and API calls. This should be a machine-readable identifier that follows naming conventions.J\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\"\xe7\x30\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\xeb\x02\n\ngiven_name\x18\x02 \x01(\tB\xcb\x02\x92\x41\xbf\x02\x32\xb4\x02The user\'s given name (first name). This field stores the user\'s first name and is used for personalization, display purposes, and when generating the full display name. The given name appears in user interfaces, formal communications, and user listings throughout the system. Maximum 255 characters allowed.J\x06\"John\"\xbaH\x05r\x03\x18\xff\x01R\tgivenName\x12\xe9\x02\n\x0b\x66\x61mily_name\x18\x03 \x01(\tB\xc7\x02\x92\x41\xbb\x02\x32\xb1\x02The user\'s family name (last name or surname). This field stores the user\'s last name and is combined with the given name to create the full display name. The family name is used in formal communications, user listings, and organizational directories throughout the system. Maximum 255 characters allowed.J\x05\"Doe\"\xbaH\x05r\x03\x18\xff\x01R\nfamilyName\x12\xeb\x03\n\x04name\x18\x04 \x01(\tB\xd6\x03\x92\x41\xd2\x03\x32\xbb\x03The user\'s complete display name in formatted form. This field stores the full name as a single string and is typically used when you want to set the complete name rather than using separate given and family names. This name appears in user interfaces, reports, directory listings, and anywhere a formatted display name is needed. This field serves as a formatted display name that complements the individual given_name and family_name fields.J\x12\"John Michael Doe\"R\x04name\x12\x9a\x03\n\x06locale\x18\x05 \x01(\tB\x81\x03\x92\x41\xfd\x02\x32\xf1\x02The user\'s preferred language and region settings using BCP-47 format codes. This field customizes the user\'s experience with localized content, date formats, number formatting, and UI language throughout the system. When not specified, the user inherits the organization\'s default locale settings. Common values include `en-US`, `en-GB`, `fr-FR`, `de-DE`, and `es-ES`.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\xd4\x02\n\x0cphone_number\x18\x07 \x01(\tB\xb0\x02\x92\x41\xac\x02\x32\x99\x02The user\'s phone number in E.164 international format. This field stores the phone number for user contact and identification purposes. The phone number must include the country code and be formatted according to E.164 standards (e.g., `+1` for US numbers). This field is optional.J\x0e\"+14155552671\"R\x0bphoneNumber\x12\xa0\x05\n\x08metadata\x18\x08 \x03(\x0b\x32..scalekit.v1.commons.UserProfile.MetadataEntryB\xd3\x04\x92\x41\xb6\x04\x32\xde\x03Raw attributes received from identity providers during authentication. This field stores the original user profile data as received from external IdP systems (SAML, OIDC, etc.) including provider-specific claims and attributes. These fields preserve the complete set of attributes received from the identity source and are used for mapping, synchronization, and audit purposes. Keys must be 3-25 characters, values must be 1-256 characters, with a maximum of 20 key-value pairs.JS{\"idp_user_id\": \"12345\", \"department\": \"engineering\", \"employee_type\": \"full-time\"}\xbaH\x16\x9a\x01\x13\x10\x14\"\x06r\x04\x10\x03\x18\x19*\x07r\x05\x10\x01\x18\x80\x02R\x08metadata\x12\xdc\x05\n\x11\x63ustom_attributes\x18\t \x03(\x0b\x32\x36.scalekit.v1.commons.UserProfile.CustomAttributesEntryB\xf6\x04\x92\x41\xd9\x04\x32\x97\x04\x43ustom attributes for extended user profile data and application-specific information. This field stores business-specific user data like department, job title, security clearances, project assignments, or any other organizational attributes your application requires. Unlike system metadata, these attributes are typically managed by administrators or applications and are visible to end users for personalization and business logic. Keys must be 3-25 characters, values must be 1-256 characters, with a maximum of 20 key-value pairs.J={\"department\": \"engineering\", \"security_clearance\": \"level2\"}\xbaH\x16\x9a\x01\x13\x10\x14\"\x06r\x04\x10\x03\x18\x19*\x07r\x05\x10\x01\x18\x80\x02R\x10\x63ustomAttributes\x12\x94\x01\n\nfirst_name\x18\x15 \x01(\tBu\x18\x01\x92\x41Y2O[DEPRECATED] Use given_name instead. User\'s given name. Maximum 255 characters.J\x06\"John\"\xbaH\x05r\x03\x18\xff\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEWR\tfirstName\x12\x93\x01\n\tlast_name\x18\x16 \x01(\tBv\x18\x01\x92\x41Z2Q[DEPRECATED] Use family_name instead. User\'s family name. Maximum 255 characters.J\x05\"Doe\"\xbaH\x05r\x03\x18\xff\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEWR\x08lastName\x12\xab\x03\n\x12preferred_username\x18\x0c \x01(\tB\xfb\x02\x92\x41\xef\x02\x32\xe1\x02The user\'s preferred username for display and identification purposes. This field stores a custom username that the user prefers to be known by, which may differ from their email or formal name. This username appears in user interfaces, mentions, informal communications, and collaborative features throughout the system. Maximum 512 characters allowed.J\t\"johndoe\"\xbaH\x05r\x03\x18\x80\x04R\x11preferredUsername\x12\x9e\x01\n\x15phone_number_verified\x18\r \x01(\x08\x42j\x92\x41\x64\x32\\Indicates if the user\'s phone number has been verified. Automatically updated by the system.J\x04true\xe0\x41\x03R\x13phoneNumberVerified\x12\xe4\x03\n\x07picture\x18\x0e \x01(\tB\xc9\x03\x92\x41\xc5\x03\x32\xa0\x03The URL to the user\'s profile picture or avatar image. This field stores the location of the user\'s profile photo that appears in user interfaces, directory listings, and collaborative features throughout the system. The URL should point to a publicly accessible image file. Supported formats typically include JPEG, PNG, and GIF. This image is used for visual identification and personalization across the platform.J \"https://example.com/avatar.jpg\"R\x07picture\x12\xc7\x03\n\x06groups\x18\x0f \x03(\tB\xae\x03\x92\x41\xaa\x03\x32\x8f\x03The list of group names the user belongs to within the organization. This field stores the user\'s group memberships for role-based access control, team assignments, and organizational structure. Groups are typically used for permission management, collaborative access, and organizational hierarchy. Each group name represents a distinct organizational unit or team that the user is associated with.J\x16[\"admin\", \"developer\"]R\x06groups\x12\x9f\x03\n\x06gender\x18\x10 \x01(\tB\x86\x03\x92\x41\x82\x03\x32\xf7\x02The user\'s gender identity information. This field stores the user\'s gender identity for personalization, compliance reporting, or organizational analytics purposes. This field supports any string value to accommodate diverse gender identities and should be handled with appropriate privacy considerations according to your organization\'s policies and applicable regulations.J\x06\"male\"R\x06gender\x12\xa7\x01\n\x13\x65xternal_identities\x18\n \x03(\x0b\x32%.scalekit.v1.commons.ExternalIdentityBO\x92\x41I2GList of external identity connections associated with the user profile.\xe0\x41\x03R\x12\x65xternalIdentities\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\"\xa4\n\n\x10\x45xternalIdentity\x12\x96\x01\n\rconnection_id\x18\x01 \x01(\tBq\x92\x41k2PUnique identifier for the external identity connection. Immutable and read-only.J\x17\"conn_1234abcd5678efgh\"\xe0\x41\x03R\x0c\x63onnectionId\x12\x63\n\x0f\x63onnection_type\x18\x02 \x01(\tB:\x92\x41\x34\x32)Name of the external identity connection.J\x07\"OAUTH\"\xe0\x41\x03R\x0e\x63onnectionType\x12\x8c\x01\n\x13\x63onnection_provider\x18\x03 \x01(\x0e\x32).scalekit.v1.commons.IdentityProviderTypeB0\x92\x41*2\x1eType of the identity provider.J\x08\"GOOGLE\"\xe0\x41\x03R\x12\x63onnectionProvider\x12\xa9\x01\n\x12\x63onnection_user_id\x18\x04 \x01(\tB{\x92\x41u2aUnique identifier for the user in the external identity provider system. Immutable and read-only.J\x10\"ext_user_12345\"\xe0\x41\x03R\x10\x63onnectionUserId\x12\x9b\x01\n\tis_social\x18\x05 \x01(\x08\x42~\x92\x41x2pIndicates if the identity provider is a social provider (true) or enterprise/custom provider (false). Read-only.J\x04true\xe0\x41\x03R\x08isSocial\x12\xc3\x01\n\x0flast_login_time\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x7f\x92\x41y2wTimestamp of the user\'s last successful login via this external identity provider. Automatically updated by the system.\xe0\x41\x03R\rlastLoginTime\x12\xa3\x01\n\x0c\x63reated_time\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampBd\x92\x41^2\\Timestamp when this external identity connection was first created. Immutable and read-only.\xe0\x41\x03R\x0b\x63reatedTime\x12\xcc\x01\n\x10last_synced_time\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x85\x01\x92\x41\x7f\x32}Timestamp of the last data synchronization for this external identity from the provider. Automatically updated by the system.\xe0\x41\x03R\x0elastSyncedTime*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*w\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\x12\x12\n\x0eINVITE_EXPIRED\x10\x04*\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*`\n\x12\x41uthenticationMode\x12#\n\x1f\x41UTHENTICATION_MODE_UNSPECIFIED\x10\x00\x12\x10\n\x0cMODULAR_AUTH\x10\x01\x12\x13\n\x0f\x46ULL_STACK_AUTH\x10\x02*O\n\x08TimeUnit\x12!\n\x1dSESSION_TIME_UNIT_UNSPECIFIED\x10\x00\x12\x0b\n\x07MINUTES\x10\x01\x12\t\n\x05HOURS\x10\x02\x12\x08\n\x04\x44\x41YS\x10\x03\x42\x33Z1github.com/scalekit-inc/scalekit/pkg/grpc/commonsb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -125,6 +125,8 @@ _globals['_IDENTITYPROVIDERTYPE']._serialized_end=11226 _globals['_AUTHENTICATIONMODE']._serialized_start=11228 _globals['_AUTHENTICATIONMODE']._serialized_end=11324 + _globals['_TIMEUNIT']._serialized_start=11326 + _globals['_TIMEUNIT']._serialized_end=11405 _globals['_ORGANIZATIONMEMBERSHIP']._serialized_start=349 _globals['_ORGANIZATIONMEMBERSHIP']._serialized_end=2769 _globals['_ORGANIZATIONMEMBERSHIP_METADATAENTRY']._serialized_start=2596 diff --git a/scalekit/v1/commons/commons_pb2.pyi b/scalekit/v1/commons/commons_pb2.pyi index 5303f08..2a041b7 100644 --- a/scalekit/v1/commons/commons_pb2.pyi +++ b/scalekit/v1/commons/commons_pb2.pyi @@ -60,6 +60,13 @@ class AuthenticationMode(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): AUTHENTICATION_MODE_UNSPECIFIED: _ClassVar[AuthenticationMode] MODULAR_AUTH: _ClassVar[AuthenticationMode] FULL_STACK_AUTH: _ClassVar[AuthenticationMode] + +class TimeUnit(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + SESSION_TIME_UNIT_UNSPECIFIED: _ClassVar[TimeUnit] + MINUTES: _ClassVar[TimeUnit] + HOURS: _ClassVar[TimeUnit] + DAYS: _ClassVar[TimeUnit] REGION_CODE_UNSPECIFIED: RegionCode US: RegionCode EU: RegionCode @@ -91,6 +98,10 @@ ADFS: IdentityProviderType AUTHENTICATION_MODE_UNSPECIFIED: AuthenticationMode MODULAR_AUTH: AuthenticationMode FULL_STACK_AUTH: AuthenticationMode +SESSION_TIME_UNIT_UNSPECIFIED: TimeUnit +MINUTES: TimeUnit +HOURS: TimeUnit +DAYS: TimeUnit class OrganizationMembership(_message.Message): __slots__ = ("organization_id", "join_time", "membership_status", "roles", "name", "metadata", "display_name", "inviter_email", "created_at", "accepted_at", "expires_at", "provisioning_method", "permissions") diff --git a/scalekit/v1/connected_accounts/connected_accounts_pb2.py b/scalekit/v1/connected_accounts/connected_accounts_pb2.py index 04d204d..a725386 100644 --- a/scalekit/v1/connected_accounts/connected_accounts_pb2.py +++ b/scalekit/v1/connected_accounts/connected_accounts_pb2.py @@ -22,7 +22,7 @@ from scalekit.v1.options import options_pb2 as scalekit_dot_v1_dot_options_dot_options__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n7scalekit/v1/connected_accounts/connected_accounts.proto\x12\x1escalekit.v1.connected_accounts\x1a\x1b\x62uf/validate/validate.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1bgoogle/api/visibility.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a.protoc-gen-openapiv2/options/annotations.proto\x1a!scalekit/v1/options/options.proto\"\xa9\x0c\n\x1cListConnectedAccountsRequest\x12\xb1\x01\n\x0forganization_id\x18\x01 \x01(\tB\x82\x01\x92\x41v2]Filter by organization ID. Returns only connected accounts associated with this organization.J\x15\"org_121312434123312\"\xbaH\x06r\x04\x10\x00\x18 H\x00R\x0eorganizationId\x88\x01\x01\x12\x91\x01\n\x07user_id\x18\x02 \x01(\tBs\x92\x41g2MFilter by user ID. Returns only connected accounts associated with this user.J\x16\"user_121312434123312\"\xbaH\x06r\x04\x10\x00\x18 H\x01R\x06userId\x88\x01\x01\x12\xef\x01\n\tconnector\x18\x03 \x01(\tB\xcb\x01\x92\x41\xa9\x01\x32\x9c\x01\x46ilter by connector type. Connector identifier such as \'notion\', \'slack\', \'google\', etc. Alphanumeric with spaces, hyphens, underscores, and colons allowed.J\x08\"notion\"\xbaH\x1br\x19\x10\x00\x18\x90\x03\x32\x12^[a-zA-Z0-9_: -]*$H\x02R\tconnector\x88\x01\x01\x12\xdb\x01\n\nidentifier\x18\x04 \x01(\tB\xb5\x01\x92\x41\xa8\x01\x32\x91\x01\x46ilter by account identifier. The unique identifier for the connected account within the third-party service (e.g., email address, workspace ID).J\x12\"user@example.com\"\xbaH\x06r\x04\x10\x00\x18\x64H\x03R\nidentifier\x88\x01\x01\x12\x9d\x01\n\x08provider\x18\x05 \x01(\tB\x80\x01\x92\x41t2hFilter by OAuth provider. The authentication provider name such as \'google\', \'microsoft\', \'github\', etc.J\x08\"google\"\xbaH\x06r\x04\x10\x00\x18\x32R\x08provider\x12\x9b\x01\n\tpage_size\x18\x06 \x01(\rB~\x92\x41r2lMaximum number of connected accounts to return per page. Must be between 0 and 100. Default is typically 10.J\x02\x31\x30\xbaH\x06*\x04\x10\x64(\x00R\x08pageSize\x12\xcb\x01\n\npage_token\x18\x07 \x01(\tB\xab\x01\x92\x41\x9e\x01\x32\x83\x01Pagination token from a previous response. Use the next_page_token value from ListConnectedAccountsResponse to fetch the next page.J\x16\"eyJvZmZzZXQiOjEwfQ==\"\xbaH\x06r\x04\x10\x00\x18\x64R\tpageToken\x12\xa7\x01\n\x05query\x18\x08 \x01(\tB\x90\x01\x92\x41\x83\x01\x32qText search query to filter connected accounts by name, identifier, or other searchable fields. Case-insensitive.J\x0e\"john@example\"\xbaH\x06r\x04\x10\x00\x18\x64R\x05queryB\x12\n\x10_organization_idB\n\n\x08_user_idB\x0c\n\n_connectorB\r\n\x0b_identifier\"\xbb\x06\n\x1dListConnectedAccountsResponse\x12\xdc\x01\n\x12\x63onnected_accounts\x18\x01 \x03(\x0b\x32\x37.scalekit.v1.connected_accounts.ConnectedAccountForListBt\x92\x41q2oList of connected accounts matching the filter criteria. Excludes sensitive authorization details for security.R\x11\x63onnectedAccounts\x12\x99\x01\n\ntotal_size\x18\x02 \x01(\rBz\x92\x41w2pTotal count of connected accounts matching the filter criteria across all pages. Use for calculating pagination.J\x03\x31\x30\x30R\ttotalSize\x12\xd2\x01\n\x0fnext_page_token\x18\x03 \x01(\tB\xa9\x01\x92\x41\x9c\x01\x32\x81\x01Pagination token for retrieving the next page. Empty if this is the last page. Pass this value to page_token in the next request.J\x16\"eyJvZmZzZXQiOjIwfQ==\"\xbaH\x06r\x04\x10\x00\x18 R\rnextPageToken\x12\xc9\x01\n\x0fprev_page_token\x18\x04 \x01(\tB\xa0\x01\x92\x41\x93\x01\x32}Pagination token for retrieving the previous page. Empty if this is the first page. Pass this value to page_token to go back.J\x12\"eyJvZmZzZXQiOjB9\"\xbaH\x06r\x04\x10\x00\x18 R\rprevPageToken\"\xe0\x06\n\x1eSearchConnectedAccountsRequest\x12\xb9\x01\n\x05query\x18\x01 \x01(\tB\xa2\x01\x92\x41\x91\x01\x32\x86\x01Search term to match against connected account identifiers, providers, or connectors. Must be at least 3 characters. Case insensitive.J\x06google\xbaH\nr\x05\x10\x03\x18\xc8\x01\xc8\x01\x01R\x05query\x12\x85\x01\n\tpage_size\x18\x02 \x01(\rBh\x92\x41^2XMaximum number of connected accounts 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\x12i\n\rconnection_id\x18\x04 \x01(\tBD\x92\x41\x38\x32*Connection ID to filter connected accountsJ\n\"conn_123\"\xbaH\x06r\x04\x10\x00\x18 R\x0c\x63onnectionId:\xe6\x01\x92\x41\xe2\x01\n\x9c\x01*\x19Search Connected Accounts2\x7fSearch for connected accounts in your environment using a text query that matches against identifiers, providers, or connectors2Aquery=google&page_size=30&page_token=eyJwYWdlIjoyLCJsaW1pdCI6MzB9\"\x87\x05\n\x1fSearchConnectedAccountsResponse\x12\xcc\x01\n\x12\x63onnected_accounts\x18\x01 \x03(\x0b\x32\x37.scalekit.v1.connected_accounts.ConnectedAccountForListBd\x92\x41\x61\x32_List of connected accounts matching the search query. Excludes sensitive authorization details.R\x11\x63onnectedAccounts\x12l\n\ntotal_size\x18\x02 \x01(\rBM\x92\x41J2CTotal count of accounts matching the search query across all pages.J\x03\x31\x30\x30R\ttotalSize\x12\x91\x01\n\x0fnext_page_token\x18\x03 \x01(\tBi\x92\x41]2CPagination token for the next page. Empty if this is the last page.J\x16\"eyJvZmZzZXQiOjMwfQ==\"\xbaH\x06r\x04\x10\x00\x18 R\rnextPageToken\x12\x92\x01\n\x0fprev_page_token\x18\x04 \x01(\tBj\x92\x41^2HPagination token for the previous page. Empty if this is the first page.J\x12\"eyJvZmZzZXQiOjB9\"\xbaH\x06r\x04\x10\x00\x18 R\rprevPageToken\"\xa8\x07\n\x1d\x43reateConnectedAccountRequest\x12t\n\x0forganization_id\x18\x01 \x01(\tBF\x92\x41:2!Organization ID for the connectorJ\x15\"org_121312434123312\"\xbaH\x06r\x04\x10\x00\x18 H\x00R\x0eorganizationId\x88\x01\x01\x12]\n\x07user_id\x18\x02 \x01(\tB?\x92\x41\x33\x32\x19User ID for the connectorJ\x16\"user_121312434123312\"\xbaH\x06r\x04\x10\x00\x18 H\x01R\x06userId\x88\x01\x01\x12\x64\n\tconnector\x18\x03 \x01(\tBA\x92\x41 2\x14\x43onnector identifierJ\x08\"notion\"\xbaH\x1br\x19\x10\x00\x18\x90\x03\x32\x12^[a-zA-Z0-9_: -]*$H\x02R\tconnector\x88\x01\x01\x12\xce\x01\n\nidentifier\x18\x04 \x01(\tB\xa8\x01\x92\x41\x9b\x01\x32\x84\x01The unique identifier for the connected account within the third-party service (e.g., email address, user ID, workspace identifier).J\x12\"user@example.com\"\xbaH\x06r\x04\x10\x00\x18\x64H\x03R\nidentifier\x88\x01\x01\x12\xbd\x02\n\x11\x63onnected_account\x18\x05 \x01(\x0b\x32\x36.scalekit.v1.connected_accounts.CreateConnectedAccountB\xd7\x01\x92\x41\xcd\x01\x32*Details of the connected account to createJ\x9e\x01{ \"authorization_type\": \"OAUTH2\", \"authorization_details\": { \"oauth_token\": { \"access_token\": \"...\", \"refresh_token\": \"...\", \"scopes\": [\"read\", \"write\"] } } }\xbaH\x03\xc8\x01\x01R\x10\x63onnectedAccountB\x12\n\x10_organization_idB\n\n\x08_user_idB\x0c\n\n_connectorB\r\n\x0b_identifier\"\x8d\x02\n\x1e\x43reateConnectedAccountResponse\x12\xea\x01\n\x11\x63onnected_account\x18\x01 \x01(\x0b\x32\x30.scalekit.v1.connected_accounts.ConnectedAccountB\x8a\x01\x92\x41\x86\x01\x32\x83\x01The newly created connected account with its unique identifier, status, and complete authorization details including access tokens.R\x10\x63onnectedAccount\"\x84\x08\n\x1dUpdateConnectedAccountRequest\x12t\n\x0forganization_id\x18\x01 \x01(\tBF\x92\x41:2!Organization ID for the connectorJ\x15\"org_121312434123312\"\xbaH\x06r\x04\x10\x00\x18 H\x00R\x0eorganizationId\x88\x01\x01\x12]\n\x07user_id\x18\x02 \x01(\tB?\x92\x41\x33\x32\x19User ID for the connectorJ\x16\"user_121312434123312\"\xbaH\x06r\x04\x10\x00\x18 H\x01R\x06userId\x88\x01\x01\x12P\n\tconnector\x18\x03 \x01(\tB-\x92\x41 2\x14\x43onnector identifierJ\x08\"notion\"\xbaH\x07r\x05\x10\x00\x18\x90\x03H\x02R\tconnector\x88\x01\x01\x12\xce\x01\n\nidentifier\x18\x04 \x01(\tB\xa8\x01\x92\x41\x9b\x01\x32\x84\x01The unique identifier for the connected account within the third-party service (e.g., email address, user ID, workspace identifier).J\x12\"user@example.com\"\xbaH\x06r\x04\x10\x00\x18\x64H\x03R\nidentifier\x88\x01\x01\x12g\n\x02id\x18\x06 \x01(\tBR\x92\x41\x41\x32\x35Unique identifier for the connected account to updateJ\x08\"ca_123\"\xbaH\x0br\t\x10\x00\x18 :\x03\x63\x61_H\x04R\x02id\x88\x01\x01\x12\xbd\x02\n\x11\x63onnected_account\x18\x05 \x01(\x0b\x32\x36.scalekit.v1.connected_accounts.UpdateConnectedAccountB\xd7\x01\x92\x41\xcd\x01\x32*Details of the connected account to updateJ\x9e\x01{ \"authorization_type\": \"OAUTH2\", \"authorization_details\": { \"oauth_token\": { \"access_token\": \"...\", \"refresh_token\": \"...\", \"scopes\": [\"read\", \"write\"] } } }\xbaH\x03\xc8\x01\x01R\x10\x63onnectedAccountB\x12\n\x10_organization_idB\n\n\x08_user_idB\x0c\n\n_connectorB\r\n\x0b_identifierB\x05\n\x03_id\"\xf7\x01\n\x1eUpdateConnectedAccountResponse\x12\xd4\x01\n\x11\x63onnected_account\x18\x01 \x01(\x0b\x32\x30.scalekit.v1.connected_accounts.ConnectedAccountBu\x92\x41r2pThe updated connected account with refreshed credentials, new token expiry, and modified configuration settings.R\x10\x63onnectedAccount\"\xd8\x05\n\x1d\x44\x65leteConnectedAccountRequest\x12t\n\x0forganization_id\x18\x01 \x01(\tBF\x92\x41:2!Organization ID for the connectorJ\x15\"org_121312434123312\"\xbaH\x06r\x04\x10\x00\x18 H\x00R\x0eorganizationId\x88\x01\x01\x12]\n\x07user_id\x18\x02 \x01(\tB?\x92\x41\x33\x32\x19User ID for the connectorJ\x16\"user_121312434123312\"\xbaH\x06r\x04\x10\x00\x18 H\x01R\x06userId\x88\x01\x01\x12\x64\n\tconnector\x18\x03 \x01(\tBA\x92\x41 2\x14\x43onnector identifierJ\x08\"notion\"\xbaH\x1br\x19\x10\x00\x18\x90\x03\x32\x12^[a-zA-Z0-9_: -]*$H\x02R\tconnector\x88\x01\x01\x12\xce\x01\n\nidentifier\x18\x04 \x01(\tB\xa8\x01\x92\x41\x9b\x01\x32\x84\x01The unique identifier for the connected account within the third-party service (e.g., email address, user ID, workspace identifier).J\x12\"user@example.com\"\xbaH\x06r\x04\x10\x00\x18\x64H\x03R\nidentifier\x88\x01\x01\x12g\n\x02id\x18\x05 \x01(\tBR\x92\x41\x41\x32\x35Unique identifier for the connected account to deleteJ\x08\"ca_123\"\xbaH\x0br\t\x10\x00\x18 :\x03\x63\x61_H\x04R\x02id\x88\x01\x01\x42\x12\n\x10_organization_idB\n\n\x08_user_idB\x0c\n\n_connectorB\r\n\x0b_identifierB\x05\n\x03_id\" \n\x1e\x44\x65leteConnectedAccountResponse\"\xd3\x08\n&GetMagicLinkForConnectedAccountRequest\x12t\n\x0forganization_id\x18\x01 \x01(\tBF\x92\x41:2!Organization ID for the connectorJ\x15\"org_121312434123312\"\xbaH\x06r\x04\x10\x00\x18 H\x00R\x0eorganizationId\x88\x01\x01\x12]\n\x07user_id\x18\x02 \x01(\tB?\x92\x41\x33\x32\x19User ID for the connectorJ\x16\"user_121312434123312\"\xbaH\x06r\x04\x10\x00\x18 H\x01R\x06userId\x88\x01\x01\x12P\n\tconnector\x18\x03 \x01(\tB-\x92\x41 2\x14\x43onnector identifierJ\x08\"notion\"\xbaH\x07r\x05\x10\x00\x18\x90\x03H\x02R\tconnector\x88\x01\x01\x12\xce\x01\n\nidentifier\x18\x04 \x01(\tB\xa8\x01\x92\x41\x9b\x01\x32\x84\x01The unique identifier for the connected account within the third-party service (e.g., email address, user ID, workspace identifier).J\x12\"user@example.com\"\xbaH\x06r\x04\x10\x00\x18\x64H\x03R\nidentifier\x88\x01\x01\x12]\n\x02id\x18\x05 \x01(\tBH\x92\x41\x37\x32+Unique identifier for the connected accountJ\x08\"ca_123\"\xbaH\x0br\t\x10\x00\x18 :\x03\x63\x61_H\x04R\x02id\x88\x01\x01\x12\xcf\x01\n\x05state\x18\x07 \x01(\tB\xb3\x01\x92\x41\xa5\x01\x32wOptional opaque state value. State added to the user verify redirect URL query params to validate the user verificationJ*\"QVNDSUFyY2hhYml0dGVyXzE2ODQ5NzIwNzI0NTY=\"\xbaH\x07r\x05\x10\x00\x18\x80\x04H\x05R\x05state\x88\x01\x01\x12\x9d\x01\n\x0fuser_verify_url\x18\x08 \x01(\tBp\x92\x41T2\"B2B app\'s user verify redirect URLJ.\"https://app.yourapp.com/user/verify/callback\"\xbaH\x16r\x14\x10\x00\x18\x80\x10\x32\r^$|^https?://H\x06R\ruserVerifyUrl\x88\x01\x01\x42\x12\n\x10_organization_idB\n\n\x08_user_idB\x0c\n\n_connectorB\r\n\x0b_identifierB\x05\n\x03_idB\x08\n\x06_stateB\x12\n\x10_user_verify_url\"\x9c\x02\n\'GetMagicLinkForConnectedAccountResponse\x12r\n\x04link\x18\x01 \x01(\tB^\x92\x41[2%Authentication link for the connectorJ2\"https://notion.com/oauth/authorize?client_id=...\"R\x04link\x12}\n\x06\x65xpiry\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampBI\x92\x41\x46\x32,Expiry timestamp for the authentication linkJ\x16\"2024-03-20T15:04:05Z\"R\x06\x65xpiry\"\xeb\x02\n!VerifyConnectedAccountUserRequest\x12\xc8\x01\n\x0f\x61uth_request_id\x18\x01 \x01(\tB\x9f\x01\x92\x41\x8e\x01\x32`Auth request ID as base64url-encoded opaque token from the user verify redirect URL query paramsJ*\"QVNDSUFyY2hhYml0dGVyXzE2ODQ5NzIwNzI0NTY=\"\xe0\x41\x02\xbaH\x07r\x05\x10\x01\x18\xe8\x07R\rauthRequestId\x12{\n\nidentifier\x18\x02 \x01(\tB[\x92\x41K25Current logged in user\'s connected account identifierJ\x12\"user@example.com\"\xe0\x41\x02\xbaH\x07r\x05\x10\x01\x18\xc8\x01R\nidentifier\"\xd3\x01\n\"VerifyConnectedAccountUserResponse\x12\xac\x01\n\x1dpost_user_verify_redirect_url\x18\x01 \x01(\tBj\x92\x41g29URL to redirect the user to after successful verificationJ*\"https://env1.example.com/connect/success\"R\x19postUserVerifyRedirectUrl\"\xc3\x05\n&GetConnectedAccountByIdentifierRequest\x12t\n\x0forganization_id\x18\x01 \x01(\tBF\x92\x41:2!Organization ID for the connectorJ\x15\"org_121312434123312\"\xbaH\x06r\x04\x10\x00\x18 H\x00R\x0eorganizationId\x88\x01\x01\x12]\n\x07user_id\x18\x02 \x01(\tB?\x92\x41\x33\x32\x19User ID for the connectorJ\x16\"user_121312434123312\"\xbaH\x06r\x04\x10\x00\x18 H\x01R\x06userId\x88\x01\x01\x12P\n\tconnector\x18\x03 \x01(\tB-\x92\x41 2\x14\x43onnector identifierJ\x08\"notion\"\xbaH\x07r\x05\x10\x00\x18\x90\x03H\x02R\tconnector\x88\x01\x01\x12\xce\x01\n\nidentifier\x18\x04 \x01(\tB\xa8\x01\x92\x41\x9b\x01\x32\x84\x01The unique identifier for the connected account within the third-party service (e.g., email address, user ID, workspace identifier).J\x12\"user@example.com\"\xbaH\x06r\x04\x10\x00\x18\x64H\x03R\nidentifier\x88\x01\x01\x12]\n\x02id\x18\x05 \x01(\tBH\x92\x41\x37\x32+Unique identifier for the connected accountJ\x08\"ca_123\"\xbaH\x0br\t\x10\x00\x18 :\x03\x63\x61_H\x04R\x02id\x88\x01\x01\x42\x12\n\x10_organization_idB\n\n\x08_user_idB\x0c\n\n_connectorB\r\n\x0b_identifierB\x05\n\x03_id\"\xbe\x02\n\'GetConnectedAccountByIdentifierResponse\x12\x92\x02\n\x11\x63onnected_account\x18\x01 \x01(\x0b\x32\x30.scalekit.v1.connected_accounts.ConnectedAccountB\xb2\x01\x92\x41\xae\x01\x32\xab\x01The connected account with complete details including sensitive authorization credentials (access tokens, refresh tokens, scopes). Handle with appropriate access controls.R\x10\x63onnectedAccount\"\xe3\x13\n\x10\x43onnectedAccount\x12\xbc\x01\n\nidentifier\x18\x01 \x01(\tB\x9b\x01\x92\x41\x97\x01\x32\x80\x01The unique identifier for this account in the third-party service. Typically an email address, user ID, or workspace identifier.J\x12\"user@example.com\"R\nidentifier\x12\xaa\x01\n\x08provider\x18\x02 \x01(\tB\x8d\x01\x92\x41\x89\x01\x32}OAuth provider name (e.g., \'google\', \'microsoft\', \'github\'). Identifies which authentication service manages this connection.J\x08\"google\"R\x08provider\x12\xe4\x01\n\x06status\x18\x03 \x01(\x0e\x32/.scalekit.v1.connected_accounts.ConnectorStatusB\x9a\x01\x92\x41\x96\x01\x32\x93\x01\x43urrent status of the connected account. Indicates if the account is active, expired, pending authorization, or pending user identity verification.R\x06status\x12\xe9\x01\n\x12\x61uthorization_type\x18\x04 \x01(\x0e\x32-.scalekit.v1.connected_accounts.ConnectorTypeB\x8a\x01\x92\x41\x86\x01\x32\x83\x01Type of authorization mechanism used. Specifies whether this connection uses OAuth, API keys, bearer tokens, or other auth methods.R\x11\x61uthorizationType\x12\x81\x02\n\x15\x61uthorization_details\x18\x05 \x01(\x0b\x32\x34.scalekit.v1.connected_accounts.AuthorizationDetailsB\x95\x01\x92\x41\x91\x01\x32\x8e\x01Sensitive authentication credentials including access tokens, refresh tokens, and scopes. Contains either OAuth tokens or static auth details.R\x14\x61uthorizationDetails\x12\xce\x01\n\x10token_expires_at\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x87\x01\x92\x41\x83\x01\x32iExpiration timestamp for the access token. After this time, the token must be refreshed or re-authorized.J\x16\"2024-12-31T23:59:59Z\"R\x0etokenExpiresAt\x12\xc9\x01\n\nupdated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x8d\x01\x92\x41\x89\x01\x32oTimestamp when this connected account was last modified. Updated whenever credentials or configuration changes.J\x16\"2024-03-20T15:04:05Z\"R\tupdatedAt\x12\xae\x01\n\tconnector\x18\x08 \x01(\tB\x8f\x01\x92\x41\x8b\x01\x32\x7f\x43onnector identifier (e.g., \'notion\', \'slack\', \'salesforce\'). Indicates which third-party application this account connects to.J\x08\"notion\"R\tconnector\x12\xcd\x01\n\x0clast_used_at\x18\t \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x8e\x01\x92\x41\x8a\x01\x32pTimestamp when this connected account was last used to make an API call. Useful for tracking active connections.J\x16\"2024-03-20T14:30:00Z\"R\nlastUsedAt\x12\x98\x01\n\x02id\x18\n \x01(\tB\x87\x01\x92\x41v2\\Unique Scalekit-generated identifier for this connected account. Always prefixed with \'ca_\'.J\x16\"ca_24834495392086178\"\xbaH\x0br\t\x10\x00\x18 :\x03\x63\x61_R\x02id\x12\xc6\x01\n\rconnection_id\x18\x0b \x01(\tB\xa0\x01\x92\x41\x93\x01\x32wReference to the parent connection configuration. Links this account to a specific connector setup in your environment.J\x18\"conn_24834495392086178\"\xbaH\x06r\x04\x10\x00\x18 R\x0c\x63onnectionId\x12\x89\x02\n\napi_config\x18\x0c \x01(\x0b\x32\x17.google.protobuf.StructB\xd0\x01\x92\x41\xcc\x01\x32xOptional JSON configuration for connector-specific API settings such as rate limits, custom endpoints, or feature flags.JP{\"rate_limit\": 1000, \"timeout\": 30, \"base_url\": \"https://api.custom-domain.com\"}R\tapiConfig\"\x9a\x06\n\x16\x43reateConnectedAccount\x12\xae\x03\n\x15\x61uthorization_details\x18\x05 \x01(\x0b\x32\x34.scalekit.v1.connected_accounts.AuthorizationDetailsB\xc2\x02\x92\x41\xbe\x02\x32\xcd\x01Optional authentication credentials for the connected account. Include OAuth tokens (access_token, refresh_token, scopes) or static auth details (API keys, bearer tokens). Can be provided later via update.Jl{\"oauth_token\": {\"access_token\": \"ya29.a0...\", \"refresh_token\": \"1//0g...\", \"scopes\": [\"email\", \"profile\"]}}R\x14\x61uthorizationDetails\x12\x98\x02\n\napi_config\x18\x0b \x01(\x0b\x32\x17.google.protobuf.StructB\xdf\x01\x92\x41\xdb\x01\x32\x86\x01Optional JSON configuration for connector-specific API settings such as rate limits, custom API endpoints, timeouts, or feature flags.JP{\"rate_limit\": 1000, \"timeout\": 30, \"base_url\": \"https://api.custom-domain.com\"}R\tapiConfigJ\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03J\x04\x08\x03\x10\x04J\x04\x08\x04\x10\x05J\x04\x08\x06\x10\x07J\x04\x08\x07\x10\x08J\x04\x08\x08\x10\tJ\x04\x08\t\x10\nJ\x04\x08\n\x10\x0b\"\xbc\x05\n\x16UpdateConnectedAccount\x12\x8d\x03\n\x15\x61uthorization_details\x18\x05 \x01(\x0b\x32\x34.scalekit.v1.connected_accounts.AuthorizationDetailsB\xa1\x02\x92\x41\x9d\x02\x32\x99\x01Updated authentication credentials. Provide new OAuth tokens (e.g., after refresh) or updated static auth details. Only included fields will be modified.J\x7f{\"oauth_token\": {\"access_token\": \"ya29.new_token...\", \"refresh_token\": \"1//0g...\", \"scopes\": [\"email\", \"profile\", \"calendar\"]}}R\x14\x61uthorizationDetails\x12\xe1\x01\n\napi_config\x18\n \x01(\x0b\x32\x17.google.protobuf.StructB\xa8\x01\x92\x41\xa4\x01\x32}Updated JSON configuration for API-specific settings. Merges with existing configuration - only provided fields are modified.J#{\"rate_limit\": 2000, \"timeout\": 60}R\tapiConfigJ\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03J\x04\x08\x03\x10\x04J\x04\x08\x04\x10\x05J\x04\x08\x06\x10\x07J\x04\x08\x07\x10\x08J\x04\x08\x08\x10\tJ\x04\x08\t\x10\n\"\xe0\x08\n\x17\x43onnectedAccountForList\x12{\n\nidentifier\x18\x01 \x01(\tB[\x92\x41X2BThe unique identifier for this account in the third-party service.J\x12\"user@example.com\"R\nidentifier\x12]\n\x08provider\x18\x02 \x01(\tBA\x92\x41>22OAuth provider name (e.g., \'google\', \'microsoft\').J\x08\"google\"R\x08provider\x12h\n\x06status\x18\x03 \x01(\x0e\x32/.scalekit.v1.connected_accounts.ConnectorStatusB\x1f\x92\x41\x1c\x32\x1a\x43urrent connection status.R\x06status\x12\x80\x01\n\x12\x61uthorization_type\x18\x04 \x01(\x0e\x32-.scalekit.v1.connected_accounts.ConnectorTypeB\"\x92\x41\x1f\x32\x1d\x41uthorization mechanism type.R\x11\x61uthorizationType\x12~\n\x10token_expires_at\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampB8\x92\x41\x35\x32\x1bToken expiration timestamp.J\x16\"2024-12-31T23:59:59Z\"R\x0etokenExpiresAt\x12t\n\nupdated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampB9\x92\x41\x36\x32\x1cLast modification timestamp.J\x16\"2024-03-20T15:04:05Z\"R\tupdatedAt\x12\x42\n\tconnector\x18\x08 \x01(\tB$\x92\x41!2\x15\x43onnector identifier.J\x08\"notion\"R\tconnector\x12p\n\x0clast_used_at\x18\t \x01(\x0b\x32\x1a.google.protobuf.TimestampB2\x92\x41/2\x15Last usage timestamp.J\x16\"2024-03-20T14:30:00Z\"R\nlastUsedAt\x12Q\n\x02id\x18\n \x01(\tBA\x92\x41>2$Unique connected account identifier.J\x16\"ca_24834495392086178\"R\x02id\x12w\n\rconnection_id\x18\x0b \x01(\tBR\x92\x41\x46\x32*Parent connection configuration reference.J\x18\"conn_24834495392086178\"\xbaH\x06r\x04\x10\x00\x18 R\x0c\x63onnectionIdJ\x04\x08\x05\x10\x06\"\xbf\x01\n\x14\x41uthorizationDetails\x12M\n\x0boauth_token\x18\x01 \x01(\x0b\x32*.scalekit.v1.connected_accounts.OauthTokenH\x00R\noauthToken\x12M\n\x0bstatic_auth\x18\x02 \x01(\x0b\x32*.scalekit.v1.connected_accounts.StaticAuthH\x00R\nstaticAuthB\t\n\x07\x64\x65tails\"\xdc\x05\n\nOauthToken\x12\xa0\x01\n\x0c\x61\x63\x63\x65ss_token\x18\x01 \x01(\tB}\x92\x41z2bOAuth access token for API requests. Typically short-lived and must be refreshed after expiration.J\x14\"ya29.a0AfH6SMBx...\"R\x0b\x61\x63\x63\x65ssToken\x12\xae\x01\n\rrefresh_token\x18\x02 \x01(\tB\x88\x01\x92\x41\x84\x01\x32nOAuth refresh token for obtaining new access tokens. Long-lived and used to maintain persistent authorization.J\x12\"1//0gHJxZ-Lb2...\"R\x0crefreshToken\x12\xe1\x01\n\x06scopes\x18\x03 \x03(\tB\xc8\x01\x92\x41\xc4\x01\x32\\List of granted OAuth scopes defining the permissions and access levels for this connection.Jd[\"https://www.googleapis.com/auth/drive.readonly\", \"https://www.googleapis.com/auth/userinfo.email\"]R\x06scopes\x12\x95\x01\n\x06\x64omain\x18\x04 \x01(\tB}\x92\x41z2iAssociated domain for workspace or organization-scoped OAuth connections (e.g., Google Workspace domain).J\r\"example.com\"R\x06\x64omain\"\xf4\x01\n\nStaticAuth\x12\xe5\x01\n\x07\x64\x65tails\x18\x01 \x01(\x0b\x32\x17.google.protobuf.StructB\xb1\x01\x92\x41\xad\x01\x32zFlexible JSON structure containing static credentials. Format varies by connector type (API key, username/password, etc.).J/{\"api_key\": \"sk_live_...\", \"api_secret\": \"...\"}R\x07\x64\x65tails*y\n\x0f\x43onnectorStatus\x12!\n\x1d\x43ONNECTION_STATUS_UNSPECIFIED\x10\x00\x12\n\n\x06\x41\x43TIVE\x10\x01\x12\x0b\n\x07\x45XPIRED\x10\x02\x12\x10\n\x0cPENDING_AUTH\x10\x03\x12\x18\n\x14PENDING_VERIFICATION\x10\x04*\xa3\x01\n\rConnectorType\x12\x1f\n\x1b\x43ONNECTION_TYPE_UNSPECIFIED\x10\x00\x12\t\n\x05OAUTH\x10\x01\x12\x0b\n\x07\x41PI_KEY\x10\x02\x12\x0e\n\nBASIC_AUTH\x10\x03\x12\x10\n\x0c\x42\x45\x41RER_TOKEN\x10\x04\x12\n\n\x06\x43USTOM\x10\x05\x12\t\n\x05\x42\x41SIC\x10\x06\x12\r\n\tOAUTH_M2M\x10\x07\x12\x11\n\rTRELLO_OAUTH1\x10\x08\x32\xf5\x42\n\x17\x43onnectedAccountService\x12\xde\x06\n\x15ListConnectedAccounts\x12<.scalekit.v1.connected_accounts.ListConnectedAccountsRequest\x1a=.scalekit.v1.connected_accounts.ListConnectedAccountsResponse\"\xc7\x05\x92\x41\x9b\x05\n\x12\x43onnected Accounts\x12\x17List connected accounts\x1a\x9a\x02Retrieves a paginated list of connected accounts for third-party integrations. Filter by organization, user, connector type, provider, or identifier. Returns OAuth tokens, API keys, and connection status for each account. Use pagination tokens to navigate through large result sets.J\xaf\x01\n\x03\x32\x30\x30\x12\xa7\x01\nbSuccessfully retrieved the list of connected accounts with their authentication details and status\x12\x41\n?\x1a=.scalekit.v1.connected_accounts.ListConnectedAccountsResponseJY\n\x03\x34\x30\x30\x12R\nPInvalid request - occurs when query parameters are malformed or validation failsJB\n\x03\x34\x30\x31\x12;\n9Authentication required - missing or invalid access token\x82\xb5\x18\x02\x18\x44\x82\xd3\xe4\x93\x02\x1c\x12\x1a/api/v1/connected_accounts\x12\xe0\x06\n\x17SearchConnectedAccounts\x12>.scalekit.v1.connected_accounts.SearchConnectedAccountsRequest\x1a?.scalekit.v1.connected_accounts.SearchConnectedAccountsResponse\"\xc3\x05\x92\x41\x90\x05\n\x12\x43onnected Accounts\x12\x19Search connected accounts\x1a\x99\x02Search for connected accounts in your environment using a text query that matches against identifiers, providers, or connectors. The search performs case-insensitive matching across account details. Returns paginated results with account status and authentication type information.J\x99\x01\n\x03\x32\x30\x30\x12\x91\x01\nJSuccessfully retrieved matching connected accounts with pagination support\x12\x43\nA\x1a?.scalekit.v1.connected_accounts.SearchConnectedAccountsResponseJc\n\x03\x34\x30\x30\x12\\\nZInvalid request - query parameter is too short (minimum 3 characters) or validation failedJB\n\x03\x34\x30\x31\x12;\n9Authentication required - missing or invalid access token\x82\xb5\x18\x02\x18\x44\x82\xd3\xe4\x93\x02#\x12!/api/v1/connected_accounts:search\x12\xfe\x07\n\x16\x43reateConnectedAccount\x12=.scalekit.v1.connected_accounts.CreateConnectedAccountRequest\x1a>.scalekit.v1.connected_accounts.CreateConnectedAccountResponse\"\xe4\x06\x92\x41\xb5\x06\n\x12\x43onnected Accounts\x12\x1a\x43reate a connected account\x1a\xdf\x02\x43reates a new connected account with OAuth tokens or API credentials for third-party service integration. Supply authorization details including access tokens, refresh tokens, scopes, and optional API configuration. The account can be scoped to an organization or user. Returns the created account with its unique identifier and authentication status.J\xa4\x01\n\x03\x32\x30\x31\x12\x9c\x01\nVConnected account created successfully with authentication credentials stored securely\x12\x42\n@\x1a>.scalekit.v1.connected_accounts.CreateConnectedAccountResponseJg\n\x03\x34\x30\x30\x12`\n^Invalid request - missing required fields, invalid authorization details, or validation failedJB\n\x03\x34\x30\x31\x12;\n9Authentication required - missing or invalid access tokenJM\n\x03\x34\x30\x39\x12\x46\nDConflict - connected account with the same identifier already exists\x82\xb5\x18\x02\x18\x44\x82\xd3\xe4\x93\x02\x1f\"\x1a/api/v1/connected_accounts:\x01*\x12\xef\x07\n\x16UpdateConnectedAccount\x12=.scalekit.v1.connected_accounts.UpdateConnectedAccountRequest\x1a>.scalekit.v1.connected_accounts.UpdateConnectedAccountResponse\"\xd5\x06\x92\x41\xa6\x06\n\x12\x43onnected Accounts\x12$Update connected account credentials\x1a\xd2\x02Updates authentication credentials and configuration for an existing connected account. Modify OAuth tokens, refresh tokens, access scopes, or API configuration settings. Specify the account by ID, or by combination of organization/user, connector, and identifier. Returns the updated account with new token expiry and status information.J\x9a\x01\n\x03\x32\x30\x30\x12\x92\x01\nLConnected account updated successfully with new credentials or configuration\x12\x42\n@\x1a>.scalekit.v1.connected_accounts.UpdateConnectedAccountResponseJg\n\x03\x34\x30\x30\x12`\n^Invalid request - missing required fields, invalid authorization details, or validation failedJB\n\x03\x34\x30\x31\x12;\n9Authentication required - missing or invalid access tokenJK\n\x03\x34\x30\x34\x12\x44\nBConnected account not found - the specified account does not exist\x82\xb5\x18\x02\x18\x44\x82\xd3\xe4\x93\x02\x1f\x1a\x1a/api/v1/connected_accounts:\x01*\x12\xc6\x06\n\x16\x44\x65leteConnectedAccount\x12=.scalekit.v1.connected_accounts.DeleteConnectedAccountRequest\x1a>.scalekit.v1.connected_accounts.DeleteConnectedAccountResponse\"\xac\x05\x92\x41\xf6\x04\n\x12\x43onnected Accounts\x12\x1a\x44\x65lete a connected account\x1a\x9f\x02Permanently removes a connected account and revokes all associated authentication credentials. Identify the account by ID, or by combination of organization/user, connector, and identifier. This action cannot be undone. All OAuth tokens and API keys for this account will be invalidated.JK\n\x03\x32\x30\x30\x12\x44\nBConnected account deleted successfully and all credentials revokedJD\n\x03\x34\x30\x30\x12=\n;Invalid request - malformed parameters or validation failedJB\n\x03\x34\x30\x31\x12;\n9Authentication required - missing or invalid access tokenJK\n\x03\x34\x30\x34\x12\x44\nBConnected account not found - the specified account does not exist\x82\xb5\x18\x02\x18\x44\x82\xd3\xe4\x93\x02&\"!/api/v1/connected_accounts:delete:\x01*\x12\xff\x06\n\x1fGetMagicLinkForConnectedAccount\x12\x46.scalekit.v1.connected_accounts.GetMagicLinkForConnectedAccountRequest\x1aG.scalekit.v1.connected_accounts.GetMagicLinkForConnectedAccountResponse\"\xca\x05\x92\x41\x90\x05\n\x12\x43onnected Accounts\x12\"Generate authentication magic link\x1a\xa2\x02\x43reates a time-limited magic link for connecting or re-authorizing a third-party account. The link directs users to the OAuth authorization flow for the specified connector. Returns the generated link URL and expiration timestamp. Links typically expire after a short duration for security.J\x9f\x01\n\x03\x32\x30\x30\x12\x97\x01\nHMagic link generated successfully with authorization URL and expiry time\x12K\nI\x1aG.scalekit.v1.connected_accounts.GetMagicLinkForConnectedAccountResponseJK\n\x03\x34\x30\x30\x12\x44\nBInvalid request - missing required parameters or invalid connectorJB\n\x03\x34\x30\x31\x12;\n9Authentication required - missing or invalid access token\x82\xb5\x18\x02\x18\x44\x82\xd3\xe4\x93\x02*\"%/api/v1/connected_accounts/magic_link:\x01*\x12\xb6\x07\n\x17GetConnectedAccountAuth\x12\x46.scalekit.v1.connected_accounts.GetConnectedAccountByIdentifierRequest\x1aG.scalekit.v1.connected_accounts.GetConnectedAccountByIdentifierResponse\"\x89\x06\x92\x41\xd8\x05\n\x12\x43onnected Accounts\x12\x1dGet connected account details\x1a\xab\x02Retrieves complete authentication details for a connected account including OAuth tokens, refresh tokens, scopes, and API configuration. Query by account ID or by combination of organization/user, connector, and identifier. Returns sensitive credential information - use appropriate access controls.J\xa0\x01\n\x03\x32\x30\x30\x12\x98\x01\nISuccessfully retrieved connected account with full authentication details\x12K\nI\x1aG.scalekit.v1.connected_accounts.GetConnectedAccountByIdentifierResponseJ<\n\x03\x34\x30\x30\x12\x35\n3Invalid request - missing required query parametersJB\n\x03\x34\x30\x31\x12;\n9Authentication required - missing or invalid access tokenJP\n\x03\x34\x30\x34\x12I\nGConnected account not found - no account matches the specified criteria\x82\xb5\x18\x02\x18\x44\x82\xd3\xe4\x93\x02!\x12\x1f/api/v1/connected_accounts/auth\x12\xfa\x06\n\x1aGetConnectedAccountDetails\x12\x46.scalekit.v1.connected_accounts.GetConnectedAccountByIdentifierRequest\x1aG.scalekit.v1.connected_accounts.GetConnectedAccountByIdentifierResponse\"\xca\x05\x92\x41\x96\x05\n\x12\x43onnected Accounts\x12\x1dGet connected account details\x1a\x83\x02Returns metadata for a connected account including status, connector type, provider, and configuration without exposing stored authorization credentials. Look up by account ID, or by a combination of organization (or user), connector, and external identifier.J\x86\x01\n\x03\x32\x30\x30\x12\x7f\n0Successfully retrieved connected account details\x12K\nI\x1aG.scalekit.v1.connected_accounts.GetConnectedAccountByIdentifierResponseJ<\n\x03\x34\x30\x30\x12\x35\n3Invalid request - missing required query parametersJB\n\x03\x34\x30\x31\x12;\n9Authentication required - missing or invalid access tokenJP\n\x03\x34\x30\x34\x12I\nGConnected account not found - no account matches the specified criteria\x82\xb5\x18\x02\x18\x44\x82\xd3\xe4\x93\x02$\x12\"/api/v1/connected_accounts/details\x12\xbb\x07\n\x1aVerifyConnectedAccountUser\x12\x41.scalekit.v1.connected_accounts.VerifyConnectedAccountUserRequest\x1a\x42.scalekit.v1.connected_accounts.VerifyConnectedAccountUserResponse\"\x95\x06\x92\x41\xda\x05\n\x12\x43onnected Accounts\x12\x1dVerify connected account user\x1a\xa4\x02\x43onfirms the user assertion and activates the connected account after the user completes third-party OAuth. Called by the B2B app server with auth_request_id and identifier. Validates that the asserted identifier matches the one stored on the auth request and promotes pending tokens to live.J\x8a\x01\n\x03\x32\x30\x30\x12\x82\x01\n8Verification successful; connected account is now ACTIVE\x12\x46\nD\x1a\x42.scalekit.v1.connected_accounts.VerifyConnectedAccountUserResponseJ6\n\x03\x34\x30\x30\x12/\n-Invalid request - missing or malformed fieldsJ7\n\x03\x34\x30\x31\x12\x30\n.Unauthorized - invalid or missing access tokenJ(\n\x03\x34\x30\x33\x12!\n\x1f\x46orbidden - identifier mismatchJV\n\x03\x34\x30\x34\x12O\nMNot found - no pending flow for the given auth_request_id or already consumed\x82\xb5\x18\x02\x18\x44\x82\xd3\xe4\x93\x02+\"&/api/v1/connected_accounts/user/verify:\x01*\x1a\xe3\x01\x92\x41\xdf\x01\n\x12\x43onnected Accounts\x12\xc8\x01Manage connected accounts for third-party integrations and OAuth connections. Connected accounts represent authenticated access to external services like Google, Notion, Slack, and other applications.B\xa4\x02Z22OAuth provider name (e.g., \'google\', \'microsoft\').J\x08\"google\"R\x08provider\x12h\n\x06status\x18\x03 \x01(\x0e\x32/.scalekit.v1.connected_accounts.ConnectorStatusB\x1f\x92\x41\x1c\x32\x1a\x43urrent connection status.R\x06status\x12\x80\x01\n\x12\x61uthorization_type\x18\x04 \x01(\x0e\x32-.scalekit.v1.connected_accounts.ConnectorTypeB\"\x92\x41\x1f\x32\x1d\x41uthorization mechanism type.R\x11\x61uthorizationType\x12~\n\x10token_expires_at\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampB8\x92\x41\x35\x32\x1bToken expiration timestamp.J\x16\"2024-12-31T23:59:59Z\"R\x0etokenExpiresAt\x12t\n\nupdated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampB9\x92\x41\x36\x32\x1cLast modification timestamp.J\x16\"2024-03-20T15:04:05Z\"R\tupdatedAt\x12\x42\n\tconnector\x18\x08 \x01(\tB$\x92\x41!2\x15\x43onnector identifier.J\x08\"notion\"R\tconnector\x12p\n\x0clast_used_at\x18\t \x01(\x0b\x32\x1a.google.protobuf.TimestampB2\x92\x41/2\x15Last usage timestamp.J\x16\"2024-03-20T14:30:00Z\"R\nlastUsedAt\x12Q\n\x02id\x18\n \x01(\tBA\x92\x41>2$Unique connected account identifier.J\x16\"ca_24834495392086178\"R\x02id\x12w\n\rconnection_id\x18\x0b \x01(\tBR\x92\x41\x46\x32*Parent connection configuration reference.J\x18\"conn_24834495392086178\"\xbaH\x06r\x04\x10\x00\x18 R\x0c\x63onnectionIdJ\x04\x08\x05\x10\x06\"\x8f\x02\n\x14\x41uthorizationDetails\x12M\n\x0boauth_token\x18\x01 \x01(\x0b\x32*.scalekit.v1.connected_accounts.OauthTokenH\x00R\noauthToken\x12M\n\x0bstatic_auth\x18\x02 \x01(\x0b\x32*.scalekit.v1.connected_accounts.StaticAuthH\x00R\nstaticAuth\x12N\n\ngoogle_dwd\x18\x03 \x01(\x0b\x32-.scalekit.v1.connected_accounts.GoogleDWDAuthH\x00R\tgoogleDwdB\t\n\x07\x64\x65tails\"\xd8\x04\n\rGoogleDWDAuth\x12\x88\x01\n\x07subject\x18\x01 \x01(\tBn\x92\x41k2UEmail address of the Google Workspace user to impersonate via Domain-Wide Delegation.J\x12\"user@example.com\"R\x07subject\x12\x91\x01\n\x0c\x61\x63\x63\x65ss_token\x18\x02 \x01(\tBn\x92\x41h2POAuth access token acquired via the jwt-bearer grant. Present in responses only.J\x14\"ya29.a0AfH6SMBx...\"\xe0\x41\x03R\x0b\x61\x63\x63\x65ssToken\x12\x9d\x01\n\x06scopes\x18\x03 \x03(\tB\x84\x01\x92\x41~2>OAuth scopes granted to this token. Present in responses only.J<[\"openid\", \"https://www.googleapis.com/auth/userinfo.email\"]\xe0\x41\x03R\x06scopes\x12\x87\x01\n\x10token_expires_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampBA\x92\x41;29When the access token expires. Present in responses only.\xe0\x41\x03R\x0etokenExpiresAt\"\xdc\x05\n\nOauthToken\x12\xa0\x01\n\x0c\x61\x63\x63\x65ss_token\x18\x01 \x01(\tB}\x92\x41z2bOAuth access token for API requests. Typically short-lived and must be refreshed after expiration.J\x14\"ya29.a0AfH6SMBx...\"R\x0b\x61\x63\x63\x65ssToken\x12\xae\x01\n\rrefresh_token\x18\x02 \x01(\tB\x88\x01\x92\x41\x84\x01\x32nOAuth refresh token for obtaining new access tokens. Long-lived and used to maintain persistent authorization.J\x12\"1//0gHJxZ-Lb2...\"R\x0crefreshToken\x12\xe1\x01\n\x06scopes\x18\x03 \x03(\tB\xc8\x01\x92\x41\xc4\x01\x32\\List of granted OAuth scopes defining the permissions and access levels for this connection.Jd[\"https://www.googleapis.com/auth/drive.readonly\", \"https://www.googleapis.com/auth/userinfo.email\"]R\x06scopes\x12\x95\x01\n\x06\x64omain\x18\x04 \x01(\tB}\x92\x41z2iAssociated domain for workspace or organization-scoped OAuth connections (e.g., Google Workspace domain).J\r\"example.com\"R\x06\x64omain\"\xf4\x01\n\nStaticAuth\x12\xe5\x01\n\x07\x64\x65tails\x18\x01 \x01(\x0b\x32\x17.google.protobuf.StructB\xb1\x01\x92\x41\xad\x01\x32zFlexible JSON structure containing static credentials. Format varies by connector type (API key, username/password, etc.).J/{\"api_key\": \"sk_live_...\", \"api_secret\": \"...\"}R\x07\x64\x65tails\"\x83\x02\n\x1aGetConnectedAccountRequest\x12\xe4\x01\n\x02id\x18\x01 \x01(\tB\xd3\x01\x92\x41\xc6\x01\x32\xab\x01Unique identifier for the connected account. Always prefixed with \'ca_\'. If omitted (via the /this path), the connected account is resolved from the current token context.J\x16\"ca_24834495392086178\"\xbaH\x06r\x04\x10\x00\x18 R\x02id\"\xc5\x01\n\x1bGetConnectedAccountResponse\x12\xa5\x01\n\x11\x63onnected_account\x18\x01 \x01(\x0b\x32\x30.scalekit.v1.connected_accounts.ConnectedAccountBF\x92\x41\x43\x32\x41The connected account with its details and authentication status.R\x10\x63onnectedAccount\"\xb2\x01\n!DisconnectConnectedAccountRequest\x12\x8c\x01\n\x02id\x18\x01 \x01(\tB|\x92\x41p2VUnique identifier for the connected account to disconnect. Always prefixed with \'ca_\'.J\x16\"ca_24834495392086178\"\xbaH\x06r\x04\x10\x00\x18 R\x02id\"\xc6\x01\n\"DisconnectConnectedAccountResponse\x12\x9f\x01\n\x11\x63onnected_account\x18\x01 \x01(\x0b\x32\x30.scalekit.v1.connected_accounts.ConnectedAccountB@\x92\x41=2;The connected account with its updated DISCONNECTED status.R\x10\x63onnectedAccount*\x8b\x01\n\x0f\x43onnectorStatus\x12!\n\x1d\x43ONNECTION_STATUS_UNSPECIFIED\x10\x00\x12\n\n\x06\x41\x43TIVE\x10\x01\x12\x0b\n\x07\x45XPIRED\x10\x02\x12\x10\n\x0cPENDING_AUTH\x10\x03\x12\x18\n\x14PENDING_VERIFICATION\x10\x04\x12\x10\n\x0c\x44ISCONNECTED\x10\x05*\xb3\x01\n\rConnectorType\x12\x1f\n\x1b\x43ONNECTION_TYPE_UNSPECIFIED\x10\x00\x12\t\n\x05OAUTH\x10\x01\x12\x0b\n\x07\x41PI_KEY\x10\x02\x12\x0e\n\nBASIC_AUTH\x10\x03\x12\x10\n\x0c\x42\x45\x41RER_TOKEN\x10\x04\x12\n\n\x06\x43USTOM\x10\x05\x12\t\n\x05\x42\x41SIC\x10\x06\x12\r\n\tOAUTH_M2M\x10\x07\x12\x11\n\rTRELLO_OAUTH1\x10\x08\x12\x0e\n\nGOOGLE_DWD\x10\t2\xf8N\n\x17\x43onnectedAccountService\x12\xde\x06\n\x15ListConnectedAccounts\x12<.scalekit.v1.connected_accounts.ListConnectedAccountsRequest\x1a=.scalekit.v1.connected_accounts.ListConnectedAccountsResponse\"\xc7\x05\x92\x41\x9b\x05\n\x12\x43onnected Accounts\x12\x17List connected accounts\x1a\x9a\x02Retrieves a paginated list of connected accounts for third-party integrations. Filter by organization, user, connector type, provider, or identifier. Returns OAuth tokens, API keys, and connection status for each account. Use pagination tokens to navigate through large result sets.J\xaf\x01\n\x03\x32\x30\x30\x12\xa7\x01\nbSuccessfully retrieved the list of connected accounts with their authentication details and status\x12\x41\n?\x1a=.scalekit.v1.connected_accounts.ListConnectedAccountsResponseJY\n\x03\x34\x30\x30\x12R\nPInvalid request - occurs when query parameters are malformed or validation failsJB\n\x03\x34\x30\x31\x12;\n9Authentication required - missing or invalid access token\x82\xb5\x18\x02\x18\x44\x82\xd3\xe4\x93\x02\x1c\x12\x1a/api/v1/connected_accounts\x12\xe0\x06\n\x17SearchConnectedAccounts\x12>.scalekit.v1.connected_accounts.SearchConnectedAccountsRequest\x1a?.scalekit.v1.connected_accounts.SearchConnectedAccountsResponse\"\xc3\x05\x92\x41\x90\x05\n\x12\x43onnected Accounts\x12\x19Search connected accounts\x1a\x99\x02Search for connected accounts in your environment using a text query that matches against identifiers, providers, or connectors. The search performs case-insensitive matching across account details. Returns paginated results with account status and authentication type information.J\x99\x01\n\x03\x32\x30\x30\x12\x91\x01\nJSuccessfully retrieved matching connected accounts with pagination support\x12\x43\nA\x1a?.scalekit.v1.connected_accounts.SearchConnectedAccountsResponseJc\n\x03\x34\x30\x30\x12\\\nZInvalid request - query parameter is too short (minimum 3 characters) or validation failedJB\n\x03\x34\x30\x31\x12;\n9Authentication required - missing or invalid access token\x82\xb5\x18\x02\x18\x44\x82\xd3\xe4\x93\x02#\x12!/api/v1/connected_accounts:search\x12\xfe\x07\n\x16\x43reateConnectedAccount\x12=.scalekit.v1.connected_accounts.CreateConnectedAccountRequest\x1a>.scalekit.v1.connected_accounts.CreateConnectedAccountResponse\"\xe4\x06\x92\x41\xb5\x06\n\x12\x43onnected Accounts\x12\x1a\x43reate a connected account\x1a\xdf\x02\x43reates a new connected account with OAuth tokens or API credentials for third-party service integration. Supply authorization details including access tokens, refresh tokens, scopes, and optional API configuration. The account can be scoped to an organization or user. Returns the created account with its unique identifier and authentication status.J\xa4\x01\n\x03\x32\x30\x31\x12\x9c\x01\nVConnected account created successfully with authentication credentials stored securely\x12\x42\n@\x1a>.scalekit.v1.connected_accounts.CreateConnectedAccountResponseJg\n\x03\x34\x30\x30\x12`\n^Invalid request - missing required fields, invalid authorization details, or validation failedJB\n\x03\x34\x30\x31\x12;\n9Authentication required - missing or invalid access tokenJM\n\x03\x34\x30\x39\x12\x46\nDConflict - connected account with the same identifier already exists\x82\xb5\x18\x02\x18\x44\x82\xd3\xe4\x93\x02\x1f\"\x1a/api/v1/connected_accounts:\x01*\x12\xf0\x07\n\x16UpdateConnectedAccount\x12=.scalekit.v1.connected_accounts.UpdateConnectedAccountRequest\x1a>.scalekit.v1.connected_accounts.UpdateConnectedAccountResponse\"\xd6\x06\x92\x41\xa6\x06\n\x12\x43onnected Accounts\x12$Update connected account credentials\x1a\xd2\x02Updates authentication credentials and configuration for an existing connected account. Modify OAuth tokens, refresh tokens, access scopes, or API configuration settings. Specify the account by ID, or by combination of organization/user, connector, and identifier. Returns the updated account with new token expiry and status information.J\x9a\x01\n\x03\x32\x30\x30\x12\x92\x01\nLConnected account updated successfully with new credentials or configuration\x12\x42\n@\x1a>.scalekit.v1.connected_accounts.UpdateConnectedAccountResponseJg\n\x03\x34\x30\x30\x12`\n^Invalid request - missing required fields, invalid authorization details, or validation failedJB\n\x03\x34\x30\x31\x12;\n9Authentication required - missing or invalid access tokenJK\n\x03\x34\x30\x34\x12\x44\nBConnected account not found - the specified account does not exist\x82\xb5\x18\x03\x18\xc4\x01\x82\xd3\xe4\x93\x02\x1f\x1a\x1a/api/v1/connected_accounts:\x01*\x12\xc6\x06\n\x16\x44\x65leteConnectedAccount\x12=.scalekit.v1.connected_accounts.DeleteConnectedAccountRequest\x1a>.scalekit.v1.connected_accounts.DeleteConnectedAccountResponse\"\xac\x05\x92\x41\xf6\x04\n\x12\x43onnected Accounts\x12\x1a\x44\x65lete a connected account\x1a\x9f\x02Permanently removes a connected account and revokes all associated authentication credentials. Identify the account by ID, or by combination of organization/user, connector, and identifier. This action cannot be undone. All OAuth tokens and API keys for this account will be invalidated.JK\n\x03\x32\x30\x30\x12\x44\nBConnected account deleted successfully and all credentials revokedJD\n\x03\x34\x30\x30\x12=\n;Invalid request - malformed parameters or validation failedJB\n\x03\x34\x30\x31\x12;\n9Authentication required - missing or invalid access tokenJK\n\x03\x34\x30\x34\x12\x44\nBConnected account not found - the specified account does not exist\x82\xb5\x18\x02\x18\x44\x82\xd3\xe4\x93\x02&\"!/api/v1/connected_accounts:delete:\x01*\x12\xff\x06\n\x1fGetMagicLinkForConnectedAccount\x12\x46.scalekit.v1.connected_accounts.GetMagicLinkForConnectedAccountRequest\x1aG.scalekit.v1.connected_accounts.GetMagicLinkForConnectedAccountResponse\"\xca\x05\x92\x41\x90\x05\n\x12\x43onnected Accounts\x12\"Generate authentication magic link\x1a\xa2\x02\x43reates a time-limited magic link for connecting or re-authorizing a third-party account. The link directs users to the OAuth authorization flow for the specified connector. Returns the generated link URL and expiration timestamp. Links typically expire after a short duration for security.J\x9f\x01\n\x03\x32\x30\x30\x12\x97\x01\nHMagic link generated successfully with authorization URL and expiry time\x12K\nI\x1aG.scalekit.v1.connected_accounts.GetMagicLinkForConnectedAccountResponseJK\n\x03\x34\x30\x30\x12\x44\nBInvalid request - missing required parameters or invalid connectorJB\n\x03\x34\x30\x31\x12;\n9Authentication required - missing or invalid access token\x82\xb5\x18\x02\x18\x44\x82\xd3\xe4\x93\x02*\"%/api/v1/connected_accounts/magic_link:\x01*\x12\xf6\x05\n\x13GetConnectedAccount\x12:.scalekit.v1.connected_accounts.GetConnectedAccountRequest\x1a;.scalekit.v1.connected_accounts.GetConnectedAccountResponse\"\xe5\x04\x92\x41\x90\x04\n\x12\x43onnected Accounts\x12\x17Get a connected account\x1a\xb8\x01Retrieves a connected account by its unique ID. Use the path \'/this\' (e.g. /api/v1/connected_accounts/this) to retrieve the connected account associated with the current token context.Jv\n\x03\x32\x30\x30\x12o\n,Successfully retrieved the connected account\x12?\n=\x1a;.scalekit.v1.connected_accounts.GetConnectedAccountResponseJD\n\x03\x34\x30\x30\x12=\n;Invalid request - missing or malformed connected account IDJB\n\x03\x34\x30\x31\x12;\n9Authentication required - missing or invalid access tokenJ$\n\x03\x34\x30\x34\x12\x1d\n\x1b\x43onnected account not found\x82\xb5\x18\x03\x18\xc4\x01\x82\xd3\xe4\x93\x02\x44\x12\x1f/api/v1/connected_accounts/thisZ!\x12\x1f/api/v1/connected_accounts/{id}\x12\x86\x06\n\x1a\x44isconnectConnectedAccount\x12\x41.scalekit.v1.connected_accounts.DisconnectConnectedAccountRequest\x1a\x42.scalekit.v1.connected_accounts.DisconnectConnectedAccountResponse\"\xe0\x04\x92\x41\xf2\x03\n\x12\x43onnected Accounts\x12\x1e\x44isconnect a connected account\x1a\x88\x01\x44isconnects a connected account by setting its status to DISCONNECTED. The account record is retained but is marked as no longer active.J\x80\x01\n\x03\x32\x30\x30\x12y\n/Successfully disconnected the connected account\x12\x46\nD\x1a\x42.scalekit.v1.connected_accounts.DisconnectConnectedAccountResponseJD\n\x03\x34\x30\x30\x12=\n;Invalid request - missing or malformed connected account IDJB\n\x03\x34\x30\x31\x12;\n9Authentication required - missing or invalid access tokenJ$\n\x03\x34\x30\x34\x12\x1d\n\x1b\x43onnected account not found\x82\xb5\x18\x03\x18\xc4\x01\x82\xd3\xe4\x93\x02]\"*/api/v1/connected_accounts/{id}:disconnect:\x01*Z,\"\'/api/v1/connected_accounts/-:disconnect:\x01*\x12\xb6\x07\n\x17GetConnectedAccountAuth\x12\x46.scalekit.v1.connected_accounts.GetConnectedAccountByIdentifierRequest\x1aG.scalekit.v1.connected_accounts.GetConnectedAccountByIdentifierResponse\"\x89\x06\x92\x41\xd8\x05\n\x12\x43onnected Accounts\x12\x1dGet connected account details\x1a\xab\x02Retrieves complete authentication details for a connected account including OAuth tokens, refresh tokens, scopes, and API configuration. Query by account ID or by combination of organization/user, connector, and identifier. Returns sensitive credential information - use appropriate access controls.J\xa0\x01\n\x03\x32\x30\x30\x12\x98\x01\nISuccessfully retrieved connected account with full authentication details\x12K\nI\x1aG.scalekit.v1.connected_accounts.GetConnectedAccountByIdentifierResponseJ<\n\x03\x34\x30\x30\x12\x35\n3Invalid request - missing required query parametersJB\n\x03\x34\x30\x31\x12;\n9Authentication required - missing or invalid access tokenJP\n\x03\x34\x30\x34\x12I\nGConnected account not found - no account matches the specified criteria\x82\xb5\x18\x02\x18\x44\x82\xd3\xe4\x93\x02!\x12\x1f/api/v1/connected_accounts/auth\x12\xfa\x06\n\x1aGetConnectedAccountDetails\x12\x46.scalekit.v1.connected_accounts.GetConnectedAccountByIdentifierRequest\x1aG.scalekit.v1.connected_accounts.GetConnectedAccountByIdentifierResponse\"\xca\x05\x92\x41\x96\x05\n\x12\x43onnected Accounts\x12\x1dGet connected account details\x1a\x83\x02Returns metadata for a connected account including status, connector type, provider, and configuration without exposing stored authorization credentials. Look up by account ID, or by a combination of organization (or user), connector, and external identifier.J\x86\x01\n\x03\x32\x30\x30\x12\x7f\n0Successfully retrieved connected account details\x12K\nI\x1aG.scalekit.v1.connected_accounts.GetConnectedAccountByIdentifierResponseJ<\n\x03\x34\x30\x30\x12\x35\n3Invalid request - missing required query parametersJB\n\x03\x34\x30\x31\x12;\n9Authentication required - missing or invalid access tokenJP\n\x03\x34\x30\x34\x12I\nGConnected account not found - no account matches the specified criteria\x82\xb5\x18\x02\x18\x44\x82\xd3\xe4\x93\x02$\x12\"/api/v1/connected_accounts/details\x12\xbb\x07\n\x1aVerifyConnectedAccountUser\x12\x41.scalekit.v1.connected_accounts.VerifyConnectedAccountUserRequest\x1a\x42.scalekit.v1.connected_accounts.VerifyConnectedAccountUserResponse\"\x95\x06\x92\x41\xda\x05\n\x12\x43onnected Accounts\x12\x1dVerify connected account user\x1a\xa4\x02\x43onfirms the user assertion and activates the connected account after the user completes third-party OAuth. Called by the B2B app server with auth_request_id and identifier. Validates that the asserted identifier matches the one stored on the auth request and promotes pending tokens to live.J\x8a\x01\n\x03\x32\x30\x30\x12\x82\x01\n8Verification successful; connected account is now ACTIVE\x12\x46\nD\x1a\x42.scalekit.v1.connected_accounts.VerifyConnectedAccountUserResponseJ6\n\x03\x34\x30\x30\x12/\n-Invalid request - missing or malformed fieldsJ7\n\x03\x34\x30\x31\x12\x30\n.Unauthorized - invalid or missing access tokenJ(\n\x03\x34\x30\x33\x12!\n\x1f\x46orbidden - identifier mismatchJV\n\x03\x34\x30\x34\x12O\nMNot found - no pending flow for the given auth_request_id or already consumed\x82\xb5\x18\x02\x18\x44\x82\xd3\xe4\x93\x02+\"&/api/v1/connected_accounts/user/verify:\x01*\x1a\xe3\x01\x92\x41\xdf\x01\n\x12\x43onnected Accounts\x12\xc8\x01Manage connected accounts for third-party integrations and OAuth connections. Connected accounts represent authenticated access to external services like Google, Notion, Slack, and other applications.B\xa4\x02Z2$Unique connected account identifier.J\026\"ca_24834495392086178\"' _globals['_CONNECTEDACCOUNTFORLIST'].fields_by_name['connection_id']._loaded_options = None _globals['_CONNECTEDACCOUNTFORLIST'].fields_by_name['connection_id']._serialized_options = b'\222AF2*Parent connection configuration reference.J\030\"conn_24834495392086178\"\272H\006r\004\020\000\030 ' + _globals['_GOOGLEDWDAUTH'].fields_by_name['subject']._loaded_options = None + _globals['_GOOGLEDWDAUTH'].fields_by_name['subject']._serialized_options = b'\222Ak2UEmail address of the Google Workspace user to impersonate via Domain-Wide Delegation.J\022\"user@example.com\"' + _globals['_GOOGLEDWDAUTH'].fields_by_name['access_token']._loaded_options = None + _globals['_GOOGLEDWDAUTH'].fields_by_name['access_token']._serialized_options = b'\222Ah2POAuth access token acquired via the jwt-bearer grant. Present in responses only.J\024\"ya29.a0AfH6SMBx...\"\340A\003' + _globals['_GOOGLEDWDAUTH'].fields_by_name['scopes']._loaded_options = None + _globals['_GOOGLEDWDAUTH'].fields_by_name['scopes']._serialized_options = b'\222A~2>OAuth scopes granted to this token. Present in responses only.J<[\"openid\", \"https://www.googleapis.com/auth/userinfo.email\"]\340A\003' + _globals['_GOOGLEDWDAUTH'].fields_by_name['token_expires_at']._loaded_options = None + _globals['_GOOGLEDWDAUTH'].fields_by_name['token_expires_at']._serialized_options = b'\222A;29When the access token expires. Present in responses only.\340A\003' _globals['_OAUTHTOKEN'].fields_by_name['access_token']._loaded_options = None _globals['_OAUTHTOKEN'].fields_by_name['access_token']._serialized_options = b'\222Az2bOAuth access token for API requests. Typically short-lived and must be refreshed after expiration.J\024\"ya29.a0AfH6SMBx...\"' _globals['_OAUTHTOKEN'].fields_by_name['refresh_token']._loaded_options = None @@ -206,6 +214,14 @@ _globals['_OAUTHTOKEN'].fields_by_name['domain']._serialized_options = b'\222Az2iAssociated domain for workspace or organization-scoped OAuth connections (e.g., Google Workspace domain).J\r\"example.com\"' _globals['_STATICAUTH'].fields_by_name['details']._loaded_options = None _globals['_STATICAUTH'].fields_by_name['details']._serialized_options = b'\222A\255\0012zFlexible JSON structure containing static credentials. Format varies by connector type (API key, username/password, etc.).J/{\"api_key\": \"sk_live_...\", \"api_secret\": \"...\"}' + _globals['_GETCONNECTEDACCOUNTREQUEST'].fields_by_name['id']._loaded_options = None + _globals['_GETCONNECTEDACCOUNTREQUEST'].fields_by_name['id']._serialized_options = b'\222A\306\0012\253\001Unique identifier for the connected account. Always prefixed with \'ca_\'. If omitted (via the /this path), the connected account is resolved from the current token context.J\026\"ca_24834495392086178\"\272H\006r\004\020\000\030 ' + _globals['_GETCONNECTEDACCOUNTRESPONSE'].fields_by_name['connected_account']._loaded_options = None + _globals['_GETCONNECTEDACCOUNTRESPONSE'].fields_by_name['connected_account']._serialized_options = b'\222AC2AThe connected account with its details and authentication status.' + _globals['_DISCONNECTCONNECTEDACCOUNTREQUEST'].fields_by_name['id']._loaded_options = None + _globals['_DISCONNECTCONNECTEDACCOUNTREQUEST'].fields_by_name['id']._serialized_options = b'\222Ap2VUnique identifier for the connected account to disconnect. Always prefixed with \'ca_\'.J\026\"ca_24834495392086178\"\272H\006r\004\020\000\030 ' + _globals['_DISCONNECTCONNECTEDACCOUNTRESPONSE'].fields_by_name['connected_account']._loaded_options = None + _globals['_DISCONNECTCONNECTEDACCOUNTRESPONSE'].fields_by_name['connected_account']._serialized_options = b'\222A=2;The connected account with its updated DISCONNECTED status.' _globals['_CONNECTEDACCOUNTSERVICE']._loaded_options = None _globals['_CONNECTEDACCOUNTSERVICE']._serialized_options = b'\222A\337\001\n\022Connected Accounts\022\310\001Manage connected accounts for third-party integrations and OAuth connections. Connected accounts represent authenticated access to external services like Google, Notion, Slack, and other applications.' _globals['_CONNECTEDACCOUNTSERVICE'].methods_by_name['ListConnectedAccounts']._loaded_options = None @@ -215,21 +231,25 @@ _globals['_CONNECTEDACCOUNTSERVICE'].methods_by_name['CreateConnectedAccount']._loaded_options = None _globals['_CONNECTEDACCOUNTSERVICE'].methods_by_name['CreateConnectedAccount']._serialized_options = b'\222A\265\006\n\022Connected Accounts\022\032Create a connected account\032\337\002Creates a new connected account with OAuth tokens or API credentials for third-party service integration. Supply authorization details including access tokens, refresh tokens, scopes, and optional API configuration. The account can be scoped to an organization or user. Returns the created account with its unique identifier and authentication status.J\244\001\n\003201\022\234\001\nVConnected account created successfully with authentication credentials stored securely\022B\n@\032>.scalekit.v1.connected_accounts.CreateConnectedAccountResponseJg\n\003400\022`\n^Invalid request - missing required fields, invalid authorization details, or validation failedJB\n\003401\022;\n9Authentication required - missing or invalid access tokenJM\n\003409\022F\nDConflict - connected account with the same identifier already exists\202\265\030\002\030D\202\323\344\223\002\037\"\032/api/v1/connected_accounts:\001*' _globals['_CONNECTEDACCOUNTSERVICE'].methods_by_name['UpdateConnectedAccount']._loaded_options = None - _globals['_CONNECTEDACCOUNTSERVICE'].methods_by_name['UpdateConnectedAccount']._serialized_options = b'\222A\246\006\n\022Connected Accounts\022$Update connected account credentials\032\322\002Updates authentication credentials and configuration for an existing connected account. Modify OAuth tokens, refresh tokens, access scopes, or API configuration settings. Specify the account by ID, or by combination of organization/user, connector, and identifier. Returns the updated account with new token expiry and status information.J\232\001\n\003200\022\222\001\nLConnected account updated successfully with new credentials or configuration\022B\n@\032>.scalekit.v1.connected_accounts.UpdateConnectedAccountResponseJg\n\003400\022`\n^Invalid request - missing required fields, invalid authorization details, or validation failedJB\n\003401\022;\n9Authentication required - missing or invalid access tokenJK\n\003404\022D\nBConnected account not found - the specified account does not exist\202\265\030\002\030D\202\323\344\223\002\037\032\032/api/v1/connected_accounts:\001*' + _globals['_CONNECTEDACCOUNTSERVICE'].methods_by_name['UpdateConnectedAccount']._serialized_options = b'\222A\246\006\n\022Connected Accounts\022$Update connected account credentials\032\322\002Updates authentication credentials and configuration for an existing connected account. Modify OAuth tokens, refresh tokens, access scopes, or API configuration settings. Specify the account by ID, or by combination of organization/user, connector, and identifier. Returns the updated account with new token expiry and status information.J\232\001\n\003200\022\222\001\nLConnected account updated successfully with new credentials or configuration\022B\n@\032>.scalekit.v1.connected_accounts.UpdateConnectedAccountResponseJg\n\003400\022`\n^Invalid request - missing required fields, invalid authorization details, or validation failedJB\n\003401\022;\n9Authentication required - missing or invalid access tokenJK\n\003404\022D\nBConnected account not found - the specified account does not exist\202\265\030\003\030\304\001\202\323\344\223\002\037\032\032/api/v1/connected_accounts:\001*' _globals['_CONNECTEDACCOUNTSERVICE'].methods_by_name['DeleteConnectedAccount']._loaded_options = None _globals['_CONNECTEDACCOUNTSERVICE'].methods_by_name['DeleteConnectedAccount']._serialized_options = b'\222A\366\004\n\022Connected Accounts\022\032Delete a connected account\032\237\002Permanently removes a connected account and revokes all associated authentication credentials. Identify the account by ID, or by combination of organization/user, connector, and identifier. This action cannot be undone. All OAuth tokens and API keys for this account will be invalidated.JK\n\003200\022D\nBConnected account deleted successfully and all credentials revokedJD\n\003400\022=\n;Invalid request - malformed parameters or validation failedJB\n\003401\022;\n9Authentication required - missing or invalid access tokenJK\n\003404\022D\nBConnected account not found - the specified account does not exist\202\265\030\002\030D\202\323\344\223\002&\"!/api/v1/connected_accounts:delete:\001*' _globals['_CONNECTEDACCOUNTSERVICE'].methods_by_name['GetMagicLinkForConnectedAccount']._loaded_options = None _globals['_CONNECTEDACCOUNTSERVICE'].methods_by_name['GetMagicLinkForConnectedAccount']._serialized_options = b'\222A\220\005\n\022Connected Accounts\022\"Generate authentication magic link\032\242\002Creates a time-limited magic link for connecting or re-authorizing a third-party account. The link directs users to the OAuth authorization flow for the specified connector. Returns the generated link URL and expiration timestamp. Links typically expire after a short duration for security.J\237\001\n\003200\022\227\001\nHMagic link generated successfully with authorization URL and expiry time\022K\nI\032G.scalekit.v1.connected_accounts.GetMagicLinkForConnectedAccountResponseJK\n\003400\022D\nBInvalid request - missing required parameters or invalid connectorJB\n\003401\022;\n9Authentication required - missing or invalid access token\202\265\030\002\030D\202\323\344\223\002*\"%/api/v1/connected_accounts/magic_link:\001*' + _globals['_CONNECTEDACCOUNTSERVICE'].methods_by_name['GetConnectedAccount']._loaded_options = None + _globals['_CONNECTEDACCOUNTSERVICE'].methods_by_name['GetConnectedAccount']._serialized_options = b'\222A\220\004\n\022Connected Accounts\022\027Get a connected account\032\270\001Retrieves a connected account by its unique ID. Use the path \'/this\' (e.g. /api/v1/connected_accounts/this) to retrieve the connected account associated with the current token context.Jv\n\003200\022o\n,Successfully retrieved the connected account\022?\n=\032;.scalekit.v1.connected_accounts.GetConnectedAccountResponseJD\n\003400\022=\n;Invalid request - missing or malformed connected account IDJB\n\003401\022;\n9Authentication required - missing or invalid access tokenJ$\n\003404\022\035\n\033Connected account not found\202\265\030\003\030\304\001\202\323\344\223\002D\022\037/api/v1/connected_accounts/thisZ!\022\037/api/v1/connected_accounts/{id}' + _globals['_CONNECTEDACCOUNTSERVICE'].methods_by_name['DisconnectConnectedAccount']._loaded_options = None + _globals['_CONNECTEDACCOUNTSERVICE'].methods_by_name['DisconnectConnectedAccount']._serialized_options = b'\222A\362\003\n\022Connected Accounts\022\036Disconnect a connected account\032\210\001Disconnects a connected account by setting its status to DISCONNECTED. The account record is retained but is marked as no longer active.J\200\001\n\003200\022y\n/Successfully disconnected the connected account\022F\nD\032B.scalekit.v1.connected_accounts.DisconnectConnectedAccountResponseJD\n\003400\022=\n;Invalid request - missing or malformed connected account IDJB\n\003401\022;\n9Authentication required - missing or invalid access tokenJ$\n\003404\022\035\n\033Connected account not found\202\265\030\003\030\304\001\202\323\344\223\002]\"*/api/v1/connected_accounts/{id}:disconnect:\001*Z,\"\'/api/v1/connected_accounts/-:disconnect:\001*' _globals['_CONNECTEDACCOUNTSERVICE'].methods_by_name['GetConnectedAccountAuth']._loaded_options = None _globals['_CONNECTEDACCOUNTSERVICE'].methods_by_name['GetConnectedAccountAuth']._serialized_options = b'\222A\330\005\n\022Connected Accounts\022\035Get connected account details\032\253\002Retrieves complete authentication details for a connected account including OAuth tokens, refresh tokens, scopes, and API configuration. Query by account ID or by combination of organization/user, connector, and identifier. Returns sensitive credential information - use appropriate access controls.J\240\001\n\003200\022\230\001\nISuccessfully retrieved connected account with full authentication details\022K\nI\032G.scalekit.v1.connected_accounts.GetConnectedAccountByIdentifierResponseJ<\n\003400\0225\n3Invalid request - missing required query parametersJB\n\003401\022;\n9Authentication required - missing or invalid access tokenJP\n\003404\022I\nGConnected account not found - no account matches the specified criteria\202\265\030\002\030D\202\323\344\223\002!\022\037/api/v1/connected_accounts/auth' _globals['_CONNECTEDACCOUNTSERVICE'].methods_by_name['GetConnectedAccountDetails']._loaded_options = None _globals['_CONNECTEDACCOUNTSERVICE'].methods_by_name['GetConnectedAccountDetails']._serialized_options = b'\222A\226\005\n\022Connected Accounts\022\035Get connected account details\032\203\002Returns metadata for a connected account including status, connector type, provider, and configuration without exposing stored authorization credentials. Look up by account ID, or by a combination of organization (or user), connector, and external identifier.J\206\001\n\003200\022\177\n0Successfully retrieved connected account details\022K\nI\032G.scalekit.v1.connected_accounts.GetConnectedAccountByIdentifierResponseJ<\n\003400\0225\n3Invalid request - missing required query parametersJB\n\003401\022;\n9Authentication required - missing or invalid access tokenJP\n\003404\022I\nGConnected account not found - no account matches the specified criteria\202\265\030\002\030D\202\323\344\223\002$\022\"/api/v1/connected_accounts/details' _globals['_CONNECTEDACCOUNTSERVICE'].methods_by_name['VerifyConnectedAccountUser']._loaded_options = None _globals['_CONNECTEDACCOUNTSERVICE'].methods_by_name['VerifyConnectedAccountUser']._serialized_options = b'\222A\332\005\n\022Connected Accounts\022\035Verify connected account user\032\244\002Confirms the user assertion and activates the connected account after the user completes third-party OAuth. Called by the B2B app server with auth_request_id and identifier. Validates that the asserted identifier matches the one stored on the auth request and promotes pending tokens to live.J\212\001\n\003200\022\202\001\n8Verification successful; connected account is now ACTIVE\022F\nD\032B.scalekit.v1.connected_accounts.VerifyConnectedAccountUserResponseJ6\n\003400\022/\n-Invalid request - missing or malformed fieldsJ7\n\003401\0220\n.Unauthorized - invalid or missing access tokenJ(\n\003403\022!\n\037Forbidden - identifier mismatchJV\n\003404\022O\nMNot found - no pending flow for the given auth_request_id or already consumed\202\265\030\002\030D\202\323\344\223\002+\"&/api/v1/connected_accounts/user/verify:\001*' - _globals['_CONNECTORSTATUS']._serialized_start=16883 - _globals['_CONNECTORSTATUS']._serialized_end=17004 - _globals['_CONNECTORTYPE']._serialized_start=17007 - _globals['_CONNECTORTYPE']._serialized_end=17170 + _globals['_CONNECTORSTATUS']._serialized_start=18411 + _globals['_CONNECTORSTATUS']._serialized_end=18550 + _globals['_CONNECTORTYPE']._serialized_start=18553 + _globals['_CONNECTORTYPE']._serialized_end=18732 _globals['_LISTCONNECTEDACCOUNTSREQUEST']._serialized_start=359 _globals['_LISTCONNECTEDACCOUNTSREQUEST']._serialized_end=1936 _globals['_LISTCONNECTEDACCOUNTSRESPONSE']._serialized_start=1939 @@ -271,11 +291,21 @@ _globals['_CONNECTEDACCOUNTFORLIST']._serialized_start=14585 _globals['_CONNECTEDACCOUNTFORLIST']._serialized_end=15705 _globals['_AUTHORIZATIONDETAILS']._serialized_start=15708 - _globals['_AUTHORIZATIONDETAILS']._serialized_end=15899 - _globals['_OAUTHTOKEN']._serialized_start=15902 - _globals['_OAUTHTOKEN']._serialized_end=16634 - _globals['_STATICAUTH']._serialized_start=16637 - _globals['_STATICAUTH']._serialized_end=16881 - _globals['_CONNECTEDACCOUNTSERVICE']._serialized_start=17173 - _globals['_CONNECTEDACCOUNTSERVICE']._serialized_end=25738 + _globals['_AUTHORIZATIONDETAILS']._serialized_end=15979 + _globals['_GOOGLEDWDAUTH']._serialized_start=15982 + _globals['_GOOGLEDWDAUTH']._serialized_end=16582 + _globals['_OAUTHTOKEN']._serialized_start=16585 + _globals['_OAUTHTOKEN']._serialized_end=17317 + _globals['_STATICAUTH']._serialized_start=17320 + _globals['_STATICAUTH']._serialized_end=17564 + _globals['_GETCONNECTEDACCOUNTREQUEST']._serialized_start=17567 + _globals['_GETCONNECTEDACCOUNTREQUEST']._serialized_end=17826 + _globals['_GETCONNECTEDACCOUNTRESPONSE']._serialized_start=17829 + _globals['_GETCONNECTEDACCOUNTRESPONSE']._serialized_end=18026 + _globals['_DISCONNECTCONNECTEDACCOUNTREQUEST']._serialized_start=18029 + _globals['_DISCONNECTCONNECTEDACCOUNTREQUEST']._serialized_end=18207 + _globals['_DISCONNECTCONNECTEDACCOUNTRESPONSE']._serialized_start=18210 + _globals['_DISCONNECTCONNECTEDACCOUNTRESPONSE']._serialized_end=18408 + _globals['_CONNECTEDACCOUNTSERVICE']._serialized_start=18735 + _globals['_CONNECTEDACCOUNTSERVICE']._serialized_end=28839 # @@protoc_insertion_point(module_scope) diff --git a/scalekit/v1/connected_accounts/connected_accounts_pb2.pyi b/scalekit/v1/connected_accounts/connected_accounts_pb2.pyi index 8cd5584..05886ea 100644 --- a/scalekit/v1/connected_accounts/connected_accounts_pb2.pyi +++ b/scalekit/v1/connected_accounts/connected_accounts_pb2.pyi @@ -21,6 +21,7 @@ class ConnectorStatus(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): EXPIRED: _ClassVar[ConnectorStatus] PENDING_AUTH: _ClassVar[ConnectorStatus] PENDING_VERIFICATION: _ClassVar[ConnectorStatus] + DISCONNECTED: _ClassVar[ConnectorStatus] class ConnectorType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): __slots__ = () @@ -33,11 +34,13 @@ class ConnectorType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): BASIC: _ClassVar[ConnectorType] OAUTH_M2M: _ClassVar[ConnectorType] TRELLO_OAUTH1: _ClassVar[ConnectorType] + GOOGLE_DWD: _ClassVar[ConnectorType] CONNECTION_STATUS_UNSPECIFIED: ConnectorStatus ACTIVE: ConnectorStatus EXPIRED: ConnectorStatus PENDING_AUTH: ConnectorStatus PENDING_VERIFICATION: ConnectorStatus +DISCONNECTED: ConnectorStatus CONNECTION_TYPE_UNSPECIFIED: ConnectorType OAUTH: ConnectorType API_KEY: ConnectorType @@ -47,6 +50,7 @@ CUSTOM: ConnectorType BASIC: ConnectorType OAUTH_M2M: ConnectorType TRELLO_OAUTH1: ConnectorType +GOOGLE_DWD: ConnectorType class ListConnectedAccountsRequest(_message.Message): __slots__ = ("organization_id", "user_id", "connector", "identifier", "provider", "page_size", "page_token", "query") @@ -293,12 +297,26 @@ class ConnectedAccountForList(_message.Message): def __init__(self, identifier: _Optional[str] = ..., provider: _Optional[str] = ..., status: _Optional[_Union[ConnectorStatus, str]] = ..., authorization_type: _Optional[_Union[ConnectorType, str]] = ..., token_expires_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., updated_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., connector: _Optional[str] = ..., last_used_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., id: _Optional[str] = ..., connection_id: _Optional[str] = ...) -> None: ... class AuthorizationDetails(_message.Message): - __slots__ = ("oauth_token", "static_auth") + __slots__ = ("oauth_token", "static_auth", "google_dwd") OAUTH_TOKEN_FIELD_NUMBER: _ClassVar[int] STATIC_AUTH_FIELD_NUMBER: _ClassVar[int] + GOOGLE_DWD_FIELD_NUMBER: _ClassVar[int] oauth_token: OauthToken static_auth: StaticAuth - def __init__(self, oauth_token: _Optional[_Union[OauthToken, _Mapping]] = ..., static_auth: _Optional[_Union[StaticAuth, _Mapping]] = ...) -> None: ... + google_dwd: GoogleDWDAuth + def __init__(self, oauth_token: _Optional[_Union[OauthToken, _Mapping]] = ..., static_auth: _Optional[_Union[StaticAuth, _Mapping]] = ..., google_dwd: _Optional[_Union[GoogleDWDAuth, _Mapping]] = ...) -> None: ... + +class GoogleDWDAuth(_message.Message): + __slots__ = ("subject", "access_token", "scopes", "token_expires_at") + SUBJECT_FIELD_NUMBER: _ClassVar[int] + ACCESS_TOKEN_FIELD_NUMBER: _ClassVar[int] + SCOPES_FIELD_NUMBER: _ClassVar[int] + TOKEN_EXPIRES_AT_FIELD_NUMBER: _ClassVar[int] + subject: str + access_token: str + scopes: _containers.RepeatedScalarFieldContainer[str] + token_expires_at: _timestamp_pb2.Timestamp + def __init__(self, subject: _Optional[str] = ..., access_token: _Optional[str] = ..., scopes: _Optional[_Iterable[str]] = ..., token_expires_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ... class OauthToken(_message.Message): __slots__ = ("access_token", "refresh_token", "scopes", "domain") @@ -317,3 +335,27 @@ class StaticAuth(_message.Message): DETAILS_FIELD_NUMBER: _ClassVar[int] details: _struct_pb2.Struct def __init__(self, details: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... + +class GetConnectedAccountRequest(_message.Message): + __slots__ = ("id",) + ID_FIELD_NUMBER: _ClassVar[int] + id: str + def __init__(self, id: _Optional[str] = ...) -> None: ... + +class GetConnectedAccountResponse(_message.Message): + __slots__ = ("connected_account",) + CONNECTED_ACCOUNT_FIELD_NUMBER: _ClassVar[int] + connected_account: ConnectedAccount + def __init__(self, connected_account: _Optional[_Union[ConnectedAccount, _Mapping]] = ...) -> None: ... + +class DisconnectConnectedAccountRequest(_message.Message): + __slots__ = ("id",) + ID_FIELD_NUMBER: _ClassVar[int] + id: str + def __init__(self, id: _Optional[str] = ...) -> None: ... + +class DisconnectConnectedAccountResponse(_message.Message): + __slots__ = ("connected_account",) + CONNECTED_ACCOUNT_FIELD_NUMBER: _ClassVar[int] + connected_account: ConnectedAccount + def __init__(self, connected_account: _Optional[_Union[ConnectedAccount, _Mapping]] = ...) -> None: ... diff --git a/scalekit/v1/connected_accounts/connected_accounts_pb2_grpc.py b/scalekit/v1/connected_accounts/connected_accounts_pb2_grpc.py index d13efd8..53109b7 100644 --- a/scalekit/v1/connected_accounts/connected_accounts_pb2_grpc.py +++ b/scalekit/v1/connected_accounts/connected_accounts_pb2_grpc.py @@ -44,6 +44,16 @@ def __init__(self, channel): request_serializer=scalekit_dot_v1_dot_connected__accounts_dot_connected__accounts__pb2.GetMagicLinkForConnectedAccountRequest.SerializeToString, response_deserializer=scalekit_dot_v1_dot_connected__accounts_dot_connected__accounts__pb2.GetMagicLinkForConnectedAccountResponse.FromString, ) + self.GetConnectedAccount = channel.unary_unary( + '/scalekit.v1.connected_accounts.ConnectedAccountService/GetConnectedAccount', + request_serializer=scalekit_dot_v1_dot_connected__accounts_dot_connected__accounts__pb2.GetConnectedAccountRequest.SerializeToString, + response_deserializer=scalekit_dot_v1_dot_connected__accounts_dot_connected__accounts__pb2.GetConnectedAccountResponse.FromString, + ) + self.DisconnectConnectedAccount = channel.unary_unary( + '/scalekit.v1.connected_accounts.ConnectedAccountService/DisconnectConnectedAccount', + request_serializer=scalekit_dot_v1_dot_connected__accounts_dot_connected__accounts__pb2.DisconnectConnectedAccountRequest.SerializeToString, + response_deserializer=scalekit_dot_v1_dot_connected__accounts_dot_connected__accounts__pb2.DisconnectConnectedAccountResponse.FromString, + ) self.GetConnectedAccountAuth = channel.unary_unary( '/scalekit.v1.connected_accounts.ConnectedAccountService/GetConnectedAccountAuth', request_serializer=scalekit_dot_v1_dot_connected__accounts_dot_connected__accounts__pb2.GetConnectedAccountByIdentifierRequest.SerializeToString, @@ -106,6 +116,20 @@ def GetMagicLinkForConnectedAccount(self, request, context): context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') + def GetConnectedAccount(self, request, context): + """Get Connected Account by ID + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def DisconnectConnectedAccount(self, request, context): + """Disconnect a Connected Account + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + def GetConnectedAccountAuth(self, request, context): """Get Connected Account Authentication Details """ @@ -160,6 +184,16 @@ def add_ConnectedAccountServiceServicer_to_server(servicer, server): request_deserializer=scalekit_dot_v1_dot_connected__accounts_dot_connected__accounts__pb2.GetMagicLinkForConnectedAccountRequest.FromString, response_serializer=scalekit_dot_v1_dot_connected__accounts_dot_connected__accounts__pb2.GetMagicLinkForConnectedAccountResponse.SerializeToString, ), + 'GetConnectedAccount': grpc.unary_unary_rpc_method_handler( + servicer.GetConnectedAccount, + request_deserializer=scalekit_dot_v1_dot_connected__accounts_dot_connected__accounts__pb2.GetConnectedAccountRequest.FromString, + response_serializer=scalekit_dot_v1_dot_connected__accounts_dot_connected__accounts__pb2.GetConnectedAccountResponse.SerializeToString, + ), + 'DisconnectConnectedAccount': grpc.unary_unary_rpc_method_handler( + servicer.DisconnectConnectedAccount, + request_deserializer=scalekit_dot_v1_dot_connected__accounts_dot_connected__accounts__pb2.DisconnectConnectedAccountRequest.FromString, + response_serializer=scalekit_dot_v1_dot_connected__accounts_dot_connected__accounts__pb2.DisconnectConnectedAccountResponse.SerializeToString, + ), 'GetConnectedAccountAuth': grpc.unary_unary_rpc_method_handler( servicer.GetConnectedAccountAuth, request_deserializer=scalekit_dot_v1_dot_connected__accounts_dot_connected__accounts__pb2.GetConnectedAccountByIdentifierRequest.FromString, @@ -287,6 +321,40 @@ def GetMagicLinkForConnectedAccount(request, options, channel_credentials, insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + @staticmethod + def GetConnectedAccount(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.connected_accounts.ConnectedAccountService/GetConnectedAccount', + scalekit_dot_v1_dot_connected__accounts_dot_connected__accounts__pb2.GetConnectedAccountRequest.SerializeToString, + scalekit_dot_v1_dot_connected__accounts_dot_connected__accounts__pb2.GetConnectedAccountResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def DisconnectConnectedAccount(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.connected_accounts.ConnectedAccountService/DisconnectConnectedAccount', + scalekit_dot_v1_dot_connected__accounts_dot_connected__accounts__pb2.DisconnectConnectedAccountRequest.SerializeToString, + scalekit_dot_v1_dot_connected__accounts_dot_connected__accounts__pb2.DisconnectConnectedAccountResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + @staticmethod def GetConnectedAccountAuth(request, target, diff --git a/scalekit/v1/connections/connections_pb2.py b/scalekit/v1/connections/connections_pb2.py index 916be3d..89fe83c 100644 --- a/scalekit/v1/connections/connections_pb2.py +++ b/scalekit/v1/connections/connections_pb2.py @@ -28,7 +28,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\x1fscalekit/v1/auth/webauthn.proto\x1a!scalekit/v1/commons/commons.proto\x1a!scalekit/v1/domains/domains.proto\x1a!scalekit/v1/options/options.proto\"\xc4\x01\n AssignDomainsToConnectionRequest\x12;\n\x0forganization_id\x18\x01 \x01(\tB\x12\xbaH\x0fr\n\x10\x01\x18 :\x04org_\xc8\x01\x01R\x0eorganizationId\x12\x38\n\rconnection_id\x18\x02 \x01(\tB\x13\xbaH\x10r\x0b\x10\x01\x18 :\x05\x63onn_\xc8\x01\x01R\x0c\x63onnectionId\x12)\n\ndomain_ids\x18\x03 \x03(\tB\n\xbaH\x07\x92\x01\x04\x08\x00\x10\x32R\tdomainIds\"\xe6\x03\n!AssignDomainsToConnectionResponse\x12\xc0\x03\n\nconnection\x18\x01 \x01(\x0b\x32#.scalekit.v1.connections.ConnectionB\xfa\x02\x92\x41\xf6\x02\x32 Connection with assigned domainsJ\xd1\x02{\n \"id\": \"conn_1234567890\",\n \"provider\": \"OKTA\",\n \"type\": \"OIDC\",\n \"status\": \"CONFIGURED\",\n \"enabled\": true,\n \"debug_enabled\": false,\n \"organization_id\": \"org_1234567890\",\n \"ui_button_title\": \"Login with SSO\",\n \"configuration_type\": \"MANUAL\",\n \"test_connection_uri\": \"https://auth.example.com/test-connection/conn_1234567890\"\n}R\nconnection\"\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\"\xae\x02\n\"CreateEnvironmentConnectionRequest\x12Q\n\nconnection\x18\x01 \x01(\x0b\x32).scalekit.v1.connections.CreateConnectionB\x06\xbaH\x03\xc8\x01\x01R\nconnection\x12\xaa\x01\n\x05\x66lags\x18\x02 \x01(\x0b\x32\x1e.scalekit.v1.connections.FlagsBo\x92\x41l2SOptional flags to control connection creation behavior, such as enabling debug modeJ\x15{ \"is_social\": true }H\x00R\x05\x66lags\x88\x01\x01\x42\x08\n\x06_flags\"\xe4\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\x12\xa5\x01\n\nconnection\x18\x03 \x01(\x0b\x32).scalekit.v1.connections.CreateConnectionBZ\xbaHW\xba\x01Q\x12\x36OAUTH, PASSWORDLESS and WEBAUTHN are not supported yet\x1a\x17!(this.type in [4,5,9])\xc8\x01\x01R\nconnectionJ\x04\x08\x02\x10\x03\"\xf7\x05\n\x10\x43reateConnection\x12\xcb\x01\n\x08provider\x18\x01 \x01(\x0e\x32+.scalekit.v1.connections.ConnectionProviderB\x81\x01\x92\x41v2lIdentity provider service that handles authentication (such as OKTA, Google, Azure AD, or a custom provider)J\x06\"OKTA\"\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\x12\x98\x01\n\x0cprovider_key\x18\x03 \x01(\tBu\x92\x41r2fKey ID of the identity provider. This is used to identify the specific configuration for the provider.J\x08\"google\"R\x0bproviderKey\x12\x1a\n\x06key_id\x18\x04 \x01(\tH\x00R\x05keyId\x88\x01\x01:\x8b\x02\xbaH\x87\x02\x1aT\x12$provider or provider_key is required\x1a,has(this.provider_key) || this.provider != 0\x1a`\x12\x1einvalid value for provider_key\x1a>this.provider == 15 ? this.provider_key in [\'SCALEKIT\'] : true\x1aM\x12\x18invalid value for key_id\x1a\x31this.type == 9 ? this.key_id == \'WEBAUTHN\' : trueB\t\n\x07_key_id\"\xcb \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\xc0\x01\n\rstatic_config\x18\x1a \x01(\x0b\x32).scalekit.v1.connections.StaticAuthConfigBn\x92\x41k2iStatic configuration for custom connections. Present only when type is BASIC, BEARER, API_KEY, or custom.H\x00R\x0cstaticConfig\x12\xb1\x01\n\x0fwebauthn_config\x18\x1b \x01(\x0b\x32-.scalekit.v1.connections.WebAuthConfigurationBW\x92\x41T2RConfiguration details for WebAuthn (passkeys). Present only when type is WEBAUTHN.H\x00R\x0ewebauthnConfig\x12}\n\x06key_id\x18\x19 \x01(\tBa\x92\x41^2\\Alternative identifier for this connection, typically used in frontend applications or URLs.H\x02R\x05keyId\x88\x01\x01\x12u\n\x0cprovider_key\x18\x17 \x01(\tBR\x92\x41O2CKey ID of the identity provider service that handles authenticationJ\x08\"google\"R\x0bproviderKey\x12\xaa\x01\n\x07\x64omains\x18\x18 \x03(\x0b\x32\x1b.scalekit.v1.domains.DomainBs\x92\x41p2SDomain associated with this connection, used for domain-based authentication flows.J\x19[{\"name\": \"example.com\"}]R\x07\x64omains\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\"\xce\x03\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\xd6\x01\n\nconnection\x18\x04 \x01(\x0b\x32).scalekit.v1.connections.UpdateConnectionB\x8a\x01\x92\x41-2#Connection properties to be updated\xca>\x05\xfa\x02\x02id\xbaHW\xba\x01Q\x12\x36OAUTH, PASSWORDLESS and WEBAUTHN are not supported yet\x1a\x17!(this.type in [4,5,9])\xc8\x01\x01R\nconnectionJ\x04\x08\x02\x10\x03\"\xcb\x11\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\x12P\n\rstatic_config\x18\x17 \x01(\x0b\x32).scalekit.v1.connections.StaticAuthConfigH\x00R\x0cstaticConfig\x12\xb1\x01\n\x0fwebauthn_config\x18\x18 \x01(\x0b\x32-.scalekit.v1.connections.WebAuthConfigurationBW\x92\x41T2RConfiguration details for WebAuthn (passkeys). Present only when type is WEBAUTHN.H\x00R\x0ewebauthnConfig\x12&\n\x06key_id\x18\x16 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x18\xac\x02H\x01R\x05keyId\x88\x01\x01\x12u\n\x0cprovider_key\x18\x15 \x01(\tBR\x92\x41O2CKey ID of the identity provider service that handles authenticationJ\x08\"google\"R\x0bproviderKey\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:\x8b\x02\xbaH\x87\x02\x1aT\x12$provider or provider_key is required\x1a,has(this.provider_key) || this.provider != 0\x1a`\x12\x1einvalid value for provider_key\x1a>this.provider == 15 ? this.provider_key in [\'SCALEKIT\'] : true\x1aM\x12\x18invalid value for key_id\x1a\x31this.type == 9 ? this.key_id == \'WEBAUTHN\' : trueB\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\"\x96\x04\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\x12\xc6\x01\n\x07include\x18\x04 \x01(\tB\xa6\x01\x92\x41\xa2\x01\x32\x9f\x01\x46ilter connections by status. Use \'all\' to include all connections regardless of status. Default behavior shows only active (completed and enabled) connectionsH\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\"\xfa\x0b\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\x12u\n\x0cprovider_key\x18\n \x01(\tBR\x92\x41O2CKey ID of the identity provider service that handles authenticationJ\x08\"google\"R\x0bproviderKey\x12\x90\x01\n\x06key_id\x18\x0b \x01(\tBy\x92\x41v2[Alternative identifier for this connection, typically used in frontend applications or URLsJ\x17\"conn_2123312131125533\"R\x05keyId\x12\x90\x01\n\ncreated_at\x18\x0c \x01(\x0b\x32\x1a.google.protobuf.TimestampBU\x92\x41@2&When this connection was first createdJ\x16\"2023-01-15T14:30:00Z\"\xe0\x41\x03\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEWR\tcreatedAt\"\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\"\xa2\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\x12@\n\x08provider\x18\x02 \x01(\tB\x1f\x92\x41\x1c\x32\x12\x46ilter by providerJ\x06\"OKTA\"H\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\"\xa0\x12\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\x12\xc6\x01\n\x1async_user_profile_on_login\x18\x11 \x01(\x0b\x32\x1a.google.protobuf.BoolValueBn\x92\x41k2cIndicates whether user profiles should be synchronized with the identity provider upon each log-in.J\x04trueR\x16syncUserProfileOnLogin\x12\xba\x01\n!jit_provisioning_with_sso_enabled\x18\x12 \x01(\x0b\x32\x1a.google.protobuf.BoolValueBT\x92\x41Q2IIndicates if Just In Time user provisioning is enabled for the connectionJ\x04trueR\x1djitProvisioningWithSsoEnabled\"\xbd\x11\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\x12Z\n\x0b\x61\x63\x63\x65ss_type\x18\x10 \x01(\x0b\x32\x1c.google.protobuf.StringValueB\x1b\x92\x41\x18\x32\x0b\x41\x63\x63\x65ss TypeJ\t\"offline\"R\naccessType\x12n\n\x11\x63ustom_scope_name\x18\x11 \x01(\x0b\x32\x1c.google.protobuf.StringValueB$\x92\x41!2\x11\x43ustom Scope NameJ\x0c\"user_scope\"R\x0f\x63ustomScopeName\x12\xc6\x01\n\x1async_user_profile_on_login\x18\x12 \x01(\x0b\x32\x1a.google.protobuf.BoolValueBn\x92\x41k2cIndicates whether user profiles should be synchronized with the identity provider upon each log-in.J\x04trueR\x16syncUserProfileOnLogin\x12k\n\x11token_access_type\x18\x13 \x01(\x0b\x32\x1c.google.protobuf.StringValueB!\x92\x41\x1e\x32\x11Token Access TypeJ\t\"offline\"R\x0ftokenAccessType\x12\x84\x02\n\ttenant_id\x18\x14 \x01(\x0b\x32\x1c.google.protobuf.StringValueB\xc8\x01\x92\x41\xc4\x01\x32\x99\x01Microsoft Entra tenant ID. Required when using a single-tenant or multi-tenant app registered in Microsoft Entra. Leave empty to use the common endpoint.J&\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"R\x08tenantId\x12\xc7\x01\n\x07is_cimd\x18\x15 \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x91\x01\x92\x41\x8a\x01\x32\x81\x01Indicates whether this connection was registered using Client ID Metadata Document (CIMD) instead of Dynamic Client Registration.J\x04true\xe0\x41\x03R\x06isCimd\x12\xbe\x01\n\x08\x61pp_name\x18\x16 \x01(\x0b\x32\x1c.google.protobuf.StringValueB\x84\x01\x92\x41\x80\x01\x32mApplication name used by providers that require it as an authorize query parameter (e.g., Trello\'s app_name).J\x0f\"My Trello App\"R\x07\x61ppName\"\xf4\x07\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\x61\n\x08validity\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB\"\x92\x41\x1f\x32\x18Link Validity in SecondsJ\x03\x36\x30\x30H\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\x12\x9d\x01\n-regenerate_passwordless_credentials_on_resend\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x1a\x92\x41\x17\x32\x0fRegenerate the J\x04trueH\x05R)regeneratePasswordlessCredentialsOnResend\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_typeB0\n._regenerate_passwordless_credentials_on_resend\"P\n\x10StaticAuthConfig\x12<\n\rstatic_config\x18\x01 \x01(\x0b\x32\x17.google.protobuf.StructR\x0cstaticConfig\"\xc4\"\n\x14WebAuthConfiguration\x12@\n\x02rp\x18\x01 \x01(\x0b\x32\x30.scalekit.v1.connections.WebAuthConfiguration.RpR\x02rp\x12[\n\x0b\x61ttestation\x18\x02 \x01(\x0b\x32\x39.scalekit.v1.connections.WebAuthConfiguration.AttestationR\x0b\x61ttestation\x12\x64\n\x0e\x61uthenticators\x18\x03 \x01(\x0b\x32<.scalekit.v1.connections.WebAuthConfiguration.AuthenticatorsR\x0e\x61uthenticators\x12}\n\x17\x61uthenticator_selection\x18\x04 \x01(\x0b\x32\x44.scalekit.v1.connections.WebAuthConfiguration.AuthenticatorSelectionR\x16\x61uthenticatorSelection\x12O\n\x07timeout\x18\x05 \x01(\x0b\x32\x35.scalekit.v1.connections.WebAuthConfiguration.TimeoutR\x07timeout\x12\x64\n\x18\x65nable_auto_registration\x18\x06 \x01(\x08\x42*\x92\x41\'2%Enable auto registration for WebAuthnR\x16\x65nableAutoRegistration\x12X\n\x13show_passkey_button\x18\x07 \x01(\x08\x42(\x92\x41%2#Show passkey button on login screenR\x11showPasskeyButton\x12g\n\x18\x65nable_conditional_login\x18\x08 \x01(\x08\x42-\x92\x41*2(Allow autofill of passkeys in login pageR\x16\x65nableConditionalLogin\x1aH\n\x02Rp\x12\x1c\n\x03ids\x18\x01 \x03(\tB\n\xbaH\x07\x92\x01\x04\x08\x01\x10\nR\x03ids\x12$\n\x07origins\x18\x02 \x03(\tB\n\xbaH\x07\x92\x01\x04\x08\x01\x10\nR\x07origins\x1a\xc1\x01\n\x0b\x41ttestation\x12p\n\x15\x63onveyance_preference\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.StringValueB\x1d\xbaH\x1ar\x18R\x04noneR\x08indirectR\x06\x64irectR\x14\x63onveyancePreference\x12@\n\x17\x65nterprise_approved_ids\x18\x02 \x03(\tB\x08\xbaH\x05\x92\x01\x02\x10\x32R\x15\x65nterpriseApprovedIds\x1a\xf0\x13\n\x0e\x41uthenticators\x12\xdb\x02\n\x0evalidate_entry\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x97\x02\x92\x41\x93\x02\x1a\x1a.google.protobuf.BoolValue2\xf4\x01requires that the provided metadata has an entry for the given authenticator to be considered valid. By default an AAGUID which has a zero value should fail validation if validate_entry_permit_zero_aaguid is not provided with the value of true.R\rvalidateEntry\x12\x8f\x02\n!validate_entry_permit_zero_aaguid\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\xa8\x01\x92\x41\xa4\x01\x32\xa1\x01is an option that permits a zero\'d AAGUID from an attestation statement to automatically pass metadata validations. Generally helpful to use with validate_entry.R\x1dvalidateEntryPermitZeroAaguid\x12\xc6\x01\n\x10validate_anchors\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x7f\x92\x41|2zwhen set to true enables the validation of the attestation statement against the trust anchor from the metadata statement.R\x0fvalidateAnchors\x12\xbe\x01\n\x0fvalidate_status\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.BoolValueBy\x92\x41v2twhen set to true enables the validation of the attestation statements AAGUID against the desired and undesired listsR\x0evalidateStatus\x12\xe1\x01\n\x19validate_attestation_type\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x88\x01\x92\x41\x84\x01\x32\x81\x01when set to true enables the validation of the attestation statements type against the known types the authenticator can produce.R\x17validateAttestationType\x12\xbb\x04\n\x1c\x64\x65sired_authenticator_status\x18\x06 \x03(\tB\xf8\x03\x92\x41\x9d\x01\x32\x96\x01provides the list of statuses which are considered undesirable for status report validation purposes. Should be used with validate_status set to true.:\x02[]\xbaH\xd3\x02\x92\x01\xcf\x02\x10\n\"\xca\x02r\xc7\x02R\x12NOT_FIDO_CERTIFIEDR\x0e\x46IDO_CERTIFIEDR\x18USER_VERIFICATION_BYPASSR\x1a\x41TTESTATION_KEY_COMPROMISER\x1aUSER_KEY_REMOTE_COMPROMISER\x1cUSER_KEY_PHYSICAL_COMPROMISER\x10UPDATE_AVAILABLER\x07REVOKEDR\x18SELF_ASSERTION_SUBMITTEDR\x11\x46IDO_CERTIFIED_L1R\x15\x46IDO_CERTIFIED_L1plusR\x11\x46IDO_CERTIFIED_L2R\x15\x46IDO_CERTIFIED_L2plusR\x11\x46IDO_CERTIFIED_L3R\x15\x46IDO_CERTIFIED_L3plusR\x1a\x64\x65siredAuthenticatorStatus\x12\xc1\x05\n\x1eundesired_authenticator_status\x18\x07 \x03(\tB\xfa\x04\x92\x41\x9f\x02\x32\x96\x01provides the list of statuses which are considered undesirable for status report validation purposes. Should be used with validate_status set to true.:\x83\x01[\'ATTESTATION_KEY_COMPROMISE\', \'USER_VERIFICATION_BYPASS\', \'USER_KEY_REMOTE_COMPROMISE\', \'USER_KEY_PHYSICAL_COMPROMISE\', \'REVOKED\']\xbaH\xd3\x02\x92\x01\xcf\x02\x10\n\"\xca\x02r\xc7\x02R\x12NOT_FIDO_CERTIFIEDR\x0e\x46IDO_CERTIFIEDR\x18USER_VERIFICATION_BYPASSR\x1a\x41TTESTATION_KEY_COMPROMISER\x1aUSER_KEY_REMOTE_COMPROMISER\x1cUSER_KEY_PHYSICAL_COMPROMISER\x10UPDATE_AVAILABLER\x07REVOKEDR\x18SELF_ASSERTION_SUBMITTEDR\x11\x46IDO_CERTIFIED_L1R\x15\x46IDO_CERTIFIED_L1plusR\x11\x46IDO_CERTIFIED_L2R\x15\x46IDO_CERTIFIED_L2plusR\x11\x46IDO_CERTIFIED_L3R\x15\x46IDO_CERTIFIED_L3plusR\x1cundesiredAuthenticatorStatus\x1a\x86\x02\n\x16\x41uthenticatorSelection\x12r\n\x11user_verification\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.StringValueB\'\xbaH$r\"R\x08requiredR\tpreferredR\x0b\x64iscouragedR\x10userVerification\x12x\n\x18\x61uthenticator_attachment\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.StringValueB\x1f\xbaH\x1cr\x1aR\x08platformR\x0e\x63ross-platformR\x17\x61uthenticatorAttachment\x1a\xa3\x04\n\x07Timeout\x12x\n\x0cregistration\x18\x01 \x01(\x0b\x32\x19.google.protobuf.DurationB9\x92\x41\'2\x1dRegistration timeout duration:\x06\"300s\"\xbaH\x0c\xaa\x01\t\"\x03\x08\x88\x0e\x32\x02\x08xR\x0cregistration\x12\xa5\x01\n\x10registration_uvd\x18\x02 \x01(\x0b\x32\x19.google.protobuf.DurationB_\x92\x41M2CRegistration timeout duration when user verification is discouraged:\x06\"300s\"\xbaH\x0c\xaa\x01\t\"\x03\x08\x88\x0e\x32\x02\x08xR\x0fregistrationUvd\x12\x63\n\x05login\x18\x03 \x01(\x0b\x32\x19.google.protobuf.DurationB2\x92\x41 2\x16Login timeout duration:\x06\"300s\"\xbaH\x0c\xaa\x01\t\"\x03\x08\x88\x0e\x32\x02\x08xR\x05login\x12\x90\x01\n\tlogin_uvd\x18\x04 \x01(\x0b\x32\x19.google.protobuf.DurationBX\x92\x41\x46\x322\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\x12\xc6\x01\n\x1async_user_profile_on_login\x18\x16 \x01(\x0b\x32\x1a.google.protobuf.BoolValueBn\x92\x41k2cIndicates whether user profiles should be synchronized with the identity provider upon each log-in.J\x04trueR\x16syncUserProfileOnLogin\x12\xba\x01\n!jit_provisioning_with_sso_enabled\x18\x17 \x01(\x0b\x32\x1a.google.protobuf.BoolValueBT\x92\x41Q2IIndicates if Just In Time user provisioning is enabled for the connectionJ\x04trueR\x1djitProvisioningWithSsoEnabled\"\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\"9\n\x05\x46lags\x12\x19\n\x08is_login\x18\x01 \x01(\x08R\x07isLogin\x12\x15\n\x06is_app\x18\x02 \x01(\x08R\x05isApp\"\xaa\x03\n\x19ListAppConnectionsRequest\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\x12U\n\x08provider\x18\x03 \x01(\tB4\x92\x41(2\x1e\x46ilter connections by providerJ\x06\"OKTA\"\xbaH\x06r\x04\x10\x01\x18\x32H\x00R\x08provider\x88\x01\x01\x42\x0b\n\t_provider\"\xea\x03\n\x1aListAppConnectionsResponse\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\x12o\n\x0fnext_page_token\x18\x02 \x01(\tBG\x92\x41\x44\x32\"Token for the next page of resultsJ\x1e\"eyJwYWdlIjoyLCJsaW1pdCI6MzB9\"R\rnextPageToken\x12s\n\x0fprev_page_token\x18\x03 \x01(\tBK\x92\x41H2&Token for the previous page of resultsJ\x1e\"eyJwYWdlIjoyLCJsaW1pdCI6MzB9\"R\rprevPageToken\x12\x62\n\ntotal_size\x18\x04 \x01(\rBC\x92\x41@29Total number of connections matching the request criteriaJ\x03\x31\x30\x30R\ttotalSize\"\x8b\x01\n\x1bGetConnectionContextRequest\x12\x38\n\rconnection_id\x18\x01 \x01(\tB\x13\xbaH\x10r\x0b\x10\x01\x18 :\x05\x63onn_\xc8\x01\x01R\x0c\x63onnectionId\x12\x32\n\x0forganization_id\x18\x02 \x01(\tB\t\xbaH\x06r\x04\x10\x00\x18 R\x0eorganizationId\"Q\n\x1cGetConnectionContextResponse\x12\x31\n\x07\x63ontext\x18\x01 \x01(\x0b\x32\x17.google.protobuf.StructR\x07\x63ontext\"\xc1\x01\n\x1eUpdateConnectionContextRequest\x12\x38\n\rconnection_id\x18\x01 \x01(\tB\x13\xbaH\x10r\x0b\x10\x01\x18 :\x05\x63onn_\xc8\x01\x01R\x0c\x63onnectionId\x12\x32\n\x0forganization_id\x18\x02 \x01(\tB\t\xbaH\x06r\x04\x10\x00\x18 R\x0eorganizationId\x12\x31\n\x07\x63ontext\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructR\x07\x63ontext*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*\xb0\x01\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\x12\t\n\x05\x42\x41SIC\x10\x06\x12\n\n\x06\x42\x45\x41RER\x10\x07\x12\x0b\n\x07\x41PI_KEY\x10\x08\x12\x0c\n\x08WEBAUTHN\x10\t\x12\r\n\tOAUTH_M2M\x10\n\x12\x11\n\rTRELLO_OAUTH1\x10\x0b*`\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\x8fG\n\x11\x43onnectionService\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\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02!\"\x13/api/v1/connections:\nconnection\x12\xb3\x03\n\x10\x43reateConnection\x12\x30.scalekit.v1.connections.CreateConnectionRequest\x1a\x31.scalekit.v1.connections.CreateConnectionResponse\"\xb9\x02\x92\x41\xc6\x01\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.CreateConnectionResponse\x82\xb5\x18\x15\n\x11\x63onnections_write\x18t\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x41\"3/api/v1/organizations/{organization_id}/connections:\nconnection\x12\xcd\x04\n\x19\x41ssignDomainsToConnection\x12\x39.scalekit.v1.connections.AssignDomainsToConnectionRequest\x1a:.scalekit.v1.connections.AssignDomainsToConnectionResponse\"\xb8\x03\x92\x41\xb6\x02\n\x0b\x43onnections\x12\x1e\x41ssign domains to a connection\x1a\x9e\x01\x41ssigns one or more domains to a specific connection within an organization. This allows the connection to be used for authentication on the specified domainsJf\n\x03\x32\x30\x30\x12_\n\x1d\x44omains assigned successfully\x12>\n<\x1a:.scalekit.v1.connections.AssignDomainsToConnectionResponse\x82\xb5\x18\x15\n\x11\x63onnections_write\x18t\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02P\x1aK/api/v1/organizations/{organization_id}/connections/{connection_id}/domains:\x01*\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\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02%\x12#/api/v1/connections/{connection_id}\x12\xce\x04\n\rGetConnection\x12-.scalekit.v1.connections.GetConnectionRequest\x1a..scalekit.v1.connections.GetConnectionResponse\"\xdd\x03\x92\x41\x81\x03\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.GetConnectionResponse\x82\xb5\x18\x14\n\x10\x63onnections_read\x18t\x82\xd3\xe4\x93\x02:\x12\x38/api/v1/organizations/{organization_id}/connections/{id}\x12\xe4\x02\n\x0fListConnections\x12/.scalekit.v1.connections.ListConnectionsRequest\x1a\x30.scalekit.v1.connections.ListConnectionsResponse\"\xed\x01\x92\x41\xb6\x01\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.ListConnectionsResponse\x82\xb5\x18\x14\n\x10\x63onnections_read\x18t\x82\xd3\xe4\x93\x02\x15\x12\x13/api/v1/connections\x12\xb5\x03\n\x1bListOrganizationConnections\x12;.scalekit.v1.connections.ListOrganizationConnectionsRequest\x1a<.scalekit.v1.connections.ListOrganizationConnectionsResponse\"\x9a\x02\x92\x41\xd6\x01\n\x0b\x43onnections\x12\x1dList organization connections\x1a\x39Retrieves a list of connections for all the organizationsJm\n\x03\x32\x30\x30\x12\x66\n\"Successfully retrieved connections\x12@\n>\x1a<.scalekit.v1.connections.ListOrganizationConnectionsResponse\x82\xb5\x18\x02\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\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\x18\x44\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\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x31\x32#/api/v1/connections/{connection_id}:\nconnection\x12\x94\x03\n\x10UpdateConnection\x12\x30.scalekit.v1.connections.UpdateConnectionRequest\x1a\x31.scalekit.v1.connections.UpdateConnectionResponse\"\x9a\x02\x92\x41\xa2\x01\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.UpdateConnectionResponse\x82\xb5\x18\x15\n\x11\x63onnections_write\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\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02%*#/api/v1/connections/{connection_id}\x12\xf7\x03\n\x10\x44\x65leteConnection\x12\x30.scalekit.v1.connections.DeleteConnectionRequest\x1a\x16.google.protobuf.Empty\"\x98\x03\x92\x41\xce\x02\n\x0b\x43onnections\x12\x15\x44\x65lete SSO connection\x1a\xf9\x01\x44\x65letes an SSO connection from the specified organization by connection ID. Use this endpoint when an identity provider integration is no longer needed for the organization. Returns an empty response after the SSO connection is deleted successfully.J,\n\x03\x32\x30\x30\x12%\n#SSO connection deleted successfully\x82\xb5\x18\x02\x18\x64\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\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02,2*/api/v1/connections/{connection_id}:enable\x12\xd4\x04\n\x10\x45nableConnection\x12\x30.scalekit.v1.connections.ToggleConnectionRequest\x1a\x31.scalekit.v1.connections.ToggleConnectionResponse\"\xda\x03\x92\x41\xf6\x02\n\x0b\x43onnections\x12\x15\x45nable SSO 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.ToggleConnectionResponse\x82\xb5\x18\x15\n\x11\x63onnections_write\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\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02-2+/api/v1/connections/{connection_id}:disable\x12\xde\x04\n\x11\x44isableConnection\x12\x30.scalekit.v1.connections.ToggleConnectionRequest\x1a\x31.scalekit.v1.connections.ToggleConnectionResponse\"\xe3\x03\x92\x41\xfe\x02\n\x0b\x43onnections\x12\x16\x44isable SSO 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.ToggleConnectionResponse\x82\xb5\x18\x15\n\x11\x63onnections_write\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}\x12\xf6\x02\n\x12ListAppConnections\x12\x32.scalekit.v1.connections.ListAppConnectionsRequest\x1a\x33.scalekit.v1.connections.ListAppConnectionsResponse\"\xf6\x01\x92\x41\xbe\x01\n\x0b\x43onnections\x12\x14List App connections\x1a\x36Retrieves a list of app connections in the environmentJa\n\x03\x32\x30\x30\x12Z\n\"Successfully retrieved connections\x12\x34\n2\x1a\x30.scalekit.v1.connections.ListConnectionsResponse\x82\xb5\x18\x02\x18\x64\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x19\x12\x17/api/v1/connections/app\x12\xd0\x03\n\x14GetConnectionContext\x12\x34.scalekit.v1.connections.GetConnectionContextRequest\x1a\x35.scalekit.v1.connections.GetConnectionContextResponse\"\xca\x02\x92\x41\xad\x01\n\x0b\x43onnections\x12\x16Get connection context\x1athis.provider == 15 ? this.provider_key in [\'SCALEKIT\'] : true\x1aM\x12\x18invalid value for key_id\x1a\x31this.type == 9 ? this.key_id == \'WEBAUTHN\' : trueB\t\n\x07_key_id\"\x89\"\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\xc0\x01\n\rstatic_config\x18\x1a \x01(\x0b\x32).scalekit.v1.connections.StaticAuthConfigBn\x92\x41k2iStatic configuration for custom connections. Present only when type is BASIC, BEARER, API_KEY, or custom.H\x00R\x0cstaticConfig\x12\xb1\x01\n\x0fwebauthn_config\x18\x1b \x01(\x0b\x32-.scalekit.v1.connections.WebAuthConfigurationBW\x92\x41T2RConfiguration details for WebAuthn (passkeys). Present only when type is WEBAUTHN.H\x00R\x0ewebauthnConfig\x12\xbb\x01\n\x11google_dwd_config\x18\x1c \x01(\x0b\x32(.scalekit.v1.connections.GoogleDWDConfigBc\x92\x41`2^Configuration details for Google Domain-Wide Delegation. Present only when type is GOOGLE_DWD.H\x00R\x0fgoogleDwdConfig\x12}\n\x06key_id\x18\x19 \x01(\tBa\x92\x41^2\\Alternative identifier for this connection, typically used in frontend applications or URLs.H\x02R\x05keyId\x88\x01\x01\x12u\n\x0cprovider_key\x18\x17 \x01(\tBR\x92\x41O2CKey ID of the identity provider service that handles authenticationJ\x08\"google\"R\x0bproviderKey\x12\xaa\x01\n\x07\x64omains\x18\x18 \x03(\x0b\x32\x1b.scalekit.v1.domains.DomainBs\x92\x41p2SDomain associated with this connection, used for domain-based authentication flows.J\x19[{\"name\": \"example.com\"}]R\x07\x64omains\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\"\xce\x03\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\xd6\x01\n\nconnection\x18\x04 \x01(\x0b\x32).scalekit.v1.connections.UpdateConnectionB\x8a\x01\x92\x41-2#Connection properties to be updated\xca>\x05\xfa\x02\x02id\xbaHW\xba\x01Q\x12\x36OAUTH, PASSWORDLESS and WEBAUTHN are not supported yet\x1a\x17!(this.type in [4,5,9])\xc8\x01\x01R\nconnectionJ\x04\x08\x02\x10\x03\"\xfd\x12\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\x12P\n\rstatic_config\x18\x17 \x01(\x0b\x32).scalekit.v1.connections.StaticAuthConfigH\x00R\x0cstaticConfig\x12\xb1\x01\n\x0fwebauthn_config\x18\x18 \x01(\x0b\x32-.scalekit.v1.connections.WebAuthConfigurationBW\x92\x41T2RConfiguration details for WebAuthn (passkeys). Present only when type is WEBAUTHN.H\x00R\x0ewebauthnConfig\x12\xaf\x01\n\x11google_dwd_config\x18\x19 \x01(\x0b\x32(.scalekit.v1.connections.GoogleDWDConfigBW\x92\x41T2RGoogle Domain-Wide Delegation configuration. Present only when type is GOOGLE_DWD.H\x00R\x0fgoogleDwdConfig\x12&\n\x06key_id\x18\x16 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x18\xac\x02H\x01R\x05keyId\x88\x01\x01\x12u\n\x0cprovider_key\x18\x15 \x01(\tBR\x92\x41O2CKey ID of the identity provider service that handles authenticationJ\x08\"google\"R\x0bproviderKey\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:\x8b\x02\xbaH\x87\x02\x1aT\x12$provider or provider_key is required\x1a,has(this.provider_key) || this.provider != 0\x1a`\x12\x1einvalid value for provider_key\x1a>this.provider == 15 ? this.provider_key in [\'SCALEKIT\'] : true\x1aM\x12\x18invalid value for key_id\x1a\x31this.type == 9 ? this.key_id == \'WEBAUTHN\' : trueB\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\"\x96\x04\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\x12\xc6\x01\n\x07include\x18\x04 \x01(\tB\xa6\x01\x92\x41\xa2\x01\x32\x9f\x01\x46ilter connections by status. Use \'all\' to include all connections regardless of status. Default behavior shows only active (completed and enabled) connectionsH\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\"\xfa\x0b\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\x12u\n\x0cprovider_key\x18\n \x01(\tBR\x92\x41O2CKey ID of the identity provider service that handles authenticationJ\x08\"google\"R\x0bproviderKey\x12\x90\x01\n\x06key_id\x18\x0b \x01(\tBy\x92\x41v2[Alternative identifier for this connection, typically used in frontend applications or URLsJ\x17\"conn_2123312131125533\"R\x05keyId\x12\x90\x01\n\ncreated_at\x18\x0c \x01(\x0b\x32\x1a.google.protobuf.TimestampBU\x92\x41@2&When this connection was first createdJ\x16\"2023-01-15T14:30:00Z\"\xe0\x41\x03\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEWR\tcreatedAt\"\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\"\xa2\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\x12@\n\x08provider\x18\x02 \x01(\tB\x1f\x92\x41\x1c\x32\x12\x46ilter by providerJ\x06\"OKTA\"H\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\"\xa0\x12\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\x12\xc6\x01\n\x1async_user_profile_on_login\x18\x11 \x01(\x0b\x32\x1a.google.protobuf.BoolValueBn\x92\x41k2cIndicates whether user profiles should be synchronized with the identity provider upon each log-in.J\x04trueR\x16syncUserProfileOnLogin\x12\xba\x01\n!jit_provisioning_with_sso_enabled\x18\x12 \x01(\x0b\x32\x1a.google.protobuf.BoolValueBT\x92\x41Q2IIndicates if Just In Time user provisioning is enabled for the connectionJ\x04trueR\x1djitProvisioningWithSsoEnabled\"\xce\x13\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\x12Z\n\x0b\x61\x63\x63\x65ss_type\x18\x10 \x01(\x0b\x32\x1c.google.protobuf.StringValueB\x1b\x92\x41\x18\x32\x0b\x41\x63\x63\x65ss TypeJ\t\"offline\"R\naccessType\x12n\n\x11\x63ustom_scope_name\x18\x11 \x01(\x0b\x32\x1c.google.protobuf.StringValueB$\x92\x41!2\x11\x43ustom Scope NameJ\x0c\"user_scope\"R\x0f\x63ustomScopeName\x12\xc6\x01\n\x1async_user_profile_on_login\x18\x12 \x01(\x0b\x32\x1a.google.protobuf.BoolValueBn\x92\x41k2cIndicates whether user profiles should be synchronized with the identity provider upon each log-in.J\x04trueR\x16syncUserProfileOnLogin\x12k\n\x11token_access_type\x18\x13 \x01(\x0b\x32\x1c.google.protobuf.StringValueB!\x92\x41\x1e\x32\x11Token Access TypeJ\t\"offline\"R\x0ftokenAccessType\x12\x84\x02\n\ttenant_id\x18\x14 \x01(\x0b\x32\x1c.google.protobuf.StringValueB\xc8\x01\x92\x41\xc4\x01\x32\x99\x01Microsoft Entra tenant ID. Required when using a single-tenant or multi-tenant app registered in Microsoft Entra. Leave empty to use the common endpoint.J&\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"R\x08tenantId\x12\xc7\x01\n\x07is_cimd\x18\x15 \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x91\x01\x92\x41\x8a\x01\x32\x81\x01Indicates whether this connection was registered using Client ID Metadata Document (CIMD) instead of Dynamic Client Registration.J\x04true\xe0\x41\x03R\x06isCimd\x12\xbe\x01\n\x08\x61pp_name\x18\x16 \x01(\x0b\x32\x1c.google.protobuf.StringValueB\x84\x01\x92\x41\x80\x01\x32mApplication name used by providers that require it as an authorize query parameter (e.g., Trello\'s app_name).J\x0f\"My Trello App\"R\x07\x61ppName\x12\xfa\x01\n\x0foptional_scopes\x18\x17 \x01(\x0b\x32\'.scalekit.v1.connections.OptionalScopesB\xa2\x01\x92\x41\x9e\x01\x32\x9b\x01Optional scopes configuration for identity providers that support or require additional scopes to be sent in a custom field during authentication requests.H\x00R\x0eoptionalScopes\x88\x01\x01\x42\x12\n\x10_optional_scopes\"\xa6\x03\n\x0eOptionalScopes\x12v\n\x06scopes\x18\x01 \x03(\tB^\x92\x41[2CList of optional scopes that can be requested during authenticationJ\x14[\"scope1\", \"scope2\"]R\x06scopes\x12\x9b\x02\n\nfield_name\x18\x02 \x01(\tB\xfb\x01\x92\x41\xf7\x01\x32\xd5\x01Name of the field in which scope should be sent in the authentication request. This is required by some identity providers that expect scopes to be sent in a custom field instead of the standard \'scope\' parameter.J\x1d\"optional_scope or bot_scope\"R\tfieldName\"\x80\x03\n\x0fGoogleDWDConfig\x12\xa7\x01\n\x14service_account_json\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.StringValueBW\x92\x41Q2OGoogle Cloud service account JSON key. Write-only: reads return a masked value.\xe0\x41\x04R\x12serviceAccountJson\x12\x39\n\x06scopes\x18\x02 \x03(\tB!\x92\x41\x1e\x32\x1cOAuth 2.0 scopes to request.R\x06scopes\x12\x87\x01\n\ttoken_uri\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.StringValueBL\x92\x41I2GGoogle token endpoint. Defaults to https://oauth2.googleapis.com/token.R\x08tokenUri\"\xf4\x07\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\x61\n\x08validity\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB\"\x92\x41\x1f\x32\x18Link Validity in SecondsJ\x03\x36\x30\x30H\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\x12\x9d\x01\n-regenerate_passwordless_credentials_on_resend\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x1a\x92\x41\x17\x32\x0fRegenerate the J\x04trueH\x05R)regeneratePasswordlessCredentialsOnResend\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_typeB0\n._regenerate_passwordless_credentials_on_resend\"P\n\x10StaticAuthConfig\x12<\n\rstatic_config\x18\x01 \x01(\x0b\x32\x17.google.protobuf.StructR\x0cstaticConfig\"\xc4\"\n\x14WebAuthConfiguration\x12@\n\x02rp\x18\x01 \x01(\x0b\x32\x30.scalekit.v1.connections.WebAuthConfiguration.RpR\x02rp\x12[\n\x0b\x61ttestation\x18\x02 \x01(\x0b\x32\x39.scalekit.v1.connections.WebAuthConfiguration.AttestationR\x0b\x61ttestation\x12\x64\n\x0e\x61uthenticators\x18\x03 \x01(\x0b\x32<.scalekit.v1.connections.WebAuthConfiguration.AuthenticatorsR\x0e\x61uthenticators\x12}\n\x17\x61uthenticator_selection\x18\x04 \x01(\x0b\x32\x44.scalekit.v1.connections.WebAuthConfiguration.AuthenticatorSelectionR\x16\x61uthenticatorSelection\x12O\n\x07timeout\x18\x05 \x01(\x0b\x32\x35.scalekit.v1.connections.WebAuthConfiguration.TimeoutR\x07timeout\x12\x64\n\x18\x65nable_auto_registration\x18\x06 \x01(\x08\x42*\x92\x41\'2%Enable auto registration for WebAuthnR\x16\x65nableAutoRegistration\x12X\n\x13show_passkey_button\x18\x07 \x01(\x08\x42(\x92\x41%2#Show passkey button on login screenR\x11showPasskeyButton\x12g\n\x18\x65nable_conditional_login\x18\x08 \x01(\x08\x42-\x92\x41*2(Allow autofill of passkeys in login pageR\x16\x65nableConditionalLogin\x1aH\n\x02Rp\x12\x1c\n\x03ids\x18\x01 \x03(\tB\n\xbaH\x07\x92\x01\x04\x08\x01\x10\nR\x03ids\x12$\n\x07origins\x18\x02 \x03(\tB\n\xbaH\x07\x92\x01\x04\x08\x01\x10\nR\x07origins\x1a\xc1\x01\n\x0b\x41ttestation\x12p\n\x15\x63onveyance_preference\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.StringValueB\x1d\xbaH\x1ar\x18R\x04noneR\x08indirectR\x06\x64irectR\x14\x63onveyancePreference\x12@\n\x17\x65nterprise_approved_ids\x18\x02 \x03(\tB\x08\xbaH\x05\x92\x01\x02\x10\x32R\x15\x65nterpriseApprovedIds\x1a\xf0\x13\n\x0e\x41uthenticators\x12\xdb\x02\n\x0evalidate_entry\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x97\x02\x92\x41\x93\x02\x1a\x1a.google.protobuf.BoolValue2\xf4\x01requires that the provided metadata has an entry for the given authenticator to be considered valid. By default an AAGUID which has a zero value should fail validation if validate_entry_permit_zero_aaguid is not provided with the value of true.R\rvalidateEntry\x12\x8f\x02\n!validate_entry_permit_zero_aaguid\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\xa8\x01\x92\x41\xa4\x01\x32\xa1\x01is an option that permits a zero\'d AAGUID from an attestation statement to automatically pass metadata validations. Generally helpful to use with validate_entry.R\x1dvalidateEntryPermitZeroAaguid\x12\xc6\x01\n\x10validate_anchors\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x7f\x92\x41|2zwhen set to true enables the validation of the attestation statement against the trust anchor from the metadata statement.R\x0fvalidateAnchors\x12\xbe\x01\n\x0fvalidate_status\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.BoolValueBy\x92\x41v2twhen set to true enables the validation of the attestation statements AAGUID against the desired and undesired listsR\x0evalidateStatus\x12\xe1\x01\n\x19validate_attestation_type\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x88\x01\x92\x41\x84\x01\x32\x81\x01when set to true enables the validation of the attestation statements type against the known types the authenticator can produce.R\x17validateAttestationType\x12\xbb\x04\n\x1c\x64\x65sired_authenticator_status\x18\x06 \x03(\tB\xf8\x03\x92\x41\x9d\x01\x32\x96\x01provides the list of statuses which are considered undesirable for status report validation purposes. Should be used with validate_status set to true.:\x02[]\xbaH\xd3\x02\x92\x01\xcf\x02\x10\n\"\xca\x02r\xc7\x02R\x12NOT_FIDO_CERTIFIEDR\x0e\x46IDO_CERTIFIEDR\x18USER_VERIFICATION_BYPASSR\x1a\x41TTESTATION_KEY_COMPROMISER\x1aUSER_KEY_REMOTE_COMPROMISER\x1cUSER_KEY_PHYSICAL_COMPROMISER\x10UPDATE_AVAILABLER\x07REVOKEDR\x18SELF_ASSERTION_SUBMITTEDR\x11\x46IDO_CERTIFIED_L1R\x15\x46IDO_CERTIFIED_L1plusR\x11\x46IDO_CERTIFIED_L2R\x15\x46IDO_CERTIFIED_L2plusR\x11\x46IDO_CERTIFIED_L3R\x15\x46IDO_CERTIFIED_L3plusR\x1a\x64\x65siredAuthenticatorStatus\x12\xc1\x05\n\x1eundesired_authenticator_status\x18\x07 \x03(\tB\xfa\x04\x92\x41\x9f\x02\x32\x96\x01provides the list of statuses which are considered undesirable for status report validation purposes. Should be used with validate_status set to true.:\x83\x01[\'ATTESTATION_KEY_COMPROMISE\', \'USER_VERIFICATION_BYPASS\', \'USER_KEY_REMOTE_COMPROMISE\', \'USER_KEY_PHYSICAL_COMPROMISE\', \'REVOKED\']\xbaH\xd3\x02\x92\x01\xcf\x02\x10\n\"\xca\x02r\xc7\x02R\x12NOT_FIDO_CERTIFIEDR\x0e\x46IDO_CERTIFIEDR\x18USER_VERIFICATION_BYPASSR\x1a\x41TTESTATION_KEY_COMPROMISER\x1aUSER_KEY_REMOTE_COMPROMISER\x1cUSER_KEY_PHYSICAL_COMPROMISER\x10UPDATE_AVAILABLER\x07REVOKEDR\x18SELF_ASSERTION_SUBMITTEDR\x11\x46IDO_CERTIFIED_L1R\x15\x46IDO_CERTIFIED_L1plusR\x11\x46IDO_CERTIFIED_L2R\x15\x46IDO_CERTIFIED_L2plusR\x11\x46IDO_CERTIFIED_L3R\x15\x46IDO_CERTIFIED_L3plusR\x1cundesiredAuthenticatorStatus\x1a\x86\x02\n\x16\x41uthenticatorSelection\x12r\n\x11user_verification\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.StringValueB\'\xbaH$r\"R\x08requiredR\tpreferredR\x0b\x64iscouragedR\x10userVerification\x12x\n\x18\x61uthenticator_attachment\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.StringValueB\x1f\xbaH\x1cr\x1aR\x08platformR\x0e\x63ross-platformR\x17\x61uthenticatorAttachment\x1a\xa3\x04\n\x07Timeout\x12x\n\x0cregistration\x18\x01 \x01(\x0b\x32\x19.google.protobuf.DurationB9\x92\x41\'2\x1dRegistration timeout duration:\x06\"300s\"\xbaH\x0c\xaa\x01\t\"\x03\x08\x88\x0e\x32\x02\x08xR\x0cregistration\x12\xa5\x01\n\x10registration_uvd\x18\x02 \x01(\x0b\x32\x19.google.protobuf.DurationB_\x92\x41M2CRegistration timeout duration when user verification is discouraged:\x06\"300s\"\xbaH\x0c\xaa\x01\t\"\x03\x08\x88\x0e\x32\x02\x08xR\x0fregistrationUvd\x12\x63\n\x05login\x18\x03 \x01(\x0b\x32\x19.google.protobuf.DurationB2\x92\x41 2\x16Login timeout duration:\x06\"300s\"\xbaH\x0c\xaa\x01\t\"\x03\x08\x88\x0e\x32\x02\x08xR\x05login\x12\x90\x01\n\tlogin_uvd\x18\x04 \x01(\x0b\x32\x19.google.protobuf.DurationBX\x92\x41\x46\x322\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\x12\xc6\x01\n\x1async_user_profile_on_login\x18\x16 \x01(\x0b\x32\x1a.google.protobuf.BoolValueBn\x92\x41k2cIndicates whether user profiles should be synchronized with the identity provider upon each log-in.J\x04trueR\x16syncUserProfileOnLogin\x12\xba\x01\n!jit_provisioning_with_sso_enabled\x18\x17 \x01(\x0b\x32\x1a.google.protobuf.BoolValueBT\x92\x41Q2IIndicates if Just In Time user provisioning is enabled for the connectionJ\x04trueR\x1djitProvisioningWithSsoEnabled\"\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\"9\n\x05\x46lags\x12\x19\n\x08is_login\x18\x01 \x01(\x08R\x07isLogin\x12\x15\n\x06is_app\x18\x02 \x01(\x08R\x05isApp\"\xaa\x03\n\x19ListAppConnectionsRequest\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\x12U\n\x08provider\x18\x03 \x01(\tB4\x92\x41(2\x1e\x46ilter connections by providerJ\x06\"OKTA\"\xbaH\x06r\x04\x10\x01\x18\x32H\x00R\x08provider\x88\x01\x01\x42\x0b\n\t_provider\"\xea\x03\n\x1aListAppConnectionsResponse\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\x12o\n\x0fnext_page_token\x18\x02 \x01(\tBG\x92\x41\x44\x32\"Token for the next page of resultsJ\x1e\"eyJwYWdlIjoyLCJsaW1pdCI6MzB9\"R\rnextPageToken\x12s\n\x0fprev_page_token\x18\x03 \x01(\tBK\x92\x41H2&Token for the previous page of resultsJ\x1e\"eyJwYWdlIjoyLCJsaW1pdCI6MzB9\"R\rprevPageToken\x12\x62\n\ntotal_size\x18\x04 \x01(\rBC\x92\x41@29Total number of connections matching the request criteriaJ\x03\x31\x30\x30R\ttotalSize\"\x8b\x01\n\x1bGetConnectionContextRequest\x12\x38\n\rconnection_id\x18\x01 \x01(\tB\x13\xbaH\x10r\x0b\x10\x01\x18 :\x05\x63onn_\xc8\x01\x01R\x0c\x63onnectionId\x12\x32\n\x0forganization_id\x18\x02 \x01(\tB\t\xbaH\x06r\x04\x10\x00\x18 R\x0eorganizationId\"Q\n\x1cGetConnectionContextResponse\x12\x31\n\x07\x63ontext\x18\x01 \x01(\x0b\x32\x17.google.protobuf.StructR\x07\x63ontext\"\xc1\x01\n\x1eUpdateConnectionContextRequest\x12\x38\n\rconnection_id\x18\x01 \x01(\tB\x13\xbaH\x10r\x0b\x10\x01\x18 :\x05\x63onn_\xc8\x01\x01R\x0c\x63onnectionId\x12\x32\n\x0forganization_id\x18\x02 \x01(\tB\t\xbaH\x06r\x04\x10\x00\x18 R\x0eorganizationId\x12\x31\n\x07\x63ontext\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructR\x07\x63ontext*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*\xc0\x01\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\x12\t\n\x05\x42\x41SIC\x10\x06\x12\n\n\x06\x42\x45\x41RER\x10\x07\x12\x0b\n\x07\x41PI_KEY\x10\x08\x12\x0c\n\x08WEBAUTHN\x10\t\x12\r\n\tOAUTH_M2M\x10\n\x12\x11\n\rTRELLO_OAUTH1\x10\x0b\x12\x0e\n\nGOOGLE_DWD\x10\x0c*`\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\x92G\n\x11\x43onnectionService\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\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02!\"\x13/api/v1/connections:\nconnection\x12\xb3\x03\n\x10\x43reateConnection\x12\x30.scalekit.v1.connections.CreateConnectionRequest\x1a\x31.scalekit.v1.connections.CreateConnectionResponse\"\xb9\x02\x92\x41\xc6\x01\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.CreateConnectionResponse\x82\xb5\x18\x15\n\x11\x63onnections_write\x18t\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x41\"3/api/v1/organizations/{organization_id}/connections:\nconnection\x12\xcd\x04\n\x19\x41ssignDomainsToConnection\x12\x39.scalekit.v1.connections.AssignDomainsToConnectionRequest\x1a:.scalekit.v1.connections.AssignDomainsToConnectionResponse\"\xb8\x03\x92\x41\xb6\x02\n\x0b\x43onnections\x12\x1e\x41ssign domains to a connection\x1a\x9e\x01\x41ssigns one or more domains to a specific connection within an organization. This allows the connection to be used for authentication on the specified domainsJf\n\x03\x32\x30\x30\x12_\n\x1d\x44omains assigned successfully\x12>\n<\x1a:.scalekit.v1.connections.AssignDomainsToConnectionResponse\x82\xb5\x18\x15\n\x11\x63onnections_write\x18t\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02P\x1aK/api/v1/organizations/{organization_id}/connections/{connection_id}/domains:\x01*\x12\xb3\x03\n\x18GetEnvironmentConnection\x12\x38.scalekit.v1.connections.GetEnvironmentConnectionRequest\x1a..scalekit.v1.connections.GetConnectionResponse\"\xac\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\x03\x18\xc4\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02%\x12#/api/v1/connections/{connection_id}\x12\xcf\x04\n\rGetConnection\x12-.scalekit.v1.connections.GetConnectionRequest\x1a..scalekit.v1.connections.GetConnectionResponse\"\xde\x03\x92\x41\x81\x03\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.GetConnectionResponse\x82\xb5\x18\x15\n\x10\x63onnections_read\x18\xf4\x01\x82\xd3\xe4\x93\x02:\x12\x38/api/v1/organizations/{organization_id}/connections/{id}\x12\xe4\x02\n\x0fListConnections\x12/.scalekit.v1.connections.ListConnectionsRequest\x1a\x30.scalekit.v1.connections.ListConnectionsResponse\"\xed\x01\x92\x41\xb6\x01\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.ListConnectionsResponse\x82\xb5\x18\x14\n\x10\x63onnections_read\x18t\x82\xd3\xe4\x93\x02\x15\x12\x13/api/v1/connections\x12\xb5\x03\n\x1bListOrganizationConnections\x12;.scalekit.v1.connections.ListOrganizationConnectionsRequest\x1a<.scalekit.v1.connections.ListOrganizationConnectionsResponse\"\x9a\x02\x92\x41\xd6\x01\n\x0b\x43onnections\x12\x1dList organization connections\x1a\x39Retrieves a list of connections for all the organizationsJm\n\x03\x32\x30\x30\x12\x66\n\"Successfully retrieved connections\x12@\n>\x1a<.scalekit.v1.connections.ListOrganizationConnectionsResponse\x82\xb5\x18\x02\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\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\x18\x44\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\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x31\x32#/api/v1/connections/{connection_id}:\nconnection\x12\x94\x03\n\x10UpdateConnection\x12\x30.scalekit.v1.connections.UpdateConnectionRequest\x1a\x31.scalekit.v1.connections.UpdateConnectionResponse\"\x9a\x02\x92\x41\xa2\x01\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.UpdateConnectionResponse\x82\xb5\x18\x15\n\x11\x63onnections_write\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\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02%*#/api/v1/connections/{connection_id}\x12\xf7\x03\n\x10\x44\x65leteConnection\x12\x30.scalekit.v1.connections.DeleteConnectionRequest\x1a\x16.google.protobuf.Empty\"\x98\x03\x92\x41\xce\x02\n\x0b\x43onnections\x12\x15\x44\x65lete SSO connection\x1a\xf9\x01\x44\x65letes an SSO connection from the specified organization by connection ID. Use this endpoint when an identity provider integration is no longer needed for the organization. Returns an empty response after the SSO connection is deleted successfully.J,\n\x03\x32\x30\x30\x12%\n#SSO connection deleted successfully\x82\xb5\x18\x02\x18\x64\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\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02,2*/api/v1/connections/{connection_id}:enable\x12\xd4\x04\n\x10\x45nableConnection\x12\x30.scalekit.v1.connections.ToggleConnectionRequest\x1a\x31.scalekit.v1.connections.ToggleConnectionResponse\"\xda\x03\x92\x41\xf6\x02\n\x0b\x43onnections\x12\x15\x45nable SSO 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.ToggleConnectionResponse\x82\xb5\x18\x15\n\x11\x63onnections_write\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\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02-2+/api/v1/connections/{connection_id}:disable\x12\xde\x04\n\x11\x44isableConnection\x12\x30.scalekit.v1.connections.ToggleConnectionRequest\x1a\x31.scalekit.v1.connections.ToggleConnectionResponse\"\xe3\x03\x92\x41\xfe\x02\n\x0b\x43onnections\x12\x16\x44isable SSO 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.ToggleConnectionResponse\x82\xb5\x18\x15\n\x11\x63onnections_write\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}\x12\xf6\x02\n\x12ListAppConnections\x12\x32.scalekit.v1.connections.ListAppConnectionsRequest\x1a\x33.scalekit.v1.connections.ListAppConnectionsResponse\"\xf6\x01\x92\x41\xbe\x01\n\x0b\x43onnections\x12\x14List App connections\x1a\x36Retrieves a list of app connections in the environmentJa\n\x03\x32\x30\x30\x12Z\n\"Successfully retrieved connections\x12\x34\n2\x1a\x30.scalekit.v1.connections.ListConnectionsResponse\x82\xb5\x18\x02\x18\x64\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x19\x12\x17/api/v1/connections/app\x12\xd1\x03\n\x14GetConnectionContext\x12\x34.scalekit.v1.connections.GetConnectionContextRequest\x1a\x35.scalekit.v1.connections.GetConnectionContextResponse\"\xcb\x02\x92\x41\xad\x01\n\x0b\x43onnections\x12\x16Get connection context\x1a\n<\032:.scalekit.v1.connections.AssignDomainsToConnectionResponse\202\265\030\025\n\021connections_write\030t\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\002P\032K/api/v1/organizations/{organization_id}/connections/{connection_id}/domains:\001*' _globals['_CONNECTIONSERVICE'].methods_by_name['GetEnvironmentConnection']._loaded_options = None - _globals['_CONNECTIONSERVICE'].methods_by_name['GetEnvironmentConnection']._serialized_options = b'\222A\347\001\n\013Connections\022\033Retrieve connection details\032SObtain detailed information about a specific connection using its unique identifierJf\n\003200\022_\n)Successfully retrieved connection details\0222\n0\032..scalekit.v1.connections.GetConnectionResponse\202\265\030\002\030D\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\002%\022#/api/v1/connections/{connection_id}' + _globals['_CONNECTIONSERVICE'].methods_by_name['GetEnvironmentConnection']._serialized_options = b'\222A\347\001\n\013Connections\022\033Retrieve connection details\032SObtain detailed information about a specific connection using its unique identifierJf\n\003200\022_\n)Successfully retrieved connection details\0222\n0\032..scalekit.v1.connections.GetConnectionResponse\202\265\030\003\030\304\001\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\002%\022#/api/v1/connections/{connection_id}' _globals['_CONNECTIONSERVICE'].methods_by_name['GetConnection']._loaded_options = None - _globals['_CONNECTIONSERVICE'].methods_by_name['GetConnection']._serialized_options = b'\222A\201\003\n\013Connections\022\026Get connection details\032\321\001Retrieves 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\205\001\n\003200\022~\nHSuccessfully retrieved connection details for the specified organization\0222\n0\032..scalekit.v1.connections.GetConnectionResponse\202\265\030\024\n\020connections_read\030t\202\323\344\223\002:\0228/api/v1/organizations/{organization_id}/connections/{id}' + _globals['_CONNECTIONSERVICE'].methods_by_name['GetConnection']._serialized_options = b'\222A\201\003\n\013Connections\022\026Get connection details\032\321\001Retrieves 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\205\001\n\003200\022~\nHSuccessfully retrieved connection details for the specified organization\0222\n0\032..scalekit.v1.connections.GetConnectionResponse\202\265\030\025\n\020connections_read\030\364\001\202\323\344\223\002:\0228/api/v1/organizations/{organization_id}/connections/{id}' _globals['_CONNECTIONSERVICE'].methods_by_name['ListConnections']._loaded_options = None _globals['_CONNECTIONSERVICE'].methods_by_name['ListConnections']._serialized_options = b'\222A\266\001\n\013Connections\022\020List connections\0322Retrieves a list of connections in the environmentJa\n\003200\022Z\n\"Successfully retrieved connections\0224\n2\0320.scalekit.v1.connections.ListConnectionsResponse\202\265\030\024\n\020connections_read\030t\202\323\344\223\002\025\022\023/api/v1/connections' _globals['_CONNECTIONSERVICE'].methods_by_name['ListOrganizationConnections']._loaded_options = None @@ -525,33 +541,33 @@ _globals['_CONNECTIONSERVICE'].methods_by_name['ListAppConnections']._loaded_options = None _globals['_CONNECTIONSERVICE'].methods_by_name['ListAppConnections']._serialized_options = b'\222A\276\001\n\013Connections\022\024List App connections\0326Retrieves a list of app connections in the environmentJa\n\003200\022Z\n\"Successfully retrieved connections\0224\n2\0320.scalekit.v1.connections.ListConnectionsResponse\202\265\030\002\030d\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\002\031\022\027/api/v1/connections/app' _globals['_CONNECTIONSERVICE'].methods_by_name['GetConnectionContext']._loaded_options = None - _globals['_CONNECTIONSERVICE'].methods_by_name['GetConnectionContext']._serialized_options = b'\222A\255\001\n\013Connections\022\026Get connection context\032 None: ... class Connection(_message.Message): - __slots__ = ("id", "provider", "type", "status", "enabled", "debug_enabled", "organization_id", "ui_button_title", "configuration_type", "test_connection_uri", "attribute_mapping", "create_time", "update_time", "oidc_config", "saml_config", "oauth_config", "passwordless_config", "static_config", "webauthn_config", "key_id", "provider_key", "domains") + __slots__ = ("id", "provider", "type", "status", "enabled", "debug_enabled", "organization_id", "ui_button_title", "configuration_type", "test_connection_uri", "attribute_mapping", "create_time", "update_time", "oidc_config", "saml_config", "oauth_config", "passwordless_config", "static_config", "webauthn_config", "google_dwd_config", "key_id", "provider_key", "domains") class AttributeMappingEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -286,6 +288,7 @@ class Connection(_message.Message): PASSWORDLESS_CONFIG_FIELD_NUMBER: _ClassVar[int] STATIC_CONFIG_FIELD_NUMBER: _ClassVar[int] WEBAUTHN_CONFIG_FIELD_NUMBER: _ClassVar[int] + GOOGLE_DWD_CONFIG_FIELD_NUMBER: _ClassVar[int] KEY_ID_FIELD_NUMBER: _ClassVar[int] PROVIDER_KEY_FIELD_NUMBER: _ClassVar[int] DOMAINS_FIELD_NUMBER: _ClassVar[int] @@ -308,10 +311,11 @@ class Connection(_message.Message): passwordless_config: PasswordLessConfig static_config: StaticAuthConfig webauthn_config: WebAuthConfiguration + google_dwd_config: GoogleDWDConfig key_id: str provider_key: str domains: _containers.RepeatedCompositeFieldContainer[_domains_pb2.Domain] - def __init__(self, id: _Optional[str] = ..., provider: _Optional[_Union[ConnectionProvider, str]] = ..., type: _Optional[_Union[ConnectionType, str]] = ..., status: _Optional[_Union[ConnectionStatus, str]] = ..., enabled: bool = ..., debug_enabled: bool = ..., organization_id: _Optional[str] = ..., ui_button_title: _Optional[str] = ..., configuration_type: _Optional[_Union[ConfigurationType, str]] = ..., test_connection_uri: _Optional[str] = ..., attribute_mapping: _Optional[_Mapping[str, str]] = ..., create_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., update_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., oidc_config: _Optional[_Union[OIDCConnectionConfig, _Mapping]] = ..., saml_config: _Optional[_Union[SAMLConnectionConfigResponse, _Mapping]] = ..., oauth_config: _Optional[_Union[OAuthConnectionConfig, _Mapping]] = ..., passwordless_config: _Optional[_Union[PasswordLessConfig, _Mapping]] = ..., static_config: _Optional[_Union[StaticAuthConfig, _Mapping]] = ..., webauthn_config: _Optional[_Union[WebAuthConfiguration, _Mapping]] = ..., key_id: _Optional[str] = ..., provider_key: _Optional[str] = ..., domains: _Optional[_Iterable[_Union[_domains_pb2.Domain, _Mapping]]] = ...) -> None: ... + def __init__(self, id: _Optional[str] = ..., provider: _Optional[_Union[ConnectionProvider, str]] = ..., type: _Optional[_Union[ConnectionType, str]] = ..., status: _Optional[_Union[ConnectionStatus, str]] = ..., enabled: bool = ..., debug_enabled: bool = ..., organization_id: _Optional[str] = ..., ui_button_title: _Optional[str] = ..., configuration_type: _Optional[_Union[ConfigurationType, str]] = ..., test_connection_uri: _Optional[str] = ..., attribute_mapping: _Optional[_Mapping[str, str]] = ..., create_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., update_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., oidc_config: _Optional[_Union[OIDCConnectionConfig, _Mapping]] = ..., saml_config: _Optional[_Union[SAMLConnectionConfigResponse, _Mapping]] = ..., oauth_config: _Optional[_Union[OAuthConnectionConfig, _Mapping]] = ..., passwordless_config: _Optional[_Union[PasswordLessConfig, _Mapping]] = ..., static_config: _Optional[_Union[StaticAuthConfig, _Mapping]] = ..., webauthn_config: _Optional[_Union[WebAuthConfiguration, _Mapping]] = ..., google_dwd_config: _Optional[_Union[GoogleDWDConfig, _Mapping]] = ..., key_id: _Optional[str] = ..., provider_key: _Optional[str] = ..., domains: _Optional[_Iterable[_Union[_domains_pb2.Domain, _Mapping]]] = ...) -> None: ... class CreateConnectionResponse(_message.Message): __slots__ = ("connection",) @@ -338,7 +342,7 @@ class UpdateConnectionRequest(_message.Message): def __init__(self, organization_id: _Optional[str] = ..., id: _Optional[str] = ..., connection: _Optional[_Union[UpdateConnection, _Mapping]] = ...) -> None: ... class UpdateConnection(_message.Message): - __slots__ = ("provider", "type", "debug_enabled", "ui_button_title", "configuration_type", "attribute_mapping", "oidc_config", "saml_config", "oauth_config", "passwordless_config", "static_config", "webauthn_config", "key_id", "provider_key") + __slots__ = ("provider", "type", "debug_enabled", "ui_button_title", "configuration_type", "attribute_mapping", "oidc_config", "saml_config", "oauth_config", "passwordless_config", "static_config", "webauthn_config", "google_dwd_config", "key_id", "provider_key") class AttributeMappingEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -358,6 +362,7 @@ class UpdateConnection(_message.Message): PASSWORDLESS_CONFIG_FIELD_NUMBER: _ClassVar[int] STATIC_CONFIG_FIELD_NUMBER: _ClassVar[int] WEBAUTHN_CONFIG_FIELD_NUMBER: _ClassVar[int] + GOOGLE_DWD_CONFIG_FIELD_NUMBER: _ClassVar[int] KEY_ID_FIELD_NUMBER: _ClassVar[int] PROVIDER_KEY_FIELD_NUMBER: _ClassVar[int] provider: ConnectionProvider @@ -372,9 +377,10 @@ class UpdateConnection(_message.Message): passwordless_config: PasswordLessConfig static_config: StaticAuthConfig webauthn_config: WebAuthConfiguration + google_dwd_config: GoogleDWDConfig key_id: str provider_key: str - def __init__(self, provider: _Optional[_Union[ConnectionProvider, str]] = ..., type: _Optional[_Union[ConnectionType, str]] = ..., debug_enabled: _Optional[_Union[_wrappers_pb2.BoolValue, _Mapping]] = ..., ui_button_title: _Optional[_Union[_wrappers_pb2.StringValue, _Mapping]] = ..., configuration_type: _Optional[_Union[ConfigurationType, str]] = ..., attribute_mapping: _Optional[_Mapping[str, str]] = ..., oidc_config: _Optional[_Union[OIDCConnectionConfig, _Mapping]] = ..., saml_config: _Optional[_Union[SAMLConnectionConfigRequest, _Mapping]] = ..., oauth_config: _Optional[_Union[OAuthConnectionConfig, _Mapping]] = ..., passwordless_config: _Optional[_Union[PasswordLessConfig, _Mapping]] = ..., static_config: _Optional[_Union[StaticAuthConfig, _Mapping]] = ..., webauthn_config: _Optional[_Union[WebAuthConfiguration, _Mapping]] = ..., key_id: _Optional[str] = ..., provider_key: _Optional[str] = ...) -> None: ... + def __init__(self, provider: _Optional[_Union[ConnectionProvider, str]] = ..., type: _Optional[_Union[ConnectionType, str]] = ..., debug_enabled: _Optional[_Union[_wrappers_pb2.BoolValue, _Mapping]] = ..., ui_button_title: _Optional[_Union[_wrappers_pb2.StringValue, _Mapping]] = ..., configuration_type: _Optional[_Union[ConfigurationType, str]] = ..., attribute_mapping: _Optional[_Mapping[str, str]] = ..., oidc_config: _Optional[_Union[OIDCConnectionConfig, _Mapping]] = ..., saml_config: _Optional[_Union[SAMLConnectionConfigRequest, _Mapping]] = ..., oauth_config: _Optional[_Union[OAuthConnectionConfig, _Mapping]] = ..., passwordless_config: _Optional[_Union[PasswordLessConfig, _Mapping]] = ..., static_config: _Optional[_Union[StaticAuthConfig, _Mapping]] = ..., webauthn_config: _Optional[_Union[WebAuthConfiguration, _Mapping]] = ..., google_dwd_config: _Optional[_Union[GoogleDWDConfig, _Mapping]] = ..., key_id: _Optional[str] = ..., provider_key: _Optional[str] = ...) -> None: ... class UpdateConnectionResponse(_message.Message): __slots__ = ("connection",) @@ -571,7 +577,7 @@ class OIDCConnectionConfig(_message.Message): def __init__(self, issuer: _Optional[_Union[_wrappers_pb2.StringValue, _Mapping]] = ..., discovery_endpoint: _Optional[_Union[_wrappers_pb2.StringValue, _Mapping]] = ..., authorize_uri: _Optional[_Union[_wrappers_pb2.StringValue, _Mapping]] = ..., token_uri: _Optional[_Union[_wrappers_pb2.StringValue, _Mapping]] = ..., user_info_uri: _Optional[_Union[_wrappers_pb2.StringValue, _Mapping]] = ..., jwks_uri: _Optional[_Union[_wrappers_pb2.StringValue, _Mapping]] = ..., client_id: _Optional[_Union[_wrappers_pb2.StringValue, _Mapping]] = ..., client_secret: _Optional[_Union[_wrappers_pb2.StringValue, _Mapping]] = ..., scopes: _Optional[_Iterable[_Union[OIDCScope, str]]] = ..., token_auth_type: _Optional[_Union[TokenAuthType, str]] = ..., redirect_uri: _Optional[str] = ..., pkce_enabled: _Optional[_Union[_wrappers_pb2.BoolValue, _Mapping]] = ..., idp_logout_required: _Optional[_Union[_wrappers_pb2.BoolValue, _Mapping]] = ..., post_logout_redirect_uri: _Optional[_Union[_wrappers_pb2.StringValue, _Mapping]] = ..., backchannel_logout_redirect_uri: _Optional[_Union[_wrappers_pb2.StringValue, _Mapping]] = ..., sync_user_profile_on_login: _Optional[_Union[_wrappers_pb2.BoolValue, _Mapping]] = ..., jit_provisioning_with_sso_enabled: _Optional[_Union[_wrappers_pb2.BoolValue, _Mapping]] = ...) -> None: ... class OAuthConnectionConfig(_message.Message): - __slots__ = ("authorize_uri", "token_uri", "user_info_uri", "client_id", "client_secret", "scopes", "redirect_uri", "pkce_enabled", "prompt", "use_platform_creds", "access_type", "custom_scope_name", "sync_user_profile_on_login", "token_access_type", "tenant_id", "is_cimd", "app_name") + __slots__ = ("authorize_uri", "token_uri", "user_info_uri", "client_id", "client_secret", "scopes", "redirect_uri", "pkce_enabled", "prompt", "use_platform_creds", "access_type", "custom_scope_name", "sync_user_profile_on_login", "token_access_type", "tenant_id", "is_cimd", "app_name", "optional_scopes") AUTHORIZE_URI_FIELD_NUMBER: _ClassVar[int] TOKEN_URI_FIELD_NUMBER: _ClassVar[int] USER_INFO_URI_FIELD_NUMBER: _ClassVar[int] @@ -589,6 +595,7 @@ class OAuthConnectionConfig(_message.Message): TENANT_ID_FIELD_NUMBER: _ClassVar[int] IS_CIMD_FIELD_NUMBER: _ClassVar[int] APP_NAME_FIELD_NUMBER: _ClassVar[int] + OPTIONAL_SCOPES_FIELD_NUMBER: _ClassVar[int] authorize_uri: _wrappers_pb2.StringValue token_uri: _wrappers_pb2.StringValue user_info_uri: _wrappers_pb2.StringValue @@ -606,7 +613,26 @@ class OAuthConnectionConfig(_message.Message): tenant_id: _wrappers_pb2.StringValue is_cimd: _wrappers_pb2.BoolValue app_name: _wrappers_pb2.StringValue - def __init__(self, authorize_uri: _Optional[_Union[_wrappers_pb2.StringValue, _Mapping]] = ..., token_uri: _Optional[_Union[_wrappers_pb2.StringValue, _Mapping]] = ..., user_info_uri: _Optional[_Union[_wrappers_pb2.StringValue, _Mapping]] = ..., client_id: _Optional[_Union[_wrappers_pb2.StringValue, _Mapping]] = ..., client_secret: _Optional[_Union[_wrappers_pb2.StringValue, _Mapping]] = ..., scopes: _Optional[_Iterable[str]] = ..., redirect_uri: _Optional[str] = ..., pkce_enabled: _Optional[_Union[_wrappers_pb2.BoolValue, _Mapping]] = ..., prompt: _Optional[_Union[_wrappers_pb2.StringValue, _Mapping]] = ..., use_platform_creds: _Optional[_Union[_wrappers_pb2.BoolValue, _Mapping]] = ..., access_type: _Optional[_Union[_wrappers_pb2.StringValue, _Mapping]] = ..., custom_scope_name: _Optional[_Union[_wrappers_pb2.StringValue, _Mapping]] = ..., sync_user_profile_on_login: _Optional[_Union[_wrappers_pb2.BoolValue, _Mapping]] = ..., token_access_type: _Optional[_Union[_wrappers_pb2.StringValue, _Mapping]] = ..., tenant_id: _Optional[_Union[_wrappers_pb2.StringValue, _Mapping]] = ..., is_cimd: _Optional[_Union[_wrappers_pb2.BoolValue, _Mapping]] = ..., app_name: _Optional[_Union[_wrappers_pb2.StringValue, _Mapping]] = ...) -> None: ... + optional_scopes: OptionalScopes + def __init__(self, authorize_uri: _Optional[_Union[_wrappers_pb2.StringValue, _Mapping]] = ..., token_uri: _Optional[_Union[_wrappers_pb2.StringValue, _Mapping]] = ..., user_info_uri: _Optional[_Union[_wrappers_pb2.StringValue, _Mapping]] = ..., client_id: _Optional[_Union[_wrappers_pb2.StringValue, _Mapping]] = ..., client_secret: _Optional[_Union[_wrappers_pb2.StringValue, _Mapping]] = ..., scopes: _Optional[_Iterable[str]] = ..., redirect_uri: _Optional[str] = ..., pkce_enabled: _Optional[_Union[_wrappers_pb2.BoolValue, _Mapping]] = ..., prompt: _Optional[_Union[_wrappers_pb2.StringValue, _Mapping]] = ..., use_platform_creds: _Optional[_Union[_wrappers_pb2.BoolValue, _Mapping]] = ..., access_type: _Optional[_Union[_wrappers_pb2.StringValue, _Mapping]] = ..., custom_scope_name: _Optional[_Union[_wrappers_pb2.StringValue, _Mapping]] = ..., sync_user_profile_on_login: _Optional[_Union[_wrappers_pb2.BoolValue, _Mapping]] = ..., token_access_type: _Optional[_Union[_wrappers_pb2.StringValue, _Mapping]] = ..., tenant_id: _Optional[_Union[_wrappers_pb2.StringValue, _Mapping]] = ..., is_cimd: _Optional[_Union[_wrappers_pb2.BoolValue, _Mapping]] = ..., app_name: _Optional[_Union[_wrappers_pb2.StringValue, _Mapping]] = ..., optional_scopes: _Optional[_Union[OptionalScopes, _Mapping]] = ...) -> None: ... + +class OptionalScopes(_message.Message): + __slots__ = ("scopes", "field_name") + SCOPES_FIELD_NUMBER: _ClassVar[int] + FIELD_NAME_FIELD_NUMBER: _ClassVar[int] + scopes: _containers.RepeatedScalarFieldContainer[str] + field_name: str + def __init__(self, scopes: _Optional[_Iterable[str]] = ..., field_name: _Optional[str] = ...) -> None: ... + +class GoogleDWDConfig(_message.Message): + __slots__ = ("service_account_json", "scopes", "token_uri") + SERVICE_ACCOUNT_JSON_FIELD_NUMBER: _ClassVar[int] + SCOPES_FIELD_NUMBER: _ClassVar[int] + TOKEN_URI_FIELD_NUMBER: _ClassVar[int] + service_account_json: _wrappers_pb2.StringValue + scopes: _containers.RepeatedScalarFieldContainer[str] + token_uri: _wrappers_pb2.StringValue + def __init__(self, service_account_json: _Optional[_Union[_wrappers_pb2.StringValue, _Mapping]] = ..., scopes: _Optional[_Iterable[str]] = ..., token_uri: _Optional[_Union[_wrappers_pb2.StringValue, _Mapping]] = ...) -> None: ... class PasswordLessConfig(_message.Message): __slots__ = ("type", "frequency", "validity", "enforce_same_browser_origin", "code_challenge_length", "code_challenge_type", "regenerate_passwordless_credentials_on_resend") diff --git a/scalekit/v1/domains/domains_pb2.py b/scalekit/v1/domains/domains_pb2.py index 9a297a9..28419b3 100644 --- a/scalekit/v1/domains/domains_pb2.py +++ b/scalekit/v1/domains/domains_pb2.py @@ -17,13 +17,14 @@ from google.api import field_behavior_pb2 as google_dot_api_dot_field__behavior__pb2 from google.api import visibility_pb2 as google_dot_api_dot_visibility__pb2 from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 +from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__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.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/api/visibility.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/wrappers.proto\x1a.protoc-gen-openapiv2/options/annotations.proto\x1a!scalekit/v1/options/options.proto\"\x8a\x06\n\x13\x43reateDomainRequest\x12\xcb\x01\n\x0forganization_id\x18\x01 \x01(\tB\x9f\x01\x92\x41\x92\x01\x32wScalekit-generated unique identifier for the organization. Use either this or external_id to identify the organization.J\x17\"org_81667076086825451\"\xbaH\x06r\x04\x10\x01\x18 H\x00R\x0eorganizationId\x12\xcd\x01\n\x0b\x65xternal_id\x18\x02 \x01(\tB\xa9\x01\x92\x41\x8d\x01\x32{Your application\'s unique identifier for the organization. Alternative to organization_id for identifying the organization.J\x0e\"tenant_12345\"\xbaH\x06r\x04\x10\x01\x18 \xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEWH\x00R\nexternalId\x12\xba\x01\n\rconnection_id\x18\x03 \x01(\tB\x8f\x01\x92\x41}2iOptional identity provider connection ID to associate with this domain for enterprise SSO configurations.J\x10\"conn_123456789\"\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEWH\x01R\x0c\x63onnectionId\x88\x01\x01\x12x\n\x06\x64omain\x18\x04 \x01(\x0b\x32!.scalekit.v1.domains.CreateDomainB=\x92\x41:28Domain configuration including the domain name and type.R\x06\x64omainB\x0c\n\nidentitiesB\x10\n\x0e_connection_id\"\xb3\x01\n\x14\x43reateDomainResponse\x12\x9a\x01\n\x06\x64omain\x18\x01 \x01(\x0b\x32\x1b.scalekit.v1.domains.DomainBe\x92\x41\x62\x32`The newly created domain object with all configuration details and system-generated identifiers.R\x06\x64omain\"\xe6\x04\n\x0c\x43reateDomain\x12\xf6\x01\n\x06\x64omain\x18\x01 \x01(\tB\xdd\x01\x92\x41\xcc\x01\x32\xb3\x01The domain name to be configured. Must be a valid business domain you control. Public and disposable domains (gmail.com, outlook.com, etc.) are automatically blocked for security.J\x14\"customerdomain.com\"\xbaH\nr\x05\x10\x04\x18\xff\x01\xc8\x01\x01R\x06\x64omain\x12\xdc\x02\n\x0b\x64omain_type\x18\x02 \x01(\x0e\x32\x1f.scalekit.v1.domains.DomainTypeB\x99\x02\x92\x41\x95\x02\x32\xfb\x01The domain type.\n- ALLOWED_EMAIL_DOMAIN: trusted domain used to suggest the organization in the organization switcher during sign-in/sign-up.\n- ORGANIZATION_DOMAIN: SSO discovery domain used to route users to the correct SSO provider and enforce SSO.\nJ\x15\"ORGANIZATION_DOMAIN\"R\ndomainType\"\x84\x07\n\x13UpdateDomainRequest\x12\xcb\x01\n\x0forganization_id\x18\x01 \x01(\tB\x9f\x01\x92\x41\x92\x01\x32wScalekit-generated unique identifier for the organization. Use either this or external_id to identify the organization.J\x17\"org_81667076086825451\"\xbaH\x06r\x04\x10\x01\x18 H\x00R\x0eorganizationId\x12\xcd\x01\n\x0b\x65xternal_id\x18\x02 \x01(\tB\xa9\x01\x92\x41\x8d\x01\x32{Your application\'s unique identifier for the organization. Alternative to organization_id for identifying the organization.J\x0e\"tenant_12345\"\xbaH\x06r\x04\x10\x01\x18 \xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEWH\x00R\nexternalId\x12\x9f\x01\n\rconnection_id\x18\x03 \x01(\tBu\x92\x41\x63\x32OOptional updated identity provider connection ID to associate with this domain.J\x10\"conn_123456789\"\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEWH\x01R\x0c\x63onnectionId\x88\x01\x01\x12o\n\x02id\x18\x04 \x01(\tB_\x92\x41\\2AScalekit-generated unique identifier of the domain to be updated.J\x17\"dom_88351643129225005\"R\x02id\x12\x9b\x01\n\x06\x64omain\x18\x05 \x01(\x0b\x32!.scalekit.v1.domains.UpdateDomainB`\x92\x41]2[Domain update configuration. Currently empty as domain name cannot be changed once created.R\x06\x64omainB\x0c\n\nidentitiesB\x10\n\x0e_connection_id\"\x0e\n\x0cUpdateDomain\"\xa5\x01\n\x14UpdateDomainResponse\x12\x8c\x01\n\x06\x64omain\x18\x01 \x01(\x0b\x32\x1b.scalekit.v1.domains.DomainBW\x92\x41T2RThe updated domain object reflecting all changes made to the domain configuration.R\x06\x64omain\"\xad\x04\n\x10GetDomainRequest\x12\xcb\x01\n\x0forganization_id\x18\x01 \x01(\tB\x9f\x01\x92\x41\x92\x01\x32wScalekit-generated unique identifier for the organization. Use either this or external_id to identify the organization.J\x17\"org_81667076086825451\"\xbaH\x06r\x04\x10\x01\x18 H\x00R\x0eorganizationId\x12\xcd\x01\n\x0b\x65xternal_id\x18\x02 \x01(\tB\xa9\x01\x92\x41\x8d\x01\x32{Your application\'s unique identifier for the organization. Alternative to organization_id for identifying the organization.J\x0e\"tenant_12345\"\xbaH\x06r\x04\x10\x01\x18 \xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEWH\x00R\nexternalId\x12m\n\x02id\x18\x03 \x01(\tB]\x92\x41Z2?Scalekit-generated unique identifier of the domain to retrieve.J\x17\"dom_88351643129225005\"R\x02idB\x0c\n\nidentities\"\xb6\x01\n\x11GetDomainResponse\x12\xa0\x01\n\x06\x64omain\x18\x01 \x01(\x0b\x32\x1b.scalekit.v1.domains.DomainBk\x92\x41h2fThe requested domain object with complete details including domain type, timestamps and configuration.R\x06\x64omain\"\xeb\x05\n\x13\x44\x65leteDomainRequest\x12{\n\x02id\x18\x01 \x01(\tBk\x92\x41h2MScalekit-generated unique identifier of the domain to be permanently deleted.J\x17\"dom_88351643129225005\"R\x02id\x12\xcb\x01\n\x0forganization_id\x18\x02 \x01(\tB\x9f\x01\x92\x41\x92\x01\x32wScalekit-generated unique identifier for the organization. Use either this or external_id to identify the organization.J\x17\"org_81667076086825451\"\xbaH\x06r\x04\x10\x01\x18 H\x00R\x0eorganizationId\x12\xcd\x01\n\x0b\x65xternal_id\x18\x03 \x01(\tB\xa9\x01\x92\x41\x8d\x01\x32{Your application\'s unique identifier for the organization. Alternative to organization_id for identifying the organization.J\x0e\"tenant_12345\"\xbaH\x06r\x04\x10\x01\x18 \xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEWH\x00R\nexternalId\x12\x98\x01\n\rconnection_id\x18\x04 \x01(\tBn\x92\x41\\2HOptional connection ID for additional validation during domain deletion.J\x10\"conn_123456789\"\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEWH\x01R\x0c\x63onnectionId\x88\x01\x01\x42\x0c\n\nidentitiesB\x10\n\x0e_connection_id\"\xac\x0b\n\x11ListDomainRequest\x12\xcb\x01\n\x0forganization_id\x18\x01 \x01(\tB\x9f\x01\x92\x41\x92\x01\x32wScalekit-generated unique identifier for the organization. Use either this or external_id to identify the organization.J\x17\"org_81667076086825451\"\xbaH\x06r\x04\x10\x01\x18 H\x00R\x0eorganizationId\x12\xcd\x01\n\x0b\x65xternal_id\x18\x02 \x01(\tB\xa9\x01\x92\x41\x8d\x01\x32{Your application\'s unique identifier for the organization. Alternative to organization_id for identifying the organization.J\x0e\"tenant_12345\"\xbaH\x06r\x04\x10\x01\x18 \xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEWH\x00R\nexternalId\x12\xa8\x01\n\rconnection_id\x18\x03 \x01(\tB~\x92\x41l2XOptional filter to list domains associated with a specific identity provider connection.J\x10\"conn_123456789\"\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEWH\x01R\x0c\x63onnectionId\x88\x01\x01\x12\xab\x01\n\x07include\x18\x04 \x01(\tB\x8b\x01\x92\x41\x87\x01\x32mOptional comma-separated list of additional fields to include in the response (e.g., \'verification_details\').J\x16\"verification_details\"H\x02R\x07include\x88\x01\x01\x12\x8f\x01\n\tpage_size\x18\x05 \x01(\x0b\x32\x1b.google.protobuf.Int32ValueBU\x92\x41R2LMaximum number of domains to return per page. Default is 30, maximum is 100.J\x02\x33\x30R\x08pageSize\x12\x82\x01\n\x0bpage_number\x18\x06 \x01(\x0b\x32\x1b.google.protobuf.Int32ValueBD\x92\x41\x41\x3224/api/v1/organizations/{organization_id}/domains/{id}:\x06\x64omain\x12\xea\x06\n\x0cVerifyDomain\x12(.scalekit.v1.domains.VerifyDomainRequest\x1a\x1a.google.protobuf.BoolValue\"\x93\x06\x92\x41\xb7\x05\n\x07\x44omains\x12\rVerify Domain\x1a\x9e\x04Initiates domain ownership verification by checking the DNS TXT record that should be added to the domain\'s DNS configuration.\n\nUse this endpoint to manually trigger verification for domains that are in PENDING status. The system will check for the required TXT record and update the verification status accordingly.\n\nFor automatically verified domains, this endpoint will return true immediately. For domains requiring manual verification, ensure the TXT record has been properly configured in your DNS settings before calling this endpoint.J|\n\x03\x32\x30\x30\x12u\nSDomain verification result. Returns true if verification succeeds, false otherwise.\x12\x1e\n\x1c\x1a\x1a.google.protobuf.BoolValue\x82\xb5\x18\x02\x18\x64\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02=2;/api/v1/organizations/{organization_id}/domains/{id}:verify\x12\x9a\x03\n\tGetDomain\x12%.scalekit.v1.domains.GetDomainRequest\x1a&.scalekit.v1.domains.GetDomainResponse\"\xbd\x02\x92\x41\xe3\x01\n\x07\x44omains\x12\nGet Domain\x1akRetrieves complete details for a domain including domain type, timestamps, and configuration information.\n\nJ_\n\x03\x32\x30\x30\x12X\n*Successfully retrieved the domain details.\x12*\n(\x1a&.scalekit.v1.domains.GetDomainResponse\x82\xb5\x18\x16\n\x12organizations_read\x18t\x82\xd3\xe4\x93\x02\x36\x12\x34/api/v1/organizations/{organization_id}/domains/{id}\x12\xe4\x03\n\x0c\x44\x65leteDomain\x12(.scalekit.v1.domains.DeleteDomainRequest\x1a\x16.google.protobuf.Empty\"\x91\x03\x92\x41\xb6\x02\n\x07\x44omains\x12\rDelete Domain\x1a\xf4\x01Permanently removes a domain record from an organization.\n\n- Deleting an ORGANIZATION_DOMAIN disables SSO routing/enforcement for that domain.\n- Deleting an ALLOWED_EMAIL_DOMAIN stops organization suggestions for users with that email domain.\n\nJ%\n\x03\x32\x30\x30\x12\x1e\n\x1c\x44omain successfully deleted.\x82\xb5\x18\x17\n\x13organizations_write\x18t\x82\xd3\xe4\x93\x02\x36*4/api/v1/organizations/{organization_id}/domains/{id}\x12\x9b\x05\n\x0bListDomains\x12&.scalekit.v1.domains.ListDomainRequest\x1a\'.scalekit.v1.domains.ListDomainResponse\"\xba\x04\x92\x41\xe5\x03\n\x07\x44omains\x12\x0cList Domains\x1a\xe8\x02Retrieves a paginated list of all domains configured for the specified organization.\n\nDomain types:\n- ALLOWED_EMAIL_DOMAIN: Trusted domains used to suggest the organization in the organization switcher during sign-in/sign-up (auth-method agnostic).\n- ORGANIZATION_DOMAIN: SSO discovery domains used to route users to the correct SSO provider and enforce SSO.\n\nJa\n\x03\x32\x30\x30\x12Z\n+Successfully retrieved the list of domains.\x12+\n)\x1a\'.scalekit.v1.domains.ListDomainResponse\x82\xb5\x18\x16\n\x12organizations_read\x18t\x82\xd3\xe4\x93\x02\x31\x12//api/v1/organizations/{organization_id}/domains\x12\x90\x05\n\x15ListAuthorizedDomains\x12\x30.scalekit.v1.domains.ListAuthorizedDomainRequest\x1a\x31.scalekit.v1.domains.ListAuthorizedDomainResponse\"\x91\x04\x92\x41\xd8\x03\n\x07\x44omains\x12\x17List Authorized Domains\x1a\xbb\x02Retrieves a list of domains that are authorized for use with the specified origin URL.\n\nUse this endpoint to validate whether a particular domain is allowed for authentication or other domain-restricted operations.\n\nThis is commonly used by frontend applications to verify domain allowlists and CORS configurations.Jv\n\x03\x32\x30\x30\x12o\n6Successfully retrieved the list of authorized domains.\x12\x35\n3\x1a\x31.scalekit.v1.domains.ListAuthorizedDomainResponse\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x1a\x12\x18/api/v1/domains/{origin}\x1a\xf8\x03\x92\x41\xf4\x03\n\x07\x44omains\x12\xe8\x03Manage organization-level domains. Scalekit supports two domain types:\n\n- ORGANIZATION_DOMAIN: Used for SSO domain discovery. When a user signs in with a matching email domain, Scalekit routes them to the organization\xe2\x80\x99s SSO provider and enforces SSO.\n- ALLOWED_EMAIL_DOMAIN: Used to mark trusted email domains for an organization. When a user signs in or signs up with a matching domain, Scalekit suggests the organization in the organization switcher (authentication-method agnostic).\nB3Z1github.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/api/visibility.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/options/options.proto\"\x8a\x06\n\x13\x43reateDomainRequest\x12\xcb\x01\n\x0forganization_id\x18\x01 \x01(\tB\x9f\x01\x92\x41\x92\x01\x32wScalekit-generated unique identifier for the organization. Use either this or external_id to identify the organization.J\x17\"org_81667076086825451\"\xbaH\x06r\x04\x10\x01\x18 H\x00R\x0eorganizationId\x12\xcd\x01\n\x0b\x65xternal_id\x18\x02 \x01(\tB\xa9\x01\x92\x41\x8d\x01\x32{Your application\'s unique identifier for the organization. Alternative to organization_id for identifying the organization.J\x0e\"tenant_12345\"\xbaH\x06r\x04\x10\x01\x18 \xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEWH\x00R\nexternalId\x12\xba\x01\n\rconnection_id\x18\x03 \x01(\tB\x8f\x01\x92\x41}2iOptional identity provider connection ID to associate with this domain for enterprise SSO configurations.J\x10\"conn_123456789\"\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEWH\x01R\x0c\x63onnectionId\x88\x01\x01\x12x\n\x06\x64omain\x18\x04 \x01(\x0b\x32!.scalekit.v1.domains.CreateDomainB=\x92\x41:28Domain configuration including the domain name and type.R\x06\x64omainB\x0c\n\nidentitiesB\x10\n\x0e_connection_id\"\xb3\x01\n\x14\x43reateDomainResponse\x12\x9a\x01\n\x06\x64omain\x18\x01 \x01(\x0b\x32\x1b.scalekit.v1.domains.DomainBe\x92\x41\x62\x32`The newly created domain object with all configuration details and system-generated identifiers.R\x06\x64omain\"\xe6\x04\n\x0c\x43reateDomain\x12\xf6\x01\n\x06\x64omain\x18\x01 \x01(\tB\xdd\x01\x92\x41\xcc\x01\x32\xb3\x01The domain name to be configured. Must be a valid business domain you control. Public and disposable domains (gmail.com, outlook.com, etc.) are automatically blocked for security.J\x14\"customerdomain.com\"\xbaH\nr\x05\x10\x04\x18\xff\x01\xc8\x01\x01R\x06\x64omain\x12\xdc\x02\n\x0b\x64omain_type\x18\x02 \x01(\x0e\x32\x1f.scalekit.v1.domains.DomainTypeB\x99\x02\x92\x41\x95\x02\x32\xfb\x01The domain type.\n- ALLOWED_EMAIL_DOMAIN: trusted domain used to suggest the organization in the organization switcher during sign-in/sign-up.\n- ORGANIZATION_DOMAIN: SSO discovery domain used to route users to the correct SSO provider and enforce SSO.\nJ\x15\"ORGANIZATION_DOMAIN\"R\ndomainType\"\x84\x07\n\x13UpdateDomainRequest\x12\xcb\x01\n\x0forganization_id\x18\x01 \x01(\tB\x9f\x01\x92\x41\x92\x01\x32wScalekit-generated unique identifier for the organization. Use either this or external_id to identify the organization.J\x17\"org_81667076086825451\"\xbaH\x06r\x04\x10\x01\x18 H\x00R\x0eorganizationId\x12\xcd\x01\n\x0b\x65xternal_id\x18\x02 \x01(\tB\xa9\x01\x92\x41\x8d\x01\x32{Your application\'s unique identifier for the organization. Alternative to organization_id for identifying the organization.J\x0e\"tenant_12345\"\xbaH\x06r\x04\x10\x01\x18 \xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEWH\x00R\nexternalId\x12\x9f\x01\n\rconnection_id\x18\x03 \x01(\tBu\x92\x41\x63\x32OOptional updated identity provider connection ID to associate with this domain.J\x10\"conn_123456789\"\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEWH\x01R\x0c\x63onnectionId\x88\x01\x01\x12o\n\x02id\x18\x04 \x01(\tB_\x92\x41\\2AScalekit-generated unique identifier of the domain to be updated.J\x17\"dom_88351643129225005\"R\x02id\x12\x9b\x01\n\x06\x64omain\x18\x05 \x01(\x0b\x32!.scalekit.v1.domains.UpdateDomainB`\x92\x41]2[Domain update configuration. Currently empty as domain name cannot be changed once created.R\x06\x64omainB\x0c\n\nidentitiesB\x10\n\x0e_connection_id\"\x0e\n\x0cUpdateDomain\"\xa5\x01\n\x14UpdateDomainResponse\x12\x8c\x01\n\x06\x64omain\x18\x01 \x01(\x0b\x32\x1b.scalekit.v1.domains.DomainBW\x92\x41T2RThe updated domain object reflecting all changes made to the domain configuration.R\x06\x64omain\"\xad\x04\n\x10GetDomainRequest\x12\xcb\x01\n\x0forganization_id\x18\x01 \x01(\tB\x9f\x01\x92\x41\x92\x01\x32wScalekit-generated unique identifier for the organization. Use either this or external_id to identify the organization.J\x17\"org_81667076086825451\"\xbaH\x06r\x04\x10\x01\x18 H\x00R\x0eorganizationId\x12\xcd\x01\n\x0b\x65xternal_id\x18\x02 \x01(\tB\xa9\x01\x92\x41\x8d\x01\x32{Your application\'s unique identifier for the organization. Alternative to organization_id for identifying the organization.J\x0e\"tenant_12345\"\xbaH\x06r\x04\x10\x01\x18 \xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEWH\x00R\nexternalId\x12m\n\x02id\x18\x03 \x01(\tB]\x92\x41Z2?Scalekit-generated unique identifier of the domain to retrieve.J\x17\"dom_88351643129225005\"R\x02idB\x0c\n\nidentities\"\xb6\x01\n\x11GetDomainResponse\x12\xa0\x01\n\x06\x64omain\x18\x01 \x01(\x0b\x32\x1b.scalekit.v1.domains.DomainBk\x92\x41h2fThe requested domain object with complete details including domain type, timestamps and configuration.R\x06\x64omain\"\xeb\x05\n\x13\x44\x65leteDomainRequest\x12{\n\x02id\x18\x01 \x01(\tBk\x92\x41h2MScalekit-generated unique identifier of the domain to be permanently deleted.J\x17\"dom_88351643129225005\"R\x02id\x12\xcb\x01\n\x0forganization_id\x18\x02 \x01(\tB\x9f\x01\x92\x41\x92\x01\x32wScalekit-generated unique identifier for the organization. Use either this or external_id to identify the organization.J\x17\"org_81667076086825451\"\xbaH\x06r\x04\x10\x01\x18 H\x00R\x0eorganizationId\x12\xcd\x01\n\x0b\x65xternal_id\x18\x03 \x01(\tB\xa9\x01\x92\x41\x8d\x01\x32{Your application\'s unique identifier for the organization. Alternative to organization_id for identifying the organization.J\x0e\"tenant_12345\"\xbaH\x06r\x04\x10\x01\x18 \xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEWH\x00R\nexternalId\x12\x98\x01\n\rconnection_id\x18\x04 \x01(\tBn\x92\x41\\2HOptional connection ID for additional validation during domain deletion.J\x10\"conn_123456789\"\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEWH\x01R\x0c\x63onnectionId\x88\x01\x01\x42\x0c\n\nidentitiesB\x10\n\x0e_connection_id\"\xac\x0b\n\x11ListDomainRequest\x12\xcb\x01\n\x0forganization_id\x18\x01 \x01(\tB\x9f\x01\x92\x41\x92\x01\x32wScalekit-generated unique identifier for the organization. Use either this or external_id to identify the organization.J\x17\"org_81667076086825451\"\xbaH\x06r\x04\x10\x01\x18 H\x00R\x0eorganizationId\x12\xcd\x01\n\x0b\x65xternal_id\x18\x02 \x01(\tB\xa9\x01\x92\x41\x8d\x01\x32{Your application\'s unique identifier for the organization. Alternative to organization_id for identifying the organization.J\x0e\"tenant_12345\"\xbaH\x06r\x04\x10\x01\x18 \xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEWH\x00R\nexternalId\x12\xa8\x01\n\rconnection_id\x18\x03 \x01(\tB~\x92\x41l2XOptional filter to list domains associated with a specific identity provider connection.J\x10\"conn_123456789\"\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEWH\x01R\x0c\x63onnectionId\x88\x01\x01\x12\xab\x01\n\x07include\x18\x04 \x01(\tB\x8b\x01\x92\x41\x87\x01\x32mOptional comma-separated list of additional fields to include in the response (e.g., \'verification_details\').J\x16\"verification_details\"H\x02R\x07include\x88\x01\x01\x12\x8f\x01\n\tpage_size\x18\x05 \x01(\x0b\x32\x1b.google.protobuf.Int32ValueBU\x92\x41R2LMaximum number of domains to return per page. Default is 30, maximum is 100.J\x02\x33\x30R\x08pageSize\x12\x82\x01\n\x0bpage_number\x18\x06 \x01(\x0b\x32\x1b.google.protobuf.Int32ValueBD\x92\x41\x41\x3224/api/v1/organizations/{organization_id}/domains/{id}:\x06\x64omain\x12\xa6\x07\n\x0cVerifyDomain\x12(.scalekit.v1.domains.VerifyDomainRequest\x1a).scalekit.v1.domains.VerifyDomainResponse\"\xc0\x06\x92\x41\xcf\x05\n\x07\x44omains\x12\rVerify Domain\x1a\x9e\x04Initiates domain ownership verification by checking the DNS TXT record that should be added to the domain\'s DNS configuration.\n\nUse this endpoint to manually trigger verification for domains that are in PENDING status. The system will check for the required TXT record and update the verification status accordingly.\n\nFor automatically verified domains, this endpoint will return true immediately. For domains requiring manual verification, ensure the TXT record has been properly configured in your DNS settings before calling this endpoint.J\x93\x01\n\x03\x32\x30\x30\x12\x8b\x01\nZDomain verification result. `verified` is true if verification succeeded, false otherwise.\x12-\n+\x1a).scalekit.v1.domains.VerifyDomainResponse\x82\xb5\x18\x17\n\x13organizations_write\x18t\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02=2;/api/v1/organizations/{organization_id}/domains/{id}:verify\x12\x9a\x03\n\tGetDomain\x12%.scalekit.v1.domains.GetDomainRequest\x1a&.scalekit.v1.domains.GetDomainResponse\"\xbd\x02\x92\x41\xe3\x01\n\x07\x44omains\x12\nGet Domain\x1akRetrieves complete details for a domain including domain type, timestamps, and configuration information.\n\nJ_\n\x03\x32\x30\x30\x12X\n*Successfully retrieved the domain details.\x12*\n(\x1a&.scalekit.v1.domains.GetDomainResponse\x82\xb5\x18\x16\n\x12organizations_read\x18t\x82\xd3\xe4\x93\x02\x36\x12\x34/api/v1/organizations/{organization_id}/domains/{id}\x12\xe4\x03\n\x0c\x44\x65leteDomain\x12(.scalekit.v1.domains.DeleteDomainRequest\x1a\x16.google.protobuf.Empty\"\x91\x03\x92\x41\xb6\x02\n\x07\x44omains\x12\rDelete Domain\x1a\xf4\x01Permanently removes a domain record from an organization.\n\n- Deleting an ORGANIZATION_DOMAIN disables SSO routing/enforcement for that domain.\n- Deleting an ALLOWED_EMAIL_DOMAIN stops organization suggestions for users with that email domain.\n\nJ%\n\x03\x32\x30\x30\x12\x1e\n\x1c\x44omain successfully deleted.\x82\xb5\x18\x17\n\x13organizations_write\x18t\x82\xd3\xe4\x93\x02\x36*4/api/v1/organizations/{organization_id}/domains/{id}\x12\x9b\x05\n\x0bListDomains\x12&.scalekit.v1.domains.ListDomainRequest\x1a\'.scalekit.v1.domains.ListDomainResponse\"\xba\x04\x92\x41\xe5\x03\n\x07\x44omains\x12\x0cList Domains\x1a\xe8\x02Retrieves a paginated list of all domains configured for the specified organization.\n\nDomain types:\n- ALLOWED_EMAIL_DOMAIN: Trusted domains used to suggest the organization in the organization switcher during sign-in/sign-up (auth-method agnostic).\n- ORGANIZATION_DOMAIN: SSO discovery domains used to route users to the correct SSO provider and enforce SSO.\n\nJa\n\x03\x32\x30\x30\x12Z\n+Successfully retrieved the list of domains.\x12+\n)\x1a\'.scalekit.v1.domains.ListDomainResponse\x82\xb5\x18\x16\n\x12organizations_read\x18t\x82\xd3\xe4\x93\x02\x31\x12//api/v1/organizations/{organization_id}/domains\x12\x90\x05\n\x15ListAuthorizedDomains\x12\x30.scalekit.v1.domains.ListAuthorizedDomainRequest\x1a\x31.scalekit.v1.domains.ListAuthorizedDomainResponse\"\x91\x04\x92\x41\xd8\x03\n\x07\x44omains\x12\x17List Authorized Domains\x1a\xbb\x02Retrieves a list of domains that are authorized for use with the specified origin URL.\n\nUse this endpoint to validate whether a particular domain is allowed for authentication or other domain-restricted operations.\n\nThis is commonly used by frontend applications to verify domain allowlists and CORS configurations.Jv\n\x03\x32\x30\x30\x12o\n6Successfully retrieved the list of authorized domains.\x12\x35\n3\x1a\x31.scalekit.v1.domains.ListAuthorizedDomainResponse\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x1a\x12\x18/api/v1/domains/{origin}\x1a\xf8\x03\x92\x41\xf4\x03\n\x07\x44omains\x12\xe8\x03Manage organization-level domains. Scalekit supports two domain types:\n\n- ORGANIZATION_DOMAIN: Used for SSO domain discovery. When a user signs in with a matching email domain, Scalekit routes them to the organization\xe2\x80\x99s SSO provider and enforces SSO.\n- ALLOWED_EMAIL_DOMAIN: Used to mark trusted email domains for an organization. When a user signs in or signs up with a matching domain, Scalekit suggests the organization in the organization switcher (authentication-method agnostic).\nB3Z1github.com/scalekit-inc/scalekit/pkg/grpc/domainsb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -93,6 +94,8 @@ _globals['_VERIFYDOMAINREQUEST'].fields_by_name['external_id']._serialized_options = b'\222A\215\0012{Your application\'s unique identifier for the organization. Alternative to organization_id for identifying the organization.J\016\"tenant_12345\"\272H\006r\004\020\001\030 \372\322\344\223\002\t\022\007PREVIEW' _globals['_VERIFYDOMAINREQUEST'].fields_by_name['id']._loaded_options = None _globals['_VERIFYDOMAINREQUEST'].fields_by_name['id']._serialized_options = b'\222Aw2\\Scalekit-generated unique identifier of the domain to verify. Must start with \'dom_\' prefix.J\027\"dom_88351643129225005\"\272H\013r\t\020\001\030 :\003dom' + _globals['_VERIFYDOMAINRESPONSE'].fields_by_name['verified']._loaded_options = None + _globals['_VERIFYDOMAINRESPONSE'].fields_by_name['verified']._serialized_options = b'\222A\244\0012\241\001True when the domain\'s DNS TXT record matched and the domain is now verified; false otherwise (e.g., TXT record missing, domain not found, verification pending).' _globals['_LISTDOMAINRESPONSE'].fields_by_name['page_size']._loaded_options = None _globals['_LISTDOMAINRESPONSE'].fields_by_name['page_size']._serialized_options = b'\222A-2(Number of domains returned in this page.J\0011' _globals['_LISTDOMAINRESPONSE'].fields_by_name['page_number']._loaded_options = None @@ -118,13 +121,15 @@ _globals['_DOMAIN'].fields_by_name['txt_record_secret']._loaded_options = None _globals['_DOMAIN'].fields_by_name['txt_record_secret']._serialized_options = b'\222Aj2IThe DNS TXT record value that should be added to verify domain ownership.J\035\"scalekit-verification-value\"\372\322\344\223\002\t\022\007PREVIEW' _globals['_DOMAIN'].fields_by_name['verification_status']._loaded_options = None - _globals['_DOMAIN'].fields_by_name['verification_status']._serialized_options = b'\222A\355\0012\331\001Current verification status of the domain. AUTO_VERIFIED means the domain was automatically verified without DNS changes, VERIFIED means manually verified via DNS TXT record, PENDING requires manual DNS configuration.J\017\"AUTO_VERIFIED\"\372\322\344\223\002\t\022\007PREVIEW' + _globals['_DOMAIN'].fields_by_name['verification_status']._serialized_options = b'\222A\271\0022\245\002Current verification status of the domain. AUTO_VERIFIED means the domain was automatically verified without DNS changes, VERIFIED means the domain is verified \342\200\224 either via DNS TXT record validation or by an admin explicitly marking it as verified, PENDING requires manual DNS configuration.J\017\"AUTO_VERIFIED\"' _globals['_DOMAIN'].fields_by_name['create_time']._loaded_options = None _globals['_DOMAIN'].fields_by_name['create_time']._serialized_options = b'\222AJ2,Timestamp when the domain was first created.J\032\"2025-09-01T12:14:43.100Z\"' _globals['_DOMAIN'].fields_by_name['update_time']._loaded_options = None _globals['_DOMAIN'].fields_by_name['update_time']._serialized_options = b'\222AO2+Timestamp when the domain was last updated.J \"2025-09-01T12:14:43.110455169Z\"' _globals['_DOMAIN'].fields_by_name['domain_type']._loaded_options = None _globals['_DOMAIN'].fields_by_name['domain_type']._serialized_options = b'\222A\362\0012\330\001The type of domain configuration. ALLOWED_EMAIL_DOMAIN enables automatic organization suggestions for users with matching email domains during sign-in/sign-up. ORGANIZATION_DOMAIN is for primary organization domains.J\025\"ORGANIZATION_DOMAIN\"' + _globals['_DOMAIN'].fields_by_name['verification_method']._loaded_options = None + _globals['_DOMAIN'].fields_by_name['verification_method']._serialized_options = b'\222A\360\0012\344\001Method used to verify domain ownership. ADMIN indicates that the domain is considered verified without requiring any DNS-based validation. DNS indicates that the domain must be verified by adding and validating a DNS TXT record.J\007\"ADMIN\"' _globals['_DOMAINSERVICE']._loaded_options = None _globals['_DOMAINSERVICE']._serialized_options = b'\222A\364\003\n\007Domains\022\350\003Manage organization-level domains. Scalekit supports two domain types:\n\n- ORGANIZATION_DOMAIN: Used for SSO domain discovery. When a user signs in with a matching email domain, Scalekit routes them to the organization\342\200\231s SSO provider and enforces SSO.\n- ALLOWED_EMAIL_DOMAIN: Used to mark trusted email domains for an organization. When a user signs in or signs up with a matching domain, Scalekit suggests the organization in the organization switcher (authentication-method agnostic).\n' _globals['_DOMAINSERVICE'].methods_by_name['CreateDomain']._loaded_options = None @@ -132,7 +137,7 @@ _globals['_DOMAINSERVICE'].methods_by_name['UpdateDomain']._loaded_options = None _globals['_DOMAINSERVICE'].methods_by_name['UpdateDomain']._serialized_options = b'\222A\226\004\n\007Domains\022\rUpdate Domain\032\241\003Updates an existing domain\'s configuration within an organization. Currently supports updating domain metadata and configuration settings.\n\nUse this endpoint to modify domain properties after initial creation. Note that the domain name itself cannot be changed once created.\n\nThe domain must belong to the specified organization and you must provide either the organization ID or external ID along with the domain ID.JX\n\003200\022Q\n Successfully updated the domain.\022-\n+\032).scalekit.v1.domains.UpdateDomainResponse\202\265\030\027\n\023organizations_write\030t\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\002>24/api/v1/organizations/{organization_id}/domains/{id}:\006domain' _globals['_DOMAINSERVICE'].methods_by_name['VerifyDomain']._loaded_options = None - _globals['_DOMAINSERVICE'].methods_by_name['VerifyDomain']._serialized_options = b'\222A\267\005\n\007Domains\022\rVerify Domain\032\236\004Initiates domain ownership verification by checking the DNS TXT record that should be added to the domain\'s DNS configuration.\n\nUse this endpoint to manually trigger verification for domains that are in PENDING status. The system will check for the required TXT record and update the verification status accordingly.\n\nFor automatically verified domains, this endpoint will return true immediately. For domains requiring manual verification, ensure the TXT record has been properly configured in your DNS settings before calling this endpoint.J|\n\003200\022u\nSDomain verification result. Returns true if verification succeeds, false otherwise.\022\036\n\034\032\032.google.protobuf.BoolValue\202\265\030\002\030d\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\002=2;/api/v1/organizations/{organization_id}/domains/{id}:verify' + _globals['_DOMAINSERVICE'].methods_by_name['VerifyDomain']._serialized_options = b'\222A\317\005\n\007Domains\022\rVerify Domain\032\236\004Initiates domain ownership verification by checking the DNS TXT record that should be added to the domain\'s DNS configuration.\n\nUse this endpoint to manually trigger verification for domains that are in PENDING status. The system will check for the required TXT record and update the verification status accordingly.\n\nFor automatically verified domains, this endpoint will return true immediately. For domains requiring manual verification, ensure the TXT record has been properly configured in your DNS settings before calling this endpoint.J\223\001\n\003200\022\213\001\nZDomain verification result. `verified` is true if verification succeeded, false otherwise.\022-\n+\032).scalekit.v1.domains.VerifyDomainResponse\202\265\030\027\n\023organizations_write\030t\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\002=2;/api/v1/organizations/{organization_id}/domains/{id}:verify' _globals['_DOMAINSERVICE'].methods_by_name['GetDomain']._loaded_options = None _globals['_DOMAINSERVICE'].methods_by_name['GetDomain']._serialized_options = b'\222A\343\001\n\007Domains\022\nGet Domain\032kRetrieves complete details for a domain including domain type, timestamps, and configuration information.\n\nJ_\n\003200\022X\n*Successfully retrieved the domain details.\022*\n(\032&.scalekit.v1.domains.GetDomainResponse\202\265\030\026\n\022organizations_read\030t\202\323\344\223\0026\0224/api/v1/organizations/{organization_id}/domains/{id}' _globals['_DOMAINSERVICE'].methods_by_name['DeleteDomain']._loaded_options = None @@ -141,40 +146,44 @@ _globals['_DOMAINSERVICE'].methods_by_name['ListDomains']._serialized_options = b'\222A\345\003\n\007Domains\022\014List Domains\032\350\002Retrieves a paginated list of all domains configured for the specified organization.\n\nDomain types:\n- ALLOWED_EMAIL_DOMAIN: Trusted domains used to suggest the organization in the organization switcher during sign-in/sign-up (auth-method agnostic).\n- ORGANIZATION_DOMAIN: SSO discovery domains used to route users to the correct SSO provider and enforce SSO.\n\nJa\n\003200\022Z\n+Successfully retrieved the list of domains.\022+\n)\032\'.scalekit.v1.domains.ListDomainResponse\202\265\030\026\n\022organizations_read\030t\202\323\344\223\0021\022//api/v1/organizations/{organization_id}/domains' _globals['_DOMAINSERVICE'].methods_by_name['ListAuthorizedDomains']._loaded_options = None _globals['_DOMAINSERVICE'].methods_by_name['ListAuthorizedDomains']._serialized_options = b'\222A\330\003\n\007Domains\022\027List Authorized Domains\032\273\002Retrieves a list of domains that are authorized for use with the specified origin URL.\n\nUse this endpoint to validate whether a particular domain is allowed for authentication or other domain-restricted operations.\n\nThis is commonly used by frontend applications to verify domain allowlists and CORS configurations.Jv\n\003200\022o\n6Successfully retrieved the list of authorized domains.\0225\n3\0321.scalekit.v1.domains.ListAuthorizedDomainResponse\202\265\030\002\030\001\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\002\032\022\030/api/v1/domains/{origin}' - _globals['_VERIFICATIONSTATUS']._serialized_start=9391 - _globals['_VERIFICATIONSTATUS']._serialized_end=9506 - _globals['_DOMAINTYPE']._serialized_start=9508 - _globals['_DOMAINTYPE']._serialized_end=9600 - _globals['_CREATEDOMAINREQUEST']._serialized_start=357 - _globals['_CREATEDOMAINREQUEST']._serialized_end=1135 - _globals['_CREATEDOMAINRESPONSE']._serialized_start=1138 - _globals['_CREATEDOMAINRESPONSE']._serialized_end=1317 - _globals['_CREATEDOMAIN']._serialized_start=1320 - _globals['_CREATEDOMAIN']._serialized_end=1934 - _globals['_UPDATEDOMAINREQUEST']._serialized_start=1937 - _globals['_UPDATEDOMAINREQUEST']._serialized_end=2837 - _globals['_UPDATEDOMAIN']._serialized_start=2839 - _globals['_UPDATEDOMAIN']._serialized_end=2853 - _globals['_UPDATEDOMAINRESPONSE']._serialized_start=2856 - _globals['_UPDATEDOMAINRESPONSE']._serialized_end=3021 - _globals['_GETDOMAINREQUEST']._serialized_start=3024 - _globals['_GETDOMAINREQUEST']._serialized_end=3581 - _globals['_GETDOMAINRESPONSE']._serialized_start=3584 - _globals['_GETDOMAINRESPONSE']._serialized_end=3766 - _globals['_DELETEDOMAINREQUEST']._serialized_start=3769 - _globals['_DELETEDOMAINREQUEST']._serialized_end=4516 - _globals['_LISTDOMAINREQUEST']._serialized_start=4519 - _globals['_LISTDOMAINREQUEST']._serialized_end=5971 - _globals['_VERIFYDOMAINREQUEST']._serialized_start=5974 - _globals['_VERIFYDOMAINREQUEST']._serialized_end=6579 - _globals['_LISTDOMAINRESPONSE']._serialized_start=6582 - _globals['_LISTDOMAINRESPONSE']._serialized_end=6936 - _globals['_LISTAUTHORIZEDDOMAINREQUEST']._serialized_start=6939 - _globals['_LISTAUTHORIZEDDOMAINREQUEST']._serialized_end=7361 - _globals['_LISTAUTHORIZEDDOMAINRESPONSE']._serialized_start=7364 - _globals['_LISTAUTHORIZEDDOMAINRESPONSE']._serialized_end=7540 - _globals['_DOMAIN']._serialized_start=7543 - _globals['_DOMAIN']._serialized_end=9389 - _globals['_DOMAINSERVICE']._serialized_start=9603 - _globals['_DOMAINSERVICE']._serialized_end=15028 + _globals['_VERIFICATIONMETHOD']._serialized_start=10045 + _globals['_VERIFICATIONMETHOD']._serialized_end=10142 + _globals['_VERIFICATIONSTATUS']._serialized_start=10144 + _globals['_VERIFICATIONSTATUS']._serialized_end=10259 + _globals['_DOMAINTYPE']._serialized_start=10261 + _globals['_DOMAINTYPE']._serialized_end=10353 + _globals['_CREATEDOMAINREQUEST']._serialized_start=387 + _globals['_CREATEDOMAINREQUEST']._serialized_end=1165 + _globals['_CREATEDOMAINRESPONSE']._serialized_start=1168 + _globals['_CREATEDOMAINRESPONSE']._serialized_end=1347 + _globals['_CREATEDOMAIN']._serialized_start=1350 + _globals['_CREATEDOMAIN']._serialized_end=1964 + _globals['_UPDATEDOMAINREQUEST']._serialized_start=1967 + _globals['_UPDATEDOMAINREQUEST']._serialized_end=2867 + _globals['_UPDATEDOMAIN']._serialized_start=2869 + _globals['_UPDATEDOMAIN']._serialized_end=2883 + _globals['_UPDATEDOMAINRESPONSE']._serialized_start=2886 + _globals['_UPDATEDOMAINRESPONSE']._serialized_end=3051 + _globals['_GETDOMAINREQUEST']._serialized_start=3054 + _globals['_GETDOMAINREQUEST']._serialized_end=3611 + _globals['_GETDOMAINRESPONSE']._serialized_start=3614 + _globals['_GETDOMAINRESPONSE']._serialized_end=3796 + _globals['_DELETEDOMAINREQUEST']._serialized_start=3799 + _globals['_DELETEDOMAINREQUEST']._serialized_end=4546 + _globals['_LISTDOMAINREQUEST']._serialized_start=4549 + _globals['_LISTDOMAINREQUEST']._serialized_end=6001 + _globals['_VERIFYDOMAINREQUEST']._serialized_start=6004 + _globals['_VERIFYDOMAINREQUEST']._serialized_end=6609 + _globals['_VERIFYDOMAINRESPONSE']._serialized_start=6612 + _globals['_VERIFYDOMAINRESPONSE']._serialized_end=6834 + _globals['_LISTDOMAINRESPONSE']._serialized_start=6837 + _globals['_LISTDOMAINRESPONSE']._serialized_end=7191 + _globals['_LISTAUTHORIZEDDOMAINREQUEST']._serialized_start=7194 + _globals['_LISTAUTHORIZEDDOMAINREQUEST']._serialized_end=7616 + _globals['_LISTAUTHORIZEDDOMAINRESPONSE']._serialized_start=7619 + _globals['_LISTAUTHORIZEDDOMAINRESPONSE']._serialized_end=7795 + _globals['_DOMAIN']._serialized_start=7798 + _globals['_DOMAIN']._serialized_end=10043 + _globals['_DOMAINSERVICE']._serialized_start=10356 + _globals['_DOMAINSERVICE']._serialized_end=15841 # @@protoc_insertion_point(module_scope) diff --git a/scalekit/v1/domains/domains_pb2.pyi b/scalekit/v1/domains/domains_pb2.pyi index eb10967..b1d16f9 100644 --- a/scalekit/v1/domains/domains_pb2.pyi +++ b/scalekit/v1/domains/domains_pb2.pyi @@ -3,6 +3,7 @@ from google.api import annotations_pb2 as _annotations_pb2 from google.api import field_behavior_pb2 as _field_behavior_pb2 from google.api import visibility_pb2 as _visibility_pb2 from google.protobuf import empty_pb2 as _empty_pb2 +from google.protobuf import struct_pb2 as _struct_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 @@ -15,6 +16,13 @@ from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Map DESCRIPTOR: _descriptor.FileDescriptor +class VerificationMethod(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + VERIFICATION_METHOD_UNSPECIFIED: _ClassVar[VerificationMethod] + ADMIN: _ClassVar[VerificationMethod] + DNS: _ClassVar[VerificationMethod] + NOT_APPLICABLE: _ClassVar[VerificationMethod] + class VerificationStatus(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): __slots__ = () VERIFICATION_STATUS_UNSPECIFIED: _ClassVar[VerificationStatus] @@ -28,6 +36,10 @@ class DomainType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): DOMAIN_TYPE_UNSPECIFIED: _ClassVar[DomainType] ALLOWED_EMAIL_DOMAIN: _ClassVar[DomainType] ORGANIZATION_DOMAIN: _ClassVar[DomainType] +VERIFICATION_METHOD_UNSPECIFIED: VerificationMethod +ADMIN: VerificationMethod +DNS: VerificationMethod +NOT_APPLICABLE: VerificationMethod VERIFICATION_STATUS_UNSPECIFIED: VerificationStatus PENDING: VerificationStatus VERIFIED: VerificationStatus @@ -143,6 +155,12 @@ class VerifyDomainRequest(_message.Message): id: str def __init__(self, organization_id: _Optional[str] = ..., external_id: _Optional[str] = ..., id: _Optional[str] = ...) -> None: ... +class VerifyDomainResponse(_message.Message): + __slots__ = ("verified",) + VERIFIED_FIELD_NUMBER: _ClassVar[int] + verified: bool + def __init__(self, verified: bool = ...) -> None: ... + class ListDomainResponse(_message.Message): __slots__ = ("page_size", "page_number", "domains") PAGE_SIZE_FIELD_NUMBER: _ClassVar[int] @@ -168,7 +186,7 @@ class ListAuthorizedDomainResponse(_message.Message): def __init__(self, domains: _Optional[_Iterable[str]] = ...) -> None: ... class Domain(_message.Message): - __slots__ = ("id", "domain", "environment_id", "organization_id", "txt_record_key", "txt_record_secret", "verification_status", "create_time", "update_time", "domain_type") + __slots__ = ("id", "domain", "environment_id", "organization_id", "txt_record_key", "txt_record_secret", "verification_status", "create_time", "update_time", "domain_type", "verification_method") ID_FIELD_NUMBER: _ClassVar[int] DOMAIN_FIELD_NUMBER: _ClassVar[int] ENVIRONMENT_ID_FIELD_NUMBER: _ClassVar[int] @@ -179,6 +197,7 @@ class Domain(_message.Message): CREATE_TIME_FIELD_NUMBER: _ClassVar[int] UPDATE_TIME_FIELD_NUMBER: _ClassVar[int] DOMAIN_TYPE_FIELD_NUMBER: _ClassVar[int] + VERIFICATION_METHOD_FIELD_NUMBER: _ClassVar[int] id: str domain: str environment_id: str @@ -189,4 +208,5 @@ class Domain(_message.Message): create_time: _timestamp_pb2.Timestamp update_time: _timestamp_pb2.Timestamp domain_type: DomainType - def __init__(self, id: _Optional[str] = ..., domain: _Optional[str] = ..., environment_id: _Optional[str] = ..., organization_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]] = ..., domain_type: _Optional[_Union[DomainType, str]] = ...) -> None: ... + verification_method: VerificationMethod + def __init__(self, id: _Optional[str] = ..., domain: _Optional[str] = ..., environment_id: _Optional[str] = ..., organization_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]] = ..., domain_type: _Optional[_Union[DomainType, str]] = ..., verification_method: _Optional[_Union[VerificationMethod, str]] = ...) -> None: ... diff --git a/scalekit/v1/domains/domains_pb2_grpc.py b/scalekit/v1/domains/domains_pb2_grpc.py index 2f24e82..ee2d73a 100644 --- a/scalekit/v1/domains/domains_pb2_grpc.py +++ b/scalekit/v1/domains/domains_pb2_grpc.py @@ -3,7 +3,6 @@ import grpc from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 -from google.protobuf import wrappers_pb2 as google_dot_protobuf_dot_wrappers__pb2 from scalekit.v1.domains import domains_pb2 as scalekit_dot_v1_dot_domains_dot_domains__pb2 @@ -29,7 +28,7 @@ def __init__(self, channel): self.VerifyDomain = channel.unary_unary( '/scalekit.v1.domains.DomainService/VerifyDomain', request_serializer=scalekit_dot_v1_dot_domains_dot_domains__pb2.VerifyDomainRequest.SerializeToString, - response_deserializer=google_dot_protobuf_dot_wrappers__pb2.BoolValue.FromString, + response_deserializer=scalekit_dot_v1_dot_domains_dot_domains__pb2.VerifyDomainResponse.FromString, ) self.GetDomain = channel.unary_unary( '/scalekit.v1.domains.DomainService/GetDomain', @@ -114,7 +113,7 @@ def add_DomainServiceServicer_to_server(servicer, server): 'VerifyDomain': grpc.unary_unary_rpc_method_handler( servicer.VerifyDomain, request_deserializer=scalekit_dot_v1_dot_domains_dot_domains__pb2.VerifyDomainRequest.FromString, - response_serializer=google_dot_protobuf_dot_wrappers__pb2.BoolValue.SerializeToString, + response_serializer=scalekit_dot_v1_dot_domains_dot_domains__pb2.VerifyDomainResponse.SerializeToString, ), 'GetDomain': grpc.unary_unary_rpc_method_handler( servicer.GetDomain, @@ -193,7 +192,7 @@ def VerifyDomain(request, metadata=None): return grpc.experimental.unary_unary(request, target, '/scalekit.v1.domains.DomainService/VerifyDomain', scalekit_dot_v1_dot_domains_dot_domains__pb2.VerifyDomainRequest.SerializeToString, - google_dot_protobuf_dot_wrappers__pb2.BoolValue.FromString, + scalekit_dot_v1_dot_domains_dot_domains__pb2.VerifyDomainResponse.FromString, options, channel_credentials, insecure, call_credentials, compression, wait_for_ready, timeout, metadata) diff --git a/scalekit/v1/environments/environments_pb2.py b/scalekit/v1/environments/environments_pb2.py index 648aae5..4807ef5 100644 --- a/scalekit/v1/environments/environments_pb2.py +++ b/scalekit/v1/environments/environments_pb2.py @@ -29,7 +29,7 @@ from scalekit.v1.organizations import organizations_pb2 as scalekit_dot_v1_dot_organizations_dot_organizations__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\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\x1egoogle/protobuf/wrappers.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\x1a-scalekit/v1/organizations/organizations.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\"\xb1\x03\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\x12\xaf\x01\n\x13\x61uthentication_mode\x18\x08 \x01(\x0e\x32\'.scalekit.v1.commons.AuthenticationModeBP\x92\x41M2KThe authentication mode for the environment. The default is FULL_STACK_AUTHH\x02R\x12\x61uthenticationMode\x88\x01\x01\x42\x0e\n\x0c_region_codeB\x07\n\x05_typeB\x16\n\x14_authentication_modeJ\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\"\x9d\x04\n\x0ePortalSettings\x12\x98\x01\n\x0f\x63ustom_branding\x18\x01 \x01(\x08\x42o\x92\x41l2dIndicates whether custom portal branding is enabled for this workspace based on billing subscriptionJ\x04trueR\x0e\x63ustomBranding\x12\xc3\x01\n\x17new_self_serve_sso_scim\x18\x02 \x01(\x08\x42\x8c\x01\x92\x41\x88\x01\x32\x7fIndicates whether the new self-serve SSO/SCIM flow should be shown in the customer portal (rollout-driven, not billing-derived)J\x05\x66\x61lseR\x13newSelfServeSsoScim\x12\xa9\x01\n\x12\x65nable_conn_delete\x18\x03 \x01(\x08\x42{\x92\x41x2oIndicates whether connection deletion is enabled for this environment (rollout-driven by environment allowlist)J\x05\x66\x61lseR\x10\x65nableConnDelete\"\xe6\x01\n\x1eGetPortalCustomizationResponse\x12$\n\renvironmentId\x18\x01 \x01(\tR\renvironmentId\x12S\n\x16\x63ustomization_settings\x18\x02 \x01(\x0b\x32\x17.google.protobuf.StructB\x03\xe0\x41\x01R\x15\x63ustomizationSettings\x12I\n\x08settings\x18\x03 \x01(\x0b\x32(.scalekit.v1.environments.PortalSettingsB\x03\xe0\x41\x03R\x08settings\"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\"2\n\x17\x45nableFSAFeatureRequest\x12\x17\n\x02id\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x18 R\x02id\":\n\x18\x44isableFSAFeatureRequest\x12\x1e\n\x02id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x02id\"7\n\x12GetFeaturesRequest\x12!\n\x02id\x18\x01 \x01(\tB\x11\xbaH\x0er\t\x10\x01\x18 :\x03\x65nv\xd0\x01\x01R\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\"p\n\'GetHostScopedPublicFeatureFlagsResponse\x12\x45\n\x05\x66lags\x18\x01 \x03(\x0b\x32/.scalekit.v1.environments.PublicHostFeatureFlagR\x05\x66lags\"\x9f\x01\n\x15PublicHostFeatureFlag\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12,\n\x05value\x18\x02 \x01(\x0b\x32\x16.google.protobuf.ValueR\x05value\x12\x18\n\x07variant\x18\x03 \x01(\tR\x07variant\x12\x16\n\x06reason\x18\x04 \x01(\tR\x06reason\x12\x14\n\x05\x65rror\x18\x05 \x01(\tR\x05\x65rror\"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\"\xff\x08\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\x12[\n\x18\x61\x63\x63\x65ss_token_expiry_unit\x18\n \x01(\x0e\x32\".scalekit.v1.environments.TimeUnitR\x15\x61\x63\x63\x65ssTokenExpiryUnit\x12\x65\n\x1d\x61\x62solute_session_timeout_unit\x18\x0b \x01(\x0e\x32\".scalekit.v1.environments.TimeUnitR\x1a\x61\x62soluteSessionTimeoutUnit\x12]\n\x19idle_session_timeout_unit\x18\x0c \x01(\x0e\x32\".scalekit.v1.environments.TimeUnitR\x16idleSessionTimeoutUnit\"\xa5\x07\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*\x06\x18\xc0\xd1\x02(\x01R\x10invitationExpiry\x12_\n\x1e\x62lock_disposable_email_domains\x18\t \x01(\x0b\x32\x1a.google.protobuf.BoolValueR\x1b\x62lockDisposableEmailDomains\x12W\n\x1a\x62lock_public_email_domains\x18\n \x01(\x0b\x32\x1a.google.protobuf.BoolValueR\x17\x62lockPublicEmailDomains\x12X\n\x1bsync_user_profile_on_signin\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.BoolValueR\x17syncUserProfileOnSignin\":\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\"\xc5\x01\n\x10ResourceMetadata\x12K\n\x04type\x18\x01 \x01(\x0e\x32\x37.scalekit.v1.environments.ResourceMetadata.ResourceTypeR\x04type\x12 \n\x0bidentifiers\x18\x02 \x03(\tR\x0bidentifiers\"B\n\x0cResourceType\x12\x10\n\x0corganization\x10\x00\x12\x0e\n\nconnection\x10\x01\x12\x10\n\x0c\x61uth_request\x10\x02\"c\n\x17ScalekitResourceRequest\x12H\n\tresources\x18\x01 \x03(\x0b\x32*.scalekit.v1.environments.ResourceMetadataR\tresources\"\xd2\x01\n\x18ScalekitResourceResponse\x12_\n\tresources\x18\x01 \x03(\x0b\x32\x41.scalekit.v1.environments.ScalekitResourceResponse.ResourcesEntryR\tresources\x1aU\n\x0eResourcesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12-\n\x05value\x18\x02 \x01(\x0b\x32\x17.google.protobuf.StructR\x05value:\x02\x38\x01\"\x18\n\x16PortalBootstrapRequest\"\xbe\x01\n\x1cPortalCustomizationBootstrap\x12S\n\x16\x63ustomization_settings\x18\x01 \x01(\x0b\x32\x17.google.protobuf.StructB\x03\xe0\x41\x01R\x15\x63ustomizationSettings\x12I\n\x08settings\x18\x02 \x01(\x0b\x32(.scalekit.v1.environments.PortalSettingsB\x03\xe0\x41\x03R\x08settings\"\xed\x02\n\x17PortalBootstrapResponse\x12M\n\x07session\x18\x01 \x01(\x0b\x32\x33.scalekit.v1.environments.GetCurrentSessionResponseR\x07session\x12k\n\x15portal_customizations\x18\x02 \x01(\x0b\x32\x36.scalekit.v1.environments.PortalCustomizationBootstrapR\x14portalCustomizations\x12K\n\x0corganization\x18\x03 \x01(\x0b\x32\'.scalekit.v1.organizations.OrganizationR\x0corganization\x12I\n\x0b\x63onnections\x18\x04 \x03(\x0b\x32\'.scalekit.v1.connections.ListConnectionR\x0b\x63onnections\"\x82\x01\n\x12\x41gentActionsConfig\x12l\n\x10user_verify_mode\x18\x01 \x01(\x0e\x32\x38.scalekit.v1.environments.ConnectedAccountUserVerifyModeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x0euserVerifyMode\"\xa6\x01\n\x1f\x43reateAgentActionsConfigRequest\x12\x1e\n\x02id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x02id\x12\x63\n\x14\x61gent_actions_config\x18\x02 \x01(\x0b\x32,.scalekit.v1.environments.AgentActionsConfigB\x03\xe0\x41\x02R\x12\x61gentActionsConfig\"\x87\x01\n CreateAgentActionsConfigResponse\x12\x63\n\x14\x61gent_actions_config\x18\x01 \x01(\x0b\x32,.scalekit.v1.environments.AgentActionsConfigB\x03\xe0\x41\x03R\x12\x61gentActionsConfig\">\n\x1cGetAgentActionsConfigRequest\x12\x1e\n\x02id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x02id\"\x84\x01\n\x1dGetAgentActionsConfigResponse\x12\x63\n\x14\x61gent_actions_config\x18\x01 \x01(\x0b\x32,.scalekit.v1.environments.AgentActionsConfigB\x03\xe0\x41\x03R\x12\x61gentActionsConfig\"\xa6\x01\n\x1fUpdateAgentActionsConfigRequest\x12\x1e\n\x02id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x02id\x12\x63\n\x14\x61gent_actions_config\x18\x02 \x01(\x0b\x32,.scalekit.v1.environments.AgentActionsConfigB\x03\xe0\x41\x02R\x12\x61gentActionsConfig\"\x87\x01\n UpdateAgentActionsConfigResponse\x12\x63\n\x14\x61gent_actions_config\x18\x01 \x01(\x0b\x32,.scalekit.v1.environments.AgentActionsConfigB\x03\xe0\x41\x03R\x12\x61gentActionsConfig*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*O\n\x08TimeUnit\x12!\n\x1dSESSION_TIME_UNIT_UNSPECIFIED\x10\x00\x12\x0b\n\x07MINUTES\x10\x01\x12\t\n\x05HOURS\x10\x02\x12\x08\n\x04\x44\x41YS\x10\x03*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*\xb1\x01\n\x1e\x43onnectedAccountUserVerifyMode\x12\x32\n.CONNECTED_ACCOUNT_USER_VERIFY_MODE_UNSPECIFIED\x10\x00\x12\x19\n\x15USER_VERIFY_MODE_NONE\x10\x01\x12\x18\n\x14USER_VERIFY_MODE_B2B\x10\x02\x12&\n\"USER_VERIFY_MODE_SCALEKIT_PLATFORM\x10\x03\x32\xc9\x42\n\x12\x45nvironmentService\x12\xbc\x01\n\x11\x43reateEnvironment\x12\x32.scalekit.v1.environments.CreateEnvironmentRequest\x1a\x33.scalekit.v1.environments.CreateEnvironmentResponse\">\x82\xb5\x18\x02\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\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\x18@\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\x18@\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\x18@\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\x18\x44\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\x18\x44\x82\xd3\xe4\x93\x02)\"$/api/v1/environments/{id}/dns:verify:\x01*\x12\xc9\x01\n\x12\x43reateCustomDomain\x12\x33.scalekit.v1.environments.CreateCustomDomainRequest\x1a\x34.scalekit.v1.environments.CreateCustomDomainResponse\"H\x82\xb5\x18\x02\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02-\"(/api/v1/environments/{id}/custom-domains:\x01*\x12\xcc\x01\n\x17\x43heckCustomDomainStatus\x12/.scalekit.v1.environments.GetEnvironmentRequest\x1a\x30.scalekit.v1.environments.GetEnvironmentResponse\"N\x82\xb5\x18\x02\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x33\"./api/v1/environments/{id}/custom-domains:check:\x01*\x12\xe7\x01\n\x1aGenerateNewSamlCertificate\x12\x38.scalekit.v1.environments.GenerateSamlCertificateRequest\x1a\x39.scalekit.v1.environments.GenerateSamlCertificateResponse\"T\x82\xb5\x18\x02\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x39\"4/api/v1/environments/{id}/saml-certificates:generate:\x01*\x12\xc0\x02\n\x19UpdatePortalCustomization\x12:.scalekit.v1.environments.UpdatePortalCustomizationRequest\x1a;.scalekit.v1.environments.UpdatePortalCustomizationResponse\"\xa9\x01\x82\xb5\x18\x02\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\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\xe8\x01\n\x16GetPortalCustomization\x12\x37.scalekit.v1.environments.GetPortalCustomizationRequest\x1a\x38.scalekit.v1.environments.GetPortalCustomizationResponse\"[\x82\xb5\x18\x02\x18`\x82\xd3\xe4\x93\x02O\x12\x1d/api/v1/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\x18@\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\x18@\x82\xd3\xe4\x93\x02.\x1a\"/api/v1/environments/{id}/features:\x08\x66\x65\x61tures\x12\xcb\x01\n\x10\x45nableFSAFeature\x12\x31.scalekit.v1.environments.EnableFSAFeatureRequest\x1a\x16.google.protobuf.Empty\"l\x82\xb5\x18\x02\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02Q\"-/api/v1/environments/{id}/features/fsa/enable:\x01*Z\x1d\"\x1b/api/v1/features/fsa/enable\x12\x81\x01\n\x11\x44isableFSAFeature\x12\x16.google.protobuf.Empty\x1a\x16.google.protobuf.Empty\"<\x82\xb5\x18\x02\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02!\"\x1c/api/v1/features/fsa/disable:\x01*\x12\x9d\x01\n\rEnableFeature\x12..scalekit.v1.environments.EnableFeatureRequest\x1a\x16.google.protobuf.Empty\"D\x82\xb5\x18\x02\x18`\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\x18`\x82\xd3\xe4\x93\x02\x39\"7/api/v1/environments/{id}/features/{feature_id}:disable\x12\x8a\x01\n\x0bGetFeatures\x12,.scalekit.v1.environments.GetFeaturesRequest\x1a-.scalekit.v1.environments.GetFeaturesResponse\"\x1e\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02\x12\x12\x10/api/v1/features\x12\xb9\x04\n\x1fGetHostScopedPublicFeatureFlags\x12\x16.google.protobuf.Empty\x1a\x41.scalekit.v1.environments.GetHostScopedPublicFeatureFlagsResponse\"\xba\x03\x92\x41\xf2\x02\n\x0c\x45nvironments\x12%List host-scoped public feature flags\x1a\xc5\x01Resolves the environment from the request host only (no environment path, query, or header). Returns allowlisted OpenFeature values; no bearer token. 404 if the host does not map to an environment.J2\n\x03\x32\x30\x30\x12+\n)Allowlisted flag keys and resolved valuesJ?\n\x03\x34\x30\x34\x12\x38\n6No environment resolved from host or workspace UI host\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02)\x12\'/api/v1/environments:publicFeatureFlags\x12\x84\x02\n CreateEnvironmentSessionSettings\x12\x41.scalekit.v1.environments.CreateEnvironmentSessionSettingsRequest\x1a\x42.scalekit.v1.environments.CreateEnvironmentSessionSettingsResponse\"Y\x82\xb5\x18\x02\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02>\"*/api/v1/environments/{id}/session-settings:\x10session_settings\x12\x88\x02\n\x1f\x43reateEnvironmentUserManagement\x12@.scalekit.v1.environments.CreateEnvironmentUserManagementRequest\x1a\x41.scalekit.v1.environments.CreateEnvironmentUserManagementResponse\"`\x82\xb5\x18\x02\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\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\x84\x02\n UpdateEnvironmentSessionSettings\x12\x41.scalekit.v1.environments.UpdateEnvironmentSessionSettingsRequest\x1a\x42.scalekit.v1.environments.UpdateEnvironmentSessionSettingsResponse\"Y\x82\xb5\x18\x02\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02>2*/api/v1/environments/{id}/session-settings:\x10session_settings\x12\x88\x02\n\x1fUpdateEnvironmentUserManagement\x12@.scalekit.v1.environments.UpdateEnvironmentUserManagementRequest\x1a\x41.scalekit.v1.environments.UpdateEnvironmentUserManagementResponse\"`\x82\xb5\x18\x02\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x45\x32\x32/api/v1/environments/{id}/settings/user-management:\x0fuser_management\x12\x86\x04\n\x18\x43reateAgentActionsConfig\x12\x39.scalekit.v1.environments.CreateAgentActionsConfigRequest\x1a:.scalekit.v1.environments.CreateAgentActionsConfigResponse\"\xf2\x02\x92\x41\x8b\x02\n\x0c\x45nvironments\x12\x1b\x43reate agent actions config\x1a:Creates the agent actions configuration for an environmentJ2\n\x03\x32\x30\x30\x12+\n)Agent actions config created successfullyJN\n\x03\x34\x30\x30\x12G\nEInvalid request - missing or invalid fields, or config already existsJ\x1e\n\x03\x34\x30\x34\x12\x17\n\x15\x45nvironment not found\x82\xb5\x18\x02\x18@\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02H\"0/api/v1/environments/{id}/settings/agent-actions:\x14\x61gent_actions_config\x12\xa3\x03\n\x15GetAgentActionsConfig\x12\x36.scalekit.v1.environments.GetAgentActionsConfigRequest\x1a\x37.scalekit.v1.environments.GetAgentActionsConfigResponse\"\x98\x02\x92\x41\xc7\x01\n\x0c\x45nvironments\x12\x18Get agent actions config\x1a=Retrieves the agent actions configuration for an environment.J4\n\x03\x32\x30\x30\x12-\n+Agent actions config retrieved successfullyJ(\n\x03\x34\x30\x34\x12!\n\x1f\x45nvironment or config not found\x82\xb5\x18\x02\x18@\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x32\x12\x30/api/v1/environments/{id}/settings/agent-actions\x12\x96\x04\n\x18UpdateAgentActionsConfig\x12\x39.scalekit.v1.environments.UpdateAgentActionsConfigRequest\x1a:.scalekit.v1.environments.UpdateAgentActionsConfigResponse\"\x82\x03\x92\x41\x9b\x02\n\x0c\x45nvironments\x12\x1bUpdate agent actions config\x1a:Updates the agent actions configuration for an environmentJ2\n\x03\x32\x30\x30\x12+\n)Agent actions config updated successfullyJ^\n\x03\x34\x30\x30\x12W\nUInvalid request - missing or invalid fields, or mode not allowed for this environmentJ\x1e\n\x03\x34\x30\x34\x12\x17\n\x15\x45nvironment not found\x82\xb5\x18\x02\x18@\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02H20/api/v1/environments/{id}/settings/agent-actions:\x14\x61gent_actions_config\x12\xa5\x01\n\nGetContext\x12+.scalekit.v1.environments.GetContextRequest\x1a,.scalekit.v1.environments.GetContextResponse\"<\x82\xb5\x18\x02\x18@\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\x18@\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:me\x12\xb1\x01\n\x14GetScalekitResources\x12\x31.scalekit.v1.environments.ScalekitResourceRequest\x1a\x32.scalekit.v1.environments.ScalekitResourceResponse\"2\x82\xb5\x18\x02\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x17\"\x12/api/v1/fetch:bulk:\x01*\x12\xd0\x03\n\x0fPortalBootstrap\x12\x30.scalekit.v1.environments.PortalBootstrapRequest\x1a\x31.scalekit.v1.environments.PortalBootstrapResponse\"\xd7\x02\x92\x41\xad\x02\n\x06Portal\x12\x1eRetrieve portal bootstrap data\x1a\x97\x01Returns all data needed to initialize the customer portal in a single request, combining session, portal customizations, organization, and connections.J5\n\x03\x32\x30\x30\x12.\n,Successfully retrieved portal bootstrap dataJ2\n\x03\x34\x30\x31\x12+\n)Unauthorized - invalid or expired session\x82\xb5\x18\x02\x18`\x82\xd3\xe4\x93\x02\x1a\x12\x18/api/v1/portal/bootstrapB8Z6github.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\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\x1egoogle/protobuf/wrappers.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\x1a-scalekit/v1/organizations/organizations.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\"\xb1\x03\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\x12\xaf\x01\n\x13\x61uthentication_mode\x18\x08 \x01(\x0e\x32\'.scalekit.v1.commons.AuthenticationModeBP\x92\x41M2KThe authentication mode for the environment. The default is FULL_STACK_AUTHH\x02R\x12\x61uthenticationMode\x88\x01\x01\x42\x0e\n\x0c_region_codeB\x07\n\x05_typeB\x16\n\x14_authentication_modeJ\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\"\x9d\x04\n\x0ePortalSettings\x12\x98\x01\n\x0f\x63ustom_branding\x18\x01 \x01(\x08\x42o\x92\x41l2dIndicates whether custom portal branding is enabled for this workspace based on billing subscriptionJ\x04trueR\x0e\x63ustomBranding\x12\xc3\x01\n\x17new_self_serve_sso_scim\x18\x02 \x01(\x08\x42\x8c\x01\x92\x41\x88\x01\x32\x7fIndicates whether the new self-serve SSO/SCIM flow should be shown in the customer portal (rollout-driven, not billing-derived)J\x05\x66\x61lseR\x13newSelfServeSsoScim\x12\xa9\x01\n\x12\x65nable_conn_delete\x18\x03 \x01(\x08\x42{\x92\x41x2oIndicates whether connection deletion is enabled for this environment (rollout-driven by environment allowlist)J\x05\x66\x61lseR\x10\x65nableConnDelete\"\xe6\x01\n\x1eGetPortalCustomizationResponse\x12$\n\renvironmentId\x18\x01 \x01(\tR\renvironmentId\x12S\n\x16\x63ustomization_settings\x18\x02 \x01(\x0b\x32\x17.google.protobuf.StructB\x03\xe0\x41\x01R\x15\x63ustomizationSettings\x12I\n\x08settings\x18\x03 \x01(\x0b\x32(.scalekit.v1.environments.PortalSettingsB\x03\xe0\x41\x03R\x08settings\"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\"2\n\x17\x45nableFSAFeatureRequest\x12\x17\n\x02id\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x18 R\x02id\":\n\x18\x44isableFSAFeatureRequest\x12\x1e\n\x02id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x02id\"7\n\x12GetFeaturesRequest\x12!\n\x02id\x18\x01 \x01(\tB\x11\xbaH\x0er\t\x10\x01\x18 :\x03\x65nv\xd0\x01\x01R\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\"p\n\'GetHostScopedPublicFeatureFlagsResponse\x12\x45\n\x05\x66lags\x18\x01 \x03(\x0b\x32/.scalekit.v1.environments.PublicHostFeatureFlagR\x05\x66lags\"\x9f\x01\n\x15PublicHostFeatureFlag\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12,\n\x05value\x18\x02 \x01(\x0b\x32\x16.google.protobuf.ValueR\x05value\x12\x18\n\x07variant\x18\x03 \x01(\tR\x07variant\x12\x16\n\x06reason\x18\x04 \x01(\tR\x06reason\x12\x14\n\x05\x65rror\x18\x05 \x01(\tR\x05\x65rror\"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\"\xff\x08\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\x12[\n\x18\x61\x63\x63\x65ss_token_expiry_unit\x18\n \x01(\x0e\x32\".scalekit.v1.environments.TimeUnitR\x15\x61\x63\x63\x65ssTokenExpiryUnit\x12\x65\n\x1d\x61\x62solute_session_timeout_unit\x18\x0b \x01(\x0e\x32\".scalekit.v1.environments.TimeUnitR\x1a\x61\x62soluteSessionTimeoutUnit\x12]\n\x19idle_session_timeout_unit\x18\x0c \x01(\x0e\x32\".scalekit.v1.environments.TimeUnitR\x16idleSessionTimeoutUnit\"\xa5\x07\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*\x06\x18\xc0\xd1\x02(\x01R\x10invitationExpiry\x12_\n\x1e\x62lock_disposable_email_domains\x18\t \x01(\x0b\x32\x1a.google.protobuf.BoolValueR\x1b\x62lockDisposableEmailDomains\x12W\n\x1a\x62lock_public_email_domains\x18\n \x01(\x0b\x32\x1a.google.protobuf.BoolValueR\x17\x62lockPublicEmailDomains\x12X\n\x1bsync_user_profile_on_signin\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.BoolValueR\x17syncUserProfileOnSignin\":\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\"\x93\x03\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\x12\x35\n\x14\x63onnected_account_id\x18\x06 \x01(\tH\x03R\x12\x63onnectedAccountId\x88\x01\x01\x42\x11\n\x0f_session_expiryB\x12\n\x10_organization_idB\x08\n\x06_emailB\x17\n\x15_connected_account_id\"\xc5\x01\n\x10ResourceMetadata\x12K\n\x04type\x18\x01 \x01(\x0e\x32\x37.scalekit.v1.environments.ResourceMetadata.ResourceTypeR\x04type\x12 \n\x0bidentifiers\x18\x02 \x03(\tR\x0bidentifiers\"B\n\x0cResourceType\x12\x10\n\x0corganization\x10\x00\x12\x0e\n\nconnection\x10\x01\x12\x10\n\x0c\x61uth_request\x10\x02\"c\n\x17ScalekitResourceRequest\x12H\n\tresources\x18\x01 \x03(\x0b\x32*.scalekit.v1.environments.ResourceMetadataR\tresources\"\xd2\x01\n\x18ScalekitResourceResponse\x12_\n\tresources\x18\x01 \x03(\x0b\x32\x41.scalekit.v1.environments.ScalekitResourceResponse.ResourcesEntryR\tresources\x1aU\n\x0eResourcesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12-\n\x05value\x18\x02 \x01(\x0b\x32\x17.google.protobuf.StructR\x05value:\x02\x38\x01\"\x18\n\x16PortalBootstrapRequest\"\xbe\x01\n\x1cPortalCustomizationBootstrap\x12S\n\x16\x63ustomization_settings\x18\x01 \x01(\x0b\x32\x17.google.protobuf.StructB\x03\xe0\x41\x01R\x15\x63ustomizationSettings\x12I\n\x08settings\x18\x02 \x01(\x0b\x32(.scalekit.v1.environments.PortalSettingsB\x03\xe0\x41\x03R\x08settings\"\xed\x02\n\x17PortalBootstrapResponse\x12M\n\x07session\x18\x01 \x01(\x0b\x32\x33.scalekit.v1.environments.GetCurrentSessionResponseR\x07session\x12k\n\x15portal_customizations\x18\x02 \x01(\x0b\x32\x36.scalekit.v1.environments.PortalCustomizationBootstrapR\x14portalCustomizations\x12K\n\x0corganization\x18\x03 \x01(\x0b\x32\'.scalekit.v1.organizations.OrganizationR\x0corganization\x12I\n\x0b\x63onnections\x18\x04 \x03(\x0b\x32\'.scalekit.v1.connections.ListConnectionR\x0b\x63onnections\"\xa7\x03\n\x12\x41gentActionsConfig\x12l\n\x10user_verify_mode\x18\x01 \x01(\x0e\x32\x38.scalekit.v1.environments.ConnectedAccountUserVerifyModeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x0euserVerifyMode\x12\x87\x02\n\x16\x64\x65tailed_error_logging\x18\x02 \x01(\x08\x42\xcb\x01\x92\x41\xc7\x01\x32\xc4\x01When true, full error messages from provider failures are captured in tool-call logs. When false (default), only the error code is retained. Omit the field to leave the existing setting unchanged.H\x00R\x14\x64\x65tailedErrorLogging\x88\x01\x01\x42\x19\n\x17_detailed_error_logging\"\xa6\x01\n\x1f\x43reateAgentActionsConfigRequest\x12\x1e\n\x02id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x02id\x12\x63\n\x14\x61gent_actions_config\x18\x02 \x01(\x0b\x32,.scalekit.v1.environments.AgentActionsConfigB\x03\xe0\x41\x02R\x12\x61gentActionsConfig\"\x87\x01\n CreateAgentActionsConfigResponse\x12\x63\n\x14\x61gent_actions_config\x18\x01 \x01(\x0b\x32,.scalekit.v1.environments.AgentActionsConfigB\x03\xe0\x41\x03R\x12\x61gentActionsConfig\">\n\x1cGetAgentActionsConfigRequest\x12\x1e\n\x02id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x02id\"\x84\x01\n\x1dGetAgentActionsConfigResponse\x12\x63\n\x14\x61gent_actions_config\x18\x01 \x01(\x0b\x32,.scalekit.v1.environments.AgentActionsConfigB\x03\xe0\x41\x03R\x12\x61gentActionsConfig\"\xa6\x01\n\x1fUpdateAgentActionsConfigRequest\x12\x1e\n\x02id\x18\x01 \x01(\tB\x0e\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\x02id\x12\x63\n\x14\x61gent_actions_config\x18\x02 \x01(\x0b\x32,.scalekit.v1.environments.AgentActionsConfigB\x03\xe0\x41\x02R\x12\x61gentActionsConfig\"\x87\x01\n UpdateAgentActionsConfigResponse\x12\x63\n\x14\x61gent_actions_config\x18\x01 \x01(\x0b\x32,.scalekit.v1.environments.AgentActionsConfigB\x03\xe0\x41\x03R\x12\x61gentActionsConfig*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*O\n\x08TimeUnit\x12!\n\x1dSESSION_TIME_UNIT_UNSPECIFIED\x10\x00\x12\x0b\n\x07MINUTES\x10\x01\x12\t\n\x05HOURS\x10\x02\x12\x08\n\x04\x44\x41YS\x10\x03*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*\xb1\x01\n\x1e\x43onnectedAccountUserVerifyMode\x12\x32\n.CONNECTED_ACCOUNT_USER_VERIFY_MODE_UNSPECIFIED\x10\x00\x12\x19\n\x15USER_VERIFY_MODE_NONE\x10\x01\x12\x18\n\x14USER_VERIFY_MODE_B2B\x10\x02\x12&\n\"USER_VERIFY_MODE_SCALEKIT_PLATFORM\x10\x03\x32\xcb\x42\n\x12\x45nvironmentService\x12\xbc\x01\n\x11\x43reateEnvironment\x12\x32.scalekit.v1.environments.CreateEnvironmentRequest\x1a\x33.scalekit.v1.environments.CreateEnvironmentResponse\">\x82\xb5\x18\x02\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\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\x18@\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\x18@\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\x18@\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\x18\x44\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\x18\x44\x82\xd3\xe4\x93\x02)\"$/api/v1/environments/{id}/dns:verify:\x01*\x12\xc9\x01\n\x12\x43reateCustomDomain\x12\x33.scalekit.v1.environments.CreateCustomDomainRequest\x1a\x34.scalekit.v1.environments.CreateCustomDomainResponse\"H\x82\xb5\x18\x02\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02-\"(/api/v1/environments/{id}/custom-domains:\x01*\x12\xcc\x01\n\x17\x43heckCustomDomainStatus\x12/.scalekit.v1.environments.GetEnvironmentRequest\x1a\x30.scalekit.v1.environments.GetEnvironmentResponse\"N\x82\xb5\x18\x02\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x33\"./api/v1/environments/{id}/custom-domains:check:\x01*\x12\xe7\x01\n\x1aGenerateNewSamlCertificate\x12\x38.scalekit.v1.environments.GenerateSamlCertificateRequest\x1a\x39.scalekit.v1.environments.GenerateSamlCertificateResponse\"T\x82\xb5\x18\x02\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x39\"4/api/v1/environments/{id}/saml-certificates:generate:\x01*\x12\xc0\x02\n\x19UpdatePortalCustomization\x12:.scalekit.v1.environments.UpdatePortalCustomizationRequest\x1a;.scalekit.v1.environments.UpdatePortalCustomizationResponse\"\xa9\x01\x82\xb5\x18\x02\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\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\xe9\x01\n\x16GetPortalCustomization\x12\x37.scalekit.v1.environments.GetPortalCustomizationRequest\x1a\x38.scalekit.v1.environments.GetPortalCustomizationResponse\"\\\x82\xb5\x18\x03\x18\xe0\x01\x82\xd3\xe4\x93\x02O\x12\x1d/api/v1/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\x18@\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\x18@\x82\xd3\xe4\x93\x02.\x1a\"/api/v1/environments/{id}/features:\x08\x66\x65\x61tures\x12\xcb\x01\n\x10\x45nableFSAFeature\x12\x31.scalekit.v1.environments.EnableFSAFeatureRequest\x1a\x16.google.protobuf.Empty\"l\x82\xb5\x18\x02\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02Q\"-/api/v1/environments/{id}/features/fsa/enable:\x01*Z\x1d\"\x1b/api/v1/features/fsa/enable\x12\x81\x01\n\x11\x44isableFSAFeature\x12\x16.google.protobuf.Empty\x1a\x16.google.protobuf.Empty\"<\x82\xb5\x18\x02\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02!\"\x1c/api/v1/features/fsa/disable:\x01*\x12\x9d\x01\n\rEnableFeature\x12..scalekit.v1.environments.EnableFeatureRequest\x1a\x16.google.protobuf.Empty\"D\x82\xb5\x18\x02\x18`\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\x18`\x82\xd3\xe4\x93\x02\x39\"7/api/v1/environments/{id}/features/{feature_id}:disable\x12\x8a\x01\n\x0bGetFeatures\x12,.scalekit.v1.environments.GetFeaturesRequest\x1a-.scalekit.v1.environments.GetFeaturesResponse\"\x1e\x82\xb5\x18\x02\x18T\x82\xd3\xe4\x93\x02\x12\x12\x10/api/v1/features\x12\xb9\x04\n\x1fGetHostScopedPublicFeatureFlags\x12\x16.google.protobuf.Empty\x1a\x41.scalekit.v1.environments.GetHostScopedPublicFeatureFlagsResponse\"\xba\x03\x92\x41\xf2\x02\n\x0c\x45nvironments\x12%List host-scoped public feature flags\x1a\xc5\x01Resolves the environment from the request host only (no environment path, query, or header). Returns allowlisted OpenFeature values; no bearer token. 404 if the host does not map to an environment.J2\n\x03\x32\x30\x30\x12+\n)Allowlisted flag keys and resolved valuesJ?\n\x03\x34\x30\x34\x12\x38\n6No environment resolved from host or workspace UI host\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02)\x12\'/api/v1/environments:publicFeatureFlags\x12\x84\x02\n CreateEnvironmentSessionSettings\x12\x41.scalekit.v1.environments.CreateEnvironmentSessionSettingsRequest\x1a\x42.scalekit.v1.environments.CreateEnvironmentSessionSettingsResponse\"Y\x82\xb5\x18\x02\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02>\"*/api/v1/environments/{id}/session-settings:\x10session_settings\x12\x88\x02\n\x1f\x43reateEnvironmentUserManagement\x12@.scalekit.v1.environments.CreateEnvironmentUserManagementRequest\x1a\x41.scalekit.v1.environments.CreateEnvironmentUserManagementResponse\"`\x82\xb5\x18\x02\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\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\x84\x02\n UpdateEnvironmentSessionSettings\x12\x41.scalekit.v1.environments.UpdateEnvironmentSessionSettingsRequest\x1a\x42.scalekit.v1.environments.UpdateEnvironmentSessionSettingsResponse\"Y\x82\xb5\x18\x02\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02>2*/api/v1/environments/{id}/session-settings:\x10session_settings\x12\x88\x02\n\x1fUpdateEnvironmentUserManagement\x12@.scalekit.v1.environments.UpdateEnvironmentUserManagementRequest\x1a\x41.scalekit.v1.environments.UpdateEnvironmentUserManagementResponse\"`\x82\xb5\x18\x02\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x45\x32\x32/api/v1/environments/{id}/settings/user-management:\x0fuser_management\x12\x86\x04\n\x18\x43reateAgentActionsConfig\x12\x39.scalekit.v1.environments.CreateAgentActionsConfigRequest\x1a:.scalekit.v1.environments.CreateAgentActionsConfigResponse\"\xf2\x02\x92\x41\x8b\x02\n\x0c\x45nvironments\x12\x1b\x43reate agent actions config\x1a:Creates the agent actions configuration for an environmentJ2\n\x03\x32\x30\x30\x12+\n)Agent actions config created successfullyJN\n\x03\x34\x30\x30\x12G\nEInvalid request - missing or invalid fields, or config already existsJ\x1e\n\x03\x34\x30\x34\x12\x17\n\x15\x45nvironment not found\x82\xb5\x18\x02\x18@\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02H\"0/api/v1/environments/{id}/settings/agent-actions:\x14\x61gent_actions_config\x12\xa3\x03\n\x15GetAgentActionsConfig\x12\x36.scalekit.v1.environments.GetAgentActionsConfigRequest\x1a\x37.scalekit.v1.environments.GetAgentActionsConfigResponse\"\x98\x02\x92\x41\xc7\x01\n\x0c\x45nvironments\x12\x18Get agent actions config\x1a=Retrieves the agent actions configuration for an environment.J4\n\x03\x32\x30\x30\x12-\n+Agent actions config retrieved successfullyJ(\n\x03\x34\x30\x34\x12!\n\x1f\x45nvironment or config not found\x82\xb5\x18\x02\x18@\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x32\x12\x30/api/v1/environments/{id}/settings/agent-actions\x12\x96\x04\n\x18UpdateAgentActionsConfig\x12\x39.scalekit.v1.environments.UpdateAgentActionsConfigRequest\x1a:.scalekit.v1.environments.UpdateAgentActionsConfigResponse\"\x82\x03\x92\x41\x9b\x02\n\x0c\x45nvironments\x12\x1bUpdate agent actions config\x1a:Updates the agent actions configuration for an environmentJ2\n\x03\x32\x30\x30\x12+\n)Agent actions config updated successfullyJ^\n\x03\x34\x30\x30\x12W\nUInvalid request - missing or invalid fields, or mode not allowed for this environmentJ\x1e\n\x03\x34\x30\x34\x12\x17\n\x15\x45nvironment not found\x82\xb5\x18\x02\x18@\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02H20/api/v1/environments/{id}/settings/agent-actions:\x14\x61gent_actions_config\x12\xa5\x01\n\nGetContext\x12+.scalekit.v1.environments.GetContextRequest\x1a,.scalekit.v1.environments.GetContextResponse\"<\x82\xb5\x18\x02\x18@\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\x18@\x82\xd3\xe4\x93\x02\x39\x1a./api/v1/environments/{environment_id}/contexts:\x07\x63ontext\x12\xef\x01\n\x11GetCurrentSession\x12\x32.scalekit.v1.environments.GetCurrentSessionRequest\x1a\x33.scalekit.v1.environments.GetCurrentSessionResponse\"q\x82\xb5\x18\x03\x18\xf0\x01\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:me\x12\xb1\x01\n\x14GetScalekitResources\x12\x31.scalekit.v1.environments.ScalekitResourceRequest\x1a\x32.scalekit.v1.environments.ScalekitResourceResponse\"2\x82\xb5\x18\x02\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x17\"\x12/api/v1/fetch:bulk:\x01*\x12\xd0\x03\n\x0fPortalBootstrap\x12\x30.scalekit.v1.environments.PortalBootstrapRequest\x1a\x31.scalekit.v1.environments.PortalBootstrapResponse\"\xd7\x02\x92\x41\xad\x02\n\x06Portal\x12\x1eRetrieve portal bootstrap data\x1a\x97\x01Returns all data needed to initialize the customer portal in a single request, combining session, portal customizations, organization, and connections.J5\n\x03\x32\x30\x30\x12.\n,Successfully retrieved portal bootstrap dataJ2\n\x03\x34\x30\x31\x12+\n)Unauthorized - invalid or expired session\x82\xb5\x18\x02\x18`\x82\xd3\xe4\x93\x02\x1a\x12\x18/api/v1/portal/bootstrapB8Z6github.com/scalekit-inc/scalekit/pkg/grpc/environmentsb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -163,6 +163,8 @@ _globals['_PORTALCUSTOMIZATIONBOOTSTRAP'].fields_by_name['settings']._serialized_options = b'\340A\003' _globals['_AGENTACTIONSCONFIG'].fields_by_name['user_verify_mode']._loaded_options = None _globals['_AGENTACTIONSCONFIG'].fields_by_name['user_verify_mode']._serialized_options = b'\272H\005\202\001\002\020\001' + _globals['_AGENTACTIONSCONFIG'].fields_by_name['detailed_error_logging']._loaded_options = None + _globals['_AGENTACTIONSCONFIG'].fields_by_name['detailed_error_logging']._serialized_options = b'\222A\307\0012\304\001When true, full error messages from provider failures are captured in tool-call logs. When false (default), only the error code is retained. Omit the field to leave the existing setting unchanged.' _globals['_CREATEAGENTACTIONSCONFIGREQUEST'].fields_by_name['id']._loaded_options = None _globals['_CREATEAGENTACTIONSCONFIGREQUEST'].fields_by_name['id']._serialized_options = b'\272H\013r\t\020\001\030 :\003env' _globals['_CREATEAGENTACTIONSCONFIGREQUEST'].fields_by_name['agent_actions_config']._loaded_options = None @@ -204,7 +206,7 @@ _globals['_ENVIRONMENTSERVICE'].methods_by_name['UpdatePortalCustomization']._loaded_options = None _globals['_ENVIRONMENTSERVICE'].methods_by_name['UpdatePortalCustomization']._serialized_options = b'\202\265\030\002\030D\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\002\215\001\032//api/v1/environments/{id}/portal_customizations:\026customization_settingsZB\032(/api/v1/environments/{id}/customizations:\026customization_settings' _globals['_ENVIRONMENTSERVICE'].methods_by_name['GetPortalCustomization']._loaded_options = None - _globals['_ENVIRONMENTSERVICE'].methods_by_name['GetPortalCustomization']._serialized_options = b'\202\265\030\002\030`\202\323\344\223\002O\022\035/api/v1/portal_customizationsZ.\022,/api/v1/environments/-/portal_customizations' + _globals['_ENVIRONMENTSERVICE'].methods_by_name['GetPortalCustomization']._serialized_options = b'\202\265\030\003\030\340\001\202\323\344\223\002O\022\035/api/v1/portal_customizationsZ.\022,/api/v1/environments/-/portal_customizations' _globals['_ENVIRONMENTSERVICE'].methods_by_name['CreateAssetUploadURL']._loaded_options = None _globals['_ENVIRONMENTSERVICE'].methods_by_name['CreateAssetUploadURL']._serialized_options = b'\202\265\030\002\030@\202\323\344\223\0021\"\037/api/v1/environments/{id}/asset:\016asset_settings' _globals['_ENVIRONMENTSERVICE'].methods_by_name['UpdateFeatures']._loaded_options = None @@ -244,25 +246,25 @@ _globals['_ENVIRONMENTSERVICE'].methods_by_name['UpdateContext']._loaded_options = None _globals['_ENVIRONMENTSERVICE'].methods_by_name['UpdateContext']._serialized_options = b'\202\265\030\002\030@\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\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['_ENVIRONMENTSERVICE'].methods_by_name['GetCurrentSession']._serialized_options = b'\202\265\030\003\030\360\001\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['_ENVIRONMENTSERVICE'].methods_by_name['GetScalekitResources']._loaded_options = None _globals['_ENVIRONMENTSERVICE'].methods_by_name['GetScalekitResources']._serialized_options = b'\202\265\030\002\030D\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\002\027\"\022/api/v1/fetch:bulk:\001*' _globals['_ENVIRONMENTSERVICE'].methods_by_name['PortalBootstrap']._loaded_options = None _globals['_ENVIRONMENTSERVICE'].methods_by_name['PortalBootstrap']._serialized_options = b'\222A\255\002\n\006Portal\022\036Retrieve portal bootstrap data\032\227\001Returns all data needed to initialize the customer portal in a single request, combining session, portal customizations, organization, and connections.J5\n\003200\022.\n,Successfully retrieved portal bootstrap dataJ2\n\003401\022+\n)Unauthorized - invalid or expired session\202\265\030\002\030`\202\323\344\223\002\032\022\030/api/v1/portal/bootstrap' - _globals['_CUSTOMDOMAINSTATUS']._serialized_start=12540 - _globals['_CUSTOMDOMAINSTATUS']._serialized_end=12627 - _globals['_ASSETCATEGORY']._serialized_start=12629 - _globals['_ASSETCATEGORY']._serialized_end=12708 - _globals['_TIMEUNIT']._serialized_start=12710 - _globals['_TIMEUNIT']._serialized_end=12789 - _globals['_ORGUSERRELATIONSHIPTYPE']._serialized_start=12791 - _globals['_ORGUSERRELATIONSHIPTYPE']._serialized_end=12910 - _globals['_COOKIEPERSISTENCETYPE']._serialized_start=12912 - _globals['_COOKIEPERSISTENCETYPE']._serialized_end=13003 - _globals['_COOKIESAMESITESETTING']._serialized_start=13005 - _globals['_COOKIESAMESITESETTING']._serialized_end=13096 - _globals['_CONNECTEDACCOUNTUSERVERIFYMODE']._serialized_start=13099 - _globals['_CONNECTEDACCOUNTUSERVERIFYMODE']._serialized_end=13276 + _globals['_CUSTOMDOMAINSTATUS']._serialized_start=12913 + _globals['_CUSTOMDOMAINSTATUS']._serialized_end=13000 + _globals['_ASSETCATEGORY']._serialized_start=13002 + _globals['_ASSETCATEGORY']._serialized_end=13081 + _globals['_TIMEUNIT']._serialized_start=13083 + _globals['_TIMEUNIT']._serialized_end=13162 + _globals['_ORGUSERRELATIONSHIPTYPE']._serialized_start=13164 + _globals['_ORGUSERRELATIONSHIPTYPE']._serialized_end=13283 + _globals['_COOKIEPERSISTENCETYPE']._serialized_start=13285 + _globals['_COOKIEPERSISTENCETYPE']._serialized_end=13376 + _globals['_COOKIESAMESITESETTING']._serialized_start=13378 + _globals['_COOKIESAMESITESETTING']._serialized_end=13469 + _globals['_CONNECTEDACCOUNTUSERVERIFYMODE']._serialized_start=13472 + _globals['_CONNECTEDACCOUNTUSERVERIFYMODE']._serialized_end=13649 _globals['_CREATECUSTOMDOMAINREQUEST']._serialized_start=585 _globals['_CREATECUSTOMDOMAINREQUEST']._serialized_end=696 _globals['_CREATECUSTOMDOMAINRESPONSE']._serialized_start=698 @@ -378,37 +380,37 @@ _globals['_GETCURRENTSESSIONREQUEST']._serialized_start=10123 _globals['_GETCURRENTSESSIONREQUEST']._serialized_end=10165 _globals['_GETCURRENTSESSIONRESPONSE']._serialized_start=10168 - _globals['_GETCURRENTSESSIONRESPONSE']._serialized_end=10491 - _globals['_RESOURCEMETADATA']._serialized_start=10494 - _globals['_RESOURCEMETADATA']._serialized_end=10691 - _globals['_RESOURCEMETADATA_RESOURCETYPE']._serialized_start=10625 - _globals['_RESOURCEMETADATA_RESOURCETYPE']._serialized_end=10691 - _globals['_SCALEKITRESOURCEREQUEST']._serialized_start=10693 - _globals['_SCALEKITRESOURCEREQUEST']._serialized_end=10792 - _globals['_SCALEKITRESOURCERESPONSE']._serialized_start=10795 - _globals['_SCALEKITRESOURCERESPONSE']._serialized_end=11005 - _globals['_SCALEKITRESOURCERESPONSE_RESOURCESENTRY']._serialized_start=10920 - _globals['_SCALEKITRESOURCERESPONSE_RESOURCESENTRY']._serialized_end=11005 - _globals['_PORTALBOOTSTRAPREQUEST']._serialized_start=11007 - _globals['_PORTALBOOTSTRAPREQUEST']._serialized_end=11031 - _globals['_PORTALCUSTOMIZATIONBOOTSTRAP']._serialized_start=11034 - _globals['_PORTALCUSTOMIZATIONBOOTSTRAP']._serialized_end=11224 - _globals['_PORTALBOOTSTRAPRESPONSE']._serialized_start=11227 - _globals['_PORTALBOOTSTRAPRESPONSE']._serialized_end=11592 - _globals['_AGENTACTIONSCONFIG']._serialized_start=11595 - _globals['_AGENTACTIONSCONFIG']._serialized_end=11725 - _globals['_CREATEAGENTACTIONSCONFIGREQUEST']._serialized_start=11728 - _globals['_CREATEAGENTACTIONSCONFIGREQUEST']._serialized_end=11894 - _globals['_CREATEAGENTACTIONSCONFIGRESPONSE']._serialized_start=11897 - _globals['_CREATEAGENTACTIONSCONFIGRESPONSE']._serialized_end=12032 - _globals['_GETAGENTACTIONSCONFIGREQUEST']._serialized_start=12034 - _globals['_GETAGENTACTIONSCONFIGREQUEST']._serialized_end=12096 - _globals['_GETAGENTACTIONSCONFIGRESPONSE']._serialized_start=12099 - _globals['_GETAGENTACTIONSCONFIGRESPONSE']._serialized_end=12231 - _globals['_UPDATEAGENTACTIONSCONFIGREQUEST']._serialized_start=12234 - _globals['_UPDATEAGENTACTIONSCONFIGREQUEST']._serialized_end=12400 - _globals['_UPDATEAGENTACTIONSCONFIGRESPONSE']._serialized_start=12403 - _globals['_UPDATEAGENTACTIONSCONFIGRESPONSE']._serialized_end=12538 - _globals['_ENVIRONMENTSERVICE']._serialized_start=13279 - _globals['_ENVIRONMENTSERVICE']._serialized_end=21800 + _globals['_GETCURRENTSESSIONRESPONSE']._serialized_end=10571 + _globals['_RESOURCEMETADATA']._serialized_start=10574 + _globals['_RESOURCEMETADATA']._serialized_end=10771 + _globals['_RESOURCEMETADATA_RESOURCETYPE']._serialized_start=10705 + _globals['_RESOURCEMETADATA_RESOURCETYPE']._serialized_end=10771 + _globals['_SCALEKITRESOURCEREQUEST']._serialized_start=10773 + _globals['_SCALEKITRESOURCEREQUEST']._serialized_end=10872 + _globals['_SCALEKITRESOURCERESPONSE']._serialized_start=10875 + _globals['_SCALEKITRESOURCERESPONSE']._serialized_end=11085 + _globals['_SCALEKITRESOURCERESPONSE_RESOURCESENTRY']._serialized_start=11000 + _globals['_SCALEKITRESOURCERESPONSE_RESOURCESENTRY']._serialized_end=11085 + _globals['_PORTALBOOTSTRAPREQUEST']._serialized_start=11087 + _globals['_PORTALBOOTSTRAPREQUEST']._serialized_end=11111 + _globals['_PORTALCUSTOMIZATIONBOOTSTRAP']._serialized_start=11114 + _globals['_PORTALCUSTOMIZATIONBOOTSTRAP']._serialized_end=11304 + _globals['_PORTALBOOTSTRAPRESPONSE']._serialized_start=11307 + _globals['_PORTALBOOTSTRAPRESPONSE']._serialized_end=11672 + _globals['_AGENTACTIONSCONFIG']._serialized_start=11675 + _globals['_AGENTACTIONSCONFIG']._serialized_end=12098 + _globals['_CREATEAGENTACTIONSCONFIGREQUEST']._serialized_start=12101 + _globals['_CREATEAGENTACTIONSCONFIGREQUEST']._serialized_end=12267 + _globals['_CREATEAGENTACTIONSCONFIGRESPONSE']._serialized_start=12270 + _globals['_CREATEAGENTACTIONSCONFIGRESPONSE']._serialized_end=12405 + _globals['_GETAGENTACTIONSCONFIGREQUEST']._serialized_start=12407 + _globals['_GETAGENTACTIONSCONFIGREQUEST']._serialized_end=12469 + _globals['_GETAGENTACTIONSCONFIGRESPONSE']._serialized_start=12472 + _globals['_GETAGENTACTIONSCONFIGRESPONSE']._serialized_end=12604 + _globals['_UPDATEAGENTACTIONSCONFIGREQUEST']._serialized_start=12607 + _globals['_UPDATEAGENTACTIONSCONFIGREQUEST']._serialized_end=12773 + _globals['_UPDATEAGENTACTIONSCONFIGRESPONSE']._serialized_start=12776 + _globals['_UPDATEAGENTACTIONSCONFIGRESPONSE']._serialized_end=12911 + _globals['_ENVIRONMENTSERVICE']._serialized_start=13652 + _globals['_ENVIRONMENTSERVICE']._serialized_end=22175 # @@protoc_insertion_point(module_scope) diff --git a/scalekit/v1/environments/environments_pb2.pyi b/scalekit/v1/environments/environments_pb2.pyi index 210f8e0..ec2f1bf 100644 --- a/scalekit/v1/environments/environments_pb2.pyi +++ b/scalekit/v1/environments/environments_pb2.pyi @@ -569,18 +569,20 @@ class GetCurrentSessionRequest(_message.Message): def __init__(self, id: _Optional[str] = ...) -> None: ... class GetCurrentSessionResponse(_message.Message): - __slots__ = ("session_expiry", "access_token_expiry", "organization_id", "subject", "email") + __slots__ = ("session_expiry", "access_token_expiry", "organization_id", "subject", "email", "connected_account_id") 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] + CONNECTED_ACCOUNT_ID_FIELD_NUMBER: _ClassVar[int] session_expiry: _timestamp_pb2.Timestamp access_token_expiry: _timestamp_pb2.Timestamp organization_id: str subject: str 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: ... + connected_account_id: 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] = ..., connected_account_id: _Optional[str] = ...) -> None: ... class ResourceMetadata(_message.Message): __slots__ = ("type", "identifiers") @@ -642,10 +644,12 @@ class PortalBootstrapResponse(_message.Message): def __init__(self, session: _Optional[_Union[GetCurrentSessionResponse, _Mapping]] = ..., portal_customizations: _Optional[_Union[PortalCustomizationBootstrap, _Mapping]] = ..., organization: _Optional[_Union[_organizations_pb2.Organization, _Mapping]] = ..., connections: _Optional[_Iterable[_Union[_connections_pb2.ListConnection, _Mapping]]] = ...) -> None: ... class AgentActionsConfig(_message.Message): - __slots__ = ("user_verify_mode",) + __slots__ = ("user_verify_mode", "detailed_error_logging") USER_VERIFY_MODE_FIELD_NUMBER: _ClassVar[int] + DETAILED_ERROR_LOGGING_FIELD_NUMBER: _ClassVar[int] user_verify_mode: ConnectedAccountUserVerifyMode - def __init__(self, user_verify_mode: _Optional[_Union[ConnectedAccountUserVerifyMode, str]] = ...) -> None: ... + detailed_error_logging: bool + def __init__(self, user_verify_mode: _Optional[_Union[ConnectedAccountUserVerifyMode, str]] = ..., detailed_error_logging: bool = ...) -> None: ... class CreateAgentActionsConfigRequest(_message.Message): __slots__ = ("id", "agent_actions_config") diff --git a/scalekit/v1/options/options_pb2.py b/scalekit/v1/options/options_pb2.py index b009298..0f7fe0f 100644 --- a/scalekit/v1/options/options_pb2.py +++ b/scalekit/v1/options/options_pb2.py @@ -15,7 +15,7 @@ from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!scalekit/v1/options/options.proto\x12\x13scalekit.v1.options\x1a google/protobuf/descriptor.proto\"\xbd\x01\n\nAuthOption\x12X\n\x13\x61uthentication_type\x18\x03 \x01(\x0e\x32\'.scalekit.v1.options.AuthenticationTypeR\x12\x61uthenticationType\x12 \n\x0bpermissions\x18\x01 \x03(\tR\x0bpermissions\x12\x33\n\x06policy\x18\x02 \x01(\x0e\x32\x1b.scalekit.v1.options.PolicyR\x06policy**\n\x06Policy\x12\x08\n\x04\x44\x45NY\x10\x00\x12\x0b\n\x07PARTIAL\x10\x01\x12\t\n\x05\x41LLOW\x10\x02*\xa1\x03\n\x12\x41uthenticationType\x12\x0b\n\x07\x42LOCKED\x10\x00\x12\x08\n\x04NONE\x10\x01\x12\r\n\tWORKSPACE\x10@\x12\x13\n\x0f\x43USTOMER_PORTAL\x10 \x12\x0b\n\x07SESSION\x10\x10\x12\x15\n\x11WORKSPACE_SESSION\x10P\x12\x14\n\x10WORKSPACE_CLIENT\x10\x44\x12%\n!WORKSPACE_SESSION_CUSTOMER_PORTAL\x10p\x12,\n(WORKSPACE_SESSION_CUSTOMER_PORTAL_CLIENT\x10t\x12$\n WORKSPACE_CUSTOMER_PORTAL_CLIENT\x10\x64\x12\x1d\n\x19WORKSPACE_CUSTOMER_PORTAL\x10`\x12\x08\n\x04USER\x10\x08\x12\n\n\x06\x43LIENT\x10\x04\x12\x12\n\x0eSESSION_CLIENT\x10\x14\x12\x1c\n\x18WORKSPACE_SESSION_CLIENT\x10T\x12\"\n\x1e\x43USTOMER_PORTAL_SESSION_CLIENT\x10\x34\x12\x10\n\x0cSESSION_USER\x10\x18:b\n\x0b\x61uth_option\x12\x1e.google.protobuf.MethodOptions\x18\xd0\x86\x03 \x01(\x0b\x32\x1f.scalekit.v1.options.AuthOptionR\nauthOptionB6Z4github.com/scalekit-inc/scalekit/pkg/grpc/authoptionb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!scalekit/v1/options/options.proto\x12\x13scalekit.v1.options\x1a google/protobuf/descriptor.proto\"\xbd\x01\n\nAuthOption\x12X\n\x13\x61uthentication_type\x18\x03 \x01(\x0e\x32\'.scalekit.v1.options.AuthenticationTypeR\x12\x61uthenticationType\x12 \n\x0bpermissions\x18\x01 \x03(\tR\x0bpermissions\x12\x33\n\x06policy\x18\x02 \x01(\x0e\x32\x1b.scalekit.v1.options.PolicyR\x06policy**\n\x06Policy\x12\x08\n\x04\x44\x45NY\x10\x00\x12\x0b\n\x07PARTIAL\x10\x01\x12\t\n\x05\x41LLOW\x10\x02*\xd5\x05\n\x12\x41uthenticationType\x12\x0b\n\x07\x42LOCKED\x10\x00\x12\x08\n\x04NONE\x10\x01\x12\r\n\tWORKSPACE\x10@\x12\x13\n\x0f\x43USTOMER_PORTAL\x10 \x12\x0b\n\x07SESSION\x10\x10\x12\x15\n\x11WORKSPACE_SESSION\x10P\x12\x14\n\x10WORKSPACE_CLIENT\x10\x44\x12%\n!WORKSPACE_SESSION_CUSTOMER_PORTAL\x10p\x12,\n(WORKSPACE_SESSION_CUSTOMER_PORTAL_CLIENT\x10t\x12$\n WORKSPACE_CUSTOMER_PORTAL_CLIENT\x10\x64\x12\x1d\n\x19WORKSPACE_CUSTOMER_PORTAL\x10`\x12\x08\n\x04USER\x10\x08\x12\n\n\x06\x43LIENT\x10\x04\x12\x12\n\x0eSESSION_CLIENT\x10\x14\x12\x1c\n\x18WORKSPACE_SESSION_CLIENT\x10T\x12\"\n\x1e\x43USTOMER_PORTAL_SESSION_CLIENT\x10\x34\x12\x10\n\x0cSESSION_USER\x10\x18\x12\x13\n\x0e\x41\x43TIONS_PORTAL\x10\x80\x01\x12\x35\n0WORKSPACE_SESSION_CUSTOMER_PORTAL_ACTIONS_PORTAL\x10\xf0\x01\x12<\n7WORKSPACE_SESSION_CUSTOMER_PORTAL_ACTIONS_PORTAL_CLIENT\x10\xf4\x01\x12\x1d\n\x18WORKSPACE_ACTIONS_PORTAL\x10\xc0\x01\x12$\n\x1fWORKSPACE_ACTIONS_PORTAL_CLIENT\x10\xc4\x01\x12\x34\n/WORKSPACE_ACTIONS_PORTAL_CUSTOMER_PORTAL_CLIENT\x10\xe4\x01\x12-\n(WORKSPACE_CUSTOMER_PORTAL_ACTIONS_PORTAL\x10\xe0\x01:b\n\x0b\x61uth_option\x12\x1e.google.protobuf.MethodOptions\x18\xd0\x86\x03 \x01(\x0b\x32\x1f.scalekit.v1.options.AuthOptionR\nauthOptionB6Z4github.com/scalekit-inc/scalekit/pkg/grpc/authoptionb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -26,7 +26,7 @@ _globals['_POLICY']._serialized_start=284 _globals['_POLICY']._serialized_end=326 _globals['_AUTHENTICATIONTYPE']._serialized_start=329 - _globals['_AUTHENTICATIONTYPE']._serialized_end=746 + _globals['_AUTHENTICATIONTYPE']._serialized_end=1054 _globals['_AUTHOPTION']._serialized_start=93 _globals['_AUTHOPTION']._serialized_end=282 # @@protoc_insertion_point(module_scope) diff --git a/scalekit/v1/options/options_pb2.pyi b/scalekit/v1/options/options_pb2.pyi index 73cf7ab..2017e38 100644 --- a/scalekit/v1/options/options_pb2.pyi +++ b/scalekit/v1/options/options_pb2.pyi @@ -32,6 +32,13 @@ class AuthenticationType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): WORKSPACE_SESSION_CLIENT: _ClassVar[AuthenticationType] CUSTOMER_PORTAL_SESSION_CLIENT: _ClassVar[AuthenticationType] SESSION_USER: _ClassVar[AuthenticationType] + ACTIONS_PORTAL: _ClassVar[AuthenticationType] + WORKSPACE_SESSION_CUSTOMER_PORTAL_ACTIONS_PORTAL: _ClassVar[AuthenticationType] + WORKSPACE_SESSION_CUSTOMER_PORTAL_ACTIONS_PORTAL_CLIENT: _ClassVar[AuthenticationType] + WORKSPACE_ACTIONS_PORTAL: _ClassVar[AuthenticationType] + WORKSPACE_ACTIONS_PORTAL_CLIENT: _ClassVar[AuthenticationType] + WORKSPACE_ACTIONS_PORTAL_CUSTOMER_PORTAL_CLIENT: _ClassVar[AuthenticationType] + WORKSPACE_CUSTOMER_PORTAL_ACTIONS_PORTAL: _ClassVar[AuthenticationType] DENY: Policy PARTIAL: Policy ALLOW: Policy @@ -52,6 +59,13 @@ SESSION_CLIENT: AuthenticationType WORKSPACE_SESSION_CLIENT: AuthenticationType CUSTOMER_PORTAL_SESSION_CLIENT: AuthenticationType SESSION_USER: AuthenticationType +ACTIONS_PORTAL: AuthenticationType +WORKSPACE_SESSION_CUSTOMER_PORTAL_ACTIONS_PORTAL: AuthenticationType +WORKSPACE_SESSION_CUSTOMER_PORTAL_ACTIONS_PORTAL_CLIENT: AuthenticationType +WORKSPACE_ACTIONS_PORTAL: AuthenticationType +WORKSPACE_ACTIONS_PORTAL_CLIENT: AuthenticationType +WORKSPACE_ACTIONS_PORTAL_CUSTOMER_PORTAL_CLIENT: AuthenticationType +WORKSPACE_CUSTOMER_PORTAL_ACTIONS_PORTAL: AuthenticationType AUTH_OPTION_FIELD_NUMBER: _ClassVar[int] auth_option: _descriptor.FieldDescriptor diff --git a/scalekit/v1/organizations/organizations_pb2.py b/scalekit/v1/organizations/organizations_pb2.py index ce0e7f4..99e3422 100644 --- a/scalekit/v1/organizations/organizations_pb2.py +++ b/scalekit/v1/organizations/organizations_pb2.py @@ -28,7 +28,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/organizations/organizations.proto\x12\x19scalekit.v1.organizations\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\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\"\xaf\x01\n\x19\x43reateOrganizationRequest\x12\x91\x01\n\x0corganization\x18\x01 \x01(\x0b\x32-.scalekit.v1.organizations.CreateOrganizationB>\x92\x41\x35\x32\x33Required parameters for creating a new organization\xbaH\x03\xc8\x01\x01R\x0corganization\"\xb9\x01\n\x1a\x43reateOrganizationResponse\x12\x9a\x01\n\x0corganization\x18\x01 \x01(\x0b\x32\'.scalekit.v1.organizations.OrganizationBM\x92\x41J2HThe newly created organization containing its ID, settings, and metadataR\x0corganization\"\xf8\x07\n\x12\x43reateOrganization\x12\x84\x01\n\x0c\x64isplay_name\x18\x04 \x01(\tBa\x92\x41Q2?Name of the organization. Must be between 1 and 200 characters.J\x0e\"Megasoft Inc\"\xe0\x41\x02\xbaH\x07r\x05\x10\x01\x18\xc8\x01R\x0b\x64isplayName\x12\xa0\x01\n\x0bregion_code\x18\x05 \x01(\x0e\x32\x1f.scalekit.v1.commons.RegionCodeB^\x92\x41L2DGeographic region code for the organization. Currently limited to USJ\x04\"US\"\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEWR\nregionCode\x12\x9e\x01\n\x0b\x65xternal_id\x18\x06 \x01(\tBx\x92\x41u2cYour application\'s unique identifier for this organization, used to link Scalekit with your system.J\x0e\"my_unique_id\"H\x00R\nexternalId\x88\x01\x01\x12r\n\x08metadata\x18\x07 \x03(\x0b\x32;.scalekit.v1.organizations.CreateOrganization.MetadataEntryB\x19\xbaH\x16\x9a\x01\x13\x10\n\"\x06r\x04\x10\x03\x18\x19*\x07r\x05\x10\x01\x18\x80\x02R\x08metadata\x12\xcc\x02\n\x04slug\x18\t \x01(\tB\xb2\x02\x92\x41\x84\x02\x32\xd2\x01\x44NS-safe slug for dynamic redirect URI resolution (e.g. acme for https://acme.example.com/callback). Lowercase alphanumeric and hyphens, 1-63 chars, must start and end with alphanumeric, unique per environment.J\x06\"acme\"x?\x80\x01\x01\x8a\x01\x1f^[a-z0-9]([a-z0-9]|-[a-z0-9])*$\xbaH\'r%\x10\x01\x18?2\x1f^[a-z0-9]([a-z0-9]|-[a-z0-9])*$H\x01R\x04slug\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\x0e\n\x0c_external_idB\x07\n\x05_slug\"\xf8\n\n\x0cOrganization\x12{\n\x02id\x18\x01 \x01(\tBk\x92\x41h2MUnique scalekit-generated identifier that uniquely references an organizationJ\x17\"org_59615193906282635\"R\x02id\x12\x8c\x01\n\x0b\x63reate_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampBO\x92\x41I2+Timestamp when the organization was createdJ\x1a\"2025-02-15T06:23:44.560Z\"\xe0\x41\x02R\ncreateTime\x12\x8e\x01\n\x0bupdate_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampBQ\x92\x41N20Timestamp when the organization was last updatedJ\x1a\"2025-02-15T06:23:44.560Z\"R\nupdateTime\x12|\n\x0c\x64isplay_name\x18\x04 \x01(\tBY\x92\x41L2>Name of the organization. Must be between 1 and 200 charactersJ\n\"Megasoft\"\xbaH\x07r\x05\x10\x01\x18\xc8\x01R\x0b\x64isplayName\x12\x92\x01\n\x0bregion_code\x18\x05 \x01(\x0e\x32\x1f.scalekit.v1.commons.RegionCodeBP\x92\x41M2EGeographic region code for the organization. Currently limited to US.J\x04\"US\"R\nregionCode\x12\x9e\x01\n\x0b\x65xternal_id\x18\x06 \x01(\tBx\x92\x41u2cYour application\'s unique identifier for this organization, used to link Scalekit with your system.J\x0e\"my_unique_id\"H\x00R\nexternalId\x88\x01\x01\x12l\n\x08metadata\x18\x07 \x03(\x0b\x32\x35.scalekit.v1.organizations.Organization.MetadataEntryB\x19\xbaH\x16\x9a\x01\x13\x10\n\"\x06r\x04\x10\x03\x18\x19*\x07r\x05\x10\x01\x18\x80\x02R\x08metadata\x12K\n\x08settings\x18\x08 \x01(\x0b\x32/.scalekit.v1.organizations.OrganizationSettingsR\x08settings\x12\x85\x02\n\x04slug\x18\t \x01(\tB\xeb\x01\x92\x41\xe7\x01\x32\xb5\x01\x44NS-safe slug for dynamic redirect URI resolution. Must be 1-63 chars, lowercase alphanumeric and hyphens, must start and end with an alphanumeric character. Unique per environment.J\x06\"acme\"x?\x80\x01\x01\x8a\x01\x1f^[a-z0-9]([a-z0-9]|-[a-z0-9])*$H\x01R\x04slug\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\x0e\n\x0c_external_idB\x07\n\x05_slug\"\xe0\x03\n\x19UpdateOrganizationRequest\x12j\n\x02id\x18\x01 \x01(\tBX\x92\x41L23Unique identifier of the organization to be updatedJ\x15\"org_121312434123312\"\xbaH\x06r\x04\x10\x01\x18 H\x00R\x02id\x12\x85\x01\n\x0b\x65xternal_id\x18\x02 \x01(\tBb\x92\x41I2-External ID of the organization to be updatedJ\x18\"tenant_123123123123123\"\xbaH\x04r\x02\x10\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEWH\x00R\nexternalId\x12\x83\x01\n\x0corganization\x18\x03 \x01(\x0b\x32-.scalekit.v1.organizations.UpdateOrganizationB0\x92\x41\'2%Organization Parameters to be updated\xbaH\x03\xc8\x01\x01R\x0corganization\x12;\n\x0bupdate_mask\x18\x63 \x01(\x0b\x32\x1a.google.protobuf.FieldMaskR\nupdateMaskB\x0c\n\nidentities\"\x87\x08\n\x12UpdateOrganization\x12\x9e\x01\n\x0c\x64isplay_name\x18\x04 \x01(\tBv\x92\x41i2SName of the organization to display in the UI. Must be between 1 and 200 charactersJ\x12\"Acme Corporation\"\xbaH\x07r\x05\x10\x01\x18\xc8\x01H\x00R\x0b\x64isplayName\x88\x01\x01\x12\x9d\x01\n\x0b\x65xternal_id\x18\x06 \x01(\tBw\x92\x41t2bYour application\'s unique identifier for this organization, used to link Scalekit with your systemJ\x0e\"tenant_12345\"H\x01R\nexternalId\x88\x01\x01\x12\xa5\x02\n\x08metadata\x18\x07 \x03(\x0b\x32;.scalekit.v1.organizations.UpdateOrganization.MetadataEntryB\xcb\x01\x92\x41\xae\x01\x32\x8f\x01\x43ustom key-value pairs to store with the organization. Keys must be 3-25 characters, values must be 1-256 characters. Maximum 10 pairs allowed.J\x1a{\"industry\": \"technology\"}\xbaH\x16\x9a\x01\x13\x10\n\"\x06r\x04\x10\x03\x18\x19*\x07r\x05\x10\x01\x18\x80\x02R\x08metadata\x12\x9a\x02\n\x04slug\x18\t \x01(\tB\x80\x02\x92\x41\xd2\x01\x32\xa0\x01\x44NS-safe slug for dynamic redirect URI resolution. Lowercase alphanumeric and hyphens, 1-63 chars, must start and end with alphanumeric, unique per environment.J\x06\"acme\"x?\x80\x01\x01\x8a\x01\x1f^[a-z0-9]([a-z0-9]|-[a-z0-9])*$\xbaH\'r%\x10\x01\x18?2\x1f^[a-z0-9]([a-z0-9]|-[a-z0-9])*$H\x02R\x04slug\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\x0f\n\r_display_nameB\x0e\n\x0c_external_idB\x07\n\x05_slugJ\x04\x08\x05\x10\x06\"\x8c\x01\n\x1aUpdateOrganizationResponse\x12n\n\x0corganization\x18\x01 \x01(\x0b\x32\'.scalekit.v1.organizations.OrganizationB!\x92\x41\x1e\x32\x1cUpdated organization detailsR\x0corganization\"\xeb\x02\n\x16GetOrganizationRequest\x12\x84\x01\n\x02id\x18\x01 \x01(\tBr\x92\x41\x66\x32MUnique scalekit-generated identifier that uniquely references an organizationJ\x15\"org_121312434123312\"\xbaH\x06r\x04\x10\x01\x18 H\x00R\x02id\x12\xbb\x01\n\x0b\x65xternal_id\x18\x02 \x01(\tB\x97\x01\x92\x41~2bUnique identifier that links an Organization Object to your app\'s tenant, stored as an External IDJ\x18\"tenant_123123123123123\"\xbaH\x04r\x02\x10\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEWH\x00R\nexternalIdB\x0c\n\nidentities\"\x8b\x01\n\x17GetOrganizationResponse\x12p\n\x0corganization\x18\x01 \x01(\x0b\x32\'.scalekit.v1.organizations.OrganizationB#\x92\x41 2\x1eThe newly created organizationR\x0corganization\"\xe0\x05\n\x18ListOrganizationsRequest\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\x12\xa8\x01\n\x0b\x65xternal_id\x18\x03 \x01(\tB\x81\x01\x92\x41~2bYour application\'s unique identifier for this organization, used to link Scalekit with your systemJ\x18\"\"H\x00R\nexternalId\x88\x01\x01:\x80\x02\x92\x41\xfc\x01\n\xab\x01*\x12List Organizations2\x94\x01Retrieves a paginated list of all organizations within the environment. Use the `page_token` from the response to access subsequent pages of results*L\n\x12List Organizations\x12\x36https://docs.scalekit.com/reference/list-organizationsB\x0e\n\x0c_external_id\"\xa4\x04\n\x19ListOrganizationsResponse\x12\x97\x01\n\x0fnext_page_token\x18\x01 \x01(\tBo\x92\x41l2UPagination token for the next page of results. Use this token to fetch the next page.J\x13\"\"R\rnextPageToken\x12Y\n\ntotal_size\x18\x02 \x01(\rB:\x92\x41\x37\x32\x31Total number of organizations in the environment.J\x02\x33\x30R\ttotalSize\x12p\n\rorganizations\x18\x03 \x03(\x0b\x32\'.scalekit.v1.organizations.OrganizationB!\x92\x41\x1e\x32\x1cList of organization objectsR\rorganizations\x12\x9f\x01\n\x0fprev_page_token\x18\x04 \x01(\tBw\x92\x41t2]Pagination token for the previous page of results. Use this token to fetch the previous page.J\x13\"\"R\rprevPageToken\"\xa7\x05\n\x1aSearchOrganizationsRequest\x12\xa5\x01\n\x05query\x18\x01 \x01(\tB\x8e\x01\x92\x41\x7f\x32wSearch term to match against organization names, IDs, or external IDs. Must be at least 3 characters. Case insensitive.J\x04\x61\x63me\xbaH\tr\x04\x10\x03\x18\x64\xc8\x01\x01R\x05query\x12\x80\x01\n\tpage_size\x18\x02 \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\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:\xb5\x01\x92\x41\xb1\x01\n\x88\x01*\x14Search Organizations2pSearch for organizations in your environment using a text query that matches against names, IDs, or external IDs2$query=acme&page_size=30&page_token=1\"\xdb\x01\n\x1bSearchOrganizationsResponse\x12&\n\x0fnext_page_token\x18\x01 \x01(\tR\rnextPageToken\x12\x1d\n\ntotal_size\x18\x02 \x01(\rR\ttotalSize\x12M\n\rorganizations\x18\x03 \x03(\x0b\x32\'.scalekit.v1.organizations.OrganizationR\rorganizations\x12&\n\x0fprev_page_token\x18\x04 \x01(\tR\rprevPageToken\"\xad\x02\n\x19\x44\x65leteOrganizationRequest\x12~\n\x02id\x18\x01 \x01(\tBl\x92\x41`2MUnique scalekit-generated identifier that uniquely references an organizationJ\x0f\"org_123456789\"\xbaH\x06r\x04\x10\x01\x18 H\x00R\x02id\x12\x81\x01\n\x0b\x65xternal_id\x18\x02 \x01(\tB^\x92\x41\x45\x32)External ID of the organization to deleteJ\x18\"tenant_123123123123123\"\xbaH\x04r\x02\x10\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEWH\x00R\nexternalIdB\x0c\n\nidentities\"\xcf\x04\n\x19GeneratePortalLinkRequest\x12N\n\x02id\x18\x01 \x01(\tB>\x92\x41)2\x0fOrganization IDJ\x16\"org_1231234233424344\"\xbaH\x0fr\n\x10\x01\x18 :\x04org_\xc8\x01\x01R\x02id\x12(\n\x03sso\x18\x02 \x01(\x08\x42\x11\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEWH\x00R\x03sso\x88\x01\x01\x12=\n\x0e\x64irectory_sync\x18\x03 \x01(\x08\x42\x11\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEWH\x01R\rdirectorySync\x88\x01\x01\x12\xdd\x02\n\x08\x66\x65\x61tures\x18\x04 \x03(\x0e\x32\".scalekit.v1.organizations.FeatureB\x9c\x02\x92\x41\x98\x02\x32\x95\x02\x46\x65\x61tures to enable in the admin portal link. To enable features, append them as URL parameters:\n\n- Single Sign-On: ?features=sso\n- Directory Sync: ?features=dir_sync\n- Both features: ?features=sso&features=dir_sync\n\nExample URL: https://scalekit.com/portal/lnk_123?features=ssoR\x08\x66\x65\x61turesB\x06\n\x04_ssoB\x11\n\x0f_directory_sync\"f\n\x14GetPortalLinkRequest\x12N\n\x02id\x18\x01 \x01(\tB>\x92\x41)2\x0fOrganization IDJ\x16\"org_1231234233424344\"\xbaH\x0fr\n\x10\x01\x18 :\x04org_\xc8\x01\x01R\x02id\"i\n\x17\x44\x65letePortalLinkRequest\x12N\n\x02id\x18\x01 \x01(\tB>\x92\x41)2\x0fOrganization IDJ\x16\"org_1231234233424344\"\xbaH\x0fr\n\x10\x01\x18 :\x04org_\xc8\x01\x01R\x02id\"\xbe\x01\n\x1b\x44\x65letePortalLinkByIdRequest\x12N\n\x02id\x18\x01 \x01(\tB>\x92\x41)2\x0fOrganization IDJ\x16\"org_1231234233424344\"\xbaH\x0fr\n\x10\x01\x18 :\x04org_\xc8\x01\x01R\x02id\x12O\n\x07link_id\x18\x02 \x01(\tB6\x92\x41!2\x07Link IDJ\x16\"lnk_1231234233424344\"\xbaH\x0fr\n\x10\x01\x18 :\x04lnk_\xc8\x01\x01R\x06linkId\"\xb5\x03\n\x04Link\x12J\n\x02id\x18\x01 \x01(\tB:\x92\x41\x37\x32\x1eUnique Identifier for the linkJ\x15\"lnk_123123123123123\"R\x02id\x12\xc7\x01\n\x08location\x18\x02 \x01(\tB\xaa\x01\x92\x41\xa6\x01\x32qLocation of the link. This is the URL that can be used to access the Admin portal. The link is valid for 1 minuteJ1\"https://scalekit.com/portal/lnk_123123123123123\"R\x08location\x12\x96\x01\n\x0b\x65xpire_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampBY\x92\x41V28Expiry time of the link. The link is valid for 1 minute.J\x1a\"2024-02-06T14:48:00.000Z\"R\nexpireTime\"\x96\x02\n\x1aGeneratePortalLinkResponse\x12\xf7\x01\n\x04link\x18\x01 \x01(\x0b\x32\x1f.scalekit.v1.organizations.LinkB\xc1\x01\x92\x41\xbd\x01\x32\xba\x01\x43ontains the generated admin portal link details. The link URL can be shared with organization administrators to set up: Single Sign-On (SSO) authentication and directory synchronizationR\x04link\"h\n\x16GetPortalLinksResponse\x12N\n\x05links\x18\x01 \x03(\x0b\x32\x1f.scalekit.v1.organizations.LinkB\x17\x92\x41\x14\x32\x12\x41\x64min Portal LinksR\x05links\"\x90\x04\n!UpdateOrganizationSettingsRequest\x12\x97\x01\n\x02id\x18\x01 \x01(\tB\x86\x01\x92\x41q2WUnique identifier of the organization to update settings. Must begin with \'org_\' prefixJ\x16\"org_1231234233424344\"\xbaH\x0fr\n\x10\x01\x18 :\x04org_\xc8\x01\x01R\x02id\x12\xd0\x02\n\x08settings\x18\x02 \x01(\x0b\x32/.scalekit.v1.organizations.OrganizationSettingsB\x82\x02\x92\x41\xf8\x01\x32\x95\x01Settings configuration to apply to the organization. Contains feature toggles for SSO, directory synchronization, and other organization capabilitiesJ^{\"features\": [{\"name\": \"sso\", \"enabled\": true}, {\"name\": \"directory_sync\", \"enabled\": false}]}\xbaH\x03\xc8\x01\x01R\x08settings\"\xee\x04\n(UpdateOrganizationSessionSettingsRequest\x12\x84\x01\n\x02id\x18\x01 \x01(\tBt\x92\x41\x63\x32HUnique identifier for the organization, beginning with an \'org_\' prefix.J\x17\"org_59615193906282635\"\xbaH\x0br\t\x10\x01\x18 :\x03orgR\x02id\x12\xf2\x01\n\x0e\x65nvironment_id\x18\x02 \x01(\tB\xca\x01\x92\x41\xb8\x01\x32\x9c\x01Unique identifier for the environment where the organization resides, prefixed with \'env_\'. This specifies the environment context for the session settings.J\x17\"env_59615193906282635\"\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\renvironmentId\x12\xc5\x01\n\x10session_settings\x18\x03 \x01(\x0b\x32\x36.scalekit.v1.organizations.OrganizationSessionSettingsBb\x92\x41Y2WThe session settings to be applied, including absolute and idle timeout configurations.\xbaH\x03\xc8\x01\x01R\x0fsessionSettings\"\x82\x04\n)UpdateOrganizationSessionSettingsResponse\x12\x8f\x01\n\x0e\x65nvironment_id\x18\x01 \x01(\tBh\x92\x41\x65\x32JThe environment ID where the organization\'s session settings were updated.J\x17\"env_59615193906282635\"R\renvironmentId\x12\x95\x01\n\x0forganization_id\x18\x02 \x01(\tBl\x92\x41i2NThe unique identifier of the organization whose session settings were updated.J\x17\"org_59615193906282635\"R\x0eorganizationId\x12\xaa\x01\n\x10session_settings\x18\x03 \x01(\x0b\x32\x36.scalekit.v1.organizations.OrganizationSessionSettingsBG\x92\x41\x44\x32\x42The updated session settings, reflecting the new timeout policies.R\x0fsessionSettings\"\xdc\x02\n\"OrganizationUserManagementSettings\x12\xb5\x02\n\x11max_allowed_users\x18\x01 \x01(\x0b\x32\x1b.google.protobuf.Int32ValueB\xeb\x01\x92\x41\xe7\x01\x32\xdf\x01Maximum number of users allowed in the organization. When nil (not set), there feature is not enabled. When explicitly set to zero, it also means no limit. When set to a positive integer, it enforces the maximum user limit.J\x03\x31\x30\x30R\x0fmaxAllowedUsers\"\xad\x07\n\x1bOrganizationSessionSettings\x12\xfe\x01\n\x18\x61\x62solute_session_timeout\x18\x01 \x01(\x0b\x32\x1b.google.protobuf.Int32ValueB\xa6\x01\x92\x41\xa2\x01\x32\x98\x01The maximum duration in seconds that a session can remain active, regardless of activity. After this time, the user will be required to re-authenticate.J\x05\x38\x36\x34\x30\x30R\x16\x61\x62soluteSessionTimeout\x12\xdd\x01\n\x1asession_management_enabled\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x82\x01\x92\x41\x7f\x32wEnables or disables session management features for the organization. When true, session timeout policies are enforced.J\x04trueR\x18sessionManagementEnabled\x12\xd4\x01\n\x14idle_session_timeout\x18\x03 \x01(\x0b\x32\x1b.google.protobuf.Int32ValueB\x84\x01\x92\x41\x80\x01\x32xThe duration in seconds that a session can remain idle before it is automatically terminated. Activity resets the timer.J\x04\x31\x38\x30\x30R\x12idleSessionTimeout\x12\xd5\x01\n\x14idle_session_enabled\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x86\x01\x92\x41\x82\x01\x32zEnables or disables idle session timeout. If true, inactive sessions will be terminated after the specified idle duration.J\x04trueR\x12idleSessionEnabled\"\x82\x03\n%GetOrganizationSessionSettingsRequest\x12\x92\x01\n\x02id\x18\x01 \x01(\tB\x81\x01\x92\x41p2UThe unique identifier of the organization whose session settings are being requested.J\x17\"org_59615193906282635\"\xbaH\x0br\t\x10\x01\x18 :\x03orgR\x02id\x12\xc3\x01\n\x0e\x65nvironment_id\x18\x02 \x01(\tB\x9b\x01\x92\x41\x89\x01\x32nThe environment ID to scope the request. This ensures the settings are retrieved from the correct environment.J\x17\"env_59615193906282635\"\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\renvironmentId\"\x89\x03\n(CreateOrganizationSessionSettingsRequest\x12\x8b\x01\n\x02id\x18\x01 \x01(\tB{\x92\x41j2OThe unique identifier of the organization for which to create session settings.J\x17\"org_59615193906282635\"\xbaH\x0br\t\x10\x01\x18 :\x03orgR\x02id\x12\xce\x01\n\x0e\x65nvironment_id\x18\x02 \x01(\tB\xa6\x01\x92\x41\x94\x01\x32yThe environment ID where the organization exists. This scopes the creation of session settings to a specific environment.J\x17\"env_59615193906282635\"\xbaH\x0br\t\x10\x01\x18 :\x03\x65nvR\renvironmentId\"\xf4\x03\n)CreateOrganizationSessionSettingsResponse\x12\x80\x01\n\x0e\x65nvironment_id\x18\x01 \x01(\tBY\x92\x41V2;The environment ID where the session settings were created.J\x17\"env_59615193906282635\"R\renvironmentId\x12\x99\x01\n\x0forganization_id\x18\x02 \x01(\tBp\x92\x41m2RThe unique identifier of the organization for which session settings were created.J\x17\"org_59615193906282635\"R\x0eorganizationId\x12\xa7\x01\n\x10session_settings\x18\x03 \x01(\x0b\x32\x36.scalekit.v1.organizations.OrganizationSessionSettingsBD\x92\x41\x41\x32?The newly created session settings, including timeout policies.R\x0fsessionSettings\"\xf1\x03\n&GetOrganizationSessionSettingsResponse\x12\x87\x01\n\x0e\x65nvironment_id\x18\x01 \x01(\tB`\x92\x41]2BThe environment ID from which the session settings were retrieved.J\x17\"env_59615193906282635\"R\renvironmentId\x12\x95\x01\n\x0forganization_id\x18\x02 \x01(\tBl\x92\x41i2NThe unique identifier of the organization whose session settings are returned.J\x17\"org_59615193906282635\"R\x0eorganizationId\x12\xa4\x01\n\x10session_settings\x18\x03 \x01(\x0b\x32\x36.scalekit.v1.organizations.OrganizationSessionSettingsBA\x92\x41>2.scalekit.v1.organizations.UpsertUserManagementSettingsRequest\x1a?.scalekit.v1.organizations.UpsertUserManagementSettingsResponse\"\xb3\x02\x92\x41\xdf\x01\n\rOrganizations\x12 Upsert organization user setting\x1a\x33Upsert user management settings for an organizationJw\n\x03\x32\x30\x30\x12p\n)Returns the updated organization setting.\x12\x43\nA\x1a?.scalekit.v1.organizations.UpsertUserManagementSettingsResponse\x82\xb5\x18\x02\x18\x64\x82\xd3\xe4\x93\x02\x44\x32?/api/v1/organizations/{organization_id}/settings/usermanagement:\x01*\x12\x9f\x04\n$GetOrganizationUserManagementSetting\x12G.scalekit.v1.organizations.GetOrganizationUserManagementSettingsRequest\x1aH.scalekit.v1.organizations.GetOrganizationUserManagementSettingsResponse\"\xe3\x02\x92\x41\x83\x02\n\rOrganizations\x12(Get organization user management setting\x1a\x43Retrieves the user management settings for a specific organization.J\x82\x01\n\x03\x32\x30\x30\x12{\n+Returns the requested organization setting.\x12L\nJ\x1aH.scalekit.v1.organizations.GetOrganizationUserManagementSettingsResponse\x82\xb5\x18\x02\x18\x64\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x41\x12?/api/v1/organizations/{organization_id}/settings/usermanagement\x1aX\x92\x41U\n\rOrganizations\x12\x44{{import \"proto/scalekit/v1/organizations/organization_details.md\"}}B\xa9\'Z7github.com/scalekit-inc/scalekit/pkg/grpc/organizations\x92\x41\xec&\x12\x92\"\n\rScalekit APIs\x12\x83!# Introduction\n\nThe Scalekit API is a RESTful API that enables you to manage organizations, users, and authentication settings. All requests must use HTTPS.\nAll API requests use the following base URLs:\n\n```\nhttps://{environment}.scalekit.dev (Development)\nhttps://{environment}.scalekit.com (Production)\nhttps://auth.example.com (Custom domain)\n```\n\nScalekit operates two separate environments: Development and Production. Resources cannot be moved between environments.\n\n# Authentication\n\nThe Scalekit API uses OAuth 2.0 Client Credentials for authentication.\n\nCopy your API credentials from the Scalekit dashboard\'s API Config section and set them as environment variables.\n\n```sh\nSCALEKIT_ENVIRONMENT_URL=\'\'\nSCALEKIT_CLIENT_ID=\'\'\nSCALEKIT_CLIENT_SECRET=\'\'\n```\n\nGetting an access token\n\n1. Get your credentials from the [Scalekit Dashboard](https://app.scalekit.com)\n2. Request an access token:\n\n```sh\ncurl https://{SCALEKIT_ENVIRONMENT_URL}/oauth/token \\\n -X POST \\\n -H \'Content-Type: application/x-www-form-urlencoded\' \\\n -d \'client_id={client_id}\' \\\n -d \'client_secret={client_secret}\' \\\n -d \'grant_type=client_credentials\'\n```\n\n3. Use the access token in API requests:\n\n```sh\ncurl https://{SCALEKIT_ENVIRONMENT_URL}/api/v1/organizations \\\n -H \'Content-Type: application/json\' \\\n -H \'Authorization: Bearer {access_token}\'\n```\n\nThe response includes an access token:\n\n```json\n{\n\t\"access_token\": \"eyJhbGciOiJSUzI1NiIsImtpZCI6InNua181Ok4OTEyMjU2NiIsInR5cCI6IkpXVCJ9...\",\n\t\"token_type\": \"Bearer\",\n\t\"expires_in\": 86399,\n\t\"scope\": \"openid\"\n}\n```\n\n# SDKs\n\nScalekit provides official SDKs for multiple programming languages. Check the changelog at GitHub repositories for the latest updates.\n\n### Node.js\n\n```sh\nnpm install @scalekit-sdk/node\n```\n\nCreate a new Scalekit client instance after initializing the environment variables\n\n```js\nimport { Scalekit } from \"@scalekit-sdk/node\";\n\nexport let scalekit = new Scalekit(\n\tprocess.env.SCALEKIT_ENVIRONMENT_URL,\n\tprocess.env.SCALEKIT_CLIENT_ID,\n\tprocess.env.SCALEKIT_CLIENT_SECRET\n);\n```\n\n[See the Node SDK changelog](https://github.com/scalekit-inc/scalekit-sdk-node/releases)\n\n### Python\n\n```sh\npip install scalekit-sdk-python\n```\n\nCreate a new Scalekit client instance after initializing the environment variables.\n\n```py\nfrom scalekit import ScalekitClient\nimport os\n\nscalekit_client = ScalekitClient(\n os.environ.get(\'SCALEKIT_ENVIRONMENT_URL\'),\n os.environ.get(\'SCALEKIT_CLIENT_ID\'),\n os.environ.get(\'SCALEKIT_CLIENT_SECRET\')\n)\n```\n\n[See the Python SDK changelog](https://github.com/scalekit-inc/scalekit-sdk-python/releases)\n\n### Go\n\n```sh\ngo get -u github.com/scalekit-inc/scalekit-sdk-go\n```\n\nCreate a new Scalekit client instance after initializing the environment variables.\n\n```go\npackage main\n\nimport (\n \"os\"\n \"github.com/scalekit-inc/scalekit-sdk-go\"\n)\n\nscalekitClient := scalekit.NewScalekitClient(\n os.Getenv(\"SCALEKIT_ENVIRONMENT_URL\"),\n os.Getenv(\"SCALEKIT_CLIENT_ID\"),\n os.Getenv(\"SCALEKIT_CLIENT_SECRET\"),\n)\n```\n\n[See the Go SDK changelog](https://github.com/scalekit-inc/scalekit-sdk-go/releases)\n\n### Java\n\n```gradle\n/* Gradle users - add the following to your dependencies in build file */\nimplementation \"com.scalekit:scalekit-sdk-java:2.0.6\"\n```\n\n```xml\n\n\n com.scalekit\n scalekit-sdk-java\n 2.0.6\n\n```\n\n[See the Java SDK changelog](https://github.com/scalekit-inc/scalekit-sdk-java/releases)\n\n# Error handling\n\nThe API uses standard HTTP status codes:\n\n| Code | Description |\n| ----------- | -------------------- |\n| 200/201 | Success |\n| 400 | Invalid request |\n| 401 | Authentication error |\n| 404 | Resource not found |\n| 429 | Rate limit exceeded |\n| 500/501/504 | Server error |\n\nError responses include detailed information:\n\n```json\n{\n\t\"code\": 16,\n\t\"message\": \"Token empty\",\n\t\"details\": [\n\t\t{\n\t\t\t\"@type\": \"type.googleapis.com/scalekit.v1.errdetails.ErrorInfo\",\n\t\t\t\"error_code\": \"UNAUTHENTICATED\"\n\t\t}\n\t]\n}\n```\n\n\":\n\x0cScalekit Inc\x12\x14https://scalekit.com\x1a\x14support@scalekit.com*8\n\nApache 2.0\x12*http://www.apache.org/licenses/LICENSE-2.02\x05\x31.0.0\x1a\x19$SCALEKIT_ENVIRONMENT_URL*\x01\x02\x32\x10\x61pplication/json:\x10\x61pplication/jsonj\x0f\n\rOrganizationsj\xd4\x03\n\x0bPermissions\x12\xc4\x03Permission management for defining and controlling access to system resources. Create, retrieve, update, and delete granular permissions that represent specific actions users can perform. Permissions are the building blocks of role-based access control (RBAC) and can be assigned to roles to grant users the ability to perform specific operations. Use this service to define custom permissions for your application\'s unique access control requirements.r+\n\rScalekit Docs\x12\x1ahttps://docs.scalekit.com/b\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n-scalekit/v1/organizations/organizations.proto\x12\x19scalekit.v1.organizations\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\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\"\xaf\x01\n\x19\x43reateOrganizationRequest\x12\x91\x01\n\x0corganization\x18\x01 \x01(\x0b\x32-.scalekit.v1.organizations.CreateOrganizationB>\x92\x41\x35\x32\x33Required parameters for creating a new organization\xbaH\x03\xc8\x01\x01R\x0corganization\"\xb9\x01\n\x1a\x43reateOrganizationResponse\x12\x9a\x01\n\x0corganization\x18\x01 \x01(\x0b\x32\'.scalekit.v1.organizations.OrganizationBM\x92\x41J2HThe newly created organization containing its ID, settings, and metadataR\x0corganization\"\xf8\x07\n\x12\x43reateOrganization\x12\x84\x01\n\x0c\x64isplay_name\x18\x04 \x01(\tBa\x92\x41Q2?Name of the organization. Must be between 1 and 200 characters.J\x0e\"Megasoft Inc\"\xe0\x41\x02\xbaH\x07r\x05\x10\x01\x18\xc8\x01R\x0b\x64isplayName\x12\xa0\x01\n\x0bregion_code\x18\x05 \x01(\x0e\x32\x1f.scalekit.v1.commons.RegionCodeB^\x92\x41L2DGeographic region code for the organization. Currently limited to USJ\x04\"US\"\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEWR\nregionCode\x12\x9e\x01\n\x0b\x65xternal_id\x18\x06 \x01(\tBx\x92\x41u2cYour application\'s unique identifier for this organization, used to link Scalekit with your system.J\x0e\"my_unique_id\"H\x00R\nexternalId\x88\x01\x01\x12r\n\x08metadata\x18\x07 \x03(\x0b\x32;.scalekit.v1.organizations.CreateOrganization.MetadataEntryB\x19\xbaH\x16\x9a\x01\x13\x10\n\"\x06r\x04\x10\x03\x18\x19*\x07r\x05\x10\x01\x18\x80\x02R\x08metadata\x12\xcc\x02\n\x04slug\x18\t \x01(\tB\xb2\x02\x92\x41\x84\x02\x32\xd2\x01\x44NS-safe slug for dynamic redirect URI resolution (e.g. acme for https://acme.example.com/callback). Lowercase alphanumeric and hyphens, 1-63 chars, must start and end with alphanumeric, unique per environment.J\x06\"acme\"x?\x80\x01\x01\x8a\x01\x1f^[a-z0-9]([a-z0-9]|-[a-z0-9])*$\xbaH\'r%\x10\x01\x18?2\x1f^[a-z0-9]([a-z0-9]|-[a-z0-9])*$H\x01R\x04slug\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\x0e\n\x0c_external_idB\x07\n\x05_slug\"\xf8\n\n\x0cOrganization\x12{\n\x02id\x18\x01 \x01(\tBk\x92\x41h2MUnique scalekit-generated identifier that uniquely references an organizationJ\x17\"org_59615193906282635\"R\x02id\x12\x8c\x01\n\x0b\x63reate_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampBO\x92\x41I2+Timestamp when the organization was createdJ\x1a\"2025-02-15T06:23:44.560Z\"\xe0\x41\x02R\ncreateTime\x12\x8e\x01\n\x0bupdate_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampBQ\x92\x41N20Timestamp when the organization was last updatedJ\x1a\"2025-02-15T06:23:44.560Z\"R\nupdateTime\x12|\n\x0c\x64isplay_name\x18\x04 \x01(\tBY\x92\x41L2>Name of the organization. Must be between 1 and 200 charactersJ\n\"Megasoft\"\xbaH\x07r\x05\x10\x01\x18\xc8\x01R\x0b\x64isplayName\x12\x92\x01\n\x0bregion_code\x18\x05 \x01(\x0e\x32\x1f.scalekit.v1.commons.RegionCodeBP\x92\x41M2EGeographic region code for the organization. Currently limited to US.J\x04\"US\"R\nregionCode\x12\x9e\x01\n\x0b\x65xternal_id\x18\x06 \x01(\tBx\x92\x41u2cYour application\'s unique identifier for this organization, used to link Scalekit with your system.J\x0e\"my_unique_id\"H\x00R\nexternalId\x88\x01\x01\x12l\n\x08metadata\x18\x07 \x03(\x0b\x32\x35.scalekit.v1.organizations.Organization.MetadataEntryB\x19\xbaH\x16\x9a\x01\x13\x10\n\"\x06r\x04\x10\x03\x18\x19*\x07r\x05\x10\x01\x18\x80\x02R\x08metadata\x12K\n\x08settings\x18\x08 \x01(\x0b\x32/.scalekit.v1.organizations.OrganizationSettingsR\x08settings\x12\x85\x02\n\x04slug\x18\t \x01(\tB\xeb\x01\x92\x41\xe7\x01\x32\xb5\x01\x44NS-safe slug for dynamic redirect URI resolution. Must be 1-63 chars, lowercase alphanumeric and hyphens, must start and end with an alphanumeric character. Unique per environment.J\x06\"acme\"x?\x80\x01\x01\x8a\x01\x1f^[a-z0-9]([a-z0-9]|-[a-z0-9])*$H\x01R\x04slug\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\x0e\n\x0c_external_idB\x07\n\x05_slug\"\xe0\x03\n\x19UpdateOrganizationRequest\x12j\n\x02id\x18\x01 \x01(\tBX\x92\x41L23Unique identifier of the organization to be updatedJ\x15\"org_121312434123312\"\xbaH\x06r\x04\x10\x01\x18 H\x00R\x02id\x12\x85\x01\n\x0b\x65xternal_id\x18\x02 \x01(\tBb\x92\x41I2-External ID of the organization to be updatedJ\x18\"tenant_123123123123123\"\xbaH\x04r\x02\x10\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEWH\x00R\nexternalId\x12\x83\x01\n\x0corganization\x18\x03 \x01(\x0b\x32-.scalekit.v1.organizations.UpdateOrganizationB0\x92\x41\'2%Organization Parameters to be updated\xbaH\x03\xc8\x01\x01R\x0corganization\x12;\n\x0bupdate_mask\x18\x63 \x01(\x0b\x32\x1a.google.protobuf.FieldMaskR\nupdateMaskB\x0c\n\nidentities\"\x87\x08\n\x12UpdateOrganization\x12\x9e\x01\n\x0c\x64isplay_name\x18\x04 \x01(\tBv\x92\x41i2SName of the organization to display in the UI. Must be between 1 and 200 charactersJ\x12\"Acme Corporation\"\xbaH\x07r\x05\x10\x01\x18\xc8\x01H\x00R\x0b\x64isplayName\x88\x01\x01\x12\x9d\x01\n\x0b\x65xternal_id\x18\x06 \x01(\tBw\x92\x41t2bYour application\'s unique identifier for this organization, used to link Scalekit with your systemJ\x0e\"tenant_12345\"H\x01R\nexternalId\x88\x01\x01\x12\xa5\x02\n\x08metadata\x18\x07 \x03(\x0b\x32;.scalekit.v1.organizations.UpdateOrganization.MetadataEntryB\xcb\x01\x92\x41\xae\x01\x32\x8f\x01\x43ustom key-value pairs to store with the organization. Keys must be 3-25 characters, values must be 1-256 characters. Maximum 10 pairs allowed.J\x1a{\"industry\": \"technology\"}\xbaH\x16\x9a\x01\x13\x10\n\"\x06r\x04\x10\x03\x18\x19*\x07r\x05\x10\x01\x18\x80\x02R\x08metadata\x12\x9a\x02\n\x04slug\x18\t \x01(\tB\x80\x02\x92\x41\xd2\x01\x32\xa0\x01\x44NS-safe slug for dynamic redirect URI resolution. Lowercase alphanumeric and hyphens, 1-63 chars, must start and end with alphanumeric, unique per environment.J\x06\"acme\"x?\x80\x01\x01\x8a\x01\x1f^[a-z0-9]([a-z0-9]|-[a-z0-9])*$\xbaH\'r%\x10\x01\x18?2\x1f^[a-z0-9]([a-z0-9]|-[a-z0-9])*$H\x02R\x04slug\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\x0f\n\r_display_nameB\x0e\n\x0c_external_idB\x07\n\x05_slugJ\x04\x08\x05\x10\x06\"\x8c\x01\n\x1aUpdateOrganizationResponse\x12n\n\x0corganization\x18\x01 \x01(\x0b\x32\'.scalekit.v1.organizations.OrganizationB!\x92\x41\x1e\x32\x1cUpdated organization detailsR\x0corganization\"\xeb\x02\n\x16GetOrganizationRequest\x12\x84\x01\n\x02id\x18\x01 \x01(\tBr\x92\x41\x66\x32MUnique scalekit-generated identifier that uniquely references an organizationJ\x15\"org_121312434123312\"\xbaH\x06r\x04\x10\x01\x18 H\x00R\x02id\x12\xbb\x01\n\x0b\x65xternal_id\x18\x02 \x01(\tB\x97\x01\x92\x41~2bUnique identifier that links an Organization Object to your app\'s tenant, stored as an External IDJ\x18\"tenant_123123123123123\"\xbaH\x04r\x02\x10\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEWH\x00R\nexternalIdB\x0c\n\nidentities\"\x8b\x01\n\x17GetOrganizationResponse\x12p\n\x0corganization\x18\x01 \x01(\x0b\x32\'.scalekit.v1.organizations.OrganizationB#\x92\x41 2\x1eThe newly created organizationR\x0corganization\"\xe0\x05\n\x18ListOrganizationsRequest\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\x12\xa8\x01\n\x0b\x65xternal_id\x18\x03 \x01(\tB\x81\x01\x92\x41~2bYour application\'s unique identifier for this organization, used to link Scalekit with your systemJ\x18\"\"H\x00R\nexternalId\x88\x01\x01:\x80\x02\x92\x41\xfc\x01\n\xab\x01*\x12List Organizations2\x94\x01Retrieves a paginated list of all organizations within the environment. Use the `page_token` from the response to access subsequent pages of results*L\n\x12List Organizations\x12\x36https://docs.scalekit.com/reference/list-organizationsB\x0e\n\x0c_external_id\"\xa4\x04\n\x19ListOrganizationsResponse\x12\x97\x01\n\x0fnext_page_token\x18\x01 \x01(\tBo\x92\x41l2UPagination token for the next page of results. Use this token to fetch the next page.J\x13\"\"R\rnextPageToken\x12Y\n\ntotal_size\x18\x02 \x01(\rB:\x92\x41\x37\x32\x31Total number of organizations in the environment.J\x02\x33\x30R\ttotalSize\x12p\n\rorganizations\x18\x03 \x03(\x0b\x32\'.scalekit.v1.organizations.OrganizationB!\x92\x41\x1e\x32\x1cList of organization objectsR\rorganizations\x12\x9f\x01\n\x0fprev_page_token\x18\x04 \x01(\tBw\x92\x41t2]Pagination token for the previous page of results. Use this token to fetch the previous page.J\x13\"\"R\rprevPageToken\"\xa7\x05\n\x1aSearchOrganizationsRequest\x12\xa5\x01\n\x05query\x18\x01 \x01(\tB\x8e\x01\x92\x41\x7f\x32wSearch term to match against organization names, IDs, or external IDs. Must be at least 3 characters. Case insensitive.J\x04\x61\x63me\xbaH\tr\x04\x10\x03\x18\x64\xc8\x01\x01R\x05query\x12\x80\x01\n\tpage_size\x18\x02 \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\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:\xb5\x01\x92\x41\xb1\x01\n\x88\x01*\x14Search Organizations2pSearch for organizations in your environment using a text query that matches against names, IDs, or external IDs2$query=acme&page_size=30&page_token=1\"\xdb\x01\n\x1bSearchOrganizationsResponse\x12&\n\x0fnext_page_token\x18\x01 \x01(\tR\rnextPageToken\x12\x1d\n\ntotal_size\x18\x02 \x01(\rR\ttotalSize\x12M\n\rorganizations\x18\x03 \x03(\x0b\x32\'.scalekit.v1.organizations.OrganizationR\rorganizations\x12&\n\x0fprev_page_token\x18\x04 \x01(\tR\rprevPageToken\"\xad\x02\n\x19\x44\x65leteOrganizationRequest\x12~\n\x02id\x18\x01 \x01(\tBl\x92\x41`2MUnique scalekit-generated identifier that uniquely references an organizationJ\x0f\"org_123456789\"\xbaH\x06r\x04\x10\x01\x18 H\x00R\x02id\x12\x81\x01\n\x0b\x65xternal_id\x18\x02 \x01(\tB^\x92\x41\x45\x32)External ID of the organization to deleteJ\x18\"tenant_123123123123123\"\xbaH\x04r\x02\x10\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEWH\x00R\nexternalIdB\x0c\n\nidentities\"\xcf\x04\n\x19GeneratePortalLinkRequest\x12N\n\x02id\x18\x01 \x01(\tB>\x92\x41)2\x0fOrganization IDJ\x16\"org_1231234233424344\"\xbaH\x0fr\n\x10\x01\x18 :\x04org_\xc8\x01\x01R\x02id\x12(\n\x03sso\x18\x02 \x01(\x08\x42\x11\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEWH\x00R\x03sso\x88\x01\x01\x12=\n\x0e\x64irectory_sync\x18\x03 \x01(\x08\x42\x11\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEWH\x01R\rdirectorySync\x88\x01\x01\x12\xdd\x02\n\x08\x66\x65\x61tures\x18\x04 \x03(\x0e\x32\".scalekit.v1.organizations.FeatureB\x9c\x02\x92\x41\x98\x02\x32\x95\x02\x46\x65\x61tures to enable in the admin portal link. To enable features, append them as URL parameters:\n\n- Single Sign-On: ?features=sso\n- Directory Sync: ?features=dir_sync\n- Both features: ?features=sso&features=dir_sync\n\nExample URL: https://scalekit.com/portal/lnk_123?features=ssoR\x08\x66\x65\x61turesB\x06\n\x04_ssoB\x11\n\x0f_directory_sync\"f\n\x14GetPortalLinkRequest\x12N\n\x02id\x18\x01 \x01(\tB>\x92\x41)2\x0fOrganization IDJ\x16\"org_1231234233424344\"\xbaH\x0fr\n\x10\x01\x18 :\x04org_\xc8\x01\x01R\x02id\"i\n\x17\x44\x65letePortalLinkRequest\x12N\n\x02id\x18\x01 \x01(\tB>\x92\x41)2\x0fOrganization IDJ\x16\"org_1231234233424344\"\xbaH\x0fr\n\x10\x01\x18 :\x04org_\xc8\x01\x01R\x02id\"\xbe\x01\n\x1b\x44\x65letePortalLinkByIdRequest\x12N\n\x02id\x18\x01 \x01(\tB>\x92\x41)2\x0fOrganization IDJ\x16\"org_1231234233424344\"\xbaH\x0fr\n\x10\x01\x18 :\x04org_\xc8\x01\x01R\x02id\x12O\n\x07link_id\x18\x02 \x01(\tB6\x92\x41!2\x07Link IDJ\x16\"lnk_1231234233424344\"\xbaH\x0fr\n\x10\x01\x18 :\x04lnk_\xc8\x01\x01R\x06linkId\"\xb5\x03\n\x04Link\x12J\n\x02id\x18\x01 \x01(\tB:\x92\x41\x37\x32\x1eUnique Identifier for the linkJ\x15\"lnk_123123123123123\"R\x02id\x12\xc7\x01\n\x08location\x18\x02 \x01(\tB\xaa\x01\x92\x41\xa6\x01\x32qLocation of the link. This is the URL that can be used to access the Admin portal. The link is valid for 1 minuteJ1\"https://scalekit.com/portal/lnk_123123123123123\"R\x08location\x12\x96\x01\n\x0b\x65xpire_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampBY\x92\x41V28Expiry time of the link. The link is valid for 1 minute.J\x1a\"2024-02-06T14:48:00.000Z\"R\nexpireTime\"\x96\x02\n\x1aGeneratePortalLinkResponse\x12\xf7\x01\n\x04link\x18\x01 \x01(\x0b\x32\x1f.scalekit.v1.organizations.LinkB\xc1\x01\x92\x41\xbd\x01\x32\xba\x01\x43ontains the generated admin portal link details. The link URL can be shared with organization administrators to set up: Single Sign-On (SSO) authentication and directory synchronizationR\x04link\"h\n\x16GetPortalLinksResponse\x12N\n\x05links\x18\x01 \x03(\x0b\x32\x1f.scalekit.v1.organizations.LinkB\x17\x92\x41\x14\x32\x12\x41\x64min Portal LinksR\x05links\"\x90\x04\n!UpdateOrganizationSettingsRequest\x12\x97\x01\n\x02id\x18\x01 \x01(\tB\x86\x01\x92\x41q2WUnique identifier of the organization to update settings. Must begin with \'org_\' prefixJ\x16\"org_1231234233424344\"\xbaH\x0fr\n\x10\x01\x18 :\x04org_\xc8\x01\x01R\x02id\x12\xd0\x02\n\x08settings\x18\x02 \x01(\x0b\x32/.scalekit.v1.organizations.OrganizationSettingsB\x82\x02\x92\x41\xf8\x01\x32\x95\x01Settings configuration to apply to the organization. Contains feature toggles for SSO, directory synchronization, and other organization capabilitiesJ^{\"features\": [{\"name\": \"sso\", \"enabled\": true}, {\"name\": \"directory_sync\", \"enabled\": false}]}\xbaH\x03\xc8\x01\x01R\x08settings\"\x91\x0c\n!OrganizationSessionPolicySettings\x12\x92\x02\n\rpolicy_source\x18\x01 \x01(\x0e\x32,.scalekit.v1.organizations.SessionPolicyTypeB\xbe\x01\x92\x41\xaf\x01\x32\xa2\x01Policy source. \'APPLICATION\' means the organization inherits the application-level session policy. \'CUSTOM\' means organization-specific timeout values are active.J\x08\"CUSTOM\"\xbaH\x08\x82\x01\x05\x10\x01\"\x01\x00R\x0cpolicySource\x12\xec\x01\n\x18\x61\x62solute_session_timeout\x18\x02 \x01(\x0b\x32\x1b.google.protobuf.Int32ValueB\x94\x01\x92\x41\x90\x01\x32\x88\x01The absolute session timeout value. The unit is specified by absolute_session_timeout_unit. Omitted when policy_source is \'environment\'.J\x03\x33\x36\x30R\x16\x61\x62soluteSessionTimeout\x12\xea\x01\n\x1d\x61\x62solute_session_timeout_unit\x18\x03 \x01(\x0e\x32\x1d.scalekit.v1.commons.TimeUnitB\x82\x01\x92\x41\x7f\x32rUnit for absolute_session_timeout. Accepted values: \'minutes\', \'hours\', \'days\'. Responses always return \'minutes\'.J\t\"minutes\"H\x00R\x1a\x61\x62soluteSessionTimeoutUnit\x88\x01\x01\x12\xd3\x01\n\x1cidle_session_timeout_enabled\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.BoolValueBv\x92\x41s2kWhether idle session timeout is enabled for this organization. Omitted when policy_source is \'environment\'.J\x04trueR\x19idleSessionTimeoutEnabled\x12\x84\x02\n\x14idle_session_timeout\x18\x05 \x01(\x0b\x32\x1b.google.protobuf.Int32ValueB\xb4\x01\x92\x41\xb0\x01\x32\xa9\x01The idle session timeout value. The unit is specified by idle_session_timeout_unit. Omitted when idle_session_timeout_enabled is false or policy_source is \'environment\'.J\x02\x38\x34R\x12idleSessionTimeout\x12\xdd\x01\n\x19idle_session_timeout_unit\x18\x06 \x01(\x0e\x32\x1d.scalekit.v1.commons.TimeUnitB~\x92\x41{2nUnit for idle_session_timeout. Accepted values: \'minutes\', \'hours\', \'days\'. Responses always return \'minutes\'.J\t\"minutes\"H\x01R\x16idleSessionTimeoutUnit\x88\x01\x01\x42 \n\x1e_absolute_session_timeout_unitB\x1c\n\x1a_idle_session_timeout_unit\"\xd4\x01\n#GetOrganizationSessionPolicyRequest\x12\xac\x01\n\x0forganization_id\x18\x01 \x01(\tB\x82\x01\x92\x41m2RThe unique identifier of the organization whose session policy is being requested.J\x17\"org_59615193906282635\"\xe0\x41\x02\xbaH\x0cr\n\x10\x01\x18 :\x04org_R\x0eorganizationId\"\xac\x01\n$GetOrganizationSessionPolicyResponse\x12\x83\x01\n\x06policy\x18\x01 \x01(\x0b\x32<.scalekit.v1.organizations.OrganizationSessionPolicySettingsB-\x92\x41*2(The session policy for the organization.R\x06policy\"\xb7\x0c\n&UpdateOrganizationSessionPolicyRequest\x12\xaa\x01\n\x0forganization_id\x18\x01 \x01(\tB\x80\x01\x92\x41k2PThe unique identifier of the organization whose session policy is being updated.J\x17\"org_59615193906282635\"\xe0\x41\x02\xbaH\x0cr\n\x10\x01\x18 :\x04org_R\x0eorganizationId\x12\xe8\x01\n\rpolicy_source\x18\x02 \x01(\x0e\x32,.scalekit.v1.organizations.SessionPolicyTypeB\x94\x01\x92\x41\x90\x01\x32\x83\x01Policy source. Send \'APPLICATION\' to revert to application defaults. Send \'CUSTOM\' with timeout values to activate a custom policy.J\x08\"CUSTOM\"R\x0cpolicySource\x12\xe7\x01\n\x18\x61\x62solute_session_timeout\x18\x03 \x01(\x0b\x32\x1b.google.protobuf.Int32ValueB\x8f\x01\x92\x41\x8b\x01\x32\x83\x01The absolute session timeout value. The unit is specified by absolute_session_timeout_unit. Omit when policy_source is APPLICATION.J\x03\x33\x36\x30R\x16\x61\x62soluteSessionTimeout\x12\xdb\x01\n\x1d\x61\x62solute_session_timeout_unit\x18\x04 \x01(\x0e\x32\x1d.scalekit.v1.commons.TimeUnitBt\x92\x41q2dUnit for absolute_session_timeout. Accepted values: \'MINUTES\', \'HOURS\', \'DAYS\'. Defaults to MINUTES.J\t\"MINUTES\"H\x00R\x1a\x61\x62soluteSessionTimeoutUnit\x88\x01\x01\x12\xb8\x01\n\x1cidle_session_timeout_enabled\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.BoolValueB[\x92\x41X2PWhether idle session timeout is enabled. Omit when policy_source is APPLICATION.J\x04trueR\x19idleSessionTimeoutEnabled\x12\xdf\x01\n\x14idle_session_timeout\x18\x06 \x01(\x0b\x32\x1b.google.protobuf.Int32ValueB\x8f\x01\x92\x41\x8b\x01\x32\x84\x01The idle session timeout value. The unit is specified by idle_session_timeout_unit. Omit when idle_session_timeout_enabled is false.J\x02\x38\x34R\x12idleSessionTimeout\x12\xcf\x01\n\x19idle_session_timeout_unit\x18\x07 \x01(\x0e\x32\x1d.scalekit.v1.commons.TimeUnitBp\x92\x41m2`Unit for idle_session_timeout. Accepted values: \'MINUTES\', \'HOURS\', \'DAYS\'. Defaults to MINUTES.J\t\"MINUTES\"H\x01R\x16idleSessionTimeoutUnit\x88\x01\x01\x42 \n\x1e_absolute_session_timeout_unitB\x1c\n\x1a_idle_session_timeout_unit\"\xb7\x01\n\'UpdateOrganizationSessionPolicyResponse\x12\x8b\x01\n\x06policy\x18\x01 \x01(\x0b\x32<.scalekit.v1.organizations.OrganizationSessionPolicySettingsB5\x92\x41\x32\x32\x30The updated session policy for the organization.R\x06policy\"\xaa\x01\n\"GetApplicationSessionPolicyRequest\x12\x83\x01\n\x0forganization_id\x18\x01 \x01(\tBZ\x92\x41\x45\x32*The unique identifier of the organization.J\x17\"org_59615193906282635\"\xe0\x41\x02\xbaH\x0cr\n\x10\x01\x18 :\x04org_R\x0eorganizationId\"\xb1\t\n ApplicationSessionPolicySettings\x12\x9a\x01\n\x18\x61\x62solute_session_timeout\x18\x01 \x01(\x05\x42`\x92\x41]2VAbsolute session timeout value in the unit specified by absolute_session_timeout_unit.J\x03\x34\x38\x30R\x16\x61\x62soluteSessionTimeout\x12\x8e\x01\n\x1cidle_session_timeout_enabled\x18\x02 \x01(\x08\x42M\x92\x41J2AWhether idle session timeout is enabled at the application level.J\x05\x66\x61lseR\x19idleSessionTimeoutEnabled\x12\xad\x01\n\x14idle_session_timeout\x18\x03 \x01(\x05\x42{\x92\x41x2rIdle session timeout value in the unit specified by idle_session_timeout_unit. Zero when idle timeout is disabled.J\x02\x36\x30R\x12idleSessionTimeout\x12~\n\x13\x61\x63\x63\x65ss_token_expiry\x18\x04 \x01(\x05\x42N\x92\x41K2FAccess token expiry in minutes. Custom policy values must exceed this.J\x01\x35R\x11\x61\x63\x63\x65ssTokenExpiry\x12\xe0\x01\n\x1d\x61\x62solute_session_timeout_unit\x18\x05 \x01(\x0e\x32\x1d.scalekit.v1.commons.TimeUnitBy\x92\x41v2iUnit for absolute_session_timeout. Reflects the unit configured for the application-level session policy.J\t\"MINUTES\"H\x00R\x1a\x61\x62soluteSessionTimeoutUnit\x88\x01\x01\x12\x8b\x02\n\x19idle_session_timeout_unit\x18\x06 \x01(\x0e\x32\x1d.scalekit.v1.commons.TimeUnitB\xab\x01\x92\x41\xa7\x01\x32\x99\x01Unit for idle_session_timeout. Reflects the unit configured for the application-level session policy. Omitted when idle_session_timeout_enabled is false.J\t\"MINUTES\"H\x01R\x16idleSessionTimeoutUnit\x88\x01\x01\x42 \n\x1e_absolute_session_timeout_unitB\x1c\n\x1a_idle_session_timeout_unit\"\xd1\x01\n#GetApplicationSessionPolicyResponse\x12\xa9\x01\n\x12\x61pplication_policy\x18\x01 \x01(\x0b\x32;.scalekit.v1.organizations.ApplicationSessionPolicySettingsB=\x92\x41:28The effective application-level session policy settings.R\x11\x61pplicationPolicy\"\xdc\x02\n\"OrganizationUserManagementSettings\x12\xb5\x02\n\x11max_allowed_users\x18\x01 \x01(\x0b\x32\x1b.google.protobuf.Int32ValueB\xeb\x01\x92\x41\xe7\x01\x32\xdf\x01Maximum number of users allowed in the organization. When nil (not set), there feature is not enabled. When explicitly set to zero, it also means no limit. When set to a positive integer, it enforces the maximum user limit.J\x03\x31\x30\x30R\x0fmaxAllowedUsers\"\xae\x08\n\x1bOrganizationSessionSettings\x12\xfe\x01\n\x18\x61\x62solute_session_timeout\x18\x01 \x01(\x0b\x32\x1b.google.protobuf.Int32ValueB\xa6\x01\x92\x41\xa2\x01\x32\x98\x01The maximum duration in seconds that a session can remain active, regardless of activity. After this time, the user will be required to re-authenticate.J\x05\x38\x36\x34\x30\x30R\x16\x61\x62soluteSessionTimeout\x12\xd4\x01\n\x14idle_session_timeout\x18\x03 \x01(\x0b\x32\x1b.google.protobuf.Int32ValueB\x84\x01\x92\x41\x80\x01\x32xThe duration in seconds that a session can remain idle before it is automatically terminated. Activity resets the timer.J\x04\x31\x38\x30\x30R\x12idleSessionTimeout\x12\x8e\x02\n\x1cidle_session_timeout_enabled\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\xb0\x01\x92\x41\xac\x01\x32\xa3\x01Whether idle session timeout is enabled for this organization. When enabled, sessions expire after the idle timeout duration regardless of the environment setting.J\x04trueR\x19idleSessionTimeoutEnabled\x12\xe7\x01\n\rpolicy_source\x18\x06 \x01(\tB\xc1\x01\x92\x41\xbd\x01\x32\xb0\x01Policy source for this organization. APPLICATION means the organization inherits application-level session policy. CUSTOM means organization-specific timeout values are active.J\x08\"CUSTOM\"R\x0cpolicySourceJ\x04\x08\x02\x10\x03J\x04\x08\x04\x10\x05R\x1asession_management_enabledR\x14idle_session_enabled\"\x8e\x04\n\x14OrganizationSettings\x12\xa4\x02\n\x08\x66\x65\x61tures\x18\x01 \x03(\x0b\x32\x36.scalekit.v1.organizations.OrganizationSettingsFeatureB\xcf\x01\x92\x41\xcb\x01\x32wList of feature toggles that control organization capabilities such as SSO authentication and directory synchronizationJP[{\"name\": \"sso\", \"enabled\": true}, {\"name\": \"directory_sync\", \"enabled\": false}]R\x08\x66\x65\x61tures:\xce\x01\x92\x41\xca\x01\nh*\x15Organization Settings2OConfiguration options that control organization-level features and capabilities2^{\"features\": [{\"name\": \"sso\", \"enabled\": true}, {\"name\": \"directory_sync\", \"enabled\": false}]}\"\x8e\x04\n\x1bOrganizationSettingsFeature\x12\x81\x02\n\x04name\x18\x01 \x01(\tB\xec\x01\x92\x41\xe8\x01\x32\xde\x01\x46\x65\x61ture identifier. Supported values include: \"sso\" (Single Sign-On), \"directory_sync\" (Directory Synchronization), \"domain_verification\" (Domain Verification), \"session_policy\" (Organization-level session policy override)J\x05\"sso\"R\x04name\x12t\n\x07\x65nabled\x18\x02 \x01(\x08\x42Z\x92\x41W2OWhether the feature is enabled (true) or disabled (false) for this organizationJ\x04trueR\x07\x65nabled:u\x92\x41r\np*\x1bOrganization Feature Toggle2@Controls the activation state of a specific organization feature\xd2\x01\x04name\xd2\x01\x07\x65nabled\"\x96\x02\n#UpsertUserManagementSettingsRequest\x12W\n\x0forganization_id\x18\x01 \x01(\tB.\x92\x41\x19\x32\x17ID of the organization.\xbaH\x0fr\n\x10\x01\x18 :\x04org_\xc8\x01\x01R\x0eorganizationId\x12\x95\x01\n\x08settings\x18\x02 \x01(\x0b\x32=.scalekit.v1.organizations.OrganizationUserManagementSettingsB:\x92\x41\x31\x32/The new values for the setting fields to patch.\xbaH\x03\xc8\x01\x01R\x08settings\"\x9c\x01\n$UpsertUserManagementSettingsResponse\x12t\n\x08settings\x18\x01 \x01(\x0b\x32=.scalekit.v1.organizations.OrganizationUserManagementSettingsB\x19\x92\x41\x16\x32\x14The updated setting.R\x08settings\"\x87\x01\n,GetOrganizationUserManagementSettingsRequest\x12W\n\x0forganization_id\x18\x01 \x01(\tB.\x92\x41\x19\x32\x17ID of the organization.\xbaH\x0fr\n\x10\x01\x18 :\x04org_\xc8\x01\x01R\x0eorganizationId\"\xaf\x01\n-GetOrganizationUserManagementSettingsResponse\x12~\n\x08settings\x18\x01 \x01(\x0b\x32=.scalekit.v1.organizations.OrganizationUserManagementSettingsB#\x92\x41 2\x1eList of organization settings.R\x08settings*R\n\x07\x46\x65\x61ture\x12\x17\n\x13\x46\x45\x41TURE_UNSPECIFIED\x10\x00\x12\x13\n\x0bUNSPECIFIED\x10\x00\x1a\x02\x08\x01\x12\x0c\n\x08\x64ir_sync\x10\x01\x12\x07\n\x03sso\x10\x02\x1a\x02\x10\x01*U\n\x11SessionPolicyType\x12#\n\x1fSESSION_POLICY_TYPE_UNSPECIFIED\x10\x00\x12\x0f\n\x0b\x41PPLICATION\x10\x01\x12\n\n\x06\x43USTOM\x10\x02\x32\xaaP\n\x13OrganizationService\x12\x88\x04\n\x12\x43reateOrganization\x12\x34.scalekit.v1.organizations.CreateOrganizationRequest\x1a\x35.scalekit.v1.organizations.CreateOrganizationResponse\"\x84\x03\x92\x41\xcf\x02\n\rOrganizations\x12\x16\x43reate an organization\x1a\x8f\x01\x43reates a new organization in your environment. Use this endpoint to add a new tenant that can be configured with various settings and metadataJ\x93\x01\n\x03\x32\x30\x31\x12\x8b\x01\nNReturns the newly created organization with its unique identifier and settings\x12\x39\n7\x1a\x35.scalekit.v1.organizations.CreateOrganizationResponse\x82\xb5\x18\x02\x18\x44\x82\xd3\xe4\x93\x02%\"\x15/api/v1/organizations:\x0corganization\x12\xbf\x04\n\x12UpdateOrganization\x12\x34.scalekit.v1.organizations.UpdateOrganizationRequest\x1a\x35.scalekit.v1.organizations.UpdateOrganizationResponse\"\xbb\x03\x92\x41\xec\x02\n\rOrganizations\x12\x1bUpdate organization details\x1a\xa1\x01Updates an organization\'s display name, external ID, or metadata. Requires a valid organization identifier. Region code cannot be modified through this endpoint.J\x99\x01\n\x03\x32\x30\x30\x12\x91\x01\nTReturns the updated organization with all current details reflected in the response.\x12\x39\n7\x1a\x35.scalekit.v1.organizations.UpdateOrganizationResponse\x82\xb5\x18\x17\n\x13organizations_write\x18T\x82\xd3\xe4\x93\x02*2\x1a/api/v1/organizations/{id}:\x0corganization\x12\xde\x03\n\x0fGetOrganization\x12\x31.scalekit.v1.organizations.GetOrganizationRequest\x1a\x32.scalekit.v1.organizations.GetOrganizationResponse\"\xe3\x02\x92\x41\xa3\x02\n\rOrganizations\x12\x18Get organization details\x1a]Retrieves organization details by Scalekit ID, including name, region, metadata, and settingsJ\x98\x01\n\x03\x32\x30\x30\x12\x90\x01\nVReturns the complete organization object with ID, display name, settings, and metadata\x12\x36\n4\x1a\x32.scalekit.v1.organizations.GetOrganizationResponse\x82\xb5\x18\x16\n\x12organizations_read\x18t\x82\xd3\xe4\x93\x02\x1c\x12\x1a/api/v1/organizations/{id}\x12\xd3\x05\n\x1bGetOrganizationByExternalId\x12\x31.scalekit.v1.organizations.GetOrganizationRequest\x1a\x32.scalekit.v1.organizations.GetOrganizationResponse\"\xcc\x04\x92\x41\xfa\x03\n\rOrganizations\x12\'Get organization details by external Id\x1a]Retrieves organization details by External ID, including name, region, metadata, and settingsJ\xa4\x01\n\x03\x32\x30\x30\x12\x9c\x01\nbReturns the complete organization object with ID, display name, settings, external ID and metadata\x12\x36\n4\x1a\x32.scalekit.v1.organizations.GetOrganizationResponseJa\n\x03\x34\x30\x30\x12Z\nXInvalid request - external ID is empty or the caller\'s organization claim does not matchJW\n\x03\x34\x30\x34\x12P\nNOrganization not found - no organization exists with the specified external ID\x82\xb5\x18\x16\n\x12organizations_read\x18\x04\x82\xd3\xe4\x93\x02.\x12,/api/v1/organizations:external/{external_id}\x12\xc2\t\n\x10ListOrganization\x12\x33.scalekit.v1.organizations.ListOrganizationsRequest\x1a\x34.scalekit.v1.organizations.ListOrganizationsResponse\"\xc2\x08\x92\x41\x9b\x08\n\rOrganizations\x12\x12List organizations\x1a\xa0\x01Retrieve a paginated list of organizations within your environment. The response includes a `page_token` that can be used to access subsequent pages of results.Js\n\x03\x32\x30\x30\x12l\n0Successfully retrieved the list of organizations\x12\x38\n6\x1a\x34.scalekit.v1.organizations.ListOrganizationsResponseJ\x1b\n\x03\x34\x30\x30\x12\x14\n\x12Invalid page tokenj\xc0\x05\n\rx-codeSamples\x12\xae\x05\x32\xab\x05\n\x97\x01*\x94\x01\n\x16\n\x05label\x12\r\x1a\x0bNode.js SDK\n\x14\n\x04lang\x12\x0c\x1a\njavascript\nd\n\x06source\x12Z\x1aXconst organizations = await scalekit.organization.listOrganization({\n pageSize: 10,\n});\n\xc0\x01*\xbd\x01\n\x15\n\x05label\x12\x0c\x1a\nPython SDK\n\x10\n\x04lang\x12\x08\x1a\x06python\n\x91\x01\n\x06source\x12\x86\x01\x1a\x83\x01options = ListOrganizationOptions()\noptions.page_size = 10\n\norganizations = sc.organization.list_organizations(\n options=options\n)\n\xaf\x01*\xac\x01\n\x11\n\x05label\x12\x08\x1a\x06Go SDK\n\x0c\n\x04lang\x12\x04\x1a\x02go\n\x88\x01\n\x06source\x12~\x1a|organizations, err := sc.Organization.ListOrganizations(\n ctx,\n &scalekit.ListOrganizationOptions{\n PageSize: 10,\n }\n)\n\x99\x01*\x96\x01\n\x13\n\x05label\x12\n\x1a\x08Java SDK\n\x0e\n\x04lang\x12\x06\x1a\x04java\no\n\x06source\x12\x65\x1a\x63ListOrganizationsResponse organizations = scalekitClient.organizations().listOrganizations(10, \"\");\x82\xb5\x18\x02\x18\x44\x82\xd3\xe4\x93\x02\x17\x12\x15/api/v1/organizations\x12\xf1\x04\n\x12SearchOrganization\x12\x35.scalekit.v1.organizations.SearchOrganizationsRequest\x1a\x36.scalekit.v1.organizations.SearchOrganizationsResponse\"\xeb\x03\x92\x41\xae\x03\n\rOrganizations\x12\x14Search organizations\x1a\xd4\x01Searches for organizations in your environment using a query string. The query matches against organization name, ID, or external ID. Returns multiple results when more than one organization matches the criteria.J\xaf\x01\n\x03\x32\x30\x30\x12\xa7\x01\niReturns a list of matching organizations and a page token for pagination if there are additional results.\x12:\n8\x1a\x36.scalekit.v1.organizations.SearchOrganizationsResponse\x82\xb5\x18\x02\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x1e\x12\x1c/api/v1/organizations:search\x12\xcf\x02\n\x12\x44\x65leteOrganization\x12\x34.scalekit.v1.organizations.DeleteOrganizationRequest\x1a\x16.google.protobuf.Empty\"\xea\x01\x92\x41\xbe\x01\n\rOrganizations\x12\x16\x44\x65lete an organization\x1aPRemove an existing organization from the environment using its unique identifierJC\n\x03\x32\x30\x30\x12<\n:Organization successfully deleted and no longer accessible\x82\xb5\x18\x02\x18\x44\x82\xd3\xe4\x93\x02\x1c*\x1a/api/v1/organizations/{id}\x12\xe2\x04\n\x12GeneratePortalLink\x12\x34.scalekit.v1.organizations.GeneratePortalLinkRequest\x1a\x35.scalekit.v1.organizations.GeneratePortalLinkResponse\"\xde\x03\x92\x41\xa5\x03\n\rOrganizations\x12\x1aGenerate admin portal link\x1a\xd5\x01\x43reates a single use Admin Portal URL valid for 1 minute. Once the generated admin portal URL is accessed or rendered, a temporary session of 6 hours is created to allow the admin to update SSO/SCIM configuration.J\x9f\x01\n\x03\x32\x30\x30\x12\x97\x01\nZAdmin Portal link generated successfully. Returns the portal URL and expiration timestamp.\x12\x39\n7\x1a\x35.scalekit.v1.organizations.GeneratePortalLinkResponse\x82\xb5\x18\x02\x18\x44\x82\xd3\xe4\x93\x02)\x1a\'/api/v1/organizations/{id}/portal_links\x12\xa0\x02\n\x10\x44\x65letePortalLink\x12\x32.scalekit.v1.organizations.DeletePortalLinkRequest\x1a\x16.google.protobuf.Empty\"\xbf\x01\x92\x41x\n\x0c\x41\x64min Portal\x12\x12\x44\x65lete portal link\x1a)Revokes and deletes an Admin portal link.J)\n\x03\x32\x30\x30\x12\"\n Portal link deleted successfully\x82\xb5\x18\x02\x18@\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02)*\'/api/v1/organizations/{id}/portal_links\x12\x9f\x02\n\x14\x44\x65letePortalLinkByID\x12\x36.scalekit.v1.organizations.DeletePortalLinkByIdRequest\x1a\x16.google.protobuf.Empty\"\xb6\x01\x92\x41\x65\n\x0c\x41\x64min Portal\x12\x18\x44\x65lete admin portal link\x1a)Revokes and deletes an Admin portal link.J\x10\n\x03\x32\x30\x30\x12\t\n\x07Success\x82\xb5\x18\x02\x18\x44\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x33*1/api/v1/organizations/{id}/portal_links/{link_id}\x12\x88\x03\n\x0eGetPortalLinks\x12/.scalekit.v1.organizations.GetPortalLinkRequest\x1a\x31.scalekit.v1.organizations.GetPortalLinksResponse\"\x91\x02\x92\x41\xc9\x01\n\x0c\x41\x64min Portal\x12\x0fGet portal link\x1a_Returns the Admin portal link if it exists. Use Generate Portal link to create and fetch a linkJG\n\x03\x32\x30\x30\x12@\n\x07Success\x12\x35\n3\x1a\x31.scalekit.v1.organizations.GetPortalLinksResponse\x82\xb5\x18\x02\x18@\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02)\x12\'/api/v1/organizations/{id}/portal_links\x12\xfa\x06\n\x1aUpdateOrganizationSettings\x12<.scalekit.v1.organizations.UpdateOrganizationSettingsRequest\x1a\x32.scalekit.v1.organizations.GetOrganizationResponse\"\xe9\x05\x92\x41\xaa\x05\n\rOrganizations\x12\x1cToggle organization settings\x1a\xd3\x01Updates configuration settings for an organization. Supports modifying SSO configuration, directory synchronization settings, and session parameters. Requires organization ID and the specific settings to update.J\xe3\x01\n\x03\x32\x30\x30\x12\xdb\x01\n\xa0\x01Returns the complete organization object with updated settings applied. Contains all organization details including ID, display name, and the modified settings.\x12\x36\n4\x1a\x32.scalekit.v1.organizations.GetOrganizationResponseJp\n\x03\x34\x30\x30\x12i\ngInvalid request - occurs when the settings payload contains invalid values or unsupported configurationJM\n\x03\x34\x30\x34\x12\x46\nDOrganization not found - the specified organization ID doesn\'t exist\x82\xb5\x18\x02\x18\x44\x82\xd3\xe4\x93\x02/2#/api/v1/organizations/{id}/settings:\x08settings\x12\xd0\x05\n\x1fUpdateOrganizationSessionPolicy\x12\x41.scalekit.v1.organizations.UpdateOrganizationSessionPolicyRequest\x1a\x42.scalekit.v1.organizations.UpdateOrganizationSessionPolicyResponse\"\xa5\x04\x92\x41\xbc\x03\n\rOrganizations\x12\"Update organization session policy\x1a\xed\x01Sets a custom session policy for an organization or reverts to application-level settings. Send session_policy=\'APPLICATION\' to revert to application defaults. Send session_policy=\'CUSTOM\' with timeout values to activate a custom policy.Ju\n\x03\x32\x30\x30\x12n\n$Session policy updated successfully.\x12\x46\nD\x1a\x42.scalekit.v1.organizations.UpdateOrganizationSessionPolicyResponseJ \n\x03\x34\x30\x34\x12\x19\n\x17Organization not found.\x82\xb5\x18 \n\x1corganizations_sessions_write\x18T\x82\xd3\xe4\x93\x02;26/api/v1/organizations/{organization_id}/session-policy:\x01*\x12\xb9\x05\n\x1cGetOrganizationSessionPolicy\x12>.scalekit.v1.organizations.GetOrganizationSessionPolicyRequest\x1a?.scalekit.v1.organizations.GetOrganizationSessionPolicyResponse\"\x97\x04\x92\x41\xb2\x03\n\rOrganizations\x12\x1fGet organization session policy\x1a\xe7\x01Retrieves the session policy for an organization. Returns session_policy=\'APPLICATION\' if the organization inherits the application-level defaults, or session_policy=\'CUSTOM\' with the configured values if a custom policy is active.Jt\n\x03\x32\x30\x30\x12m\n&Session policy retrieved successfully.\x12\x43\nA\x1a?.scalekit.v1.organizations.GetOrganizationSessionPolicyResponseJ \n\x03\x34\x30\x34\x12\x19\n\x17Organization not found.\x82\xb5\x18\x1f\n\x1borganizations_sessions_read\x18T\x82\xd3\xe4\x93\x02\x38\x12\x36/api/v1/organizations/{organization_id}/session-policy\x12\xd5\x03\n\x1cUpsertUserManagementSettings\x12>.scalekit.v1.organizations.UpsertUserManagementSettingsRequest\x1a?.scalekit.v1.organizations.UpsertUserManagementSettingsResponse\"\xb3\x02\x92\x41\xdf\x01\n\rOrganizations\x12 Upsert organization user setting\x1a\x33Upsert user management settings for an organizationJw\n\x03\x32\x30\x30\x12p\n)Returns the updated organization setting.\x12\x43\nA\x1a?.scalekit.v1.organizations.UpsertUserManagementSettingsResponse\x82\xb5\x18\x02\x18\x64\x82\xd3\xe4\x93\x02\x44\x32?/api/v1/organizations/{organization_id}/settings/usermanagement:\x01*\x12\x9f\x04\n$GetOrganizationUserManagementSetting\x12G.scalekit.v1.organizations.GetOrganizationUserManagementSettingsRequest\x1aH.scalekit.v1.organizations.GetOrganizationUserManagementSettingsResponse\"\xe3\x02\x92\x41\x83\x02\n\rOrganizations\x12(Get organization user management setting\x1a\x43Retrieves the user management settings for a specific organization.J\x82\x01\n\x03\x32\x30\x30\x12{\n+Returns the requested organization setting.\x12L\nJ\x1aH.scalekit.v1.organizations.GetOrganizationUserManagementSettingsResponse\x82\xb5\x18\x02\x18\x64\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x41\x12?/api/v1/organizations/{organization_id}/settings/usermanagement\x12\xee\x05\n\x1bGetApplicationSessionPolicy\x12=.scalekit.v1.organizations.GetApplicationSessionPolicyRequest\x1a>.scalekit.v1.organizations.GetApplicationSessionPolicyResponse\"\xcf\x04\x92\x41\xcf\x03\n\rOrganizations\x12/Get application session policy for organization\x1a\xa6\x01Returns the application-level session settings for display in hosted pages. Includes absolute timeout, idle timeout configuration, and access token expiry in minutes.J\x7f\n\x03\x32\x30\x30\x12x\n2Application session policy retrieved successfully.\x12\x42\n@\x1a>.scalekit.v1.organizations.GetApplicationSessionPolicyResponseJA\n\x03\x34\x30\x33\x12:\n8Session policy feature not enabled for this environment.J \n\x03\x34\x30\x34\x12\x19\n\x17Organization not found.\x82\xb5\x18\x1f\n\x1borganizations_sessions_read\x18T\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x44\x12\x42/api/v1/organizations/{organization_id}/application-session-policy\x1aX\x92\x41U\n\rOrganizations\x12\x44{{import \"proto/scalekit/v1/organizations/organization_details.md\"}}B\xa9\'Z7github.com/scalekit-inc/scalekit/pkg/grpc/organizations\x92\x41\xec&\x12\x92\"\n\rScalekit APIs\x12\x83!# Introduction\n\nThe Scalekit API is a RESTful API that enables you to manage organizations, users, and authentication settings. All requests must use HTTPS.\nAll API requests use the following base URLs:\n\n```\nhttps://{environment}.scalekit.dev (Development)\nhttps://{environment}.scalekit.com (Production)\nhttps://auth.example.com (Custom domain)\n```\n\nScalekit operates two separate environments: Development and Production. Resources cannot be moved between environments.\n\n# Authentication\n\nThe Scalekit API uses OAuth 2.0 Client Credentials for authentication.\n\nCopy your API credentials from the Scalekit dashboard\'s API Config section and set them as environment variables.\n\n```sh\nSCALEKIT_ENVIRONMENT_URL=\'\'\nSCALEKIT_CLIENT_ID=\'\'\nSCALEKIT_CLIENT_SECRET=\'\'\n```\n\nGetting an access token\n\n1. Get your credentials from the [Scalekit Dashboard](https://app.scalekit.com)\n2. Request an access token:\n\n```sh\ncurl https://{SCALEKIT_ENVIRONMENT_URL}/oauth/token \\\n -X POST \\\n -H \'Content-Type: application/x-www-form-urlencoded\' \\\n -d \'client_id={client_id}\' \\\n -d \'client_secret={client_secret}\' \\\n -d \'grant_type=client_credentials\'\n```\n\n3. Use the access token in API requests:\n\n```sh\ncurl https://{SCALEKIT_ENVIRONMENT_URL}/api/v1/organizations \\\n -H \'Content-Type: application/json\' \\\n -H \'Authorization: Bearer {access_token}\'\n```\n\nThe response includes an access token:\n\n```json\n{\n\t\"access_token\": \"eyJhbGciOiJSUzI1NiIsImtpZCI6InNua181Ok4OTEyMjU2NiIsInR5cCI6IkpXVCJ9...\",\n\t\"token_type\": \"Bearer\",\n\t\"expires_in\": 86399,\n\t\"scope\": \"openid\"\n}\n```\n\n# SDKs\n\nScalekit provides official SDKs for multiple programming languages. Check the changelog at GitHub repositories for the latest updates.\n\n### Node.js\n\n```sh\nnpm install @scalekit-sdk/node\n```\n\nCreate a new Scalekit client instance after initializing the environment variables\n\n```js\nimport { Scalekit } from \"@scalekit-sdk/node\";\n\nexport let scalekit = new Scalekit(\n\tprocess.env.SCALEKIT_ENVIRONMENT_URL,\n\tprocess.env.SCALEKIT_CLIENT_ID,\n\tprocess.env.SCALEKIT_CLIENT_SECRET\n);\n```\n\n[See the Node SDK changelog](https://github.com/scalekit-inc/scalekit-sdk-node/releases)\n\n### Python\n\n```sh\npip install scalekit-sdk-python\n```\n\nCreate a new Scalekit client instance after initializing the environment variables.\n\n```py\nfrom scalekit import ScalekitClient\nimport os\n\nscalekit_client = ScalekitClient(\n os.environ.get(\'SCALEKIT_ENVIRONMENT_URL\'),\n os.environ.get(\'SCALEKIT_CLIENT_ID\'),\n os.environ.get(\'SCALEKIT_CLIENT_SECRET\')\n)\n```\n\n[See the Python SDK changelog](https://github.com/scalekit-inc/scalekit-sdk-python/releases)\n\n### Go\n\n```sh\ngo get -u github.com/scalekit-inc/scalekit-sdk-go\n```\n\nCreate a new Scalekit client instance after initializing the environment variables.\n\n```go\npackage main\n\nimport (\n \"os\"\n \"github.com/scalekit-inc/scalekit-sdk-go\"\n)\n\nscalekitClient := scalekit.NewScalekitClient(\n os.Getenv(\"SCALEKIT_ENVIRONMENT_URL\"),\n os.Getenv(\"SCALEKIT_CLIENT_ID\"),\n os.Getenv(\"SCALEKIT_CLIENT_SECRET\"),\n)\n```\n\n[See the Go SDK changelog](https://github.com/scalekit-inc/scalekit-sdk-go/releases)\n\n### Java\n\n```gradle\n/* Gradle users - add the following to your dependencies in build file */\nimplementation \"com.scalekit:scalekit-sdk-java:2.0.6\"\n```\n\n```xml\n\n\n com.scalekit\n scalekit-sdk-java\n 2.0.6\n\n```\n\n[See the Java SDK changelog](https://github.com/scalekit-inc/scalekit-sdk-java/releases)\n\n# Error handling\n\nThe API uses standard HTTP status codes:\n\n| Code | Description |\n| ----------- | -------------------- |\n| 200/201 | Success |\n| 400 | Invalid request |\n| 401 | Authentication error |\n| 404 | Resource not found |\n| 429 | Rate limit exceeded |\n| 500/501/504 | Server error |\n\nError responses include detailed information:\n\n```json\n{\n\t\"code\": 16,\n\t\"message\": \"Token empty\",\n\t\"details\": [\n\t\t{\n\t\t\t\"@type\": \"type.googleapis.com/scalekit.v1.errdetails.ErrorInfo\",\n\t\t\t\"error_code\": \"UNAUTHENTICATED\"\n\t\t}\n\t]\n}\n```\n\n\":\n\x0cScalekit Inc\x12\x14https://scalekit.com\x1a\x14support@scalekit.com*8\n\nApache 2.0\x12*http://www.apache.org/licenses/LICENSE-2.02\x05\x31.0.0\x1a\x19$SCALEKIT_ENVIRONMENT_URL*\x01\x02\x32\x10\x61pplication/json:\x10\x61pplication/jsonj\x0f\n\rOrganizationsj\xd4\x03\n\x0bPermissions\x12\xc4\x03Permission management for defining and controlling access to system resources. Create, retrieve, update, and delete granular permissions that represent specific actions users can perform. Permissions are the building blocks of role-based access control (RBAC) and can be assigned to roles to grant users the ability to perform specific operations. Use this service to define custom permissions for your application\'s unique access control requirements.r+\n\rScalekit Docs\x12\x1ahttps://docs.scalekit.com/b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -156,58 +156,70 @@ _globals['_UPDATEORGANIZATIONSETTINGSREQUEST'].fields_by_name['id']._serialized_options = b'\222Aq2WUnique identifier of the organization to update settings. Must begin with \'org_\' prefixJ\026\"org_1231234233424344\"\272H\017r\n\020\001\030 :\004org_\310\001\001' _globals['_UPDATEORGANIZATIONSETTINGSREQUEST'].fields_by_name['settings']._loaded_options = None _globals['_UPDATEORGANIZATIONSETTINGSREQUEST'].fields_by_name['settings']._serialized_options = b'\222A\370\0012\225\001Settings configuration to apply to the organization. Contains feature toggles for SSO, directory synchronization, and other organization capabilitiesJ^{\"features\": [{\"name\": \"sso\", \"enabled\": true}, {\"name\": \"directory_sync\", \"enabled\": false}]}\272H\003\310\001\001' - _globals['_UPDATEORGANIZATIONSESSIONSETTINGSREQUEST'].fields_by_name['id']._loaded_options = None - _globals['_UPDATEORGANIZATIONSESSIONSETTINGSREQUEST'].fields_by_name['id']._serialized_options = b'\222Ac2HUnique identifier for the organization, beginning with an \'org_\' prefix.J\027\"org_59615193906282635\"\272H\013r\t\020\001\030 :\003org' - _globals['_UPDATEORGANIZATIONSESSIONSETTINGSREQUEST'].fields_by_name['environment_id']._loaded_options = None - _globals['_UPDATEORGANIZATIONSESSIONSETTINGSREQUEST'].fields_by_name['environment_id']._serialized_options = b'\222A\270\0012\234\001Unique identifier for the environment where the organization resides, prefixed with \'env_\'. This specifies the environment context for the session settings.J\027\"env_59615193906282635\"\272H\013r\t\020\001\030 :\003env' - _globals['_UPDATEORGANIZATIONSESSIONSETTINGSREQUEST'].fields_by_name['session_settings']._loaded_options = None - _globals['_UPDATEORGANIZATIONSESSIONSETTINGSREQUEST'].fields_by_name['session_settings']._serialized_options = b'\222AY2WThe session settings to be applied, including absolute and idle timeout configurations.\272H\003\310\001\001' - _globals['_UPDATEORGANIZATIONSESSIONSETTINGSRESPONSE'].fields_by_name['environment_id']._loaded_options = None - _globals['_UPDATEORGANIZATIONSESSIONSETTINGSRESPONSE'].fields_by_name['environment_id']._serialized_options = b'\222Ae2JThe environment ID where the organization\'s session settings were updated.J\027\"env_59615193906282635\"' - _globals['_UPDATEORGANIZATIONSESSIONSETTINGSRESPONSE'].fields_by_name['organization_id']._loaded_options = None - _globals['_UPDATEORGANIZATIONSESSIONSETTINGSRESPONSE'].fields_by_name['organization_id']._serialized_options = b'\222Ai2NThe unique identifier of the organization whose session settings were updated.J\027\"org_59615193906282635\"' - _globals['_UPDATEORGANIZATIONSESSIONSETTINGSRESPONSE'].fields_by_name['session_settings']._loaded_options = None - _globals['_UPDATEORGANIZATIONSESSIONSETTINGSRESPONSE'].fields_by_name['session_settings']._serialized_options = b'\222AD2BThe updated session settings, reflecting the new timeout policies.' + _globals['_ORGANIZATIONSESSIONPOLICYSETTINGS'].fields_by_name['policy_source']._loaded_options = None + _globals['_ORGANIZATIONSESSIONPOLICYSETTINGS'].fields_by_name['policy_source']._serialized_options = b'\222A\257\0012\242\001Policy source. \'APPLICATION\' means the organization inherits the application-level session policy. \'CUSTOM\' means organization-specific timeout values are active.J\010\"CUSTOM\"\272H\010\202\001\005\020\001\"\001\000' + _globals['_ORGANIZATIONSESSIONPOLICYSETTINGS'].fields_by_name['absolute_session_timeout']._loaded_options = None + _globals['_ORGANIZATIONSESSIONPOLICYSETTINGS'].fields_by_name['absolute_session_timeout']._serialized_options = b'\222A\220\0012\210\001The absolute session timeout value. The unit is specified by absolute_session_timeout_unit. Omitted when policy_source is \'environment\'.J\003360' + _globals['_ORGANIZATIONSESSIONPOLICYSETTINGS'].fields_by_name['absolute_session_timeout_unit']._loaded_options = None + _globals['_ORGANIZATIONSESSIONPOLICYSETTINGS'].fields_by_name['absolute_session_timeout_unit']._serialized_options = b'\222A\1772rUnit for absolute_session_timeout. Accepted values: \'minutes\', \'hours\', \'days\'. Responses always return \'minutes\'.J\t\"minutes\"' + _globals['_ORGANIZATIONSESSIONPOLICYSETTINGS'].fields_by_name['idle_session_timeout_enabled']._loaded_options = None + _globals['_ORGANIZATIONSESSIONPOLICYSETTINGS'].fields_by_name['idle_session_timeout_enabled']._serialized_options = b'\222As2kWhether idle session timeout is enabled for this organization. Omitted when policy_source is \'environment\'.J\004true' + _globals['_ORGANIZATIONSESSIONPOLICYSETTINGS'].fields_by_name['idle_session_timeout']._loaded_options = None + _globals['_ORGANIZATIONSESSIONPOLICYSETTINGS'].fields_by_name['idle_session_timeout']._serialized_options = b'\222A\260\0012\251\001The idle session timeout value. The unit is specified by idle_session_timeout_unit. Omitted when idle_session_timeout_enabled is false or policy_source is \'environment\'.J\00284' + _globals['_ORGANIZATIONSESSIONPOLICYSETTINGS'].fields_by_name['idle_session_timeout_unit']._loaded_options = None + _globals['_ORGANIZATIONSESSIONPOLICYSETTINGS'].fields_by_name['idle_session_timeout_unit']._serialized_options = b'\222A{2nUnit for idle_session_timeout. Accepted values: \'minutes\', \'hours\', \'days\'. Responses always return \'minutes\'.J\t\"minutes\"' + _globals['_GETORGANIZATIONSESSIONPOLICYREQUEST'].fields_by_name['organization_id']._loaded_options = None + _globals['_GETORGANIZATIONSESSIONPOLICYREQUEST'].fields_by_name['organization_id']._serialized_options = b'\222Am2RThe unique identifier of the organization whose session policy is being requested.J\027\"org_59615193906282635\"\340A\002\272H\014r\n\020\001\030 :\004org_' + _globals['_GETORGANIZATIONSESSIONPOLICYRESPONSE'].fields_by_name['policy']._loaded_options = None + _globals['_GETORGANIZATIONSESSIONPOLICYRESPONSE'].fields_by_name['policy']._serialized_options = b'\222A*2(The session policy for the organization.' + _globals['_UPDATEORGANIZATIONSESSIONPOLICYREQUEST'].fields_by_name['organization_id']._loaded_options = None + _globals['_UPDATEORGANIZATIONSESSIONPOLICYREQUEST'].fields_by_name['organization_id']._serialized_options = b'\222Ak2PThe unique identifier of the organization whose session policy is being updated.J\027\"org_59615193906282635\"\340A\002\272H\014r\n\020\001\030 :\004org_' + _globals['_UPDATEORGANIZATIONSESSIONPOLICYREQUEST'].fields_by_name['policy_source']._loaded_options = None + _globals['_UPDATEORGANIZATIONSESSIONPOLICYREQUEST'].fields_by_name['policy_source']._serialized_options = b'\222A\220\0012\203\001Policy source. Send \'APPLICATION\' to revert to application defaults. Send \'CUSTOM\' with timeout values to activate a custom policy.J\010\"CUSTOM\"' + _globals['_UPDATEORGANIZATIONSESSIONPOLICYREQUEST'].fields_by_name['absolute_session_timeout']._loaded_options = None + _globals['_UPDATEORGANIZATIONSESSIONPOLICYREQUEST'].fields_by_name['absolute_session_timeout']._serialized_options = b'\222A\213\0012\203\001The absolute session timeout value. The unit is specified by absolute_session_timeout_unit. Omit when policy_source is APPLICATION.J\003360' + _globals['_UPDATEORGANIZATIONSESSIONPOLICYREQUEST'].fields_by_name['absolute_session_timeout_unit']._loaded_options = None + _globals['_UPDATEORGANIZATIONSESSIONPOLICYREQUEST'].fields_by_name['absolute_session_timeout_unit']._serialized_options = b'\222Aq2dUnit for absolute_session_timeout. Accepted values: \'MINUTES\', \'HOURS\', \'DAYS\'. Defaults to MINUTES.J\t\"MINUTES\"' + _globals['_UPDATEORGANIZATIONSESSIONPOLICYREQUEST'].fields_by_name['idle_session_timeout_enabled']._loaded_options = None + _globals['_UPDATEORGANIZATIONSESSIONPOLICYREQUEST'].fields_by_name['idle_session_timeout_enabled']._serialized_options = b'\222AX2PWhether idle session timeout is enabled. Omit when policy_source is APPLICATION.J\004true' + _globals['_UPDATEORGANIZATIONSESSIONPOLICYREQUEST'].fields_by_name['idle_session_timeout']._loaded_options = None + _globals['_UPDATEORGANIZATIONSESSIONPOLICYREQUEST'].fields_by_name['idle_session_timeout']._serialized_options = b'\222A\213\0012\204\001The idle session timeout value. The unit is specified by idle_session_timeout_unit. Omit when idle_session_timeout_enabled is false.J\00284' + _globals['_UPDATEORGANIZATIONSESSIONPOLICYREQUEST'].fields_by_name['idle_session_timeout_unit']._loaded_options = None + _globals['_UPDATEORGANIZATIONSESSIONPOLICYREQUEST'].fields_by_name['idle_session_timeout_unit']._serialized_options = b'\222Am2`Unit for idle_session_timeout. Accepted values: \'MINUTES\', \'HOURS\', \'DAYS\'. Defaults to MINUTES.J\t\"MINUTES\"' + _globals['_UPDATEORGANIZATIONSESSIONPOLICYRESPONSE'].fields_by_name['policy']._loaded_options = None + _globals['_UPDATEORGANIZATIONSESSIONPOLICYRESPONSE'].fields_by_name['policy']._serialized_options = b'\222A220The updated session policy for the organization.' + _globals['_GETAPPLICATIONSESSIONPOLICYREQUEST'].fields_by_name['organization_id']._loaded_options = None + _globals['_GETAPPLICATIONSESSIONPOLICYREQUEST'].fields_by_name['organization_id']._serialized_options = b'\222AE2*The unique identifier of the organization.J\027\"org_59615193906282635\"\340A\002\272H\014r\n\020\001\030 :\004org_' + _globals['_APPLICATIONSESSIONPOLICYSETTINGS'].fields_by_name['absolute_session_timeout']._loaded_options = None + _globals['_APPLICATIONSESSIONPOLICYSETTINGS'].fields_by_name['absolute_session_timeout']._serialized_options = b'\222A]2VAbsolute session timeout value in the unit specified by absolute_session_timeout_unit.J\003480' + _globals['_APPLICATIONSESSIONPOLICYSETTINGS'].fields_by_name['idle_session_timeout_enabled']._loaded_options = None + _globals['_APPLICATIONSESSIONPOLICYSETTINGS'].fields_by_name['idle_session_timeout_enabled']._serialized_options = b'\222AJ2AWhether idle session timeout is enabled at the application level.J\005false' + _globals['_APPLICATIONSESSIONPOLICYSETTINGS'].fields_by_name['idle_session_timeout']._loaded_options = None + _globals['_APPLICATIONSESSIONPOLICYSETTINGS'].fields_by_name['idle_session_timeout']._serialized_options = b'\222Ax2rIdle session timeout value in the unit specified by idle_session_timeout_unit. Zero when idle timeout is disabled.J\00260' + _globals['_APPLICATIONSESSIONPOLICYSETTINGS'].fields_by_name['access_token_expiry']._loaded_options = None + _globals['_APPLICATIONSESSIONPOLICYSETTINGS'].fields_by_name['access_token_expiry']._serialized_options = b'\222AK2FAccess token expiry in minutes. Custom policy values must exceed this.J\0015' + _globals['_APPLICATIONSESSIONPOLICYSETTINGS'].fields_by_name['absolute_session_timeout_unit']._loaded_options = None + _globals['_APPLICATIONSESSIONPOLICYSETTINGS'].fields_by_name['absolute_session_timeout_unit']._serialized_options = b'\222Av2iUnit for absolute_session_timeout. Reflects the unit configured for the application-level session policy.J\t\"MINUTES\"' + _globals['_APPLICATIONSESSIONPOLICYSETTINGS'].fields_by_name['idle_session_timeout_unit']._loaded_options = None + _globals['_APPLICATIONSESSIONPOLICYSETTINGS'].fields_by_name['idle_session_timeout_unit']._serialized_options = b'\222A\247\0012\231\001Unit for idle_session_timeout. Reflects the unit configured for the application-level session policy. Omitted when idle_session_timeout_enabled is false.J\t\"MINUTES\"' + _globals['_GETAPPLICATIONSESSIONPOLICYRESPONSE'].fields_by_name['application_policy']._loaded_options = None + _globals['_GETAPPLICATIONSESSIONPOLICYRESPONSE'].fields_by_name['application_policy']._serialized_options = b'\222A:28The effective application-level session policy settings.' _globals['_ORGANIZATIONUSERMANAGEMENTSETTINGS'].fields_by_name['max_allowed_users']._loaded_options = None _globals['_ORGANIZATIONUSERMANAGEMENTSETTINGS'].fields_by_name['max_allowed_users']._serialized_options = b'\222A\347\0012\337\001Maximum number of users allowed in the organization. When nil (not set), there feature is not enabled. When explicitly set to zero, it also means no limit. When set to a positive integer, it enforces the maximum user limit.J\003100' _globals['_ORGANIZATIONSESSIONSETTINGS'].fields_by_name['absolute_session_timeout']._loaded_options = None _globals['_ORGANIZATIONSESSIONSETTINGS'].fields_by_name['absolute_session_timeout']._serialized_options = b'\222A\242\0012\230\001The maximum duration in seconds that a session can remain active, regardless of activity. After this time, the user will be required to re-authenticate.J\00586400' - _globals['_ORGANIZATIONSESSIONSETTINGS'].fields_by_name['session_management_enabled']._loaded_options = None - _globals['_ORGANIZATIONSESSIONSETTINGS'].fields_by_name['session_management_enabled']._serialized_options = b'\222A\1772wEnables or disables session management features for the organization. When true, session timeout policies are enforced.J\004true' _globals['_ORGANIZATIONSESSIONSETTINGS'].fields_by_name['idle_session_timeout']._loaded_options = None _globals['_ORGANIZATIONSESSIONSETTINGS'].fields_by_name['idle_session_timeout']._serialized_options = b'\222A\200\0012xThe duration in seconds that a session can remain idle before it is automatically terminated. Activity resets the timer.J\0041800' - _globals['_ORGANIZATIONSESSIONSETTINGS'].fields_by_name['idle_session_enabled']._loaded_options = None - _globals['_ORGANIZATIONSESSIONSETTINGS'].fields_by_name['idle_session_enabled']._serialized_options = b'\222A\202\0012zEnables or disables idle session timeout. If true, inactive sessions will be terminated after the specified idle duration.J\004true' - _globals['_GETORGANIZATIONSESSIONSETTINGSREQUEST'].fields_by_name['id']._loaded_options = None - _globals['_GETORGANIZATIONSESSIONSETTINGSREQUEST'].fields_by_name['id']._serialized_options = b'\222Ap2UThe unique identifier of the organization whose session settings are being requested.J\027\"org_59615193906282635\"\272H\013r\t\020\001\030 :\003org' - _globals['_GETORGANIZATIONSESSIONSETTINGSREQUEST'].fields_by_name['environment_id']._loaded_options = None - _globals['_GETORGANIZATIONSESSIONSETTINGSREQUEST'].fields_by_name['environment_id']._serialized_options = b'\222A\211\0012nThe environment ID to scope the request. This ensures the settings are retrieved from the correct environment.J\027\"env_59615193906282635\"\272H\013r\t\020\001\030 :\003env' - _globals['_CREATEORGANIZATIONSESSIONSETTINGSREQUEST'].fields_by_name['id']._loaded_options = None - _globals['_CREATEORGANIZATIONSESSIONSETTINGSREQUEST'].fields_by_name['id']._serialized_options = b'\222Aj2OThe unique identifier of the organization for which to create session settings.J\027\"org_59615193906282635\"\272H\013r\t\020\001\030 :\003org' - _globals['_CREATEORGANIZATIONSESSIONSETTINGSREQUEST'].fields_by_name['environment_id']._loaded_options = None - _globals['_CREATEORGANIZATIONSESSIONSETTINGSREQUEST'].fields_by_name['environment_id']._serialized_options = b'\222A\224\0012yThe environment ID where the organization exists. This scopes the creation of session settings to a specific environment.J\027\"env_59615193906282635\"\272H\013r\t\020\001\030 :\003env' - _globals['_CREATEORGANIZATIONSESSIONSETTINGSRESPONSE'].fields_by_name['environment_id']._loaded_options = None - _globals['_CREATEORGANIZATIONSESSIONSETTINGSRESPONSE'].fields_by_name['environment_id']._serialized_options = b'\222AV2;The environment ID where the session settings were created.J\027\"env_59615193906282635\"' - _globals['_CREATEORGANIZATIONSESSIONSETTINGSRESPONSE'].fields_by_name['organization_id']._loaded_options = None - _globals['_CREATEORGANIZATIONSESSIONSETTINGSRESPONSE'].fields_by_name['organization_id']._serialized_options = b'\222Am2RThe unique identifier of the organization for which session settings were created.J\027\"org_59615193906282635\"' - _globals['_CREATEORGANIZATIONSESSIONSETTINGSRESPONSE'].fields_by_name['session_settings']._loaded_options = None - _globals['_CREATEORGANIZATIONSESSIONSETTINGSRESPONSE'].fields_by_name['session_settings']._serialized_options = b'\222AA2?The newly created session settings, including timeout policies.' - _globals['_GETORGANIZATIONSESSIONSETTINGSRESPONSE'].fields_by_name['environment_id']._loaded_options = None - _globals['_GETORGANIZATIONSESSIONSETTINGSRESPONSE'].fields_by_name['environment_id']._serialized_options = b'\222A]2BThe environment ID from which the session settings were retrieved.J\027\"env_59615193906282635\"' - _globals['_GETORGANIZATIONSESSIONSETTINGSRESPONSE'].fields_by_name['organization_id']._loaded_options = None - _globals['_GETORGANIZATIONSESSIONSETTINGSRESPONSE'].fields_by_name['organization_id']._serialized_options = b'\222Ai2NThe unique identifier of the organization whose session settings are returned.J\027\"org_59615193906282635\"' - _globals['_GETORGANIZATIONSESSIONSETTINGSRESPONSE'].fields_by_name['session_settings']._loaded_options = None - _globals['_GETORGANIZATIONSESSIONSETTINGSRESPONSE'].fields_by_name['session_settings']._serialized_options = b'\222A>2.scalekit.v1.organizations.GetApplicationSessionPolicyResponseJA\n\003403\022:\n8Session policy feature not enabled for this environment.J \n\003404\022\031\n\027Organization not found.\202\265\030\037\n\033organizations_sessions_read\030T\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\002D\022B/api/v1/organizations/{organization_id}/application-session-policy' + _globals['_FEATURE']._serialized_start=18895 + _globals['_FEATURE']._serialized_end=18977 + _globals['_SESSIONPOLICYTYPE']._serialized_start=18979 + _globals['_SESSIONPOLICYTYPE']._serialized_end=19064 _globals['_CREATEORGANIZATIONREQUEST']._serialized_start=533 _globals['_CREATEORGANIZATIONREQUEST']._serialized_end=708 _globals['_CREATEORGANIZATIONRESPONSE']._serialized_start=711 @@ -312,36 +324,38 @@ _globals['_GETPORTALLINKSRESPONSE']._serialized_end=9809 _globals['_UPDATEORGANIZATIONSETTINGSREQUEST']._serialized_start=9812 _globals['_UPDATEORGANIZATIONSETTINGSREQUEST']._serialized_end=10340 - _globals['_UPDATEORGANIZATIONSESSIONSETTINGSREQUEST']._serialized_start=10343 - _globals['_UPDATEORGANIZATIONSESSIONSETTINGSREQUEST']._serialized_end=10965 - _globals['_UPDATEORGANIZATIONSESSIONSETTINGSRESPONSE']._serialized_start=10968 - _globals['_UPDATEORGANIZATIONSESSIONSETTINGSRESPONSE']._serialized_end=11482 - _globals['_ORGANIZATIONUSERMANAGEMENTSETTINGS']._serialized_start=11485 - _globals['_ORGANIZATIONUSERMANAGEMENTSETTINGS']._serialized_end=11833 - _globals['_ORGANIZATIONSESSIONSETTINGS']._serialized_start=11836 - _globals['_ORGANIZATIONSESSIONSETTINGS']._serialized_end=12777 - _globals['_GETORGANIZATIONSESSIONSETTINGSREQUEST']._serialized_start=12780 - _globals['_GETORGANIZATIONSESSIONSETTINGSREQUEST']._serialized_end=13166 - _globals['_CREATEORGANIZATIONSESSIONSETTINGSREQUEST']._serialized_start=13169 - _globals['_CREATEORGANIZATIONSESSIONSETTINGSREQUEST']._serialized_end=13562 - _globals['_CREATEORGANIZATIONSESSIONSETTINGSRESPONSE']._serialized_start=13565 - _globals['_CREATEORGANIZATIONSESSIONSETTINGSRESPONSE']._serialized_end=14065 - _globals['_GETORGANIZATIONSESSIONSETTINGSRESPONSE']._serialized_start=14068 - _globals['_GETORGANIZATIONSESSIONSETTINGSRESPONSE']._serialized_end=14565 - _globals['_DELETEORGANIZATIONSESSIONSETTINGSREQUEST']._serialized_start=14568 - _globals['_DELETEORGANIZATIONSESSIONSETTINGSREQUEST']._serialized_end=14966 - _globals['_ORGANIZATIONSETTINGS']._serialized_start=14969 - _globals['_ORGANIZATIONSETTINGS']._serialized_end=15495 - _globals['_ORGANIZATIONSETTINGSFEATURE']._serialized_start=15498 - _globals['_ORGANIZATIONSETTINGSFEATURE']._serialized_end=15913 - _globals['_UPSERTUSERMANAGEMENTSETTINGSREQUEST']._serialized_start=15916 - _globals['_UPSERTUSERMANAGEMENTSETTINGSREQUEST']._serialized_end=16194 - _globals['_UPSERTUSERMANAGEMENTSETTINGSRESPONSE']._serialized_start=16197 - _globals['_UPSERTUSERMANAGEMENTSETTINGSRESPONSE']._serialized_end=16353 - _globals['_GETORGANIZATIONUSERMANAGEMENTSETTINGSREQUEST']._serialized_start=16356 - _globals['_GETORGANIZATIONUSERMANAGEMENTSETTINGSREQUEST']._serialized_end=16491 - _globals['_GETORGANIZATIONUSERMANAGEMENTSETTINGSRESPONSE']._serialized_start=16494 - _globals['_GETORGANIZATIONUSERMANAGEMENTSETTINGSRESPONSE']._serialized_end=16669 - _globals['_ORGANIZATIONSERVICE']._serialized_start=16756 - _globals['_ORGANIZATIONSERVICE']._serialized_end=27283 + _globals['_ORGANIZATIONSESSIONPOLICYSETTINGS']._serialized_start=10343 + _globals['_ORGANIZATIONSESSIONPOLICYSETTINGS']._serialized_end=11896 + _globals['_GETORGANIZATIONSESSIONPOLICYREQUEST']._serialized_start=11899 + _globals['_GETORGANIZATIONSESSIONPOLICYREQUEST']._serialized_end=12111 + _globals['_GETORGANIZATIONSESSIONPOLICYRESPONSE']._serialized_start=12114 + _globals['_GETORGANIZATIONSESSIONPOLICYRESPONSE']._serialized_end=12286 + _globals['_UPDATEORGANIZATIONSESSIONPOLICYREQUEST']._serialized_start=12289 + _globals['_UPDATEORGANIZATIONSESSIONPOLICYREQUEST']._serialized_end=13880 + _globals['_UPDATEORGANIZATIONSESSIONPOLICYRESPONSE']._serialized_start=13883 + _globals['_UPDATEORGANIZATIONSESSIONPOLICYRESPONSE']._serialized_end=14066 + _globals['_GETAPPLICATIONSESSIONPOLICYREQUEST']._serialized_start=14069 + _globals['_GETAPPLICATIONSESSIONPOLICYREQUEST']._serialized_end=14239 + _globals['_APPLICATIONSESSIONPOLICYSETTINGS']._serialized_start=14242 + _globals['_APPLICATIONSESSIONPOLICYSETTINGS']._serialized_end=15443 + _globals['_GETAPPLICATIONSESSIONPOLICYRESPONSE']._serialized_start=15446 + _globals['_GETAPPLICATIONSESSIONPOLICYRESPONSE']._serialized_end=15655 + _globals['_ORGANIZATIONUSERMANAGEMENTSETTINGS']._serialized_start=15658 + _globals['_ORGANIZATIONUSERMANAGEMENTSETTINGS']._serialized_end=16006 + _globals['_ORGANIZATIONSESSIONSETTINGS']._serialized_start=16009 + _globals['_ORGANIZATIONSESSIONSETTINGS']._serialized_end=17079 + _globals['_ORGANIZATIONSETTINGS']._serialized_start=17082 + _globals['_ORGANIZATIONSETTINGS']._serialized_end=17608 + _globals['_ORGANIZATIONSETTINGSFEATURE']._serialized_start=17611 + _globals['_ORGANIZATIONSETTINGSFEATURE']._serialized_end=18137 + _globals['_UPSERTUSERMANAGEMENTSETTINGSREQUEST']._serialized_start=18140 + _globals['_UPSERTUSERMANAGEMENTSETTINGSREQUEST']._serialized_end=18418 + _globals['_UPSERTUSERMANAGEMENTSETTINGSRESPONSE']._serialized_start=18421 + _globals['_UPSERTUSERMANAGEMENTSETTINGSRESPONSE']._serialized_end=18577 + _globals['_GETORGANIZATIONUSERMANAGEMENTSETTINGSREQUEST']._serialized_start=18580 + _globals['_GETORGANIZATIONUSERMANAGEMENTSETTINGSREQUEST']._serialized_end=18715 + _globals['_GETORGANIZATIONUSERMANAGEMENTSETTINGSRESPONSE']._serialized_start=18718 + _globals['_GETORGANIZATIONUSERMANAGEMENTSETTINGSRESPONSE']._serialized_end=18893 + _globals['_ORGANIZATIONSERVICE']._serialized_start=19067 + _globals['_ORGANIZATIONSERVICE']._serialized_end=29349 # @@protoc_insertion_point(module_scope) diff --git a/scalekit/v1/organizations/organizations_pb2.pyi b/scalekit/v1/organizations/organizations_pb2.pyi index 11b0b50..261c537 100644 --- a/scalekit/v1/organizations/organizations_pb2.pyi +++ b/scalekit/v1/organizations/organizations_pb2.pyi @@ -26,10 +26,19 @@ class Feature(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): UNSPECIFIED: _ClassVar[Feature] dir_sync: _ClassVar[Feature] sso: _ClassVar[Feature] + +class SessionPolicyType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + SESSION_POLICY_TYPE_UNSPECIFIED: _ClassVar[SessionPolicyType] + APPLICATION: _ClassVar[SessionPolicyType] + CUSTOM: _ClassVar[SessionPolicyType] FEATURE_UNSPECIFIED: Feature UNSPECIFIED: Feature dir_sync: Feature sso: Feature +SESSION_POLICY_TYPE_UNSPECIFIED: SessionPolicyType +APPLICATION: SessionPolicyType +CUSTOM: SessionPolicyType class CreateOrganizationRequest(_message.Message): __slots__ = ("organization",) @@ -258,87 +267,103 @@ class UpdateOrganizationSettingsRequest(_message.Message): settings: OrganizationSettings def __init__(self, id: _Optional[str] = ..., settings: _Optional[_Union[OrganizationSettings, _Mapping]] = ...) -> None: ... -class UpdateOrganizationSessionSettingsRequest(_message.Message): - __slots__ = ("id", "environment_id", "session_settings") - ID_FIELD_NUMBER: _ClassVar[int] - ENVIRONMENT_ID_FIELD_NUMBER: _ClassVar[int] - SESSION_SETTINGS_FIELD_NUMBER: _ClassVar[int] - id: str - environment_id: str - session_settings: OrganizationSessionSettings - def __init__(self, id: _Optional[str] = ..., environment_id: _Optional[str] = ..., session_settings: _Optional[_Union[OrganizationSessionSettings, _Mapping]] = ...) -> None: ... +class OrganizationSessionPolicySettings(_message.Message): + __slots__ = ("policy_source", "absolute_session_timeout", "absolute_session_timeout_unit", "idle_session_timeout_enabled", "idle_session_timeout", "idle_session_timeout_unit") + POLICY_SOURCE_FIELD_NUMBER: _ClassVar[int] + ABSOLUTE_SESSION_TIMEOUT_FIELD_NUMBER: _ClassVar[int] + ABSOLUTE_SESSION_TIMEOUT_UNIT_FIELD_NUMBER: _ClassVar[int] + IDLE_SESSION_TIMEOUT_ENABLED_FIELD_NUMBER: _ClassVar[int] + IDLE_SESSION_TIMEOUT_FIELD_NUMBER: _ClassVar[int] + IDLE_SESSION_TIMEOUT_UNIT_FIELD_NUMBER: _ClassVar[int] + policy_source: SessionPolicyType + absolute_session_timeout: _wrappers_pb2.Int32Value + absolute_session_timeout_unit: _commons_pb2.TimeUnit + idle_session_timeout_enabled: _wrappers_pb2.BoolValue + idle_session_timeout: _wrappers_pb2.Int32Value + idle_session_timeout_unit: _commons_pb2.TimeUnit + def __init__(self, policy_source: _Optional[_Union[SessionPolicyType, str]] = ..., absolute_session_timeout: _Optional[_Union[_wrappers_pb2.Int32Value, _Mapping]] = ..., absolute_session_timeout_unit: _Optional[_Union[_commons_pb2.TimeUnit, str]] = ..., idle_session_timeout_enabled: _Optional[_Union[_wrappers_pb2.BoolValue, _Mapping]] = ..., idle_session_timeout: _Optional[_Union[_wrappers_pb2.Int32Value, _Mapping]] = ..., idle_session_timeout_unit: _Optional[_Union[_commons_pb2.TimeUnit, str]] = ...) -> None: ... -class UpdateOrganizationSessionSettingsResponse(_message.Message): - __slots__ = ("environment_id", "organization_id", "session_settings") - ENVIRONMENT_ID_FIELD_NUMBER: _ClassVar[int] +class GetOrganizationSessionPolicyRequest(_message.Message): + __slots__ = ("organization_id",) ORGANIZATION_ID_FIELD_NUMBER: _ClassVar[int] - SESSION_SETTINGS_FIELD_NUMBER: _ClassVar[int] - environment_id: str organization_id: str - session_settings: OrganizationSessionSettings - def __init__(self, environment_id: _Optional[str] = ..., organization_id: _Optional[str] = ..., session_settings: _Optional[_Union[OrganizationSessionSettings, _Mapping]] = ...) -> None: ... + def __init__(self, organization_id: _Optional[str] = ...) -> None: ... -class OrganizationUserManagementSettings(_message.Message): - __slots__ = ("max_allowed_users",) - MAX_ALLOWED_USERS_FIELD_NUMBER: _ClassVar[int] - max_allowed_users: _wrappers_pb2.Int32Value - def __init__(self, max_allowed_users: _Optional[_Union[_wrappers_pb2.Int32Value, _Mapping]] = ...) -> None: ... +class GetOrganizationSessionPolicyResponse(_message.Message): + __slots__ = ("policy",) + POLICY_FIELD_NUMBER: _ClassVar[int] + policy: OrganizationSessionPolicySettings + def __init__(self, policy: _Optional[_Union[OrganizationSessionPolicySettings, _Mapping]] = ...) -> None: ... -class OrganizationSessionSettings(_message.Message): - __slots__ = ("absolute_session_timeout", "session_management_enabled", "idle_session_timeout", "idle_session_enabled") +class UpdateOrganizationSessionPolicyRequest(_message.Message): + __slots__ = ("organization_id", "policy_source", "absolute_session_timeout", "absolute_session_timeout_unit", "idle_session_timeout_enabled", "idle_session_timeout", "idle_session_timeout_unit") + ORGANIZATION_ID_FIELD_NUMBER: _ClassVar[int] + POLICY_SOURCE_FIELD_NUMBER: _ClassVar[int] ABSOLUTE_SESSION_TIMEOUT_FIELD_NUMBER: _ClassVar[int] - SESSION_MANAGEMENT_ENABLED_FIELD_NUMBER: _ClassVar[int] + ABSOLUTE_SESSION_TIMEOUT_UNIT_FIELD_NUMBER: _ClassVar[int] + IDLE_SESSION_TIMEOUT_ENABLED_FIELD_NUMBER: _ClassVar[int] IDLE_SESSION_TIMEOUT_FIELD_NUMBER: _ClassVar[int] - IDLE_SESSION_ENABLED_FIELD_NUMBER: _ClassVar[int] + IDLE_SESSION_TIMEOUT_UNIT_FIELD_NUMBER: _ClassVar[int] + organization_id: str + policy_source: SessionPolicyType absolute_session_timeout: _wrappers_pb2.Int32Value - session_management_enabled: _wrappers_pb2.BoolValue + absolute_session_timeout_unit: _commons_pb2.TimeUnit + idle_session_timeout_enabled: _wrappers_pb2.BoolValue idle_session_timeout: _wrappers_pb2.Int32Value - idle_session_enabled: _wrappers_pb2.BoolValue - def __init__(self, absolute_session_timeout: _Optional[_Union[_wrappers_pb2.Int32Value, _Mapping]] = ..., session_management_enabled: _Optional[_Union[_wrappers_pb2.BoolValue, _Mapping]] = ..., idle_session_timeout: _Optional[_Union[_wrappers_pb2.Int32Value, _Mapping]] = ..., idle_session_enabled: _Optional[_Union[_wrappers_pb2.BoolValue, _Mapping]] = ...) -> None: ... - -class GetOrganizationSessionSettingsRequest(_message.Message): - __slots__ = ("id", "environment_id") - ID_FIELD_NUMBER: _ClassVar[int] - ENVIRONMENT_ID_FIELD_NUMBER: _ClassVar[int] - id: str - environment_id: str - def __init__(self, id: _Optional[str] = ..., environment_id: _Optional[str] = ...) -> None: ... + idle_session_timeout_unit: _commons_pb2.TimeUnit + def __init__(self, organization_id: _Optional[str] = ..., policy_source: _Optional[_Union[SessionPolicyType, str]] = ..., absolute_session_timeout: _Optional[_Union[_wrappers_pb2.Int32Value, _Mapping]] = ..., absolute_session_timeout_unit: _Optional[_Union[_commons_pb2.TimeUnit, str]] = ..., idle_session_timeout_enabled: _Optional[_Union[_wrappers_pb2.BoolValue, _Mapping]] = ..., idle_session_timeout: _Optional[_Union[_wrappers_pb2.Int32Value, _Mapping]] = ..., idle_session_timeout_unit: _Optional[_Union[_commons_pb2.TimeUnit, str]] = ...) -> None: ... -class CreateOrganizationSessionSettingsRequest(_message.Message): - __slots__ = ("id", "environment_id") - ID_FIELD_NUMBER: _ClassVar[int] - ENVIRONMENT_ID_FIELD_NUMBER: _ClassVar[int] - id: str - environment_id: str - def __init__(self, id: _Optional[str] = ..., environment_id: _Optional[str] = ...) -> None: ... +class UpdateOrganizationSessionPolicyResponse(_message.Message): + __slots__ = ("policy",) + POLICY_FIELD_NUMBER: _ClassVar[int] + policy: OrganizationSessionPolicySettings + def __init__(self, policy: _Optional[_Union[OrganizationSessionPolicySettings, _Mapping]] = ...) -> None: ... -class CreateOrganizationSessionSettingsResponse(_message.Message): - __slots__ = ("environment_id", "organization_id", "session_settings") - ENVIRONMENT_ID_FIELD_NUMBER: _ClassVar[int] +class GetApplicationSessionPolicyRequest(_message.Message): + __slots__ = ("organization_id",) ORGANIZATION_ID_FIELD_NUMBER: _ClassVar[int] - SESSION_SETTINGS_FIELD_NUMBER: _ClassVar[int] - environment_id: str organization_id: str - session_settings: OrganizationSessionSettings - def __init__(self, environment_id: _Optional[str] = ..., organization_id: _Optional[str] = ..., session_settings: _Optional[_Union[OrganizationSessionSettings, _Mapping]] = ...) -> None: ... + def __init__(self, organization_id: _Optional[str] = ...) -> None: ... -class GetOrganizationSessionSettingsResponse(_message.Message): - __slots__ = ("environment_id", "organization_id", "session_settings") - ENVIRONMENT_ID_FIELD_NUMBER: _ClassVar[int] - ORGANIZATION_ID_FIELD_NUMBER: _ClassVar[int] - SESSION_SETTINGS_FIELD_NUMBER: _ClassVar[int] - environment_id: str - organization_id: str - session_settings: OrganizationSessionSettings - def __init__(self, environment_id: _Optional[str] = ..., organization_id: _Optional[str] = ..., session_settings: _Optional[_Union[OrganizationSessionSettings, _Mapping]] = ...) -> None: ... +class ApplicationSessionPolicySettings(_message.Message): + __slots__ = ("absolute_session_timeout", "idle_session_timeout_enabled", "idle_session_timeout", "access_token_expiry", "absolute_session_timeout_unit", "idle_session_timeout_unit") + ABSOLUTE_SESSION_TIMEOUT_FIELD_NUMBER: _ClassVar[int] + IDLE_SESSION_TIMEOUT_ENABLED_FIELD_NUMBER: _ClassVar[int] + IDLE_SESSION_TIMEOUT_FIELD_NUMBER: _ClassVar[int] + ACCESS_TOKEN_EXPIRY_FIELD_NUMBER: _ClassVar[int] + ABSOLUTE_SESSION_TIMEOUT_UNIT_FIELD_NUMBER: _ClassVar[int] + IDLE_SESSION_TIMEOUT_UNIT_FIELD_NUMBER: _ClassVar[int] + absolute_session_timeout: int + idle_session_timeout_enabled: bool + idle_session_timeout: int + access_token_expiry: int + absolute_session_timeout_unit: _commons_pb2.TimeUnit + idle_session_timeout_unit: _commons_pb2.TimeUnit + def __init__(self, absolute_session_timeout: _Optional[int] = ..., idle_session_timeout_enabled: bool = ..., idle_session_timeout: _Optional[int] = ..., access_token_expiry: _Optional[int] = ..., absolute_session_timeout_unit: _Optional[_Union[_commons_pb2.TimeUnit, str]] = ..., idle_session_timeout_unit: _Optional[_Union[_commons_pb2.TimeUnit, str]] = ...) -> None: ... + +class GetApplicationSessionPolicyResponse(_message.Message): + __slots__ = ("application_policy",) + APPLICATION_POLICY_FIELD_NUMBER: _ClassVar[int] + application_policy: ApplicationSessionPolicySettings + def __init__(self, application_policy: _Optional[_Union[ApplicationSessionPolicySettings, _Mapping]] = ...) -> None: ... -class DeleteOrganizationSessionSettingsRequest(_message.Message): - __slots__ = ("id", "environment_id") - ID_FIELD_NUMBER: _ClassVar[int] - ENVIRONMENT_ID_FIELD_NUMBER: _ClassVar[int] - id: str - environment_id: str - def __init__(self, id: _Optional[str] = ..., environment_id: _Optional[str] = ...) -> None: ... +class OrganizationUserManagementSettings(_message.Message): + __slots__ = ("max_allowed_users",) + MAX_ALLOWED_USERS_FIELD_NUMBER: _ClassVar[int] + max_allowed_users: _wrappers_pb2.Int32Value + def __init__(self, max_allowed_users: _Optional[_Union[_wrappers_pb2.Int32Value, _Mapping]] = ...) -> None: ... + +class OrganizationSessionSettings(_message.Message): + __slots__ = ("absolute_session_timeout", "idle_session_timeout", "idle_session_timeout_enabled", "policy_source") + ABSOLUTE_SESSION_TIMEOUT_FIELD_NUMBER: _ClassVar[int] + IDLE_SESSION_TIMEOUT_FIELD_NUMBER: _ClassVar[int] + IDLE_SESSION_TIMEOUT_ENABLED_FIELD_NUMBER: _ClassVar[int] + POLICY_SOURCE_FIELD_NUMBER: _ClassVar[int] + absolute_session_timeout: _wrappers_pb2.Int32Value + idle_session_timeout: _wrappers_pb2.Int32Value + idle_session_timeout_enabled: _wrappers_pb2.BoolValue + policy_source: str + def __init__(self, absolute_session_timeout: _Optional[_Union[_wrappers_pb2.Int32Value, _Mapping]] = ..., idle_session_timeout: _Optional[_Union[_wrappers_pb2.Int32Value, _Mapping]] = ..., idle_session_timeout_enabled: _Optional[_Union[_wrappers_pb2.BoolValue, _Mapping]] = ..., policy_source: _Optional[str] = ...) -> None: ... class OrganizationSettings(_message.Message): __slots__ = ("features",) diff --git a/scalekit/v1/organizations/organizations_pb2_grpc.py b/scalekit/v1/organizations/organizations_pb2_grpc.py index 0df388d..4b30434 100644 --- a/scalekit/v1/organizations/organizations_pb2_grpc.py +++ b/scalekit/v1/organizations/organizations_pb2_grpc.py @@ -75,25 +75,15 @@ def __init__(self, channel): request_serializer=scalekit_dot_v1_dot_organizations_dot_organizations__pb2.UpdateOrganizationSettingsRequest.SerializeToString, response_deserializer=scalekit_dot_v1_dot_organizations_dot_organizations__pb2.GetOrganizationResponse.FromString, ) - self.CreateOrganizationSessionSettings = channel.unary_unary( - '/scalekit.v1.organizations.OrganizationService/CreateOrganizationSessionSettings', - request_serializer=scalekit_dot_v1_dot_organizations_dot_organizations__pb2.CreateOrganizationSessionSettingsRequest.SerializeToString, - response_deserializer=scalekit_dot_v1_dot_organizations_dot_organizations__pb2.CreateOrganizationSessionSettingsResponse.FromString, + self.UpdateOrganizationSessionPolicy = channel.unary_unary( + '/scalekit.v1.organizations.OrganizationService/UpdateOrganizationSessionPolicy', + request_serializer=scalekit_dot_v1_dot_organizations_dot_organizations__pb2.UpdateOrganizationSessionPolicyRequest.SerializeToString, + response_deserializer=scalekit_dot_v1_dot_organizations_dot_organizations__pb2.UpdateOrganizationSessionPolicyResponse.FromString, ) - self.GetOrganizationSessionSettings = channel.unary_unary( - '/scalekit.v1.organizations.OrganizationService/GetOrganizationSessionSettings', - request_serializer=scalekit_dot_v1_dot_organizations_dot_organizations__pb2.GetOrganizationSessionSettingsRequest.SerializeToString, - response_deserializer=scalekit_dot_v1_dot_organizations_dot_organizations__pb2.GetOrganizationSessionSettingsResponse.FromString, - ) - self.UpdateOrganizationSessionSettings = channel.unary_unary( - '/scalekit.v1.organizations.OrganizationService/UpdateOrganizationSessionSettings', - request_serializer=scalekit_dot_v1_dot_organizations_dot_organizations__pb2.UpdateOrganizationSessionSettingsRequest.SerializeToString, - response_deserializer=scalekit_dot_v1_dot_organizations_dot_organizations__pb2.UpdateOrganizationSessionSettingsResponse.FromString, - ) - self.DeleteOrganizationSessionSettings = channel.unary_unary( - '/scalekit.v1.organizations.OrganizationService/DeleteOrganizationSessionSettings', - request_serializer=scalekit_dot_v1_dot_organizations_dot_organizations__pb2.DeleteOrganizationSessionSettingsRequest.SerializeToString, - response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, + self.GetOrganizationSessionPolicy = channel.unary_unary( + '/scalekit.v1.organizations.OrganizationService/GetOrganizationSessionPolicy', + request_serializer=scalekit_dot_v1_dot_organizations_dot_organizations__pb2.GetOrganizationSessionPolicyRequest.SerializeToString, + response_deserializer=scalekit_dot_v1_dot_organizations_dot_organizations__pb2.GetOrganizationSessionPolicyResponse.FromString, ) self.UpsertUserManagementSettings = channel.unary_unary( '/scalekit.v1.organizations.OrganizationService/UpsertUserManagementSettings', @@ -105,6 +95,11 @@ def __init__(self, channel): request_serializer=scalekit_dot_v1_dot_organizations_dot_organizations__pb2.GetOrganizationUserManagementSettingsRequest.SerializeToString, response_deserializer=scalekit_dot_v1_dot_organizations_dot_organizations__pb2.GetOrganizationUserManagementSettingsResponse.FromString, ) + self.GetApplicationSessionPolicy = channel.unary_unary( + '/scalekit.v1.organizations.OrganizationService/GetApplicationSessionPolicy', + request_serializer=scalekit_dot_v1_dot_organizations_dot_organizations__pb2.GetApplicationSessionPolicyRequest.SerializeToString, + response_deserializer=scalekit_dot_v1_dot_organizations_dot_organizations__pb2.GetApplicationSessionPolicyResponse.FromString, + ) class OrganizationServiceServicer(object): @@ -185,38 +180,32 @@ def UpdateOrganizationSettings(self, request, context): context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') - def CreateOrganizationSessionSettings(self, request, context): + def UpdateOrganizationSessionPolicy(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 GetOrganizationSessionSettings(self, request, context): + def GetOrganizationSessionPolicy(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 UpdateOrganizationSessionSettings(self, request, context): - """Missing associated documentation comment in .proto file.""" + def UpsertUserManagementSettings(self, request, context): + """Update user management setting for an organization + """ context.set_code(grpc.StatusCode.UNIMPLEMENTED) context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') - def DeleteOrganizationSessionSettings(self, request, context): + def GetOrganizationUserManagementSetting(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 UpsertUserManagementSettings(self, request, context): - """Update user management setting for an organization - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def GetOrganizationUserManagementSetting(self, request, context): + def GetApplicationSessionPolicy(self, request, context): """Missing associated documentation comment in .proto file.""" context.set_code(grpc.StatusCode.UNIMPLEMENTED) context.set_details('Method not implemented!') @@ -285,25 +274,15 @@ def add_OrganizationServiceServicer_to_server(servicer, server): request_deserializer=scalekit_dot_v1_dot_organizations_dot_organizations__pb2.UpdateOrganizationSettingsRequest.FromString, response_serializer=scalekit_dot_v1_dot_organizations_dot_organizations__pb2.GetOrganizationResponse.SerializeToString, ), - 'CreateOrganizationSessionSettings': grpc.unary_unary_rpc_method_handler( - servicer.CreateOrganizationSessionSettings, - request_deserializer=scalekit_dot_v1_dot_organizations_dot_organizations__pb2.CreateOrganizationSessionSettingsRequest.FromString, - response_serializer=scalekit_dot_v1_dot_organizations_dot_organizations__pb2.CreateOrganizationSessionSettingsResponse.SerializeToString, + 'UpdateOrganizationSessionPolicy': grpc.unary_unary_rpc_method_handler( + servicer.UpdateOrganizationSessionPolicy, + request_deserializer=scalekit_dot_v1_dot_organizations_dot_organizations__pb2.UpdateOrganizationSessionPolicyRequest.FromString, + response_serializer=scalekit_dot_v1_dot_organizations_dot_organizations__pb2.UpdateOrganizationSessionPolicyResponse.SerializeToString, ), - 'GetOrganizationSessionSettings': grpc.unary_unary_rpc_method_handler( - servicer.GetOrganizationSessionSettings, - request_deserializer=scalekit_dot_v1_dot_organizations_dot_organizations__pb2.GetOrganizationSessionSettingsRequest.FromString, - response_serializer=scalekit_dot_v1_dot_organizations_dot_organizations__pb2.GetOrganizationSessionSettingsResponse.SerializeToString, - ), - 'UpdateOrganizationSessionSettings': grpc.unary_unary_rpc_method_handler( - servicer.UpdateOrganizationSessionSettings, - request_deserializer=scalekit_dot_v1_dot_organizations_dot_organizations__pb2.UpdateOrganizationSessionSettingsRequest.FromString, - response_serializer=scalekit_dot_v1_dot_organizations_dot_organizations__pb2.UpdateOrganizationSessionSettingsResponse.SerializeToString, - ), - 'DeleteOrganizationSessionSettings': grpc.unary_unary_rpc_method_handler( - servicer.DeleteOrganizationSessionSettings, - request_deserializer=scalekit_dot_v1_dot_organizations_dot_organizations__pb2.DeleteOrganizationSessionSettingsRequest.FromString, - response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, + 'GetOrganizationSessionPolicy': grpc.unary_unary_rpc_method_handler( + servicer.GetOrganizationSessionPolicy, + request_deserializer=scalekit_dot_v1_dot_organizations_dot_organizations__pb2.GetOrganizationSessionPolicyRequest.FromString, + response_serializer=scalekit_dot_v1_dot_organizations_dot_organizations__pb2.GetOrganizationSessionPolicyResponse.SerializeToString, ), 'UpsertUserManagementSettings': grpc.unary_unary_rpc_method_handler( servicer.UpsertUserManagementSettings, @@ -315,6 +294,11 @@ def add_OrganizationServiceServicer_to_server(servicer, server): request_deserializer=scalekit_dot_v1_dot_organizations_dot_organizations__pb2.GetOrganizationUserManagementSettingsRequest.FromString, response_serializer=scalekit_dot_v1_dot_organizations_dot_organizations__pb2.GetOrganizationUserManagementSettingsResponse.SerializeToString, ), + 'GetApplicationSessionPolicy': grpc.unary_unary_rpc_method_handler( + servicer.GetApplicationSessionPolicy, + request_deserializer=scalekit_dot_v1_dot_organizations_dot_organizations__pb2.GetApplicationSessionPolicyRequest.FromString, + response_serializer=scalekit_dot_v1_dot_organizations_dot_organizations__pb2.GetApplicationSessionPolicyResponse.SerializeToString, + ), } generic_handler = grpc.method_handlers_generic_handler( 'scalekit.v1.organizations.OrganizationService', rpc_method_handlers) @@ -530,7 +514,7 @@ def UpdateOrganizationSettings(request, insecure, call_credentials, compression, wait_for_ready, timeout, metadata) @staticmethod - def CreateOrganizationSessionSettings(request, + def UpdateOrganizationSessionPolicy(request, target, options=(), channel_credentials=None, @@ -540,14 +524,14 @@ def CreateOrganizationSessionSettings(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/scalekit.v1.organizations.OrganizationService/CreateOrganizationSessionSettings', - scalekit_dot_v1_dot_organizations_dot_organizations__pb2.CreateOrganizationSessionSettingsRequest.SerializeToString, - scalekit_dot_v1_dot_organizations_dot_organizations__pb2.CreateOrganizationSessionSettingsResponse.FromString, + return grpc.experimental.unary_unary(request, target, '/scalekit.v1.organizations.OrganizationService/UpdateOrganizationSessionPolicy', + scalekit_dot_v1_dot_organizations_dot_organizations__pb2.UpdateOrganizationSessionPolicyRequest.SerializeToString, + scalekit_dot_v1_dot_organizations_dot_organizations__pb2.UpdateOrganizationSessionPolicyResponse.FromString, options, channel_credentials, insecure, call_credentials, compression, wait_for_ready, timeout, metadata) @staticmethod - def GetOrganizationSessionSettings(request, + def GetOrganizationSessionPolicy(request, target, options=(), channel_credentials=None, @@ -557,31 +541,14 @@ def GetOrganizationSessionSettings(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/scalekit.v1.organizations.OrganizationService/GetOrganizationSessionSettings', - scalekit_dot_v1_dot_organizations_dot_organizations__pb2.GetOrganizationSessionSettingsRequest.SerializeToString, - scalekit_dot_v1_dot_organizations_dot_organizations__pb2.GetOrganizationSessionSettingsResponse.FromString, + return grpc.experimental.unary_unary(request, target, '/scalekit.v1.organizations.OrganizationService/GetOrganizationSessionPolicy', + scalekit_dot_v1_dot_organizations_dot_organizations__pb2.GetOrganizationSessionPolicyRequest.SerializeToString, + scalekit_dot_v1_dot_organizations_dot_organizations__pb2.GetOrganizationSessionPolicyResponse.FromString, options, channel_credentials, insecure, call_credentials, compression, wait_for_ready, timeout, metadata) @staticmethod - def UpdateOrganizationSessionSettings(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.organizations.OrganizationService/UpdateOrganizationSessionSettings', - scalekit_dot_v1_dot_organizations_dot_organizations__pb2.UpdateOrganizationSessionSettingsRequest.SerializeToString, - scalekit_dot_v1_dot_organizations_dot_organizations__pb2.UpdateOrganizationSessionSettingsResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) - - @staticmethod - def DeleteOrganizationSessionSettings(request, + def UpsertUserManagementSettings(request, target, options=(), channel_credentials=None, @@ -591,14 +558,14 @@ def DeleteOrganizationSessionSettings(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/scalekit.v1.organizations.OrganizationService/DeleteOrganizationSessionSettings', - scalekit_dot_v1_dot_organizations_dot_organizations__pb2.DeleteOrganizationSessionSettingsRequest.SerializeToString, - google_dot_protobuf_dot_empty__pb2.Empty.FromString, + return grpc.experimental.unary_unary(request, target, '/scalekit.v1.organizations.OrganizationService/UpsertUserManagementSettings', + scalekit_dot_v1_dot_organizations_dot_organizations__pb2.UpsertUserManagementSettingsRequest.SerializeToString, + scalekit_dot_v1_dot_organizations_dot_organizations__pb2.UpsertUserManagementSettingsResponse.FromString, options, channel_credentials, insecure, call_credentials, compression, wait_for_ready, timeout, metadata) @staticmethod - def UpsertUserManagementSettings(request, + def GetOrganizationUserManagementSetting(request, target, options=(), channel_credentials=None, @@ -608,14 +575,14 @@ def UpsertUserManagementSettings(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/scalekit.v1.organizations.OrganizationService/UpsertUserManagementSettings', - scalekit_dot_v1_dot_organizations_dot_organizations__pb2.UpsertUserManagementSettingsRequest.SerializeToString, - scalekit_dot_v1_dot_organizations_dot_organizations__pb2.UpsertUserManagementSettingsResponse.FromString, + return grpc.experimental.unary_unary(request, target, '/scalekit.v1.organizations.OrganizationService/GetOrganizationUserManagementSetting', + scalekit_dot_v1_dot_organizations_dot_organizations__pb2.GetOrganizationUserManagementSettingsRequest.SerializeToString, + scalekit_dot_v1_dot_organizations_dot_organizations__pb2.GetOrganizationUserManagementSettingsResponse.FromString, options, channel_credentials, insecure, call_credentials, compression, wait_for_ready, timeout, metadata) @staticmethod - def GetOrganizationUserManagementSetting(request, + def GetApplicationSessionPolicy(request, target, options=(), channel_credentials=None, @@ -625,8 +592,8 @@ def GetOrganizationUserManagementSetting(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/scalekit.v1.organizations.OrganizationService/GetOrganizationUserManagementSetting', - scalekit_dot_v1_dot_organizations_dot_organizations__pb2.GetOrganizationUserManagementSettingsRequest.SerializeToString, - scalekit_dot_v1_dot_organizations_dot_organizations__pb2.GetOrganizationUserManagementSettingsResponse.FromString, + return grpc.experimental.unary_unary(request, target, '/scalekit.v1.organizations.OrganizationService/GetApplicationSessionPolicy', + scalekit_dot_v1_dot_organizations_dot_organizations__pb2.GetApplicationSessionPolicyRequest.SerializeToString, + scalekit_dot_v1_dot_organizations_dot_organizations__pb2.GetApplicationSessionPolicyResponse.FromString, options, channel_credentials, insecure, call_credentials, compression, wait_for_ready, timeout, metadata) diff --git a/scalekit/v1/providers/providers_pb2.py b/scalekit/v1/providers/providers_pb2.py index 994ff04..c78bed0 100644 --- a/scalekit/v1/providers/providers_pb2.py +++ b/scalekit/v1/providers/providers_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%scalekit/v1/providers/providers.proto\x12\x15scalekit.v1.providers\x1a\x1b\x62uf/validate/validate.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1bgoogle/api/visibility.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/options/options.proto\"\xf5\x04\n\x08Provider\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x1e\n\nidentifier\x18\x02 \x01(\tR\nidentifier\x12!\n\x0c\x64isplay_name\x18\x03 \x01(\tR\x0b\x64isplayName\x12 \n\x0b\x64\x65scription\x18\x04 \x01(\tR\x0b\x64\x65scription\x12\x1e\n\ncategories\x18\x05 \x03(\tR\ncategories\x12?\n\rauth_patterns\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.ListValueR\x0c\x61uthPatterns\x12\x19\n\x08icon_src\x18\x07 \x01(\tR\x07iconSrc\x12)\n\x10\x64isplay_priority\x18\x08 \x01(\x05R\x0f\x64isplayPriority\x12\x1f\n\x0b\x63oming_soon\x18\t \x01(\x08R\ncomingSoon\x12\x1b\n\tproxy_url\x18\n \x01(\tR\x08proxyUrl\x12#\n\rproxy_enabled\x18\x0b \x01(\x08R\x0cproxyEnabled\x12o\n\tis_custom\x18\x0c \x01(\x08\x42R\x92\x41O2FIndicates whether the provider is environment-scoped (custom provider)J\x05\x66\x61lseR\x08isCustom\x12y\n\ris_custom_mcp\x18\r \x01(\x08\x42U\x92\x41R2IIndicates whether this is an environment-scoped MCP-based custom providerJ\x05\x66\x61lseR\x0bisCustomMcp\"\xf1\n\n\x0e\x43reateProvider\x12\xf7\x01\n\nidentifier\x18\x02 \x01(\tB\xd6\x01\x92\x41\xb4\x01\x32\x9d\x01Unique identifier for the connected app provider. Spaces are not allowed, and the character : is reserved for internal suffixing and cannot be used in input.J\x12\"google_workspace\"\xbaH\x1br\x16\x10\x01\x18\x64\x32\x10^[a-zA-Z0-9_-]*$\xc8\x01\x01R\nidentifier\x12t\n\x0c\x64isplay_name\x18\x03 \x01(\tBQ\x92\x41\x41\x32+Display name for the connected app providerJ\x12\"Google Workspace\"\xbaH\nr\x05\x10\x01\x18\xc8\x01\xc8\x01\x01R\x0b\x64isplayName\x12\x92\x01\n\x0b\x64\x65scription\x18\x04 \x01(\tBp\x92\x41m2)Description of the connected app providerJ@\"Connect to Google Workspace for email and calendar integration\"R\x0b\x64\x65scription\x12i\n\ncategories\x18\x05 \x03(\tBI\x92\x41\x46\x32)Categories for the connected app providerJ\x19[\"productivity\", \"email\"]R\ncategories\x12\x82\x01\n\rauth_patterns\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.ListValueBA\x92\x41\x38\x32\x36\x41uthentication patterns for the connected app provider\xbaH\x03\xc8\x01\x01R\x0c\x61uthPatterns\x12\x82\x01\n\x08icon_src\x18\x07 \x01(\tBg\x92\x41\x64\x32/Image source URL for the connected app providerJ1\"https://example.com/images/google_workspace.png\"R\x07iconSrc\x12)\n\x10\x64isplay_priority\x18\x08 \x01(\x05R\x0f\x64isplayPriority\x12\x63\n\x0b\x63oming_soon\x18\t \x01(\x08\x42\x42\x92\x41?26Indicates if the connected app provider is coming soonJ\x05\x66\x61lseR\ncomingSoon\x12k\n\tproxy_url\x18\n \x01(\tBN\x92\x41K2(Proxy URL for the connected app providerJ\x1f\"https://workspace.google.com/\"R\x08proxyUrl\x12\xe1\x01\n\rproxy_enabled\x18\x0b \x01(\x08\x42\xbb\x01\x92\x41\xb7\x01\x32\xae\x01This flag indicates whether proxying is turned on for the connected app provider. When enabled, requests are routed through the provider proxy instead of being sent directly.J\x04trueR\x0cproxyEnabledJ\x04\x08\x01\x10\x02\"\x96\x01\n\x15\x43reateProviderRequest\x12}\n\x08provider\x18\x01 \x01(\x0b\x32%.scalekit.v1.providers.CreateProviderB:\x92\x41\x31\x32/Details of the connected app provider to create\xbaH\x03\xc8\x01\x01R\x08provider\"\x89\x06\n\x14\x43reateCustomProvider\x12t\n\x0c\x64isplay_name\x18\x01 \x01(\tBQ\x92\x41\x41\x32+Display name for the connected app providerJ\x12\"Google Workspace\"\xbaH\nr\x05\x10\x01\x18\xc8\x01\xc8\x01\x01R\x0b\x64isplayName\x12\x92\x01\n\x0b\x64\x65scription\x18\x02 \x01(\tBp\x92\x41m2)Description of the connected app providerJ@\"Connect to Google Workspace for email and calendar integration\"R\x0b\x64\x65scription\x12\x82\x01\n\rauth_patterns\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.ListValueBA\x92\x41\x38\x32\x36\x41uthentication patterns for the connected app provider\xbaH\x03\xc8\x01\x01R\x0c\x61uthPatterns\x12k\n\tproxy_url\x18\x07 \x01(\tBN\x92\x41K2(Proxy URL for the connected app providerJ\x1f\"https://workspace.google.com/\"R\x08proxyUrl\x12\xe1\x01\n\rproxy_enabled\x18\x08 \x01(\x08\x42\xbb\x01\x92\x41\xb7\x01\x32\xae\x01This flag indicates whether proxying is turned on for the connected app provider. When enabled, requests are routed through the provider proxy instead of being sent directly.J\x04trueR\x0cproxyEnabledJ\x04\x08\x03\x10\x04J\x04\x08\x05\x10\x06J\x04\x08\x06\x10\x07\"\xad\x02\n\x1b\x43reateCustomProviderRequest\x12\x8d\x02\n\x08provider\x18\x01 \x01(\x0b\x32+.scalekit.v1.providers.CreateCustomProviderB\xc3\x01\x92\x41\xb9\x01\x32\xb6\x01\x44\x65tails of the custom connected app provider to create. Identifier is derived by the system and the identifier returned in the response must be used for update and delete operations.\xbaH\x03\xc8\x01\x01R\x08provider\"U\n\x16\x43reateProviderResponse\x12;\n\x08provider\x18\x01 \x01(\x0b\x32\x1f.scalekit.v1.providers.ProviderR\x08provider\"\xb9\x08\n\x0eUpdateProvider\x12t\n\x0c\x64isplay_name\x18\x03 \x01(\tBQ\x92\x41\x41\x32+Display name for the connected app providerJ\x12\"Google Workspace\"\xbaH\nr\x05\x10\x01\x18\xc8\x01\xc8\x01\x01R\x0b\x64isplayName\x12\x92\x01\n\x0b\x64\x65scription\x18\x04 \x01(\tBp\x92\x41m2)Description of the connected app providerJ@\"Connect to Google Workspace for email and calendar integration\"R\x0b\x64\x65scription\x12i\n\ncategories\x18\x05 \x03(\tBI\x92\x41\x46\x32)Categories for the connected app providerJ\x19[\"productivity\", \"email\"]R\ncategories\x12|\n\rauth_patterns\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.ListValueB;\x92\x41\x38\x32\x36\x41uthentication patterns for the connected app providerR\x0c\x61uthPatterns\x12\x82\x01\n\x08icon_src\x18\x07 \x01(\tBg\x92\x41\x64\x32/Image source URL for the connected app providerJ1\"https://example.com/images/google_workspace.png\"R\x07iconSrc\x12)\n\x10\x64isplay_priority\x18\x08 \x01(\x05R\x0f\x64isplayPriority\x12\x7f\n\x0b\x63oming_soon\x18\t \x01(\x0b\x32\x1a.google.protobuf.BoolValueBB\x92\x41?26Indicates if the connected app provider is coming soonJ\x05\x66\x61lseR\ncomingSoon\x12k\n\tproxy_url\x18\n \x01(\tBN\x92\x41K2(Proxy URL for the connected app providerJ\x1f\"https://workspace.google.com/\"R\x08proxyUrl\x12\x88\x01\n\rproxy_enabled\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.BoolValueBG\x92\x41\x44\x32 None: ... ID_FIELD_NUMBER: _ClassVar[int] IDENTIFIER_FIELD_NUMBER: _ClassVar[int] DISPLAY_NAME_FIELD_NUMBER: _ClassVar[int] @@ -39,6 +46,7 @@ class Provider(_message.Message): PROXY_ENABLED_FIELD_NUMBER: _ClassVar[int] IS_CUSTOM_FIELD_NUMBER: _ClassVar[int] IS_CUSTOM_MCP_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] id: str identifier: str display_name: str @@ -52,7 +60,8 @@ class Provider(_message.Message): proxy_enabled: bool is_custom: bool is_custom_mcp: bool - def __init__(self, id: _Optional[str] = ..., identifier: _Optional[str] = ..., display_name: _Optional[str] = ..., description: _Optional[str] = ..., categories: _Optional[_Iterable[str]] = ..., auth_patterns: _Optional[_Union[_struct_pb2.ListValue, _Mapping]] = ..., icon_src: _Optional[str] = ..., display_priority: _Optional[int] = ..., coming_soon: bool = ..., proxy_url: _Optional[str] = ..., proxy_enabled: bool = ..., is_custom: bool = ..., is_custom_mcp: bool = ...) -> None: ... + metadata: _containers.ScalarMap[str, str] + def __init__(self, id: _Optional[str] = ..., identifier: _Optional[str] = ..., display_name: _Optional[str] = ..., description: _Optional[str] = ..., categories: _Optional[_Iterable[str]] = ..., auth_patterns: _Optional[_Union[_struct_pb2.ListValue, _Mapping]] = ..., icon_src: _Optional[str] = ..., display_priority: _Optional[int] = ..., coming_soon: bool = ..., proxy_url: _Optional[str] = ..., proxy_enabled: bool = ..., is_custom: bool = ..., is_custom_mcp: bool = ..., metadata: _Optional[_Mapping[str, str]] = ...) -> None: ... class CreateProvider(_message.Message): __slots__ = ("identifier", "display_name", "description", "categories", "auth_patterns", "icon_src", "display_priority", "coming_soon", "proxy_url", "proxy_enabled") @@ -85,18 +94,29 @@ class CreateProviderRequest(_message.Message): def __init__(self, provider: _Optional[_Union[CreateProvider, _Mapping]] = ...) -> None: ... class CreateCustomProvider(_message.Message): - __slots__ = ("display_name", "description", "auth_patterns", "proxy_url", "proxy_enabled") + __slots__ = ("display_name", "description", "auth_patterns", "proxy_url", "proxy_enabled", "icon_src", "metadata") + class MetadataEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: str + def __init__(self, key: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ... DISPLAY_NAME_FIELD_NUMBER: _ClassVar[int] DESCRIPTION_FIELD_NUMBER: _ClassVar[int] AUTH_PATTERNS_FIELD_NUMBER: _ClassVar[int] PROXY_URL_FIELD_NUMBER: _ClassVar[int] PROXY_ENABLED_FIELD_NUMBER: _ClassVar[int] + ICON_SRC_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] display_name: str description: str auth_patterns: _struct_pb2.ListValue proxy_url: str proxy_enabled: bool - def __init__(self, display_name: _Optional[str] = ..., description: _Optional[str] = ..., auth_patterns: _Optional[_Union[_struct_pb2.ListValue, _Mapping]] = ..., proxy_url: _Optional[str] = ..., proxy_enabled: bool = ...) -> None: ... + icon_src: str + metadata: _containers.ScalarMap[str, str] + def __init__(self, display_name: _Optional[str] = ..., description: _Optional[str] = ..., auth_patterns: _Optional[_Union[_struct_pb2.ListValue, _Mapping]] = ..., proxy_url: _Optional[str] = ..., proxy_enabled: bool = ..., icon_src: _Optional[str] = ..., metadata: _Optional[_Mapping[str, str]] = ...) -> None: ... class CreateCustomProviderRequest(_message.Message): __slots__ = ("provider",) @@ -141,18 +161,29 @@ class UpdateProviderRequest(_message.Message): def __init__(self, identifier: _Optional[str] = ..., provider: _Optional[_Union[UpdateProvider, _Mapping]] = ...) -> None: ... class UpdateCustomProvider(_message.Message): - __slots__ = ("display_name", "description", "auth_patterns", "proxy_url", "proxy_enabled") + __slots__ = ("display_name", "description", "auth_patterns", "proxy_url", "proxy_enabled", "icon_src", "metadata") + class MetadataEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: str + def __init__(self, key: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ... DISPLAY_NAME_FIELD_NUMBER: _ClassVar[int] DESCRIPTION_FIELD_NUMBER: _ClassVar[int] AUTH_PATTERNS_FIELD_NUMBER: _ClassVar[int] PROXY_URL_FIELD_NUMBER: _ClassVar[int] PROXY_ENABLED_FIELD_NUMBER: _ClassVar[int] + ICON_SRC_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] display_name: str description: str auth_patterns: _struct_pb2.ListValue proxy_url: str proxy_enabled: bool - def __init__(self, display_name: _Optional[str] = ..., description: _Optional[str] = ..., auth_patterns: _Optional[_Union[_struct_pb2.ListValue, _Mapping]] = ..., proxy_url: _Optional[str] = ..., proxy_enabled: bool = ...) -> None: ... + icon_src: str + metadata: _containers.ScalarMap[str, str] + def __init__(self, display_name: _Optional[str] = ..., description: _Optional[str] = ..., auth_patterns: _Optional[_Union[_struct_pb2.ListValue, _Mapping]] = ..., proxy_url: _Optional[str] = ..., proxy_enabled: bool = ..., icon_src: _Optional[str] = ..., metadata: _Optional[_Mapping[str, str]] = ...) -> None: ... class UpdateCustomProviderRequest(_message.Message): __slots__ = ("identifier", "provider") diff --git a/scalekit/v1/tools/tools_pb2.py b/scalekit/v1/tools/tools_pb2.py index 3c5a3b7..4344b6a 100644 --- a/scalekit/v1/tools/tools_pb2.py +++ b/scalekit/v1/tools/tools_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\x1dscalekit/v1/tools/tools.proto\x12\x11scalekit.v1.tools\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\x1egoogle/protobuf/wrappers.proto\x1a.protoc-gen-openapiv2/options/annotations.proto\x1a!scalekit/v1/options/options.proto\"\x88\x01\n\x11\x43reateToolRequest\x12s\n\x04tool\x18\x01 \x01(\x0b\x32\x17.scalekit.v1.tools.ToolBF\x92\x41=2;Tool details including name, schema version, and definition\xbaH\x03\xc8\x01\x01R\x04tool\"c\n\x12\x43reateToolResponse\x12M\n\x04tool\x18\x01 \x01(\x0b\x32\x17.scalekit.v1.tools.ToolB \x92\x41\x1d\x32\x1b\x44\x65tails of the created toolR\x04tool\"\xf0\x05\n\x04Tool\x12\x38\n\x02id\x18\x01 \x01(\tB(\x92\x41\"2\x15Unique ID of the toolJ\t\"tol_123\"\xe0\x41\x03R\x02id\x12I\n\x08provider\x18\x02 \x01(\tB-\x92\x41\'2\x1bProvider name (e.g. GOOGLE)J\x08\"GOOGLE\"\xe0\x41\x03R\x08provider\x12\x87\x01\n\ndefinition\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructBN\x92\x41\x45\x32$Tool definition in structured formatJ\x1d{\"input\": {\"type\": \"object\"}}\xbaH\x03\xc8\x01\x01R\ndefinition\x12s\n\x08metadata\x18\x04 \x01(\x0b\x32\x17.google.protobuf.StructB>\x92\x41;2\"Additional metadata about the toolJ\x15{\"category\": \"email\"}R\x08metadata\x12X\n\x04tags\x18\x05 \x03(\tBD\x92\x41\x41\x32$Tags for categorization or filteringJ\x19[\"notification\", \"email\"]R\x04tags\x12\x83\x01\n\nis_default\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.BoolValueBH\x92\x41\x42\x32:Marks this tool as the default version for the combinationJ\x04true\xe0\x41\x03R\tisDefault\x12\x83\x01\n\nupdated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampBH\x92\x41\x42\x32(Timestamp when the tool was last updatedJ\x16\"2023-10-01T12:00:00Z\"\xe0\x41\x03R\tupdatedAt\"\xd3\x01\n\nScopedTool\x12+\n\x04tool\x18\x01 \x01(\x0b\x32\x17.scalekit.v1.tools.ToolR\x04tool\x12\x1e\n\nidentifier\x18\x02 \x01(\tR\nidentifier\x12x\n\x14\x63onnected_account_id\x18\x03 \x01(\tBF\x92\x41<20ID of the connected account for this scoped toolJ\x08\"ca_123\"\xbaH\x04r\x02\x18\x64R\x12\x63onnectedAccountId\"\xfe\x01\n\x10ListToolsRequest\x12[\n\x06\x66ilter\x18\x01 \x01(\x0b\x32\x19.scalekit.v1.tools.FilterB(\x92\x41%2#Filter parameters for listing toolsR\x06\x66ilter\x12\x1b\n\tpage_size\x18\x02 \x01(\rR\x08pageSize\x12p\n\npage_token\x18\x03 \x01(\tBQ\x92\x41N2.Token from a previous response for pagination.J\x1c\x65yJwYWdlIjoyLCJsaW1pdCI6MzB9R\tpageToken\"\x85\n\n\x06\x46ilter\x12t\n\x07summary\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.BoolValueB>\x92\x41;23Return only tool names instead of full tool detailsJ\x04trueR\x07summary\x12I\n\x08provider\x18\x02 \x01(\tB-\x92\x41#2\x17\x46ilter by tool providerJ\x08\"GOOGLE\"\xbaH\x04r\x02\x18\x32R\x08provider\x12j\n\nidentifier\x18\x03 \x01(\tBJ\x92\x41@2&Filter by connected account identifierJ\x16\"app_google_workspace\"\xbaH\x04r\x02\x18\x64R\nidentifier\x12I\n\ttool_name\x18\x04 \x03(\tB,\x92\x41)2\x13\x46ilter by tool nameJ\x12\"gmail_send_email\"R\x08toolName\x12g\n\x05query\x18\x05 \x01(\tBL\x92\x41@2&Filter by connected account identifierJ\x16\"gmail get attachment\"\xbaH\x06r\x04\x10\x03\x18\x64H\x00R\x05query\x88\x01\x01\x12\xdf\x01\n\tconnector\x18\x06 \x01(\tB\xbb\x01\x92\x41\xaf\x01\x32\xa0\x01\x43onnector name (e.g. \'My Gmail\'). When set together with identifier, resolves to a specific connected account and includes its custom MCP tools in the response.J\n\"My Gmail\"\xbaH\x05r\x03\x18\x90\x03H\x01R\tconnector\x88\x01\x01\x12\x87\x01\n\x0forganization_id\x18\x07 \x01(\tBY\x92\x41O26Organization ID to scope the connected account lookup.J\x15\"org_121312434123312\"\xbaH\x04r\x02\x18 H\x02R\x0eorganizationId\x88\x01\x01\x12p\n\x07user_id\x18\x08 \x01(\tBR\x92\x41H2.User ID to scope the connected account lookup.J\x16\"user_121312434123312\"\xbaH\x04r\x02\x18 H\x03R\x06userId\x88\x01\x01\x12\xea\x01\n\x14\x63onnected_account_id\x18\t \x01(\tB\xb2\x01\x92\x41\xa2\x01\x32\x95\x01\x43onnected account ID. Alternative to identifier + connector for directly identifying the connected account whose custom MCP tools should be included.J\x08\"ca_123\"\xbaH\tr\x07\x18\x64:\x03\x63\x61_H\x04R\x12\x63onnectedAccountId\x88\x01\x01\x42\x08\n\x06_queryB\x0c\n\n_connectorB\x12\n\x10_organization_idB\n\n\x08_user_idB\x17\n\x15_connected_account_id\"\x9b\x04\n\x11ListToolsResponse\x12v\n\x0fnext_page_token\x18\x01 \x01(\tBN\x92\x41K2)Token for fetching the next page of toolsJ\x1e\"eyJwYWdlIjozLCJsaW1pdCI6MzB9\"R\rnextPageToken\x12Q\n\ntotal_size\x18\x02 \x01(\rB2\x92\x41/2(Total number of tools matching the queryJ\x03\x31\x30\x34R\ttotalSize\x12z\n\x0fprev_page_token\x18\x03 \x01(\tBR\x92\x41O2-Token for fetching the previous page of toolsJ\x1e\"eyJwYWdlIjoxLCJsaW1pdCI6MzB9\"R\rprevPageToken\x12^\n\ntool_names\x18\x04 \x03(\tB?\x92\x41<2$List of tool names (if summary=true)J\x14[\"gmail_send_email\"]R\ttoolNames\x12_\n\x05tools\x18\x05 \x03(\x0b\x32\x17.scalekit.v1.tools.ToolB0\x92\x41-2+List of tools (if summary=false or omitted)R\x05tools\"\xf8\x0c\n\x12\x45xecuteToolRequest\x12Q\n\ttool_name\x18\x01 \x01(\tB4\x92\x41+2\x1bName of the tool to executeJ\x0c\"send_email\"\xbaH\x03\xc8\x01\x01R\x08toolName\x12\x99\x02\n\nidentifier\x18\x02 \x01(\tB\xf3\x01\x92\x41\xef\x01\x32\xd8\x01Optional. The unique identifier for the connected account within the third-party service (e.g., email address, user ID, workspace identifier). Use this in combination with connector to identify the connected account.J\x12\"user@example.com\"H\x00R\nidentifier\x88\x01\x01\x12\xfc\x01\n\x06params\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructB\xca\x01\x92\x41\xc6\x01\x32}JSON object containing the parameters required for tool execution. The structure depends on the specific tool being executed.JE{\"to\": \"user@example.com\", \"subject\": \"Hello\", \"body\": \"Hello World\"}R\x06params\x12\xea\x01\n\x14\x63onnected_account_id\x18\x04 \x01(\tB\xb2\x01\x92\x41\xa7\x01\x32\x9a\x01Optional. The unique ID of the connected account. Use this to directly identify the connected account instead of using identifier + connector combination.J\x08\"ca_123\"\xbaH\x04r\x02\x18\x64H\x01R\x12\x63onnectedAccountId\x88\x01\x01\x12\xed\x01\n\tconnector\x18\x05 \x01(\tB\xc9\x01\x92\x41\xbd\x01\x32\xa6\x01Optional. The name of the connector/provider (e.g., \'Google Workspace\', \'Slack\', \'Notion\'). Use this in combination with identifier to identify the connected account.J\x12\"Google Workspace\"\xbaH\x05r\x03\x18\x90\x03H\x02R\tconnector\x88\x01\x01\x12\xee\x01\n\x0forganization_id\x18\x06 \x01(\tB\xbf\x01\x92\x41\xb4\x01\x32\xa6\x01Optional. The organization ID to scope the connected account lookup. Use this to narrow down the search when the same identifier exists across multiple organizations.J\t\"org_123\"\xbaH\x04r\x02\x18\x64H\x03R\x0eorganizationId\x88\x01\x01\x12\xcf\x01\n\x07user_id\x18\x07 \x01(\tB\xb0\x01\x92\x41\xa5\x01\x32\x96\x01Optional. The user ID to scope the connected account lookup. Use this to narrow down the search when the same identifier exists across multiple users.J\n\"user_123\"\xbaH\x04r\x02\x18\x64H\x04R\x06userId\x88\x01\x01\x42\r\n\x0b_identifierB\x17\n\x15_connected_account_idB\x0c\n\n_connectorB\x12\n\x10_organization_idB\n\n\x08_user_id\"\xa3\x02\n\x13\x45xecuteToolResponse\x12\xac\x01\n\x04\x64\x61ta\x18\x01 \x01(\x0b\x32\x17.google.protobuf.StructB\x7f\x92\x41|23Free-flowing JSON parameters for the tool executionJE{\"to\": \"user@example.com\", \"subject\": \"Hello\", \"body\": \"Hello World\"}R\x04\x64\x61ta\x12]\n\x0c\x65xecution_id\x18\x02 \x01(\tB:\x92\x41\x37\x32(Unique identifier for the tool executionJ\x0b\"123456789\"R\x0b\x65xecutionId\"\xad\x02\n\x15SetToolDefaultRequest\x12\x61\n\x04name\x18\x01 \x01(\tBM\x92\x41/2\x19\x46ully qualified tool nameJ\x12\"gmail_send_email\"\xbaH\x18r\x13\x10\x01\x18\x64\x32\r^[a-z0-9_].*$\xc8\x01\x01R\x04name\x12W\n\x0eschema_version\x18\x02 \x01(\tB0\x92\x41!2\x1aSchema version of the toolJ\x03\"1\"\xbaH\tr\x04\x10\x01\x18\n\xc8\x01\x01R\rschemaVersion\x12X\n\x0ctool_version\x18\x03 \x01(\tB5\x92\x41&2\x1fTool version to mark as defaultJ\x03\"1\"\xbaH\tr\x04\x10\x01\x18\n\xc8\x01\x01R\x0btoolVersion\"j\n\x16SetToolDefaultResponse\x12P\n\x04tool\x18\x01 \x01(\x0b\x32\x17.scalekit.v1.tools.ToolB#\x92\x41 2\x1eThe tool now marked as defaultR\x04tool\"^\n\x11UpdateToolRequest\x12I\n\x04tool\x18\x01 \x01(\x0b\x32\x17.scalekit.v1.tools.ToolB\x1c\x92\x41\x13\x32\x11Updated tool data\xbaH\x03\xc8\x01\x01R\x04tool\"X\n\x12UpdateToolResponse\x12\x42\n\x04tool\x18\x01 \x01(\x0b\x32\x17.scalekit.v1.tools.ToolB\x15\x92\x41\x12\x32\x10The updated toolR\x04tool\"0\n\x11\x44\x65leteToolRequest\x12\x1b\n\x02id\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06:\x04tol_R\x02id\"\x97\x03\n\x16ListScopedToolsRequest\x12z\n\nidentifier\x18\x01 \x01(\tBZ\x92\x41M23Identifier of the connected account to filter toolsJ\x16\"app_google_workspace\"\xbaH\x07r\x02\x18\x64\xc8\x01\x01R\nidentifier\x12r\n\x06\x66ilter\x18\x02 \x01(\x0b\x32#.scalekit.v1.tools.ScopedToolFilterB5\x92\x41,2*Filter parameters for listing scoped tools\xbaH\x03\xc8\x01\x01R\x06\x66ilter\x12\x1b\n\tpage_size\x18\x03 \x01(\rR\x08pageSize\x12p\n\npage_token\x18\x04 \x01(\tBQ\x92\x41N2.Token from a previous response for pagination.J\x1c\x65yJwYWdlIjoyLCJsaW1pdCI6MzB9R\tpageToken\"\x95\x03\n\x17ListScopedToolsResponse\x12v\n\x0fnext_page_token\x18\x01 \x01(\tBN\x92\x41K2)Token for fetching the next page of toolsJ\x1e\"eyJwYWdlIjozLCJsaW1pdCI6MzB9\"R\rnextPageToken\x12Q\n\ntotal_size\x18\x02 \x01(\rB2\x92\x41/2(Total number of tools matching the queryJ\x03\x31\x30\x34R\ttotalSize\x12z\n\x0fprev_page_token\x18\x03 \x01(\tBR\x92\x41O2-Token for fetching the previous page of toolsJ\x1e\"eyJwYWdlIjoxLCJsaW1pdCI6MzB9\"R\rprevPageToken\x12\x33\n\x05tools\x18\x05 \x03(\x0b\x32\x1d.scalekit.v1.tools.ScopedToolR\x05tools\"z\n\x10ScopedToolFilter\x12\x1c\n\tproviders\x18\x01 \x03(\tR\tproviders\x12\x1d\n\ntool_names\x18\x02 \x03(\tR\ttoolNames\x12)\n\x10\x63onnection_names\x18\x03 \x03(\tR\x0f\x63onnectionNames\"\xb3\x02\n\x19ListAvailableToolsRequest\x12\x86\x01\n\nidentifier\x18\x01 \x01(\tBf\x92\x41Y2?Identifier of the connected account to list available tools forJ\x16\"app_google_workspace\"\xbaH\x07r\x02\x18\x64\xc8\x01\x01R\nidentifier\x12\x1b\n\tpage_size\x18\x02 \x01(\rR\x08pageSize\x12p\n\npage_token\x18\x03 \x01(\tBQ\x92\x41N2.Token from a previous response for pagination.J\x1c\x65yJwYWdlIjoyLCJsaW1pdCI6MzB9R\tpageToken\"\xcd\x03\n\x1aListAvailableToolsResponse\x12v\n\x0fnext_page_token\x18\x01 \x01(\tBN\x92\x41K2)Token for fetching the next page of toolsJ\x1e\"eyJwYWdlIjozLCJsaW1pdCI6MzB9\"R\rnextPageToken\x12[\n\ntotal_size\x18\x02 \x01(\rB<\x92\x41\x39\x32\x32Total number of available tools matching the queryJ\x03\x31\x30\x34R\ttotalSize\x12z\n\x0fprev_page_token\x18\x03 \x01(\tBR\x92\x41O2-Token for fetching the previous page of toolsJ\x1e\"eyJwYWdlIjoxLCJsaW1pdCI6MzB9\"R\rprevPageToken\x12^\n\x05tools\x18\x04 \x03(\x0b\x32\x17.scalekit.v1.tools.ToolB/\x92\x41,2*List of tools available for the identifierR\x05tools2\xe8\x18\n\x0bToolService\x12\xf2\x01\n\nCreateTool\x12$.scalekit.v1.tools.CreateToolRequest\x1a%.scalekit.v1.tools.CreateToolResponse\"\x96\x01\x92\x41\x63\n\x05Tools\x12\x11\x43reate a new tool\x1aGRegister a new tool with its schema, metadata, and other configuration.\x82\xb5\x18\x02\x18\x04\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x15\"\r/api/v1/tools:\x04tool\x12\xfa\x01\n\tListTools\x12#.scalekit.v1.tools.ListToolsRequest\x1a$.scalekit.v1.tools.ListToolsResponse\"\xa1\x01\x92\x41t\n\x05Tools\x12\nList tools\x1a_Fetch tools by provider, identifier, and connector. If `summary=true`, returns only tool names.\x82\xb5\x18\x02\x18\x64\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x0f\x12\r/api/v1/tools\x12\x9b\x01\n\x0fListScopedTools\x12).scalekit.v1.tools.ListScopedToolsRequest\x1a*.scalekit.v1.tools.ListScopedToolsResponse\"1\x82\xb5\x18\x02\x18\x04\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x16\x12\x14/api/v1/tools/scoped\x12\x84\x04\n\x12ListAvailableTools\x12,.scalekit.v1.tools.ListAvailableToolsRequest\x1a-.scalekit.v1.tools.ListAvailableToolsResponse\"\x90\x03\x92\x41\xd8\x02\n\x05Tools\x12\x31List all tools for a connected account identifier\x1aQLists all tools for a given Connected Account Identifier. Identifier is required.J*\n\x03\x32\x30\x30\x12#\n!Paginated list of available toolsJ:\n\x03\x34\x30\x30\x12\x33\n1Invalid request - missing or malformed identifierJB\n\x03\x34\x30\x31\x12;\n9Authentication required - missing or invalid access tokenJ\x1d\n\x03\x34\x30\x34\x12\x16\n\x14Identifier not found\x82\xb5\x18\x02\x18\x04\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x19\x12\x17/api/v1/tools/available\x12\xac\x02\n\x0eSetToolDefault\x12(.scalekit.v1.tools.SetToolDefaultRequest\x1a).scalekit.v1.tools.SetToolDefaultResponse\"\xc4\x01\x92\x41\x87\x01\n\x05Tools\x12#Marks a tool as the default version\x1aYSet a specific tool (by name, schema version, tool version, and provider) as the default.\x82\xb5\x18\x02\x18\x04\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x1e\"\x19/api/v1/tools:set_default:\x01*\x12\xd8\x01\n\nUpdateTool\x12$.scalekit.v1.tools.UpdateToolRequest\x1a%.scalekit.v1.tools.UpdateToolResponse\"}\x92\x41J\n\x05Tools\x12\rUpdate a tool\x1a\x32Update an existing tool by provider and tool name.\x82\xb5\x18\x02\x18\x04\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x15\x1a\r/api/v1/tools:\x04tool\x12\xd9\x01\n\nDeleteTool\x12$.scalekit.v1.tools.DeleteToolRequest\x1a\x16.google.protobuf.Empty\"\x8c\x01\x92\x41Z\n\x05Tools\x12\rDelete a tool\x1a\x42\x44\x65lete a tool by name, schema version, tool version, and provider.\x82\xb5\x18\x02\x18\x04\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x14*\x12/api/v1/tools/{id}\x12\xc2\t\n\x0b\x45xecuteTool\x12%.scalekit.v1.tools.ExecuteToolRequest\x1a&.scalekit.v1.tools.ExecuteToolResponse\"\xe3\x08\x92\x41\xba\x08\n\x12\x43onnected Accounts\x12(Execute a tool using a connected account\x1a\xcf\x03\x45xecutes a tool action using authentication credentials from a connected account. Specify the tool by name and provide required parameters as JSON. The connected account can be identified by ID, or by combination of organization/user, connector, and identifier. Returns the execution result data and a unique execution ID for tracking. Use this endpoint to perform actions like sending emails, creating calendar events, or managing resources in external services.Jq\n\x03\x32\x30\x30\x12j\n\x92\x41;2\"Additional metadata about the toolJ\x15{\"category\": \"email\"}R\x08metadata\x12X\n\x04tags\x18\x05 \x03(\tBD\x92\x41\x41\x32$Tags for categorization or filteringJ\x19[\"notification\", \"email\"]R\x04tags\x12\x83\x01\n\nis_default\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.BoolValueBH\x92\x41\x42\x32:Marks this tool as the default version for the combinationJ\x04true\xe0\x41\x03R\tisDefault\x12\x83\x01\n\nupdated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampBH\x92\x41\x42\x32(Timestamp when the tool was last updatedJ\x16\"2023-10-01T12:00:00Z\"\xe0\x41\x03R\tupdatedAt\"\xd3\x01\n\nScopedTool\x12+\n\x04tool\x18\x01 \x01(\x0b\x32\x17.scalekit.v1.tools.ToolR\x04tool\x12\x1e\n\nidentifier\x18\x02 \x01(\tR\nidentifier\x12x\n\x14\x63onnected_account_id\x18\x03 \x01(\tBF\x92\x41<20ID of the connected account for this scoped toolJ\x08\"ca_123\"\xbaH\x04r\x02\x18\x64R\x12\x63onnectedAccountId\"\xfe\x01\n\x10ListToolsRequest\x12[\n\x06\x66ilter\x18\x01 \x01(\x0b\x32\x19.scalekit.v1.tools.FilterB(\x92\x41%2#Filter parameters for listing toolsR\x06\x66ilter\x12\x1b\n\tpage_size\x18\x02 \x01(\rR\x08pageSize\x12p\n\npage_token\x18\x03 \x01(\tBQ\x92\x41N2.Token from a previous response for pagination.J\x1c\x65yJwYWdlIjoyLCJsaW1pdCI6MzB9R\tpageToken\"\x85\n\n\x06\x46ilter\x12t\n\x07summary\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.BoolValueB>\x92\x41;23Return only tool names instead of full tool detailsJ\x04trueR\x07summary\x12I\n\x08provider\x18\x02 \x01(\tB-\x92\x41#2\x17\x46ilter by tool providerJ\x08\"GOOGLE\"\xbaH\x04r\x02\x18\x32R\x08provider\x12j\n\nidentifier\x18\x03 \x01(\tBJ\x92\x41@2&Filter by connected account identifierJ\x16\"app_google_workspace\"\xbaH\x04r\x02\x18\x64R\nidentifier\x12I\n\ttool_name\x18\x04 \x03(\tB,\x92\x41)2\x13\x46ilter by tool nameJ\x12\"gmail_send_email\"R\x08toolName\x12g\n\x05query\x18\x05 \x01(\tBL\x92\x41@2&Filter by connected account identifierJ\x16\"gmail get attachment\"\xbaH\x06r\x04\x10\x03\x18\x64H\x00R\x05query\x88\x01\x01\x12\xdf\x01\n\tconnector\x18\x06 \x01(\tB\xbb\x01\x92\x41\xaf\x01\x32\xa0\x01\x43onnector name (e.g. \'My Gmail\'). When set together with identifier, resolves to a specific connected account and includes its custom MCP tools in the response.J\n\"My Gmail\"\xbaH\x05r\x03\x18\x90\x03H\x01R\tconnector\x88\x01\x01\x12\x87\x01\n\x0forganization_id\x18\x07 \x01(\tBY\x92\x41O26Organization ID to scope the connected account lookup.J\x15\"org_121312434123312\"\xbaH\x04r\x02\x18 H\x02R\x0eorganizationId\x88\x01\x01\x12p\n\x07user_id\x18\x08 \x01(\tBR\x92\x41H2.User ID to scope the connected account lookup.J\x16\"user_121312434123312\"\xbaH\x04r\x02\x18 H\x03R\x06userId\x88\x01\x01\x12\xea\x01\n\x14\x63onnected_account_id\x18\t \x01(\tB\xb2\x01\x92\x41\xa2\x01\x32\x95\x01\x43onnected account ID. Alternative to identifier + connector for directly identifying the connected account whose custom MCP tools should be included.J\x08\"ca_123\"\xbaH\tr\x07\x18\x64:\x03\x63\x61_H\x04R\x12\x63onnectedAccountId\x88\x01\x01\x42\x08\n\x06_queryB\x0c\n\n_connectorB\x12\n\x10_organization_idB\n\n\x08_user_idB\x17\n\x15_connected_account_id\"\x9b\x04\n\x11ListToolsResponse\x12v\n\x0fnext_page_token\x18\x01 \x01(\tBN\x92\x41K2)Token for fetching the next page of toolsJ\x1e\"eyJwYWdlIjozLCJsaW1pdCI6MzB9\"R\rnextPageToken\x12Q\n\ntotal_size\x18\x02 \x01(\rB2\x92\x41/2(Total number of tools matching the queryJ\x03\x31\x30\x34R\ttotalSize\x12z\n\x0fprev_page_token\x18\x03 \x01(\tBR\x92\x41O2-Token for fetching the previous page of toolsJ\x1e\"eyJwYWdlIjoxLCJsaW1pdCI6MzB9\"R\rprevPageToken\x12^\n\ntool_names\x18\x04 \x03(\tB?\x92\x41<2$List of tool names (if summary=true)J\x14[\"gmail_send_email\"]R\ttoolNames\x12_\n\x05tools\x18\x05 \x03(\x0b\x32\x17.scalekit.v1.tools.ToolB0\x92\x41-2+List of tools (if summary=false or omitted)R\x05tools\"\xe5\x0e\n\x12\x45xecuteToolRequest\x12Q\n\ttool_name\x18\x01 \x01(\tB4\x92\x41+2\x1bName of the tool to executeJ\x0c\"send_email\"\xbaH\x03\xc8\x01\x01R\x08toolName\x12\x99\x02\n\nidentifier\x18\x02 \x01(\tB\xf3\x01\x92\x41\xef\x01\x32\xd8\x01Optional. The unique identifier for the connected account within the third-party service (e.g., email address, user ID, workspace identifier). Use this in combination with connector to identify the connected account.J\x12\"user@example.com\"H\x00R\nidentifier\x88\x01\x01\x12\xfc\x01\n\x06params\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructB\xca\x01\x92\x41\xc6\x01\x32}JSON object containing the parameters required for tool execution. The structure depends on the specific tool being executed.JE{\"to\": \"user@example.com\", \"subject\": \"Hello\", \"body\": \"Hello World\"}R\x06params\x12\xea\x01\n\x14\x63onnected_account_id\x18\x04 \x01(\tB\xb2\x01\x92\x41\xa7\x01\x32\x9a\x01Optional. The unique ID of the connected account. Use this to directly identify the connected account instead of using identifier + connector combination.J\x08\"ca_123\"\xbaH\x04r\x02\x18\x64H\x01R\x12\x63onnectedAccountId\x88\x01\x01\x12\xed\x01\n\tconnector\x18\x05 \x01(\tB\xc9\x01\x92\x41\xbd\x01\x32\xa6\x01Optional. The name of the connector/provider (e.g., \'Google Workspace\', \'Slack\', \'Notion\'). Use this in combination with identifier to identify the connected account.J\x12\"Google Workspace\"\xbaH\x05r\x03\x18\x90\x03H\x02R\tconnector\x88\x01\x01\x12\xee\x01\n\x0forganization_id\x18\x06 \x01(\tB\xbf\x01\x92\x41\xb4\x01\x32\xa6\x01Optional. The organization ID to scope the connected account lookup. Use this to narrow down the search when the same identifier exists across multiple organizations.J\t\"org_123\"\xbaH\x04r\x02\x18\x64H\x03R\x0eorganizationId\x88\x01\x01\x12\xcf\x01\n\x07user_id\x18\x07 \x01(\tB\xb0\x01\x92\x41\xa5\x01\x32\x96\x01Optional. The user ID to scope the connected account lookup. Use this to narrow down the search when the same identifier exists across multiple users.J\n\"user_123\"\xbaH\x04r\x02\x18\x64H\x04R\x06userId\x88\x01\x01\x12\xd9\x01\n\x0c\x61gent_run_id\x18\x08 \x01(\tB\xb1\x01\x92\x41\xa5\x01\x32\x94\x01Optional. Customer-supplied identifier grouping multiple tool calls into a single agent run. Useful for correlating logs across an agentic workflow.J\x0c\"run_abc123\"\xbaH\x05r\x03\x18\xff\x01H\x05R\nagentRunId\x88\x01\x01\x42\r\n\x0b_identifierB\x17\n\x15_connected_account_idB\x0c\n\n_connectorB\x12\n\x10_organization_idB\n\n\x08_user_idB\x0f\n\r_agent_run_id\"\xa3\x02\n\x13\x45xecuteToolResponse\x12\xac\x01\n\x04\x64\x61ta\x18\x01 \x01(\x0b\x32\x17.google.protobuf.StructB\x7f\x92\x41|23Free-flowing JSON parameters for the tool executionJE{\"to\": \"user@example.com\", \"subject\": \"Hello\", \"body\": \"Hello World\"}R\x04\x64\x61ta\x12]\n\x0c\x65xecution_id\x18\x02 \x01(\tB:\x92\x41\x37\x32(Unique identifier for the tool executionJ\x0b\"123456789\"R\x0b\x65xecutionId\"\xad\x02\n\x15SetToolDefaultRequest\x12\x61\n\x04name\x18\x01 \x01(\tBM\x92\x41/2\x19\x46ully qualified tool nameJ\x12\"gmail_send_email\"\xbaH\x18r\x13\x10\x01\x18\x64\x32\r^[a-z0-9_].*$\xc8\x01\x01R\x04name\x12W\n\x0eschema_version\x18\x02 \x01(\tB0\x92\x41!2\x1aSchema version of the toolJ\x03\"1\"\xbaH\tr\x04\x10\x01\x18\n\xc8\x01\x01R\rschemaVersion\x12X\n\x0ctool_version\x18\x03 \x01(\tB5\x92\x41&2\x1fTool version to mark as defaultJ\x03\"1\"\xbaH\tr\x04\x10\x01\x18\n\xc8\x01\x01R\x0btoolVersion\"j\n\x16SetToolDefaultResponse\x12P\n\x04tool\x18\x01 \x01(\x0b\x32\x17.scalekit.v1.tools.ToolB#\x92\x41 2\x1eThe tool now marked as defaultR\x04tool\"^\n\x11UpdateToolRequest\x12I\n\x04tool\x18\x01 \x01(\x0b\x32\x17.scalekit.v1.tools.ToolB\x1c\x92\x41\x13\x32\x11Updated tool data\xbaH\x03\xc8\x01\x01R\x04tool\"X\n\x12UpdateToolResponse\x12\x42\n\x04tool\x18\x01 \x01(\x0b\x32\x17.scalekit.v1.tools.ToolB\x15\x92\x41\x12\x32\x10The updated toolR\x04tool\"0\n\x11\x44\x65leteToolRequest\x12\x1b\n\x02id\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06:\x04tol_R\x02id\"\x97\x03\n\x16ListScopedToolsRequest\x12z\n\nidentifier\x18\x01 \x01(\tBZ\x92\x41M23Identifier of the connected account to filter toolsJ\x16\"app_google_workspace\"\xbaH\x07r\x02\x18\x64\xc8\x01\x01R\nidentifier\x12r\n\x06\x66ilter\x18\x02 \x01(\x0b\x32#.scalekit.v1.tools.ScopedToolFilterB5\x92\x41,2*Filter parameters for listing scoped tools\xbaH\x03\xc8\x01\x01R\x06\x66ilter\x12\x1b\n\tpage_size\x18\x03 \x01(\rR\x08pageSize\x12p\n\npage_token\x18\x04 \x01(\tBQ\x92\x41N2.Token from a previous response for pagination.J\x1c\x65yJwYWdlIjoyLCJsaW1pdCI6MzB9R\tpageToken\"\x95\x03\n\x17ListScopedToolsResponse\x12v\n\x0fnext_page_token\x18\x01 \x01(\tBN\x92\x41K2)Token for fetching the next page of toolsJ\x1e\"eyJwYWdlIjozLCJsaW1pdCI6MzB9\"R\rnextPageToken\x12Q\n\ntotal_size\x18\x02 \x01(\rB2\x92\x41/2(Total number of tools matching the queryJ\x03\x31\x30\x34R\ttotalSize\x12z\n\x0fprev_page_token\x18\x03 \x01(\tBR\x92\x41O2-Token for fetching the previous page of toolsJ\x1e\"eyJwYWdlIjoxLCJsaW1pdCI6MzB9\"R\rprevPageToken\x12\x33\n\x05tools\x18\x05 \x03(\x0b\x32\x1d.scalekit.v1.tools.ScopedToolR\x05tools\"z\n\x10ScopedToolFilter\x12\x1c\n\tproviders\x18\x01 \x03(\tR\tproviders\x12\x1d\n\ntool_names\x18\x02 \x03(\tR\ttoolNames\x12)\n\x10\x63onnection_names\x18\x03 \x03(\tR\x0f\x63onnectionNames\"\xb3\x02\n\x19ListAvailableToolsRequest\x12\x86\x01\n\nidentifier\x18\x01 \x01(\tBf\x92\x41Y2?Identifier of the connected account to list available tools forJ\x16\"app_google_workspace\"\xbaH\x07r\x02\x18\x64\xc8\x01\x01R\nidentifier\x12\x1b\n\tpage_size\x18\x02 \x01(\rR\x08pageSize\x12p\n\npage_token\x18\x03 \x01(\tBQ\x92\x41N2.Token from a previous response for pagination.J\x1c\x65yJwYWdlIjoyLCJsaW1pdCI6MzB9R\tpageToken\"\xcd\x03\n\x1aListAvailableToolsResponse\x12v\n\x0fnext_page_token\x18\x01 \x01(\tBN\x92\x41K2)Token for fetching the next page of toolsJ\x1e\"eyJwYWdlIjozLCJsaW1pdCI6MzB9\"R\rnextPageToken\x12[\n\ntotal_size\x18\x02 \x01(\rB<\x92\x41\x39\x32\x32Total number of available tools matching the queryJ\x03\x31\x30\x34R\ttotalSize\x12z\n\x0fprev_page_token\x18\x03 \x01(\tBR\x92\x41O2-Token for fetching the previous page of toolsJ\x1e\"eyJwYWdlIjoxLCJsaW1pdCI6MzB9\"R\rprevPageToken\x12^\n\x05tools\x18\x04 \x03(\x0b\x32\x17.scalekit.v1.tools.ToolB/\x92\x41,2*List of tools available for the identifierR\x05tools2\xe8\x18\n\x0bToolService\x12\xf2\x01\n\nCreateTool\x12$.scalekit.v1.tools.CreateToolRequest\x1a%.scalekit.v1.tools.CreateToolResponse\"\x96\x01\x92\x41\x63\n\x05Tools\x12\x11\x43reate a new tool\x1aGRegister a new tool with its schema, metadata, and other configuration.\x82\xb5\x18\x02\x18\x04\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x15\"\r/api/v1/tools:\x04tool\x12\xfa\x01\n\tListTools\x12#.scalekit.v1.tools.ListToolsRequest\x1a$.scalekit.v1.tools.ListToolsResponse\"\xa1\x01\x92\x41t\n\x05Tools\x12\nList tools\x1a_Fetch tools by provider, identifier, and connector. If `summary=true`, returns only tool names.\x82\xb5\x18\x02\x18\x64\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x0f\x12\r/api/v1/tools\x12\x9b\x01\n\x0fListScopedTools\x12).scalekit.v1.tools.ListScopedToolsRequest\x1a*.scalekit.v1.tools.ListScopedToolsResponse\"1\x82\xb5\x18\x02\x18\x04\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x16\x12\x14/api/v1/tools/scoped\x12\x84\x04\n\x12ListAvailableTools\x12,.scalekit.v1.tools.ListAvailableToolsRequest\x1a-.scalekit.v1.tools.ListAvailableToolsResponse\"\x90\x03\x92\x41\xd8\x02\n\x05Tools\x12\x31List all tools for a connected account identifier\x1aQLists all tools for a given Connected Account Identifier. Identifier is required.J*\n\x03\x32\x30\x30\x12#\n!Paginated list of available toolsJ:\n\x03\x34\x30\x30\x12\x33\n1Invalid request - missing or malformed identifierJB\n\x03\x34\x30\x31\x12;\n9Authentication required - missing or invalid access tokenJ\x1d\n\x03\x34\x30\x34\x12\x16\n\x14Identifier not found\x82\xb5\x18\x02\x18\x04\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x19\x12\x17/api/v1/tools/available\x12\xac\x02\n\x0eSetToolDefault\x12(.scalekit.v1.tools.SetToolDefaultRequest\x1a).scalekit.v1.tools.SetToolDefaultResponse\"\xc4\x01\x92\x41\x87\x01\n\x05Tools\x12#Marks a tool as the default version\x1aYSet a specific tool (by name, schema version, tool version, and provider) as the default.\x82\xb5\x18\x02\x18\x04\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x1e\"\x19/api/v1/tools:set_default:\x01*\x12\xd8\x01\n\nUpdateTool\x12$.scalekit.v1.tools.UpdateToolRequest\x1a%.scalekit.v1.tools.UpdateToolResponse\"}\x92\x41J\n\x05Tools\x12\rUpdate a tool\x1a\x32Update an existing tool by provider and tool name.\x82\xb5\x18\x02\x18\x04\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x15\x1a\r/api/v1/tools:\x04tool\x12\xd9\x01\n\nDeleteTool\x12$.scalekit.v1.tools.DeleteToolRequest\x1a\x16.google.protobuf.Empty\"\x8c\x01\x92\x41Z\n\x05Tools\x12\rDelete a tool\x1a\x42\x44\x65lete a tool by name, schema version, tool version, and provider.\x82\xb5\x18\x02\x18\x04\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x14*\x12/api/v1/tools/{id}\x12\xc2\t\n\x0b\x45xecuteTool\x12%.scalekit.v1.tools.ExecuteToolRequest\x1a&.scalekit.v1.tools.ExecuteToolResponse\"\xe3\x08\x92\x41\xba\x08\n\x12\x43onnected Accounts\x12(Execute a tool using a connected account\x1a\xcf\x03\x45xecutes a tool action using authentication credentials from a connected account. Specify the tool by name and provide required parameters as JSON. The connected account can be identified by ID, or by combination of organization/user, connector, and identifier. Returns the execution result data and a unique execution ID for tracking. Use this endpoint to perform actions like sending emails, creating calendar events, or managing resources in external services.Jq\n\x03\x32\x30\x30\x12j\n None: ... class ExecuteToolRequest(_message.Message): - __slots__ = ("tool_name", "identifier", "params", "connected_account_id", "connector", "organization_id", "user_id") + __slots__ = ("tool_name", "identifier", "params", "connected_account_id", "connector", "organization_id", "user_id", "agent_run_id") TOOL_NAME_FIELD_NUMBER: _ClassVar[int] IDENTIFIER_FIELD_NUMBER: _ClassVar[int] PARAMS_FIELD_NUMBER: _ClassVar[int] @@ -110,6 +110,7 @@ class ExecuteToolRequest(_message.Message): CONNECTOR_FIELD_NUMBER: _ClassVar[int] ORGANIZATION_ID_FIELD_NUMBER: _ClassVar[int] USER_ID_FIELD_NUMBER: _ClassVar[int] + AGENT_RUN_ID_FIELD_NUMBER: _ClassVar[int] tool_name: str identifier: str params: _struct_pb2.Struct @@ -117,7 +118,8 @@ class ExecuteToolRequest(_message.Message): connector: str organization_id: str user_id: str - def __init__(self, tool_name: _Optional[str] = ..., identifier: _Optional[str] = ..., params: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ..., connected_account_id: _Optional[str] = ..., connector: _Optional[str] = ..., organization_id: _Optional[str] = ..., user_id: _Optional[str] = ...) -> None: ... + agent_run_id: str + def __init__(self, tool_name: _Optional[str] = ..., identifier: _Optional[str] = ..., params: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ..., connected_account_id: _Optional[str] = ..., connector: _Optional[str] = ..., organization_id: _Optional[str] = ..., user_id: _Optional[str] = ..., agent_run_id: _Optional[str] = ...) -> None: ... class ExecuteToolResponse(_message.Message): __slots__ = ("data", "execution_id") diff --git a/tests/test_organization.py b/tests/test_organization.py index ea8711d..b0d3e24 100644 --- a/tests/test_organization.py +++ b/tests/test_organization.py @@ -4,7 +4,7 @@ from basetest import BaseTest from scalekit.common.exceptions import ScalekitNotFoundException -from scalekit.v1.organizations.organizations_pb2 import CreateOrganization, UpdateOrganization +from scalekit.v1.organizations.organizations_pb2 import CreateOrganization, UpdateOrganization, SessionPolicyType class TestOrganization(BaseTest): @@ -177,6 +177,71 @@ def test_upsert_user_management_settings(self): self.assertTrue(settings.HasField("max_allowed_users")) self.assertEqual(settings.max_allowed_users.value, 45) + def test_update_organization_session_policy(self): + """ Method to test update organization session policy """ + organization = CreateOrganization(display_name=Faker().company(), external_id=Faker().uuid4()) + org_response = self.scalekit_client.organization.create_organization(organization=organization) + self.org_id = org_response[0].organization.id + + response = self.scalekit_client.organization.update_organization_session_policy( + organization_id=self.org_id, + policy_source=SessionPolicyType.CUSTOM, + absolute_session_timeout=3600, + idle_session_timeout_enabled=True, + idle_session_timeout=1800, + ) + self.assertEqual(response[1].code().name, "OK") + self.assertTrue(response[0] is not None) + + def test_get_organization_session_policy(self): + """ Method to test get organization session policy """ + organization = CreateOrganization(display_name=Faker().company(), external_id=Faker().uuid4()) + org_response = self.scalekit_client.organization.create_organization(organization=organization) + self.org_id = org_response[0].organization.id + + response = self.scalekit_client.organization.get_organization_session_policy( + organization_id=self.org_id + ) + self.assertEqual(response[1].code().name, "OK") + self.assertTrue(response[0] is not None) + + def test_get_application_session_policy(self): + """ Method to test get application session policy """ + organization = CreateOrganization(display_name=Faker().company(), external_id=Faker().uuid4()) + org_response = self.scalekit_client.organization.create_organization(organization=organization) + self.org_id = org_response[0].organization.id + + response = self.scalekit_client.organization.get_application_session_policy( + organization_id=self.org_id + ) + self.assertEqual(response[1].code().name, "OK") + self.assertTrue(response[0] is not None) + + def test_search_organizations(self): + """ Method to test search organizations """ + organization = CreateOrganization(display_name=Faker().company(), external_id=Faker().uuid4()) + org_response = self.scalekit_client.organization.create_organization(organization=organization) + self.org_id = org_response[0].organization.id + + response = self.scalekit_client.organization.search_organizations(query="test") + self.assertEqual(response[1].code().name, "OK") + self.assertTrue(response[0] is not None) + + def test_get_organization_user_management_setting(self): + """ Method to test get organization user management setting """ + organization = CreateOrganization(display_name=Faker().company(), external_id=Faker().uuid4()) + org_response = self.scalekit_client.organization.create_organization(organization=organization) + self.org_id = org_response[0].organization.id + + try: + response = self.scalekit_client.organization.get_organization_user_management_setting( + organization_id=self.org_id + ) + self.assertEqual(response[1].code().name, "OK") + self.assertTrue(response[0] is not None) + except Exception as exp: + self.skipTest(f"Skipping get organization user management setting test due to error: {exp}") + def tearDown(self): """ Method to clean up after test """ if self.org_id: diff --git a/tests/test_users.py b/tests/test_users.py index 5c9549e..7e02bad 100644 --- a/tests/test_users.py +++ b/tests/test_users.py @@ -488,7 +488,7 @@ def test_resend_invite(self): metadata={"source": "test"} ) create_response = self.scalekit_client.users.create_user_and_membership( - organization_id=self.org_id, + organization_id=self.org_id, user=user, send_invitation_email=True ) @@ -509,6 +509,79 @@ def test_resend_invite(self): self.assertTrue(response[0].invite.expires_at is not None) self.assertEqual(response[0].invite.resent_count, 1) + def test_search_users(self): + """ Method to test search users """ + response = self.scalekit_client.users.search_users(query="test") + self.assertEqual(response[1].code().name, "OK") + self.assertTrue(response[0] is not None) + + def test_search_organization_users(self): + """ Method to test search organization users """ + user = CreateUser( + email=f"test.user.{self.faker.unique.random_number()}@example.com", + ) + create_response = self.scalekit_client.users.create_user_and_membership( + organization_id=self.org_id, + user=user + ) + self.user_id = create_response[0].user.id + + response = self.scalekit_client.users.search_organization_users( + organization_id=self.org_id, + query="test" + ) + self.assertEqual(response[1].code().name, "OK") + self.assertTrue(response[0] is not None) + + def test_assign_user_roles(self): + """ Method to test assign user roles """ + user = CreateUser( + email=f"test.user.{self.faker.unique.random_number()}@example.com", + ) + create_response = self.scalekit_client.users.create_user_and_membership( + organization_id=self.org_id, + user=user + ) + self.user_id = create_response[0].user.id + + try: + response = self.scalekit_client.users.assign_user_roles( + organization_id=self.org_id, + user_id=self.user_id, + role_ids=["member"] + ) + self.assertEqual(response[1].code().name, "OK") + self.assertTrue(response[0] is not None) + except Exception as exp: + self.skipTest(f"Skipping assign user roles test due to error: {exp}") + + def test_remove_user_role(self): + """ Method to test remove user role """ + user = CreateUser( + email=f"test.user.{self.faker.unique.random_number()}@example.com", + ) + create_response = self.scalekit_client.users.create_user_and_membership( + organization_id=self.org_id, + user=user + ) + self.user_id = create_response[0].user.id + + try: + # First assign a role so we can remove it + self.scalekit_client.users.assign_user_roles( + organization_id=self.org_id, + user_id=self.user_id, + role_ids=["member"] + ) + response = self.scalekit_client.users.remove_user_role( + organization_id=self.org_id, + user_id=self.user_id, + role_id="member" + ) + self.assertEqual(response[1].code().name, "OK") + except Exception as exp: + self.skipTest(f"Skipping remove user role test due to error: {exp}") + def tearDown(self): """ Method to clean up """ errors = []