From 18e8cd73e44d9910f54d099fc752a692e886e8d5 Mon Sep 17 00:00:00 2001 From: Srinivas Karre Date: Sun, 17 May 2026 12:53:04 +0530 Subject: [PATCH 1/2] chore: regenerate proto types with logo_url field --- scalekit/v1/auth/auth_pb2.py | 50 +-- scalekit/v1/auth/auth_pb2.pyi | 6 +- .../connected_accounts_pb2.py | 50 ++- .../connected_accounts_pb2.pyi | 20 +- scalekit/v1/connections/connections_pb2.py | 284 +++++++++--------- scalekit/v1/connections/connections_pb2.pyi | 24 +- .../v1/organizations/organizations_pb2.py | 182 +++++------ .../v1/organizations/organizations_pb2.pyi | 26 +- scalekit/v1/providers/providers_pb2.py | 90 +++--- scalekit/v1/providers/providers_pb2.pyi | 39 +-- 10 files changed, 340 insertions(+), 431 deletions(-) diff --git a/scalekit/v1/auth/auth_pb2.py b/scalekit/v1/auth/auth_pb2.py index f7dfa04..cec814d 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\"\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') +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\"\x93\x05\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\x12y\n\x08logo_url\x18\x08 \x01(\tBY\x92\x41V2+HTTPS URL of the organization\'s logo image.J\'\"https://cdn.example.com/acme-logo.png\"H\x04R\x07logoUrl\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_atB\x0b\n\t_logo_url\"_\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) @@ -61,6 +61,8 @@ _globals['_OTPREQUEST'].fields_by_name['code_challenge']._serialized_options = b'\222A(2\034OTP sent to the user\'s emailJ\010\"123456\"\272H\006r\004\020\005\030\006' _globals['_LISTUSERORGANIZATIONSRESPONSE'].fields_by_name['intent']._loaded_options = None _globals['_LISTUSERORGANIZATIONSRESPONSE'].fields_by_name['intent']._serialized_options = b'\272H\005\202\001\002\020\001' + _globals['_ORGANIZATION'].fields_by_name['logo_url']._loaded_options = None + _globals['_ORGANIZATION'].fields_by_name['logo_url']._serialized_options = b'\222AV2+HTTPS URL of the organization\'s logo image.J\'\"https://cdn.example.com/acme-logo.png\"' _globals['_UPDATELOGINUSERDETAILSREQUEST'].fields_by_name['connection_id']._loaded_options = None _globals['_UPDATELOGINUSERDETAILSREQUEST'].fields_by_name['connection_id']._serialized_options = b'\222AE2+Connection ID. Unique ID for the connectionJ\026\"conn_121312434123312\"\272H\006r\004\020\001\030 ' _globals['_UPDATELOGINUSERDETAILSREQUEST'].fields_by_name['login_request_id']._loaded_options = None @@ -127,10 +129,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=7150 - _globals['_INTENT']._serialized_end=7208 - _globals['_AUTHSTATE']._serialized_start=7211 - _globals['_AUTHSTATE']._serialized_end=7775 + _globals['_INTENT']._serialized_start=7286 + _globals['_INTENT']._serialized_end=7344 + _globals['_AUTHSTATE']._serialized_start=7347 + _globals['_AUTHSTATE']._serialized_end=7911 _globals['_LISTAUTHMETHODSREQUEST']._serialized_start=423 _globals['_LISTAUTHMETHODSREQUEST']._serialized_end=471 _globals['_LISTAUTHMETHODSRESPONSE']._serialized_start=473 @@ -160,23 +162,23 @@ _globals['_LISTUSERORGANIZATIONSRESPONSE']._serialized_start=3039 _globals['_LISTUSERORGANIZATIONSRESPONSE']._serialized_end=3251 _globals['_ORGANIZATION']._serialized_start=3254 - _globals['_ORGANIZATION']._serialized_end=3777 - _globals['_USERDETAILS']._serialized_start=3779 - _globals['_USERDETAILS']._serialized_end=3874 - _globals['_SIGNUPORGANIZATIONREQUEST']._serialized_start=3877 - _globals['_SIGNUPORGANIZATIONREQUEST']._serialized_end=4073 - _globals['_SIGNUPORGANIZATIONRESPONSE']._serialized_start=4075 - _globals['_SIGNUPORGANIZATIONRESPONSE']._serialized_end=4189 - _globals['_UPDATELOGINUSERDETAILSREQUEST']._serialized_start=4192 - _globals['_UPDATELOGINUSERDETAILSREQUEST']._serialized_end=4534 - _globals['_USER']._serialized_start=4537 - _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 + _globals['_ORGANIZATION']._serialized_end=3913 + _globals['_USERDETAILS']._serialized_start=3915 + _globals['_USERDETAILS']._serialized_end=4010 + _globals['_SIGNUPORGANIZATIONREQUEST']._serialized_start=4013 + _globals['_SIGNUPORGANIZATIONREQUEST']._serialized_end=4209 + _globals['_SIGNUPORGANIZATIONRESPONSE']._serialized_start=4211 + _globals['_SIGNUPORGANIZATIONRESPONSE']._serialized_end=4325 + _globals['_UPDATELOGINUSERDETAILSREQUEST']._serialized_start=4328 + _globals['_UPDATELOGINUSERDETAILSREQUEST']._serialized_end=4670 + _globals['_USER']._serialized_start=4673 + _globals['_USER']._serialized_end=6742 + _globals['_GETAUTHSTATERESPONSE']._serialized_start=6745 + _globals['_GETAUTHSTATERESPONSE']._serialized_end=7050 + _globals['_GETAUTHERRORREQUEST']._serialized_start=7053 + _globals['_GETAUTHERRORREQUEST']._serialized_end=7193 + _globals['_GETAUTHERRORRESPONSE']._serialized_start=7195 + _globals['_GETAUTHERRORRESPONSE']._serialized_end=7284 + _globals['_AUTHSERVICE']._serialized_start=7914 + _globals['_AUTHSERVICE']._serialized_end=10001 # @@protoc_insertion_point(module_scope) diff --git a/scalekit/v1/auth/auth_pb2.pyi b/scalekit/v1/auth/auth_pb2.pyi index 06084bc..a01efaf 100644 --- a/scalekit/v1/auth/auth_pb2.pyi +++ b/scalekit/v1/auth/auth_pb2.pyi @@ -176,7 +176,7 @@ class ListUserOrganizationsResponse(_message.Message): def __init__(self, organizations: _Optional[_Iterable[_Union[Organization, _Mapping]]] = ..., user: _Optional[_Union[UserDetails, _Mapping]] = ..., intent: _Optional[_Union[Intent, str]] = ...) -> None: ... class Organization(_message.Message): - __slots__ = ("id", "name", "membership_status", "invitation_inviter_email", "invitation_accepted_at", "invitation_created_at", "invitation_expires_at") + __slots__ = ("id", "name", "membership_status", "invitation_inviter_email", "invitation_accepted_at", "invitation_created_at", "invitation_expires_at", "logo_url") ID_FIELD_NUMBER: _ClassVar[int] NAME_FIELD_NUMBER: _ClassVar[int] MEMBERSHIP_STATUS_FIELD_NUMBER: _ClassVar[int] @@ -184,6 +184,7 @@ class Organization(_message.Message): INVITATION_ACCEPTED_AT_FIELD_NUMBER: _ClassVar[int] INVITATION_CREATED_AT_FIELD_NUMBER: _ClassVar[int] INVITATION_EXPIRES_AT_FIELD_NUMBER: _ClassVar[int] + LOGO_URL_FIELD_NUMBER: _ClassVar[int] id: str name: str membership_status: str @@ -191,7 +192,8 @@ class Organization(_message.Message): invitation_accepted_at: _timestamp_pb2.Timestamp invitation_created_at: _timestamp_pb2.Timestamp invitation_expires_at: _timestamp_pb2.Timestamp - def __init__(self, id: _Optional[str] = ..., name: _Optional[str] = ..., membership_status: _Optional[str] = ..., invitation_inviter_email: _Optional[str] = ..., invitation_accepted_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., invitation_created_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., invitation_expires_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ... + logo_url: str + def __init__(self, id: _Optional[str] = ..., name: _Optional[str] = ..., membership_status: _Optional[str] = ..., invitation_inviter_email: _Optional[str] = ..., invitation_accepted_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., invitation_created_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., invitation_expires_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., logo_url: _Optional[str] = ...) -> None: ... class UserDetails(_message.Message): __slots__ = ("email", "first_name", "last_name") diff --git a/scalekit/v1/connected_accounts/connected_accounts_pb2.py b/scalekit/v1/connected_accounts/connected_accounts_pb2.py index a725386..d5b1d54 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\"\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\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\"\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\"\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*\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\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 @@ -246,10 +238,10 @@ _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=18411 - _globals['_CONNECTORSTATUS']._serialized_end=18550 - _globals['_CONNECTORTYPE']._serialized_start=18553 - _globals['_CONNECTORTYPE']._serialized_end=18732 + _globals['_CONNECTORSTATUS']._serialized_start=17728 + _globals['_CONNECTORSTATUS']._serialized_end=17867 + _globals['_CONNECTORTYPE']._serialized_start=17870 + _globals['_CONNECTORTYPE']._serialized_end=18033 _globals['_LISTCONNECTEDACCOUNTSREQUEST']._serialized_start=359 _globals['_LISTCONNECTEDACCOUNTSREQUEST']._serialized_end=1936 _globals['_LISTCONNECTEDACCOUNTSRESPONSE']._serialized_start=1939 @@ -291,21 +283,19 @@ _globals['_CONNECTEDACCOUNTFORLIST']._serialized_start=14585 _globals['_CONNECTEDACCOUNTFORLIST']._serialized_end=15705 _globals['_AUTHORIZATIONDETAILS']._serialized_start=15708 - _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 + _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['_GETCONNECTEDACCOUNTREQUEST']._serialized_start=16884 + _globals['_GETCONNECTEDACCOUNTREQUEST']._serialized_end=17143 + _globals['_GETCONNECTEDACCOUNTRESPONSE']._serialized_start=17146 + _globals['_GETCONNECTEDACCOUNTRESPONSE']._serialized_end=17343 + _globals['_DISCONNECTCONNECTEDACCOUNTREQUEST']._serialized_start=17346 + _globals['_DISCONNECTCONNECTEDACCOUNTREQUEST']._serialized_end=17524 + _globals['_DISCONNECTCONNECTEDACCOUNTRESPONSE']._serialized_start=17527 + _globals['_DISCONNECTCONNECTEDACCOUNTRESPONSE']._serialized_end=17725 + _globals['_CONNECTEDACCOUNTSERVICE']._serialized_start=18036 + _globals['_CONNECTEDACCOUNTSERVICE']._serialized_end=28140 # @@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 05886ea..1e10adb 100644 --- a/scalekit/v1/connected_accounts/connected_accounts_pb2.pyi +++ b/scalekit/v1/connected_accounts/connected_accounts_pb2.pyi @@ -34,7 +34,6 @@ 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 @@ -50,7 +49,6 @@ 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") @@ -297,26 +295,12 @@ 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", "google_dwd") + __slots__ = ("oauth_token", "static_auth") OAUTH_TOKEN_FIELD_NUMBER: _ClassVar[int] STATIC_AUTH_FIELD_NUMBER: _ClassVar[int] - GOOGLE_DWD_FIELD_NUMBER: _ClassVar[int] oauth_token: OauthToken static_auth: StaticAuth - 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: ... + def __init__(self, oauth_token: _Optional[_Union[OauthToken, _Mapping]] = ..., static_auth: _Optional[_Union[StaticAuth, _Mapping]] = ...) -> None: ... class OauthToken(_message.Message): __slots__ = ("access_token", "refresh_token", "scopes", "domain") diff --git a/scalekit/v1/connections/connections_pb2.py b/scalekit/v1/connections/connections_pb2.py index 89fe83c..dffbca0 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\"\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\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\"\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\"\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\"\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\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 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", "google_dwd_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", "key_id", "provider_key", "domains") class AttributeMappingEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -288,7 +286,6 @@ 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] @@ -311,11 +308,10 @@ 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]] = ..., google_dwd_config: _Optional[_Union[GoogleDWDConfig, _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]] = ..., key_id: _Optional[str] = ..., provider_key: _Optional[str] = ..., domains: _Optional[_Iterable[_Union[_domains_pb2.Domain, _Mapping]]] = ...) -> None: ... class CreateConnectionResponse(_message.Message): __slots__ = ("connection",) @@ -342,7 +338,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", "google_dwd_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", "key_id", "provider_key") class AttributeMappingEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -362,7 +358,6 @@ 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 @@ -377,10 +372,9 @@ 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]] = ..., google_dwd_config: _Optional[_Union[GoogleDWDConfig, _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]] = ..., key_id: _Optional[str] = ..., provider_key: _Optional[str] = ...) -> None: ... class UpdateConnectionResponse(_message.Message): __slots__ = ("connection",) @@ -624,16 +618,6 @@ class OptionalScopes(_message.Message): 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") TYPE_FIELD_NUMBER: _ClassVar[int] diff --git a/scalekit/v1/organizations/organizations_pb2.py b/scalekit/v1/organizations/organizations_pb2.py index 99e3422..1cf15d1 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\"\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') +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\"\xba\t\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\x12\xb2\x01\n\x08logo_url\x18\n \x01(\tB\x91\x01\x92\x41\x8a\x01\x32_HTTPS URL of the organization\'s logo image. Maximum 2048 characters. Must use the https scheme.J\'\"https://cdn.example.com/acme-logo.png\"\xe0\x41\x01H\x02R\x07logoUrl\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_slugB\x0b\n\t_logo_url\"\xba\x0c\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\x12\xb2\x01\n\x08logo_url\x18\n \x01(\tB\x91\x01\x92\x41\x8a\x01\x32_HTTPS URL of the organization\'s logo image. Maximum 2048 characters. Must use the https scheme.J\'\"https://cdn.example.com/acme-logo.png\"\xe0\x41\x01H\x02R\x07logoUrl\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_slugB\x0b\n\t_logo_url\"\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\"\xc9\t\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\x12\xb2\x01\n\x08logo_url\x18\n \x01(\tB\x91\x01\x92\x41\x8a\x01\x32_HTTPS URL of the organization\'s logo image. Maximum 2048 characters. Must use the https scheme.J\'\"https://cdn.example.com/acme-logo.png\"\xe0\x41\x01H\x03R\x07logoUrl\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_slugB\x0b\n\t_logo_urlJ\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\"\x9e\x04\n ApplicationSessionPolicySettings\x12h\n\x18\x61\x62solute_session_timeout\x18\x01 \x01(\x05\x42.\x92\x41+2$Absolute session timeout in minutes.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\x7f\n\x14idle_session_timeout\x18\x03 \x01(\x05\x42M\x92\x41J2DIdle session timeout in minutes. 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\"\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) @@ -56,6 +56,8 @@ _globals['_CREATEORGANIZATION'].fields_by_name['metadata']._serialized_options = b'\272H\026\232\001\023\020\n\"\006r\004\020\003\030\031*\007r\005\020\001\030\200\002' _globals['_CREATEORGANIZATION'].fields_by_name['slug']._loaded_options = None _globals['_CREATEORGANIZATION'].fields_by_name['slug']._serialized_options = b'\222A\204\0022\322\001DNS-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\006\"acme\"x?\200\001\001\212\001\037^[a-z0-9]([a-z0-9]|-[a-z0-9])*$\272H\'r%\020\001\030?2\037^[a-z0-9]([a-z0-9]|-[a-z0-9])*$' + _globals['_CREATEORGANIZATION'].fields_by_name['logo_url']._loaded_options = None + _globals['_CREATEORGANIZATION'].fields_by_name['logo_url']._serialized_options = b'\222A\212\0012_HTTPS URL of the organization\'s logo image. Maximum 2048 characters. Must use the https scheme.J\'\"https://cdn.example.com/acme-logo.png\"\340A\001' _globals['_ORGANIZATION_METADATAENTRY']._loaded_options = None _globals['_ORGANIZATION_METADATAENTRY']._serialized_options = b'8\001' _globals['_ORGANIZATION'].fields_by_name['id']._loaded_options = None @@ -74,6 +76,8 @@ _globals['_ORGANIZATION'].fields_by_name['metadata']._serialized_options = b'\272H\026\232\001\023\020\n\"\006r\004\020\003\030\031*\007r\005\020\001\030\200\002' _globals['_ORGANIZATION'].fields_by_name['slug']._loaded_options = None _globals['_ORGANIZATION'].fields_by_name['slug']._serialized_options = b'\222A\347\0012\265\001DNS-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\006\"acme\"x?\200\001\001\212\001\037^[a-z0-9]([a-z0-9]|-[a-z0-9])*$' + _globals['_ORGANIZATION'].fields_by_name['logo_url']._loaded_options = None + _globals['_ORGANIZATION'].fields_by_name['logo_url']._serialized_options = b'\222A\212\0012_HTTPS URL of the organization\'s logo image. Maximum 2048 characters. Must use the https scheme.J\'\"https://cdn.example.com/acme-logo.png\"\340A\001' _globals['_UPDATEORGANIZATIONREQUEST'].fields_by_name['id']._loaded_options = None _globals['_UPDATEORGANIZATIONREQUEST'].fields_by_name['id']._serialized_options = b'\222AL23Unique identifier of the organization to be updatedJ\025\"org_121312434123312\"\272H\006r\004\020\001\030 ' _globals['_UPDATEORGANIZATIONREQUEST'].fields_by_name['external_id']._loaded_options = None @@ -90,6 +94,8 @@ _globals['_UPDATEORGANIZATION'].fields_by_name['metadata']._serialized_options = b'\222A\256\0012\217\001Custom 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\032{\"industry\": \"technology\"}\272H\026\232\001\023\020\n\"\006r\004\020\003\030\031*\007r\005\020\001\030\200\002' _globals['_UPDATEORGANIZATION'].fields_by_name['slug']._loaded_options = None _globals['_UPDATEORGANIZATION'].fields_by_name['slug']._serialized_options = b'\222A\322\0012\240\001DNS-safe slug for dynamic redirect URI resolution. Lowercase alphanumeric and hyphens, 1-63 chars, must start and end with alphanumeric, unique per environment.J\006\"acme\"x?\200\001\001\212\001\037^[a-z0-9]([a-z0-9]|-[a-z0-9])*$\272H\'r%\020\001\030?2\037^[a-z0-9]([a-z0-9]|-[a-z0-9])*$' + _globals['_UPDATEORGANIZATION'].fields_by_name['logo_url']._loaded_options = None + _globals['_UPDATEORGANIZATION'].fields_by_name['logo_url']._serialized_options = b'\222A\212\0012_HTTPS URL of the organization\'s logo image. Maximum 2048 characters. Must use the https scheme.J\'\"https://cdn.example.com/acme-logo.png\"\340A\001' _globals['_UPDATEORGANIZATIONRESPONSE'].fields_by_name['organization']._loaded_options = None _globals['_UPDATEORGANIZATIONRESPONSE'].fields_by_name['organization']._serialized_options = b'\222A\0362\034Updated organization details' _globals['_GETORGANIZATIONREQUEST'].fields_by_name['id']._loaded_options = None @@ -191,17 +197,13 @@ _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['absolute_session_timeout']._serialized_options = b'\222A+2$Absolute session timeout in minutes.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['idle_session_timeout']._serialized_options = b'\222AJ2DIdle session timeout in minutes. 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 @@ -270,92 +272,92 @@ _globals['_ORGANIZATIONSERVICE'].methods_by_name['GetOrganizationUserManagementSetting']._serialized_options = b'\222A\203\002\n\rOrganizations\022(Get organization user management setting\032CRetrieves the user management settings for a specific organization.J\202\001\n\003200\022{\n+Returns the requested organization setting.\022L\nJ\032H.scalekit.v1.organizations.GetOrganizationUserManagementSettingsResponse\202\265\030\002\030d\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\002A\022?/api/v1/organizations/{organization_id}/settings/usermanagement' _globals['_ORGANIZATIONSERVICE'].methods_by_name['GetApplicationSessionPolicy']._loaded_options = None _globals['_ORGANIZATIONSERVICE'].methods_by_name['GetApplicationSessionPolicy']._serialized_options = b'\222A\317\003\n\rOrganizations\022/Get application session policy for organization\032\246\001Returns the application-level session settings for display in hosted pages. Includes absolute timeout, idle timeout configuration, and access token expiry in minutes.J\177\n\003200\022x\n2Application session policy retrieved successfully.\022B\n@\032>.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['_FEATURE']._serialized_start=18818 + _globals['_FEATURE']._serialized_end=18900 + _globals['_SESSIONPOLICYTYPE']._serialized_start=18902 + _globals['_SESSIONPOLICYTYPE']._serialized_end=18987 _globals['_CREATEORGANIZATIONREQUEST']._serialized_start=533 _globals['_CREATEORGANIZATIONREQUEST']._serialized_end=708 _globals['_CREATEORGANIZATIONRESPONSE']._serialized_start=711 _globals['_CREATEORGANIZATIONRESPONSE']._serialized_end=896 _globals['_CREATEORGANIZATION']._serialized_start=899 - _globals['_CREATEORGANIZATION']._serialized_end=1915 - _globals['_CREATEORGANIZATION_METADATAENTRY']._serialized_start=1831 - _globals['_CREATEORGANIZATION_METADATAENTRY']._serialized_end=1890 - _globals['_ORGANIZATION']._serialized_start=1918 - _globals['_ORGANIZATION']._serialized_end=3318 - _globals['_ORGANIZATION_METADATAENTRY']._serialized_start=1831 - _globals['_ORGANIZATION_METADATAENTRY']._serialized_end=1890 - _globals['_UPDATEORGANIZATIONREQUEST']._serialized_start=3321 - _globals['_UPDATEORGANIZATIONREQUEST']._serialized_end=3801 - _globals['_UPDATEORGANIZATION']._serialized_start=3804 - _globals['_UPDATEORGANIZATION']._serialized_end=4835 - _globals['_UPDATEORGANIZATION_METADATAENTRY']._serialized_start=1831 - _globals['_UPDATEORGANIZATION_METADATAENTRY']._serialized_end=1890 - _globals['_UPDATEORGANIZATIONRESPONSE']._serialized_start=4838 - _globals['_UPDATEORGANIZATIONRESPONSE']._serialized_end=4978 - _globals['_GETORGANIZATIONREQUEST']._serialized_start=4981 - _globals['_GETORGANIZATIONREQUEST']._serialized_end=5344 - _globals['_GETORGANIZATIONRESPONSE']._serialized_start=5347 - _globals['_GETORGANIZATIONRESPONSE']._serialized_end=5486 - _globals['_LISTORGANIZATIONSREQUEST']._serialized_start=5489 - _globals['_LISTORGANIZATIONSREQUEST']._serialized_end=6225 - _globals['_LISTORGANIZATIONSRESPONSE']._serialized_start=6228 - _globals['_LISTORGANIZATIONSRESPONSE']._serialized_end=6776 - _globals['_SEARCHORGANIZATIONSREQUEST']._serialized_start=6779 - _globals['_SEARCHORGANIZATIONSREQUEST']._serialized_end=7458 - _globals['_SEARCHORGANIZATIONSRESPONSE']._serialized_start=7461 - _globals['_SEARCHORGANIZATIONSRESPONSE']._serialized_end=7680 - _globals['_DELETEORGANIZATIONREQUEST']._serialized_start=7683 - _globals['_DELETEORGANIZATIONREQUEST']._serialized_end=7984 - _globals['_GENERATEPORTALLINKREQUEST']._serialized_start=7987 - _globals['_GENERATEPORTALLINKREQUEST']._serialized_end=8578 - _globals['_GETPORTALLINKREQUEST']._serialized_start=8580 - _globals['_GETPORTALLINKREQUEST']._serialized_end=8682 - _globals['_DELETEPORTALLINKREQUEST']._serialized_start=8684 - _globals['_DELETEPORTALLINKREQUEST']._serialized_end=8789 - _globals['_DELETEPORTALLINKBYIDREQUEST']._serialized_start=8792 - _globals['_DELETEPORTALLINKBYIDREQUEST']._serialized_end=8982 - _globals['_LINK']._serialized_start=8985 - _globals['_LINK']._serialized_end=9422 - _globals['_GENERATEPORTALLINKRESPONSE']._serialized_start=9425 - _globals['_GENERATEPORTALLINKRESPONSE']._serialized_end=9703 - _globals['_GETPORTALLINKSRESPONSE']._serialized_start=9705 - _globals['_GETPORTALLINKSRESPONSE']._serialized_end=9809 - _globals['_UPDATEORGANIZATIONSETTINGSREQUEST']._serialized_start=9812 - _globals['_UPDATEORGANIZATIONSETTINGSREQUEST']._serialized_end=10340 - _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 + _globals['_CREATEORGANIZATION']._serialized_end=2109 + _globals['_CREATEORGANIZATION_METADATAENTRY']._serialized_start=2012 + _globals['_CREATEORGANIZATION_METADATAENTRY']._serialized_end=2071 + _globals['_ORGANIZATION']._serialized_start=2112 + _globals['_ORGANIZATION']._serialized_end=3706 + _globals['_ORGANIZATION_METADATAENTRY']._serialized_start=2012 + _globals['_ORGANIZATION_METADATAENTRY']._serialized_end=2071 + _globals['_UPDATEORGANIZATIONREQUEST']._serialized_start=3709 + _globals['_UPDATEORGANIZATIONREQUEST']._serialized_end=4189 + _globals['_UPDATEORGANIZATION']._serialized_start=4192 + _globals['_UPDATEORGANIZATION']._serialized_end=5417 + _globals['_UPDATEORGANIZATION_METADATAENTRY']._serialized_start=2012 + _globals['_UPDATEORGANIZATION_METADATAENTRY']._serialized_end=2071 + _globals['_UPDATEORGANIZATIONRESPONSE']._serialized_start=5420 + _globals['_UPDATEORGANIZATIONRESPONSE']._serialized_end=5560 + _globals['_GETORGANIZATIONREQUEST']._serialized_start=5563 + _globals['_GETORGANIZATIONREQUEST']._serialized_end=5926 + _globals['_GETORGANIZATIONRESPONSE']._serialized_start=5929 + _globals['_GETORGANIZATIONRESPONSE']._serialized_end=6068 + _globals['_LISTORGANIZATIONSREQUEST']._serialized_start=6071 + _globals['_LISTORGANIZATIONSREQUEST']._serialized_end=6807 + _globals['_LISTORGANIZATIONSRESPONSE']._serialized_start=6810 + _globals['_LISTORGANIZATIONSRESPONSE']._serialized_end=7358 + _globals['_SEARCHORGANIZATIONSREQUEST']._serialized_start=7361 + _globals['_SEARCHORGANIZATIONSREQUEST']._serialized_end=8040 + _globals['_SEARCHORGANIZATIONSRESPONSE']._serialized_start=8043 + _globals['_SEARCHORGANIZATIONSRESPONSE']._serialized_end=8262 + _globals['_DELETEORGANIZATIONREQUEST']._serialized_start=8265 + _globals['_DELETEORGANIZATIONREQUEST']._serialized_end=8566 + _globals['_GENERATEPORTALLINKREQUEST']._serialized_start=8569 + _globals['_GENERATEPORTALLINKREQUEST']._serialized_end=9160 + _globals['_GETPORTALLINKREQUEST']._serialized_start=9162 + _globals['_GETPORTALLINKREQUEST']._serialized_end=9264 + _globals['_DELETEPORTALLINKREQUEST']._serialized_start=9266 + _globals['_DELETEPORTALLINKREQUEST']._serialized_end=9371 + _globals['_DELETEPORTALLINKBYIDREQUEST']._serialized_start=9374 + _globals['_DELETEPORTALLINKBYIDREQUEST']._serialized_end=9564 + _globals['_LINK']._serialized_start=9567 + _globals['_LINK']._serialized_end=10004 + _globals['_GENERATEPORTALLINKRESPONSE']._serialized_start=10007 + _globals['_GENERATEPORTALLINKRESPONSE']._serialized_end=10285 + _globals['_GETPORTALLINKSRESPONSE']._serialized_start=10287 + _globals['_GETPORTALLINKSRESPONSE']._serialized_end=10391 + _globals['_UPDATEORGANIZATIONSETTINGSREQUEST']._serialized_start=10394 + _globals['_UPDATEORGANIZATIONSETTINGSREQUEST']._serialized_end=10922 + _globals['_ORGANIZATIONSESSIONPOLICYSETTINGS']._serialized_start=10925 + _globals['_ORGANIZATIONSESSIONPOLICYSETTINGS']._serialized_end=12478 + _globals['_GETORGANIZATIONSESSIONPOLICYREQUEST']._serialized_start=12481 + _globals['_GETORGANIZATIONSESSIONPOLICYREQUEST']._serialized_end=12693 + _globals['_GETORGANIZATIONSESSIONPOLICYRESPONSE']._serialized_start=12696 + _globals['_GETORGANIZATIONSESSIONPOLICYRESPONSE']._serialized_end=12868 + _globals['_UPDATEORGANIZATIONSESSIONPOLICYREQUEST']._serialized_start=12871 + _globals['_UPDATEORGANIZATIONSESSIONPOLICYREQUEST']._serialized_end=14462 + _globals['_UPDATEORGANIZATIONSESSIONPOLICYRESPONSE']._serialized_start=14465 + _globals['_UPDATEORGANIZATIONSESSIONPOLICYRESPONSE']._serialized_end=14648 + _globals['_GETAPPLICATIONSESSIONPOLICYREQUEST']._serialized_start=14651 + _globals['_GETAPPLICATIONSESSIONPOLICYREQUEST']._serialized_end=14821 + _globals['_APPLICATIONSESSIONPOLICYSETTINGS']._serialized_start=14824 + _globals['_APPLICATIONSESSIONPOLICYSETTINGS']._serialized_end=15366 + _globals['_GETAPPLICATIONSESSIONPOLICYRESPONSE']._serialized_start=15369 + _globals['_GETAPPLICATIONSESSIONPOLICYRESPONSE']._serialized_end=15578 + _globals['_ORGANIZATIONUSERMANAGEMENTSETTINGS']._serialized_start=15581 + _globals['_ORGANIZATIONUSERMANAGEMENTSETTINGS']._serialized_end=15929 + _globals['_ORGANIZATIONSESSIONSETTINGS']._serialized_start=15932 + _globals['_ORGANIZATIONSESSIONSETTINGS']._serialized_end=17002 + _globals['_ORGANIZATIONSETTINGS']._serialized_start=17005 + _globals['_ORGANIZATIONSETTINGS']._serialized_end=17531 + _globals['_ORGANIZATIONSETTINGSFEATURE']._serialized_start=17534 + _globals['_ORGANIZATIONSETTINGSFEATURE']._serialized_end=18060 + _globals['_UPSERTUSERMANAGEMENTSETTINGSREQUEST']._serialized_start=18063 + _globals['_UPSERTUSERMANAGEMENTSETTINGSREQUEST']._serialized_end=18341 + _globals['_UPSERTUSERMANAGEMENTSETTINGSRESPONSE']._serialized_start=18344 + _globals['_UPSERTUSERMANAGEMENTSETTINGSRESPONSE']._serialized_end=18500 + _globals['_GETORGANIZATIONUSERMANAGEMENTSETTINGSREQUEST']._serialized_start=18503 + _globals['_GETORGANIZATIONUSERMANAGEMENTSETTINGSREQUEST']._serialized_end=18638 + _globals['_GETORGANIZATIONUSERMANAGEMENTSETTINGSRESPONSE']._serialized_start=18641 + _globals['_GETORGANIZATIONUSERMANAGEMENTSETTINGSRESPONSE']._serialized_end=18816 + _globals['_ORGANIZATIONSERVICE']._serialized_start=18990 + _globals['_ORGANIZATIONSERVICE']._serialized_end=29272 # @@protoc_insertion_point(module_scope) diff --git a/scalekit/v1/organizations/organizations_pb2.pyi b/scalekit/v1/organizations/organizations_pb2.pyi index 261c537..3fd1eb3 100644 --- a/scalekit/v1/organizations/organizations_pb2.pyi +++ b/scalekit/v1/organizations/organizations_pb2.pyi @@ -53,7 +53,7 @@ class CreateOrganizationResponse(_message.Message): def __init__(self, organization: _Optional[_Union[Organization, _Mapping]] = ...) -> None: ... class CreateOrganization(_message.Message): - __slots__ = ("display_name", "region_code", "external_id", "metadata", "slug") + __slots__ = ("display_name", "region_code", "external_id", "metadata", "slug", "logo_url") class MetadataEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -66,15 +66,17 @@ class CreateOrganization(_message.Message): EXTERNAL_ID_FIELD_NUMBER: _ClassVar[int] METADATA_FIELD_NUMBER: _ClassVar[int] SLUG_FIELD_NUMBER: _ClassVar[int] + LOGO_URL_FIELD_NUMBER: _ClassVar[int] display_name: str region_code: _commons_pb2.RegionCode external_id: str metadata: _containers.ScalarMap[str, str] slug: str - def __init__(self, display_name: _Optional[str] = ..., region_code: _Optional[_Union[_commons_pb2.RegionCode, str]] = ..., external_id: _Optional[str] = ..., metadata: _Optional[_Mapping[str, str]] = ..., slug: _Optional[str] = ...) -> None: ... + logo_url: str + def __init__(self, display_name: _Optional[str] = ..., region_code: _Optional[_Union[_commons_pb2.RegionCode, str]] = ..., external_id: _Optional[str] = ..., metadata: _Optional[_Mapping[str, str]] = ..., slug: _Optional[str] = ..., logo_url: _Optional[str] = ...) -> None: ... class Organization(_message.Message): - __slots__ = ("id", "create_time", "update_time", "display_name", "region_code", "external_id", "metadata", "settings", "slug") + __slots__ = ("id", "create_time", "update_time", "display_name", "region_code", "external_id", "metadata", "settings", "slug", "logo_url") class MetadataEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -91,6 +93,7 @@ class Organization(_message.Message): METADATA_FIELD_NUMBER: _ClassVar[int] SETTINGS_FIELD_NUMBER: _ClassVar[int] SLUG_FIELD_NUMBER: _ClassVar[int] + LOGO_URL_FIELD_NUMBER: _ClassVar[int] id: str create_time: _timestamp_pb2.Timestamp update_time: _timestamp_pb2.Timestamp @@ -100,7 +103,8 @@ class Organization(_message.Message): metadata: _containers.ScalarMap[str, str] settings: OrganizationSettings slug: str - def __init__(self, id: _Optional[str] = ..., create_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., update_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., display_name: _Optional[str] = ..., region_code: _Optional[_Union[_commons_pb2.RegionCode, str]] = ..., external_id: _Optional[str] = ..., metadata: _Optional[_Mapping[str, str]] = ..., settings: _Optional[_Union[OrganizationSettings, _Mapping]] = ..., slug: _Optional[str] = ...) -> None: ... + logo_url: str + def __init__(self, id: _Optional[str] = ..., create_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., update_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., display_name: _Optional[str] = ..., region_code: _Optional[_Union[_commons_pb2.RegionCode, str]] = ..., external_id: _Optional[str] = ..., metadata: _Optional[_Mapping[str, str]] = ..., settings: _Optional[_Union[OrganizationSettings, _Mapping]] = ..., slug: _Optional[str] = ..., logo_url: _Optional[str] = ...) -> None: ... class UpdateOrganizationRequest(_message.Message): __slots__ = ("id", "external_id", "organization", "update_mask") @@ -115,7 +119,7 @@ class UpdateOrganizationRequest(_message.Message): def __init__(self, id: _Optional[str] = ..., external_id: _Optional[str] = ..., organization: _Optional[_Union[UpdateOrganization, _Mapping]] = ..., update_mask: _Optional[_Union[_field_mask_pb2.FieldMask, _Mapping]] = ...) -> None: ... class UpdateOrganization(_message.Message): - __slots__ = ("display_name", "external_id", "metadata", "slug") + __slots__ = ("display_name", "external_id", "metadata", "slug", "logo_url") class MetadataEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -127,11 +131,13 @@ class UpdateOrganization(_message.Message): EXTERNAL_ID_FIELD_NUMBER: _ClassVar[int] METADATA_FIELD_NUMBER: _ClassVar[int] SLUG_FIELD_NUMBER: _ClassVar[int] + LOGO_URL_FIELD_NUMBER: _ClassVar[int] display_name: str external_id: str metadata: _containers.ScalarMap[str, str] slug: str - def __init__(self, display_name: _Optional[str] = ..., external_id: _Optional[str] = ..., metadata: _Optional[_Mapping[str, str]] = ..., slug: _Optional[str] = ...) -> None: ... + logo_url: str + def __init__(self, display_name: _Optional[str] = ..., external_id: _Optional[str] = ..., metadata: _Optional[_Mapping[str, str]] = ..., slug: _Optional[str] = ..., logo_url: _Optional[str] = ...) -> None: ... class UpdateOrganizationResponse(_message.Message): __slots__ = ("organization",) @@ -326,20 +332,16 @@ class GetApplicationSessionPolicyRequest(_message.Message): def __init__(self, organization_id: _Optional[str] = ...) -> 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") + __slots__ = ("absolute_session_timeout", "idle_session_timeout_enabled", "idle_session_timeout", "access_token_expiry") 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: ... + def __init__(self, absolute_session_timeout: _Optional[int] = ..., idle_session_timeout_enabled: bool = ..., idle_session_timeout: _Optional[int] = ..., access_token_expiry: _Optional[int] = ...) -> None: ... class GetApplicationSessionPolicyResponse(_message.Message): __slots__ = ("application_policy",) diff --git a/scalekit/v1/providers/providers_pb2.py b/scalekit/v1/providers/providers_pb2.py index c78bed0..ecde0df 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\"\xb2\x07\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\x12\xfd\x01\n\x08metadata\x18\x0e \x03(\x0b\x32-.scalekit.v1.providers.Provider.MetadataEntryB\xb1\x01\x92\x41\xad\x01\x32}Custom key-value metadata stored for this provider. Returned for all providers; defaults to {} when no metadata has been set.J,{\"api_version\": \"v2\", \"region\": \"us-east-1\"}R\x08metadata\x1a;\n\rMetadataEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\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\"\xaa\x0b\n\x14\x43reateCustomProvider\x12\x9d\x01\n\x0c\x64isplay_name\x18\x01 \x01(\tBz\x92\x41\x41\x32+Display name for the connected app providerJ\x12\"Google Workspace\"\xbaH3r.\x10\x01\x18\xc8\x01\x32\'^[a-zA-Z0-9 ]*[a-zA-Z0-9][a-zA-Z0-9 ]*$\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\x12\x98\x01\n\tproxy_url\x18\x07 \x01(\tB{\x92\x41\x63\x32\x42Proxy URL for the connected app provider. Must start with https://J\x1d\"https://mcp.example.com/mcp\"\xbaH\x12r\x10\x10\x01\x18\x80\x10\x32\t^https://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\x0cproxyEnabled\x12\xcf\x01\n\x08icon_src\x18\t \x01(\tB\xb3\x01\x92\x41\x96\x01\x32\x65URL for the provider icon. Should be an SVG image sized 800x800 pixels for best rendering experience.J-\"https://example.com/images/my-connector.svg\"\xbaH\x16r\x14\x18\x80\x10\x32\x0f^(https://.*)?$R\x07iconSrc\x12\xb7\x02\n\x08metadata\x18\n \x03(\x0b\x32\x39.scalekit.v1.providers.CreateCustomProvider.MetadataEntryB\xdf\x01\x92\x41\xc2\x01\x32\x91\x01\x43ustom key-value metadata for this provider. Keys must be 3-25 characters, values must be 1-256 characters, with a maximum of 20 key-value pairs.J,{\"api_version\": \"v2\", \"region\": \"us-east-1\"}\xbaH\x16\x9a\x01\x13\x10\x14\"\x06r\x04\x10\x03\x18\x19*\x07r\x05\x10\x01\x18\x80\x02R\x08metadata\x1a;\n\rMetadataEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01J\x04\x08\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: ... + __slots__ = ("id", "identifier", "display_name", "description", "categories", "auth_patterns", "icon_src", "display_priority", "coming_soon", "proxy_url", "proxy_enabled", "is_custom", "is_custom_mcp") ID_FIELD_NUMBER: _ClassVar[int] IDENTIFIER_FIELD_NUMBER: _ClassVar[int] DISPLAY_NAME_FIELD_NUMBER: _ClassVar[int] @@ -46,7 +39,6 @@ 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 @@ -60,8 +52,7 @@ class Provider(_message.Message): proxy_enabled: bool is_custom: bool is_custom_mcp: bool - 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: ... + 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: ... class CreateProvider(_message.Message): __slots__ = ("identifier", "display_name", "description", "categories", "auth_patterns", "icon_src", "display_priority", "coming_soon", "proxy_url", "proxy_enabled") @@ -94,29 +85,20 @@ 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", "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: ... + __slots__ = ("display_name", "description", "auth_patterns", "proxy_url", "proxy_enabled", "icon_src") 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 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: ... + 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] = ...) -> None: ... class CreateCustomProviderRequest(_message.Message): __slots__ = ("provider",) @@ -161,29 +143,20 @@ 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", "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: ... + __slots__ = ("display_name", "description", "auth_patterns", "proxy_url", "proxy_enabled", "icon_src") 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 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: ... + 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] = ...) -> None: ... class UpdateCustomProviderRequest(_message.Message): __slots__ = ("identifier", "provider") From 842c7eee1a793b6e8bbae980856777b49dd6b5b5 Mon Sep 17 00:00:00 2001 From: Srinivas Karre Date: Sun, 17 May 2026 13:04:40 +0530 Subject: [PATCH 2/2] test(org): add logo_url test coverage Tests for create with logo_url, update to set/clear, and verification that logo_url is preserved after update_organization_settings. --- tests/test_organization.py | 58 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/tests/test_organization.py b/tests/test_organization.py index ea8711d..3e9007c 100644 --- a/tests/test_organization.py +++ b/tests/test_organization.py @@ -114,6 +114,64 @@ def test_update_organization_by_external_id(self): self.assertEqual(response[0].organization.metadata, metadata) self.assertEqual(response[0].organization.external_id, external_id) + def test_create_organization_with_logo_url(self): + """ Method to test create organization with logo_url """ + logo_url = 'https://cdn.example.com/acme-logo.png' + organization = CreateOrganization( + display_name=Faker().company(), + external_id=Faker().uuid4(), + logo_url=logo_url, + ) + response = self.scalekit_client.organization.create_organization(organization=organization) + self.assertEqual(response[1].code().name, "OK") + self.assertEqual(response[0].organization.logo_url, logo_url) + self.org_id = response[0].organization.id + + def test_update_organization_logo_url(self): + """ Method to test setting and clearing logo_url via update """ + logo_url = 'https://cdn.example.com/acme-logo.png' + org = CreateOrganization(display_name=Faker().company(), external_id=Faker().uuid4()) + org_response = self.scalekit_client.organization.create_organization(organization=org) + self.org_id = org_response[0].organization.id + + # set logo_url + response = self.scalekit_client.organization.update_organization( + organization_id=self.org_id, + organization=UpdateOrganization(logo_url=logo_url), + ) + self.assertEqual(response[1].code().name, "OK") + self.assertEqual(response[0].organization.logo_url, logo_url) + + # clear logo_url + response = self.scalekit_client.organization.update_organization( + organization_id=self.org_id, + organization=UpdateOrganization(logo_url=''), + ) + self.assertEqual(response[1].code().name, "OK") + self.assertEqual(response[0].organization.logo_url, '') + + def test_logo_url_preserved_after_settings_update(self): + """ Method to verify logo_url is not wiped by update_organization_settings """ + logo_url = 'https://cdn.example.com/acme-logo.png' + org = CreateOrganization(display_name=Faker().company(), external_id=Faker().uuid4()) + org_response = self.scalekit_client.organization.create_organization(organization=org) + self.org_id = org_response[0].organization.id + + # stamp logo_url + self.scalekit_client.organization.update_organization( + organization_id=self.org_id, + organization=UpdateOrganization(logo_url=logo_url), + ) + + # update features — must not wipe logo_url + self.scalekit_client.organization.update_organization_settings( + organization_id=self.org_id, + settings=[{"name": "sso", "enabled": True}], + ) + + response = self.scalekit_client.organization.get_organization(organization_id=self.org_id) + self.assertEqual(response[0].organization.logo_url, logo_url) + def test_delete_organization(self): """ Method to test delete organization """ organization = CreateOrganization(display_name=Faker().company(), external_id=Faker().uuid4())