scalekit-sdk-python 2.11.0__tar.gz → 2.13.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/PKG-INFO +13 -13
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/_version.py +1 -1
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/actions/actions.py +18 -3
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/actions/models/custom_provider.py +5 -5
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/actions/models/requests/create_connected_account_request.py +15 -2
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/actions/models/requests/update_connected_account_request.py +14 -1
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/actions/models/responses/get_connected_account_auth_response.py +9 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/common/exceptions.py +79 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/core.py +11 -1
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/connected_accounts/connected_accounts_pb2.py +38 -26
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/connected_accounts/connected_accounts_pb2.pyi +20 -2
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/connections/connections_pb2.py +8 -8
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/connections/connections_pb2.pyi +2 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/roles/roles_pb2.py +47 -47
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit_sdk_python.egg-info/PKG-INFO +13 -13
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit_sdk_python.egg-info/SOURCES.txt +1 -0
- scalekit_sdk_python-2.13.0/scalekit_sdk_python.egg-info/requires.txt +16 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/setup.py +12 -12
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/tests/test_actions.py +1 -1
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/tests/test_permissions.py +2 -2
- scalekit_sdk_python-2.13.0/tests/test_sk819_retry_behavior.py +442 -0
- scalekit_sdk_python-2.11.0/scalekit_sdk_python.egg-info/requires.txt +0 -16
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/LICENSE +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/README.md +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/buf/__init__.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/buf/validate/__init__.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/buf/validate/expression_pb2.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/buf/validate/expression_pb2.pyi +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/buf/validate/expression_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/buf/validate/priv/__init__.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/buf/validate/priv/private_pb2.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/buf/validate/priv/private_pb2.pyi +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/buf/validate/priv/private_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/buf/validate/validate_pb2.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/buf/validate/validate_pb2.pyi +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/buf/validate/validate_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/pyproject.toml +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/__init__.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/actions/__init__.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/actions/frameworks/__init__.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/actions/frameworks/google_adk.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/actions/frameworks/langchain.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/actions/frameworks/types/__init__.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/actions/frameworks/types/google_adk_tool.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/actions/frameworks/util.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/actions/models/__init__.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/actions/models/mcp_config.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/actions/models/mcp_connection_auth_state.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/actions/models/mcp_instance.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/actions/models/requests/__init__.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/actions/models/requests/create_custom_provider_request.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/actions/models/requests/delete_custom_provider_request.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/actions/models/requests/list_providers_request.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/actions/models/requests/mcp_request.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/actions/models/requests/tool_request.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/actions/models/requests/update_custom_provider_request.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/actions/models/responses/__init__.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/actions/models/responses/create_connected_account_response.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/actions/models/responses/create_custom_provider_response.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/actions/models/responses/create_mcp_config_response.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/actions/models/responses/create_mcp_response.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/actions/models/responses/create_mcp_session_token_response.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/actions/models/responses/delete_connected_account_response.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/actions/models/responses/delete_custom_provider_response.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/actions/models/responses/delete_mcp_config_response.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/actions/models/responses/delete_mcp_instance_response.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/actions/models/responses/ensure_mcp_instance_response.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/actions/models/responses/execute_tool_response.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/actions/models/responses/get_mcp_instance_auth_state_response.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/actions/models/responses/get_mcp_instance_response.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/actions/models/responses/get_mcp_response.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/actions/models/responses/list_connected_accounts_response.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/actions/models/responses/list_mcp_configs_response.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/actions/models/responses/list_mcp_connected_accounts_response.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/actions/models/responses/list_mcp_instances_response.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/actions/models/responses/list_providers_response.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/actions/models/responses/magic_link_response.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/actions/models/responses/update_connected_account_response.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/actions/models/responses/update_custom_provider_response.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/actions/models/responses/update_mcp_config_response.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/actions/models/responses/update_mcp_instance_response.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/actions/models/responses/verify_connected_account_user_response.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/actions/models/tool_input_output.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/actions/models/tool_mapping.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/actions/modifier.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/actions/types.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/auth.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/client.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/common/__init__.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/common/scalekit.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/common/user.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/connected_accounts.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/connection.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/constants/__init__.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/constants/user.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/directory.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/domain.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/m2m_client.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/mcp.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/organization.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/passwordless.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/permissions.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/providers.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/role.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/sessions.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/token.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/tools.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/users.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/utils/__init__.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/utils/directory.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/__init__.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/agentkit_logs/__init__.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/agentkit_logs/agentkit_analytics_pb2.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/agentkit_logs/agentkit_analytics_pb2.pyi +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/agentkit_logs/agentkit_analytics_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/agentkit_logs/agentkit_logs_pb2.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/agentkit_logs/agentkit_logs_pb2.pyi +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/agentkit_logs/agentkit_logs_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/auditlogs/__init__.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/auditlogs/auditlogs_pb2.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/auditlogs/auditlogs_pb2.pyi +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/auditlogs/auditlogs_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/auth/__init__.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/auth/auth_pb2.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/auth/auth_pb2.pyi +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/auth/auth_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/auth/passwordless_pb2.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/auth/passwordless_pb2.pyi +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/auth/passwordless_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/auth/totp_pb2.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/auth/totp_pb2.pyi +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/auth/totp_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/auth/webauthn_pb2.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/auth/webauthn_pb2.pyi +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/auth/webauthn_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/clients/__init__.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/clients/clients_pb2.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/clients/clients_pb2.pyi +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/clients/clients_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/commons/__init__.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/commons/commons_pb2.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/commons/commons_pb2.pyi +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/commons/commons_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/connected_accounts/__init__.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/connected_accounts/connected_accounts_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/connections/__init__.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/connections/connections_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/directories/__init__.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/directories/directories_pb2.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/directories/directories_pb2.pyi +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/directories/directories_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/domains/__init__.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/domains/domains_pb2.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/domains/domains_pb2.pyi +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/domains/domains_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/emails/__init__.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/emails/emails_pb2.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/emails/emails_pb2.pyi +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/emails/emails_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/environments/__init__.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/environments/environments_pb2.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/environments/environments_pb2.pyi +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/environments/environments_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/errdetails/__init__.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/errdetails/errdetails_pb2.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/errdetails/errdetails_pb2.pyi +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/errdetails/errdetails_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/events/__init__.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/events/events_pb2.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/events/events_pb2.pyi +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/events/events_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/interceptors/__init__.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/interceptors/interceptors_pb2.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/interceptors/interceptors_pb2.pyi +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/interceptors/interceptors_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/keys/__init__.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/keys/keys_pb2.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/keys/keys_pb2.pyi +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/keys/keys_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/mcp/__init__.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/mcp/mcp_pb2.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/mcp/mcp_pb2.pyi +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/mcp/mcp_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/members/__init__.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/members/members_pb2.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/members/members_pb2.pyi +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/members/members_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/migrations/__init__.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/migrations/migrations_pb2.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/migrations/migrations_pb2.pyi +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/migrations/migrations_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/options/__init__.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/options/options_pb2.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/options/options_pb2.pyi +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/options/options_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/organizations/__init__.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/organizations/organizations_pb2.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/organizations/organizations_pb2.pyi +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/organizations/organizations_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/providers/__init__.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/providers/providers_pb2.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/providers/providers_pb2.pyi +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/providers/providers_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/roles/__init__.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/roles/roles_pb2.pyi +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/roles/roles_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/secrets/__init__.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/secrets/secrets_pb2.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/secrets/secrets_pb2.pyi +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/secrets/secrets_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/sessions/__init__.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/sessions/sessions_pb2.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/sessions/sessions_pb2.pyi +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/sessions/sessions_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/tokens/__init__.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/tokens/tokens_pb2.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/tokens/tokens_pb2.pyi +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/tokens/tokens_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/tools/__init__.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/tools/tools_pb2.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/tools/tools_pb2.pyi +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/tools/tools_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/user_attributes/__init__.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/user_attributes/user_attributes_pb2.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/user_attributes/user_attributes_pb2.pyi +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/user_attributes/user_attributes_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/users/__init__.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/users/users_pb2.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/users/users_pb2.pyi +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/users/users_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/webhooks/__init__.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/webhooks/webhooks_pb2.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/webhooks/webhooks_pb2.pyi +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/webhooks/webhooks_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/workspaces/__init__.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/workspaces/workspaces_pb2.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/workspaces/workspaces_pb2.pyi +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/v1/workspaces/workspaces_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/webauthn.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit_sdk_python.egg-info/dependency_links.txt +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit_sdk_python.egg-info/top_level.txt +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/setup.cfg +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/tests/test_connected_accounts.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/tests/test_connection.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/tests/test_directory.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/tests/test_domain.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/tests/test_m2m_client.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/tests/test_mcp.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/tests/test_org_roles.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/tests/test_organization.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/tests/test_organization_session_policy.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/tests/test_organization_slug_logo.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/tests/test_passwordless.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/tests/test_providers.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/tests/test_role_defaults_dependent.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/tests/test_roles.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/tests/test_sessions.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/tests/test_tokens.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/tests/test_tools.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/tests/test_user_roles_permissions.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/tests/test_users.py +0 -0
- {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/tests/test_webauthn_credentials.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: scalekit-sdk-python
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.13.0
|
|
4
4
|
Summary: Scalekit official Python SDK
|
|
5
5
|
Home-page: https://github.com/scalekit-inc/scalekit-sdk-python
|
|
6
6
|
Author: Team Scalekit
|
|
@@ -11,22 +11,22 @@ Classifier: License :: OSI Approved :: MIT License
|
|
|
11
11
|
Classifier: Operating System :: OS Independent
|
|
12
12
|
Description-Content-Type: text/markdown
|
|
13
13
|
License-File: LICENSE
|
|
14
|
-
Requires-Dist: grpcio
|
|
15
|
-
Requires-Dist: protobuf<
|
|
14
|
+
Requires-Dist: grpcio<2.0,>=1.81.0
|
|
15
|
+
Requires-Dist: protobuf<8.0.0,>=5.29.5
|
|
16
16
|
Requires-Dist: google>=3.0
|
|
17
|
-
Requires-Dist: requests>=2.
|
|
18
|
-
Requires-Dist: PyJWT>=2.
|
|
17
|
+
Requires-Dist: requests>=2.34.0
|
|
18
|
+
Requires-Dist: PyJWT>=2.13.0
|
|
19
19
|
Requires-Dist: cffi>=1.15.1
|
|
20
|
-
Requires-Dist: cryptography<
|
|
21
|
-
Requires-Dist: setuptools<
|
|
22
|
-
Requires-Dist: grpcio-status<
|
|
20
|
+
Requires-Dist: cryptography<49,>=46.0.6
|
|
21
|
+
Requires-Dist: setuptools<83.0,>=82.0.1
|
|
22
|
+
Requires-Dist: grpcio-status<2.0,>=1.81.0
|
|
23
23
|
Requires-Dist: protoc-gen-openapiv2>=0.0.1
|
|
24
|
-
Requires-Dist: googleapis-common-protos>=1.
|
|
24
|
+
Requires-Dist: googleapis-common-protos>=1.75.0
|
|
25
25
|
Requires-Dist: deprecation>=2.1.0
|
|
26
|
-
Requires-Dist: python-dotenv
|
|
27
|
-
Requires-Dist: Faker
|
|
28
|
-
Requires-Dist: pydantic>=2.
|
|
29
|
-
Requires-Dist: mcp>=1.
|
|
26
|
+
Requires-Dist: python-dotenv<2.0,>=1.2.2
|
|
27
|
+
Requires-Dist: Faker<41.0,>=33.0.0
|
|
28
|
+
Requires-Dist: pydantic>=2.13.4
|
|
29
|
+
Requires-Dist: mcp>=1.27.2
|
|
30
30
|
Dynamic: author
|
|
31
31
|
Dynamic: author-email
|
|
32
32
|
Dynamic: classifier
|
|
@@ -791,10 +791,22 @@ class ActionClient:
|
|
|
791
791
|
organization_id=organization_id,
|
|
792
792
|
user_id=user_id
|
|
793
793
|
)
|
|
794
|
-
|
|
795
|
-
#
|
|
794
|
+
|
|
795
|
+
# True upsert: if credentials were supplied, apply them regardless of
|
|
796
|
+
# the account's current status (PENDING_AUTH, ACTIVE, EXPIRED, DISCONNECTED).
|
|
797
|
+
if authorization_details:
|
|
798
|
+
update_response = self.update_connected_account(
|
|
799
|
+
connection_name=connection_name,
|
|
800
|
+
identifier=identifier,
|
|
801
|
+
authorization_details=authorization_details,
|
|
802
|
+
organization_id=organization_id,
|
|
803
|
+
user_id=user_id,
|
|
804
|
+
api_config=api_config
|
|
805
|
+
)
|
|
806
|
+
return CreateConnectedAccountResponse(connected_account=update_response.connected_account)
|
|
807
|
+
|
|
796
808
|
return CreateConnectedAccountResponse(connected_account=existing_response.connected_account)
|
|
797
|
-
|
|
809
|
+
|
|
798
810
|
except ScalekitNotFoundException:
|
|
799
811
|
# Connected account doesn't exist, create a new one
|
|
800
812
|
return self.create_connected_account(
|
|
@@ -806,6 +818,9 @@ class ActionClient:
|
|
|
806
818
|
api_config=api_config
|
|
807
819
|
)
|
|
808
820
|
|
|
821
|
+
#: Alias for :meth:`get_or_create_connected_account` — preferred name for upsert semantics.
|
|
822
|
+
upsert_connected_account = get_or_create_connected_account
|
|
823
|
+
|
|
809
824
|
def update_connected_account(
|
|
810
825
|
self,
|
|
811
826
|
connection_name: str,
|
{scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.13.0}/scalekit/actions/models/custom_provider.py
RENAMED
|
@@ -84,11 +84,11 @@ class AuthField(BaseModel):
|
|
|
84
84
|
:rtype: AuthField
|
|
85
85
|
"""
|
|
86
86
|
return cls(
|
|
87
|
-
field_name=d.get("field_name"
|
|
88
|
-
label=d.get("label"
|
|
89
|
-
input_type=d.get("input_type"
|
|
90
|
-
hint=d.get("hint"
|
|
91
|
-
required=d.get("required"
|
|
87
|
+
field_name=d.get("field_name") or "",
|
|
88
|
+
label=d.get("label") or "",
|
|
89
|
+
input_type=d.get("input_type") or "text",
|
|
90
|
+
hint=d.get("hint") or "",
|
|
91
|
+
required=d.get("required") or False,
|
|
92
92
|
)
|
|
93
93
|
|
|
94
94
|
|
|
@@ -5,7 +5,8 @@ from scalekit.v1.connected_accounts.connected_accounts_pb2 import (
|
|
|
5
5
|
AuthorizationDetails,
|
|
6
6
|
OauthToken,
|
|
7
7
|
StaticAuth,
|
|
8
|
-
GoogleDWDAuth
|
|
8
|
+
GoogleDWDAuth,
|
|
9
|
+
TrustedIDPAuth
|
|
9
10
|
)
|
|
10
11
|
from google.protobuf import struct_pb2
|
|
11
12
|
|
|
@@ -55,7 +56,19 @@ class CreateConnectedAccountRequest(BaseModel):
|
|
|
55
56
|
raise ValueError("authorization_details.google_dwd.subject is required")
|
|
56
57
|
google_dwd = GoogleDWDAuth(subject=subject)
|
|
57
58
|
auth_details = AuthorizationDetails(google_dwd=google_dwd)
|
|
58
|
-
|
|
59
|
+
|
|
60
|
+
elif self.authorization_details and "trusted_idp" in self.authorization_details:
|
|
61
|
+
idp_data = self.authorization_details["trusted_idp"]
|
|
62
|
+
if not isinstance(idp_data, dict):
|
|
63
|
+
raise ValueError("authorization_details.trusted_idp must be an object")
|
|
64
|
+
trusted_idp = TrustedIDPAuth(
|
|
65
|
+
db_user=idp_data.get("db_user", ""),
|
|
66
|
+
access_key_id=idp_data.get("access_key_id", ""),
|
|
67
|
+
secret_access_key=idp_data.get("secret_access_key", ""),
|
|
68
|
+
session_token=idp_data.get("session_token", ""),
|
|
69
|
+
)
|
|
70
|
+
auth_details = AuthorizationDetails(trusted_idp=trusted_idp)
|
|
71
|
+
|
|
59
72
|
# Handle api_config if provided
|
|
60
73
|
api_config_struct = None
|
|
61
74
|
if self.api_config:
|
|
@@ -5,7 +5,8 @@ from scalekit.v1.connected_accounts.connected_accounts_pb2 import (
|
|
|
5
5
|
AuthorizationDetails,
|
|
6
6
|
OauthToken,
|
|
7
7
|
StaticAuth,
|
|
8
|
-
GoogleDWDAuth
|
|
8
|
+
GoogleDWDAuth,
|
|
9
|
+
TrustedIDPAuth
|
|
9
10
|
)
|
|
10
11
|
from google.protobuf import struct_pb2
|
|
11
12
|
|
|
@@ -57,6 +58,18 @@ class UpdateConnectedAccountRequest(BaseModel):
|
|
|
57
58
|
google_dwd = GoogleDWDAuth(subject=subject)
|
|
58
59
|
auth_details = AuthorizationDetails(google_dwd=google_dwd)
|
|
59
60
|
|
|
61
|
+
elif self.authorization_details and "trusted_idp" in self.authorization_details:
|
|
62
|
+
idp_data = self.authorization_details["trusted_idp"]
|
|
63
|
+
if not isinstance(idp_data, dict):
|
|
64
|
+
raise ValueError("authorization_details.trusted_idp must be an object")
|
|
65
|
+
trusted_idp = TrustedIDPAuth(
|
|
66
|
+
db_user=idp_data.get("db_user", ""),
|
|
67
|
+
access_key_id=idp_data.get("access_key_id", ""),
|
|
68
|
+
secret_access_key=idp_data.get("secret_access_key", ""),
|
|
69
|
+
session_token=idp_data.get("session_token", ""),
|
|
70
|
+
)
|
|
71
|
+
auth_details = AuthorizationDetails(trusted_idp=trusted_idp)
|
|
72
|
+
|
|
60
73
|
# Handle api_config if provided
|
|
61
74
|
api_config_struct = None
|
|
62
75
|
if self.api_config:
|
|
@@ -68,6 +68,15 @@ class ConnectedAccount(BaseModel):
|
|
|
68
68
|
"token_expires_at": dwd.token_expires_at.ToDatetime() if dwd.HasField("token_expires_at") else None,
|
|
69
69
|
}
|
|
70
70
|
authorization_details["google_dwd"] = dwd_dict
|
|
71
|
+
elif which == "trusted_idp":
|
|
72
|
+
idp = proto_account.authorization_details.trusted_idp
|
|
73
|
+
authorization_details["trusted_idp"] = {
|
|
74
|
+
"db_user": idp.db_user,
|
|
75
|
+
"access_key_id": idp.access_key_id,
|
|
76
|
+
"secret_access_key": idp.secret_access_key,
|
|
77
|
+
"session_token": idp.session_token,
|
|
78
|
+
"expiry": idp.expiry.ToDatetime() if idp.HasField("expiry") else None,
|
|
79
|
+
}
|
|
71
80
|
|
|
72
81
|
# Convert api_config protobuf Struct to dict
|
|
73
82
|
api_config_dict = None
|
|
@@ -103,11 +103,41 @@ class ScalekitServerException(ScalekitException):
|
|
|
103
103
|
if not self._error_code:
|
|
104
104
|
self._error_code = info.error_code
|
|
105
105
|
|
|
106
|
+
@staticmethod
|
|
107
|
+
def _extract_error_code(error: grpc.RpcError) -> str | None:
|
|
108
|
+
""" Extract error_code from gRPC trailing metadata without constructing a full exception """
|
|
109
|
+
from grpc_status import rpc_status
|
|
110
|
+
try:
|
|
111
|
+
status = rpc_status.from_call(error)
|
|
112
|
+
if status is None:
|
|
113
|
+
return None
|
|
114
|
+
for detail in status.details:
|
|
115
|
+
info = ErrorInfo()
|
|
116
|
+
detail.Unpack(info)
|
|
117
|
+
if info.error_code:
|
|
118
|
+
return info.error_code
|
|
119
|
+
except Exception:
|
|
120
|
+
pass
|
|
121
|
+
return None
|
|
122
|
+
|
|
106
123
|
@staticmethod
|
|
107
124
|
def promote(error: Response | grpc.RpcError):
|
|
108
125
|
""" Promote a ScalekitServerException (Response or RpcError) to a specific error type """
|
|
109
126
|
grpc_status = HTTP_TO_GRPC.get(error.status_code) if isinstance(error, Response) else error.code()
|
|
110
127
|
|
|
128
|
+
# Check for upstream provider errors signaled by error_code == "TOOL_ERROR"
|
|
129
|
+
if isinstance(error, grpc.RpcError):
|
|
130
|
+
error_code = ScalekitServerException._extract_error_code(error)
|
|
131
|
+
if error_code == "TOOL_ERROR":
|
|
132
|
+
if grpc_status == StatusCode.RESOURCE_EXHAUSTED:
|
|
133
|
+
return ScalekitToolRateLimitException(error)
|
|
134
|
+
elif grpc_status == StatusCode.UNAUTHENTICATED:
|
|
135
|
+
return ScalekitToolUnauthorizedException(error)
|
|
136
|
+
elif grpc_status == StatusCode.PERMISSION_DENIED:
|
|
137
|
+
return ScalekitToolForbiddenException(error)
|
|
138
|
+
else:
|
|
139
|
+
return ScalekitToolException(error)
|
|
140
|
+
|
|
111
141
|
if grpc_status == StatusCode.INVALID_ARGUMENT:
|
|
112
142
|
return ScalekitBadRequestException(error)
|
|
113
143
|
elif grpc_status == StatusCode.FAILED_PRECONDITION:
|
|
@@ -258,3 +288,52 @@ class ScalekitCancelledException(ScalekitServerException):
|
|
|
258
288
|
class ScalekitUnknownException(ScalekitServerException):
|
|
259
289
|
def __init__(self, error: Response | grpc.RpcError):
|
|
260
290
|
super().__init__(error)
|
|
291
|
+
|
|
292
|
+
|
|
293
|
+
class ScalekitToolException(ScalekitServerException):
|
|
294
|
+
""" Base class for upstream provider tool errors (error_code == 'TOOL_ERROR') """
|
|
295
|
+
def __init__(self, error: Response | grpc.RpcError):
|
|
296
|
+
super().__init__(error)
|
|
297
|
+
# Extract ToolErrorInfo from the unpacked ErrorInfo details
|
|
298
|
+
self._tool_error_code = None
|
|
299
|
+
self._tool_error_message = None
|
|
300
|
+
self._execution_id = None
|
|
301
|
+
for info in self._unpacked_details:
|
|
302
|
+
if info.HasField("tool_error_info"):
|
|
303
|
+
self._tool_error_code = info.tool_error_info.tool_error_code or None
|
|
304
|
+
self._tool_error_message = info.tool_error_info.tool_error_message or None
|
|
305
|
+
self._execution_id = info.tool_error_info.execution_id or None
|
|
306
|
+
break
|
|
307
|
+
|
|
308
|
+
@property
|
|
309
|
+
def tool_error_code(self):
|
|
310
|
+
""" Provider-specific error code from tool execution """
|
|
311
|
+
return self._tool_error_code
|
|
312
|
+
|
|
313
|
+
@property
|
|
314
|
+
def tool_error_message(self):
|
|
315
|
+
""" Provider-specific error message from tool execution """
|
|
316
|
+
return self._tool_error_message
|
|
317
|
+
|
|
318
|
+
@property
|
|
319
|
+
def execution_id(self):
|
|
320
|
+
""" Execution ID for the tool call that failed """
|
|
321
|
+
return self._execution_id
|
|
322
|
+
|
|
323
|
+
|
|
324
|
+
class ScalekitToolRateLimitException(ScalekitToolException, ScalekitTooManyRequestsException):
|
|
325
|
+
""" Provider returned 429/rate-limit during tool execution """
|
|
326
|
+
def __init__(self, error: Response | grpc.RpcError):
|
|
327
|
+
ScalekitToolException.__init__(self, error)
|
|
328
|
+
|
|
329
|
+
|
|
330
|
+
class ScalekitToolUnauthorizedException(ScalekitToolException, ScalekitUnauthorizedException):
|
|
331
|
+
""" Provider returned 401/unauthorized during tool execution """
|
|
332
|
+
def __init__(self, error: Response | grpc.RpcError):
|
|
333
|
+
ScalekitToolException.__init__(self, error)
|
|
334
|
+
|
|
335
|
+
|
|
336
|
+
class ScalekitToolForbiddenException(ScalekitToolException, ScalekitForbiddenException):
|
|
337
|
+
""" Provider returned 403/forbidden during tool execution """
|
|
338
|
+
def __init__(self, error: Response | grpc.RpcError):
|
|
339
|
+
ScalekitToolException.__init__(self, error)
|
|
@@ -10,7 +10,7 @@ from urllib.parse import urlparse
|
|
|
10
10
|
from cryptography.hazmat.primitives import serialization
|
|
11
11
|
from scalekit._version import __version__ as _sdk_version
|
|
12
12
|
from scalekit.common.scalekit import GrantType
|
|
13
|
-
from scalekit.common.exceptions import ScalekitServerException, ScalekitException
|
|
13
|
+
from scalekit.common.exceptions import ScalekitServerException, ScalekitException, ScalekitTooManyRequestsException
|
|
14
14
|
|
|
15
15
|
TRequest = TypeVar("TRequest")
|
|
16
16
|
TResponse = TypeVar("TResponse")
|
|
@@ -163,12 +163,22 @@ class CoreClient:
|
|
|
163
163
|
)
|
|
164
164
|
return resp
|
|
165
165
|
except grpc.RpcError as exp:
|
|
166
|
+
# Check for upstream provider errors first — never retry, never refresh M2M
|
|
167
|
+
error_code = ScalekitServerException._extract_error_code(exp)
|
|
168
|
+
if error_code == "TOOL_ERROR":
|
|
169
|
+
raise ScalekitServerException.promote(exp)
|
|
170
|
+
|
|
166
171
|
if exp.code() == grpc.StatusCode.UNAUTHENTICATED:
|
|
172
|
+
if retry <= 0:
|
|
173
|
+
raise ScalekitServerException.promote(exp)
|
|
167
174
|
try:
|
|
168
175
|
self.__authenticate_client()
|
|
169
176
|
return self.grpc_exec(func, data, retry=retry-1)
|
|
170
177
|
except Exception as refresh_exp:
|
|
171
178
|
raise ScalekitServerException.promote(exp)
|
|
179
|
+
elif exp.code() == grpc.StatusCode.RESOURCE_EXHAUSTED:
|
|
180
|
+
# Surface Scalekit rate-limits immediately — retrying triples the damage
|
|
181
|
+
raise ScalekitServerException.promote(exp)
|
|
172
182
|
elif retry > 0:
|
|
173
183
|
return self.grpc_exec(func, data, retry=retry - 1)
|
|
174
184
|
else:
|
|
@@ -22,7 +22,7 @@ from protoc_gen_openapiv2.options import annotations_pb2 as protoc__gen__openapi
|
|
|
22
22
|
from scalekit.v1.options import options_pb2 as scalekit_dot_v1_dot_options_dot_options__pb2
|
|
23
23
|
|
|
24
24
|
|
|
25
|
-
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\"\x8e\x10\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\xdf\x01\n\tconnector\x18\x03 \x01(\tB\xbb\x01\x92\x41\x99\x01\x32\x8c\x01\x46ilter by connector type (e.g., \'notion\', \'slack\', \'google\'). Alphanumeric characters, spaces, hyphens, underscores, and colons are 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\x05query\x12\xb8\x02\n\x10\x63onnection_names\x18\t \x03(\tB\x8c\x02\x92\x41\xe3\x01\x32\xc8\x01\x46ilter by one or more connection names (exact match). Returns connected accounts belonging to any of the specified connections. Max 20 names per request. Cannot be combined with the `connector` field.J\x13[\"notion\", \"slack\"]\xa0\x01\x14\xbaH\"\x92\x01\x1f\x10\x14\"\x1br\x19\x10\x01\x18\x90\x03\x32\x12^[a-zA-Z0-9_: -]*$R\x0f\x63onnectionNames:\xb7\x01\xbaH\xb3\x01\x1a\xb0\x01\n&connector_or_connection_names_not_both\x12Jconnector and connection_names are mutually exclusive \xe2\x80\x94 provide only one\x1a:!(has(this.connector) && this.connection_names.size() > 0)B\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\"\xa0\x08\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\xdb\x01\n\tconnector\x18\x03 \x01(\tB\xb7\x01\x92\x41\x95\x01\x32\x88\x01\x43onnector identifier (e.g., \'notion\', \'slack\', \'google\'). Alphanumeric characters, spaces, hyphens, underscores, and colons are 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\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\"\x90\t\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\x12\xdb\x01\n\tconnector\x18\x03 \x01(\tB\xb7\x01\x92\x41\x95\x01\x32\x88\x01\x43onnector identifier (e.g., \'notion\', \'slack\', \'google\'). Alphanumeric characters, spaces, hyphens, underscores, and colons are 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\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\"\xd0\x06\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\xdb\x01\n\tconnector\x18\x03 \x01(\tB\xb7\x01\x92\x41\x95\x01\x32\x88\x01\x43onnector identifier (e.g., \'notion\', \'slack\', \'google\'). Alphanumeric characters, spaces, hyphens, underscores, and colons are 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\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\"\xdf\t\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\x12\xdb\x01\n\tconnector\x18\x03 \x01(\tB\xb7\x01\x92\x41\x95\x01\x32\x88\x01\x43onnector identifier (e.g., \'notion\', \'slack\', \'google\'). Alphanumeric characters, spaces, hyphens, underscores, and colons are 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\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\"\xcf\x06\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\x12\xdb\x01\n\tconnector\x18\x03 \x01(\tB\xb7\x01\x92\x41\x95\x01\x32\x88\x01\x43onnector identifier (e.g., \'notion\', \'slack\', \'google\'). Alphanumeric characters, spaces, hyphens, underscores, and colons are 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\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\"\x17\n\x15GetRedirectUrlRequest\"\xb9\x01\n\x16GetRedirectUrlResponse\x12\x9e\x01\n\x0credirect_url\x18\x01 \x01(\tB{\x92\x41x2AThe URL to redirect the user to in the connected accounts portal.J3\"https://app.example.com/portal/connected-accounts\"R\x0bredirectUrl*\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\x93W\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\x85\x06\n\x13GetConnectedAccount\x12:.scalekit.v1.connected_accounts.GetConnectedAccountRequest\x1a;.scalekit.v1.connected_accounts.GetConnectedAccountResponse\"\xf4\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\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x44\x12\x1f/api/v1/connected_accounts/thisZ!\x12\x1f/api/v1/connected_accounts/{id}\x12\xc3\t\n\x1a\x44isconnectConnectedAccount\x12\x41.scalekit.v1.connected_accounts.DisconnectConnectedAccountRequest\x1a\x42.scalekit.v1.connected_accounts.DisconnectConnectedAccountResponse\"\x9d\x08\x92\x41\xee\x06\n\x12\x43onnected Accounts\x12\x1e\x44isconnect a connected account\x1a\xb6\x02\x44isconnects a connected account by setting its status to DISCONNECTED. The account record is retained but marked as no longer active. Use the path \'/this:disconnect\' (e.g. /api/v1/connected_accounts/this:disconnect) to disconnect the account associated with the current token context, without specifying an ID.J\x80\x01\n\x03\x32\x30\x30\x12y\n/Successfully disconnected the connected account\x12\x46\nD\x1a\x42.scalekit.v1.connected_accounts.DisconnectConnectedAccountResponseJ\x99\x01\n\x03\x34\x30\x30\x12\x91\x01\n\x8e\x01Invalid request - malformed connected account ID, or attempting to disconnect an account other than the one bound to the current token contextJB\n\x03\x34\x30\x31\x12;\n9Authentication required - missing or invalid access tokenJv\n\x03\x34\x30\x33\x12o\nmForbidden - the token context is bound to a different connected account than the one specified in the requestJ$\n\x03\x34\x30\x34\x12\x1d\n\x1b\x43onnected account not found\x82\xb5\x18\x03\x18\xc4\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x8e\x01\"*/api/v1/connected_accounts/{id}:disconnect:\x01*Z,\"\'/api/v1/connected_accounts/-:disconnect:\x01*Z/\"*/api/v1/connected_accounts/this:disconnect:\x01*\x12\xc2\x04\n\x0eGetRedirectUrl\x12\x35.scalekit.v1.connected_accounts.GetRedirectUrlRequest\x1a\x36.scalekit.v1.connected_accounts.GetRedirectUrlResponse\"\xc0\x03\x92\x41\xf0\x02\n\x12\x43onnected Accounts\x12\x17Get portal redirect URL\x1a\x87\x01Returns the redirect URL for the connected accounts portal. Used to redirect users to the appropriate portal page after authentication.Js\n\x03\x32\x30\x30\x12l\n.Successfully retrieved the portal redirect URL\x12:\n8\x1a\x36.scalekit.v1.connected_accounts.GetRedirectUrlResponseJB\n\x03\x34\x30\x31\x12;\n9Authentication required - missing or invalid access token\x82\xb5\x18\x03\x18\x80\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x30\x12./api/v1/connected_accounts/portal/redirect_url\x12\xbf\x07\n\x17GetConnectedAccountAuth\x12\x46.scalekit.v1.connected_accounts.GetConnectedAccountByIdentifierRequest\x1aG.scalekit.v1.connected_accounts.GetConnectedAccountByIdentifierResponse\"\x92\x06\x92\x41\xe1\x05\n\x12\x43onnected Accounts\x12&Get connected account auth credentials\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\xfb\x06\n\x1aGetConnectedAccountDetails\x12\x46.scalekit.v1.connected_accounts.GetConnectedAccountByIdentifierRequest\x1aG.scalekit.v1.connected_accounts.GetConnectedAccountByIdentifierResponse\"\xcb\x05\x92\x41\x97\x05\n\x12\x43onnected Accounts\x12\x1eGet connected account metadata\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\x02Z<github.com/scalekit-inc/scalekit/pkg/grpc/connected_accounts\x92\x41\xe2\x01j\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\x06proto3')
|
|
25
|
+
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\"\x8e\x10\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\xdf\x01\n\tconnector\x18\x03 \x01(\tB\xbb\x01\x92\x41\x99\x01\x32\x8c\x01\x46ilter by connector type (e.g., \'notion\', \'slack\', \'google\'). Alphanumeric characters, spaces, hyphens, underscores, and colons are 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\x05query\x12\xb8\x02\n\x10\x63onnection_names\x18\t \x03(\tB\x8c\x02\x92\x41\xe3\x01\x32\xc8\x01\x46ilter by one or more connection names (exact match). Returns connected accounts belonging to any of the specified connections. Max 20 names per request. Cannot be combined with the `connector` field.J\x13[\"notion\", \"slack\"]\xa0\x01\x14\xbaH\"\x92\x01\x1f\x10\x14\"\x1br\x19\x10\x01\x18\x90\x03\x32\x12^[a-zA-Z0-9_: -]*$R\x0f\x63onnectionNames:\xb7\x01\xbaH\xb3\x01\x1a\xb0\x01\n&connector_or_connection_names_not_both\x12Jconnector and connection_names are mutually exclusive \xe2\x80\x94 provide only one\x1a:!(has(this.connector) && this.connection_names.size() > 0)B\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\"\xa0\x08\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\xdb\x01\n\tconnector\x18\x03 \x01(\tB\xb7\x01\x92\x41\x95\x01\x32\x88\x01\x43onnector identifier (e.g., \'notion\', \'slack\', \'google\'). Alphanumeric characters, spaces, hyphens, underscores, and colons are 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\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\"\x90\t\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\x12\xdb\x01\n\tconnector\x18\x03 \x01(\tB\xb7\x01\x92\x41\x95\x01\x32\x88\x01\x43onnector identifier (e.g., \'notion\', \'slack\', \'google\'). Alphanumeric characters, spaces, hyphens, underscores, and colons are 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\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\"\xd0\x06\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\xdb\x01\n\tconnector\x18\x03 \x01(\tB\xb7\x01\x92\x41\x95\x01\x32\x88\x01\x43onnector identifier (e.g., \'notion\', \'slack\', \'google\'). Alphanumeric characters, spaces, hyphens, underscores, and colons are 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\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\"\xdf\t\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\x12\xdb\x01\n\tconnector\x18\x03 \x01(\tB\xb7\x01\x92\x41\x95\x01\x32\x88\x01\x43onnector identifier (e.g., \'notion\', \'slack\', \'google\'). Alphanumeric characters, spaces, hyphens, underscores, and colons are 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\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\"\xcf\x06\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\x12\xdb\x01\n\tconnector\x18\x03 \x01(\tB\xb7\x01\x92\x41\x95\x01\x32\x88\x01\x43onnector identifier (e.g., \'notion\', \'slack\', \'google\'). Alphanumeric characters, spaces, hyphens, underscores, and colons are 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\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\"\xe2\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\tgoogleDwd\x12Q\n\x0btrusted_idp\x18\x04 \x01(\x0b\x32..scalekit.v1.connected_accounts.TrustedIDPAuthH\x00R\ntrustedIdpB\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\"\xc3\x05\n\x0eTrustedIDPAuth\x12\xb3\x01\n\x07\x64\x62_user\x18\x01 \x01(\tB\x99\x01\x92\x41\x95\x01\x32\x7fTarget database user for the federated session (required for provisioned Redshift clusters; ignored for serverless workgroups).J\x12\"analytics_reader\"R\x06\x64\x62User\x12\x92\x01\n\raccess_key_id\x18\x02 \x01(\tBn\x92\x41h2[Federated access key ID issued by the trusted identity provider. Present in responses only.J\t\"ASIA...\"\xe0\x41\x03R\x0b\x61\x63\x63\x65ssKeyId\x12x\n\x11secret_access_key\x18\x03 \x01(\tBL\x92\x41\x46\x32\x44\x46\x65\x64\x65rated secret access key. Never returned in public API responses.\xe0\x41\x03R\x0fsecretAccessKey\x12m\n\rsession_token\x18\x04 \x01(\tBH\x92\x41\x42\x32@Federated session token. Never returned in public API responses.\xe0\x41\x03R\x0csessionToken\x12}\n\x06\x65xpiry\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampBI\x92\x41\x43\x32\x41When the federated credentials expire. Present in responses only.\xe0\x41\x03R\x06\x65xpiry\"\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\"\x17\n\x15GetRedirectUrlRequest\"\xb9\x01\n\x16GetRedirectUrlResponse\x12\x9e\x01\n\x0credirect_url\x18\x01 \x01(\tB{\x92\x41x2AThe URL to redirect the user to in the connected accounts portal.J3\"https://app.example.com/portal/connected-accounts\"R\x0bredirectUrl*\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*\xc4\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\t\x12\x0f\n\x0bTRUSTED_IDP\x10\n2\x93W\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\x85\x06\n\x13GetConnectedAccount\x12:.scalekit.v1.connected_accounts.GetConnectedAccountRequest\x1a;.scalekit.v1.connected_accounts.GetConnectedAccountResponse\"\xf4\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\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x44\x12\x1f/api/v1/connected_accounts/thisZ!\x12\x1f/api/v1/connected_accounts/{id}\x12\xc3\t\n\x1a\x44isconnectConnectedAccount\x12\x41.scalekit.v1.connected_accounts.DisconnectConnectedAccountRequest\x1a\x42.scalekit.v1.connected_accounts.DisconnectConnectedAccountResponse\"\x9d\x08\x92\x41\xee\x06\n\x12\x43onnected Accounts\x12\x1e\x44isconnect a connected account\x1a\xb6\x02\x44isconnects a connected account by setting its status to DISCONNECTED. The account record is retained but marked as no longer active. Use the path \'/this:disconnect\' (e.g. /api/v1/connected_accounts/this:disconnect) to disconnect the account associated with the current token context, without specifying an ID.J\x80\x01\n\x03\x32\x30\x30\x12y\n/Successfully disconnected the connected account\x12\x46\nD\x1a\x42.scalekit.v1.connected_accounts.DisconnectConnectedAccountResponseJ\x99\x01\n\x03\x34\x30\x30\x12\x91\x01\n\x8e\x01Invalid request - malformed connected account ID, or attempting to disconnect an account other than the one bound to the current token contextJB\n\x03\x34\x30\x31\x12;\n9Authentication required - missing or invalid access tokenJv\n\x03\x34\x30\x33\x12o\nmForbidden - the token context is bound to a different connected account than the one specified in the requestJ$\n\x03\x34\x30\x34\x12\x1d\n\x1b\x43onnected account not found\x82\xb5\x18\x03\x18\xc4\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x8e\x01\"*/api/v1/connected_accounts/{id}:disconnect:\x01*Z,\"\'/api/v1/connected_accounts/-:disconnect:\x01*Z/\"*/api/v1/connected_accounts/this:disconnect:\x01*\x12\xc2\x04\n\x0eGetRedirectUrl\x12\x35.scalekit.v1.connected_accounts.GetRedirectUrlRequest\x1a\x36.scalekit.v1.connected_accounts.GetRedirectUrlResponse\"\xc0\x03\x92\x41\xf0\x02\n\x12\x43onnected Accounts\x12\x17Get portal redirect URL\x1a\x87\x01Returns the redirect URL for the connected accounts portal. Used to redirect users to the appropriate portal page after authentication.Js\n\x03\x32\x30\x30\x12l\n.Successfully retrieved the portal redirect URL\x12:\n8\x1a\x36.scalekit.v1.connected_accounts.GetRedirectUrlResponseJB\n\x03\x34\x30\x31\x12;\n9Authentication required - missing or invalid access token\x82\xb5\x18\x03\x18\x80\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x30\x12./api/v1/connected_accounts/portal/redirect_url\x12\xbf\x07\n\x17GetConnectedAccountAuth\x12\x46.scalekit.v1.connected_accounts.GetConnectedAccountByIdentifierRequest\x1aG.scalekit.v1.connected_accounts.GetConnectedAccountByIdentifierResponse\"\x92\x06\x92\x41\xe1\x05\n\x12\x43onnected Accounts\x12&Get connected account auth credentials\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\xfb\x06\n\x1aGetConnectedAccountDetails\x12\x46.scalekit.v1.connected_accounts.GetConnectedAccountByIdentifierRequest\x1aG.scalekit.v1.connected_accounts.GetConnectedAccountByIdentifierResponse\"\xcb\x05\x92\x41\x97\x05\n\x12\x43onnected Accounts\x12\x1eGet connected account metadata\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\x02Z<github.com/scalekit-inc/scalekit/pkg/grpc/connected_accounts\x92\x41\xe2\x01j\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\x06proto3')
|
|
26
26
|
|
|
27
27
|
_globals = globals()
|
|
28
28
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
|
@@ -208,6 +208,16 @@ if not _descriptor._USE_C_DESCRIPTORS:
|
|
|
208
208
|
_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'
|
|
209
209
|
_globals['_GOOGLEDWDAUTH'].fields_by_name['token_expires_at']._loaded_options = None
|
|
210
210
|
_globals['_GOOGLEDWDAUTH'].fields_by_name['token_expires_at']._serialized_options = b'\222A;29When the access token expires. Present in responses only.\340A\003'
|
|
211
|
+
_globals['_TRUSTEDIDPAUTH'].fields_by_name['db_user']._loaded_options = None
|
|
212
|
+
_globals['_TRUSTEDIDPAUTH'].fields_by_name['db_user']._serialized_options = b'\222A\225\0012\177Target database user for the federated session (required for provisioned Redshift clusters; ignored for serverless workgroups).J\022\"analytics_reader\"'
|
|
213
|
+
_globals['_TRUSTEDIDPAUTH'].fields_by_name['access_key_id']._loaded_options = None
|
|
214
|
+
_globals['_TRUSTEDIDPAUTH'].fields_by_name['access_key_id']._serialized_options = b'\222Ah2[Federated access key ID issued by the trusted identity provider. Present in responses only.J\t\"ASIA...\"\340A\003'
|
|
215
|
+
_globals['_TRUSTEDIDPAUTH'].fields_by_name['secret_access_key']._loaded_options = None
|
|
216
|
+
_globals['_TRUSTEDIDPAUTH'].fields_by_name['secret_access_key']._serialized_options = b'\222AF2DFederated secret access key. Never returned in public API responses.\340A\003'
|
|
217
|
+
_globals['_TRUSTEDIDPAUTH'].fields_by_name['session_token']._loaded_options = None
|
|
218
|
+
_globals['_TRUSTEDIDPAUTH'].fields_by_name['session_token']._serialized_options = b'\222AB2@Federated session token. Never returned in public API responses.\340A\003'
|
|
219
|
+
_globals['_TRUSTEDIDPAUTH'].fields_by_name['expiry']._loaded_options = None
|
|
220
|
+
_globals['_TRUSTEDIDPAUTH'].fields_by_name['expiry']._serialized_options = b'\222AC2AWhen the federated credentials expire. Present in responses only.\340A\003'
|
|
211
221
|
_globals['_OAUTHTOKEN'].fields_by_name['access_token']._loaded_options = None
|
|
212
222
|
_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...\"'
|
|
213
223
|
_globals['_OAUTHTOKEN'].fields_by_name['refresh_token']._loaded_options = None
|
|
@@ -254,10 +264,10 @@ if not _descriptor._USE_C_DESCRIPTORS:
|
|
|
254
264
|
_globals['_CONNECTEDACCOUNTSERVICE'].methods_by_name['GetConnectedAccountDetails']._serialized_options = b'\222A\227\005\n\022Connected Accounts\022\036Get connected account metadata\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'
|
|
255
265
|
_globals['_CONNECTEDACCOUNTSERVICE'].methods_by_name['VerifyConnectedAccountUser']._loaded_options = None
|
|
256
266
|
_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*'
|
|
257
|
-
_globals['_CONNECTORSTATUS']._serialized_start=
|
|
258
|
-
_globals['_CONNECTORSTATUS']._serialized_end=
|
|
259
|
-
_globals['_CONNECTORTYPE']._serialized_start=
|
|
260
|
-
_globals['_CONNECTORTYPE']._serialized_end=
|
|
267
|
+
_globals['_CONNECTORSTATUS']._serialized_start=20562
|
|
268
|
+
_globals['_CONNECTORSTATUS']._serialized_end=20701
|
|
269
|
+
_globals['_CONNECTORTYPE']._serialized_start=20704
|
|
270
|
+
_globals['_CONNECTORTYPE']._serialized_end=20900
|
|
261
271
|
_globals['_LISTCONNECTEDACCOUNTSREQUEST']._serialized_start=359
|
|
262
272
|
_globals['_LISTCONNECTEDACCOUNTSREQUEST']._serialized_end=2421
|
|
263
273
|
_globals['_LISTCONNECTEDACCOUNTSRESPONSE']._serialized_start=2424
|
|
@@ -299,25 +309,27 @@ if not _descriptor._USE_C_DESCRIPTORS:
|
|
|
299
309
|
_globals['_CONNECTEDACCOUNTFORLIST']._serialized_start=15730
|
|
300
310
|
_globals['_CONNECTEDACCOUNTFORLIST']._serialized_end=16850
|
|
301
311
|
_globals['_AUTHORIZATIONDETAILS']._serialized_start=16853
|
|
302
|
-
_globals['_AUTHORIZATIONDETAILS']._serialized_end=
|
|
303
|
-
_globals['_GOOGLEDWDAUTH']._serialized_start=
|
|
304
|
-
_globals['_GOOGLEDWDAUTH']._serialized_end=
|
|
305
|
-
_globals['
|
|
306
|
-
_globals['
|
|
307
|
-
_globals['
|
|
308
|
-
_globals['
|
|
309
|
-
_globals['
|
|
310
|
-
_globals['
|
|
311
|
-
_globals['
|
|
312
|
-
_globals['
|
|
313
|
-
_globals['
|
|
314
|
-
_globals['
|
|
315
|
-
_globals['
|
|
316
|
-
_globals['
|
|
317
|
-
_globals['
|
|
318
|
-
_globals['
|
|
319
|
-
_globals['
|
|
320
|
-
_globals['
|
|
321
|
-
_globals['
|
|
322
|
-
_globals['
|
|
312
|
+
_globals['_AUTHORIZATIONDETAILS']._serialized_end=17207
|
|
313
|
+
_globals['_GOOGLEDWDAUTH']._serialized_start=17210
|
|
314
|
+
_globals['_GOOGLEDWDAUTH']._serialized_end=17810
|
|
315
|
+
_globals['_TRUSTEDIDPAUTH']._serialized_start=17813
|
|
316
|
+
_globals['_TRUSTEDIDPAUTH']._serialized_end=18520
|
|
317
|
+
_globals['_OAUTHTOKEN']._serialized_start=18523
|
|
318
|
+
_globals['_OAUTHTOKEN']._serialized_end=19255
|
|
319
|
+
_globals['_STATICAUTH']._serialized_start=19258
|
|
320
|
+
_globals['_STATICAUTH']._serialized_end=19502
|
|
321
|
+
_globals['_GETCONNECTEDACCOUNTREQUEST']._serialized_start=19505
|
|
322
|
+
_globals['_GETCONNECTEDACCOUNTREQUEST']._serialized_end=19764
|
|
323
|
+
_globals['_GETCONNECTEDACCOUNTRESPONSE']._serialized_start=19767
|
|
324
|
+
_globals['_GETCONNECTEDACCOUNTRESPONSE']._serialized_end=19964
|
|
325
|
+
_globals['_DISCONNECTCONNECTEDACCOUNTREQUEST']._serialized_start=19967
|
|
326
|
+
_globals['_DISCONNECTCONNECTEDACCOUNTREQUEST']._serialized_end=20145
|
|
327
|
+
_globals['_DISCONNECTCONNECTEDACCOUNTRESPONSE']._serialized_start=20148
|
|
328
|
+
_globals['_DISCONNECTCONNECTEDACCOUNTRESPONSE']._serialized_end=20346
|
|
329
|
+
_globals['_GETREDIRECTURLREQUEST']._serialized_start=20348
|
|
330
|
+
_globals['_GETREDIRECTURLREQUEST']._serialized_end=20371
|
|
331
|
+
_globals['_GETREDIRECTURLRESPONSE']._serialized_start=20374
|
|
332
|
+
_globals['_GETREDIRECTURLRESPONSE']._serialized_end=20559
|
|
333
|
+
_globals['_CONNECTEDACCOUNTSERVICE']._serialized_start=20903
|
|
334
|
+
_globals['_CONNECTEDACCOUNTSERVICE']._serialized_end=32058
|
|
323
335
|
# @@protoc_insertion_point(module_scope)
|