scalekit-sdk-python 2.11.0__tar.gz → 2.12.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.
Files changed (260) hide show
  1. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/PKG-INFO +1 -1
  2. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/_version.py +1 -1
  3. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/actions/models/custom_provider.py +5 -5
  4. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/actions/models/requests/create_connected_account_request.py +15 -2
  5. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/actions/models/requests/update_connected_account_request.py +14 -1
  6. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/actions/models/responses/get_connected_account_auth_response.py +9 -0
  7. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/core.py +2 -0
  8. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/connected_accounts/connected_accounts_pb2.py +38 -26
  9. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/connected_accounts/connected_accounts_pb2.pyi +20 -2
  10. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/connections/connections_pb2.py +8 -8
  11. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/connections/connections_pb2.pyi +2 -0
  12. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/roles/roles_pb2.py +47 -47
  13. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit_sdk_python.egg-info/PKG-INFO +1 -1
  14. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/tests/test_permissions.py +2 -2
  15. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/LICENSE +0 -0
  16. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/README.md +0 -0
  17. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/buf/__init__.py +0 -0
  18. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/buf/validate/__init__.py +0 -0
  19. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/buf/validate/expression_pb2.py +0 -0
  20. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/buf/validate/expression_pb2.pyi +0 -0
  21. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/buf/validate/expression_pb2_grpc.py +0 -0
  22. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/buf/validate/priv/__init__.py +0 -0
  23. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/buf/validate/priv/private_pb2.py +0 -0
  24. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/buf/validate/priv/private_pb2.pyi +0 -0
  25. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/buf/validate/priv/private_pb2_grpc.py +0 -0
  26. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/buf/validate/validate_pb2.py +0 -0
  27. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/buf/validate/validate_pb2.pyi +0 -0
  28. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/buf/validate/validate_pb2_grpc.py +0 -0
  29. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/pyproject.toml +0 -0
  30. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/__init__.py +0 -0
  31. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/actions/__init__.py +0 -0
  32. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/actions/actions.py +0 -0
  33. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/actions/frameworks/__init__.py +0 -0
  34. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/actions/frameworks/google_adk.py +0 -0
  35. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/actions/frameworks/langchain.py +0 -0
  36. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/actions/frameworks/types/__init__.py +0 -0
  37. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/actions/frameworks/types/google_adk_tool.py +0 -0
  38. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/actions/frameworks/util.py +0 -0
  39. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/actions/models/__init__.py +0 -0
  40. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/actions/models/mcp_config.py +0 -0
  41. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/actions/models/mcp_connection_auth_state.py +0 -0
  42. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/actions/models/mcp_instance.py +0 -0
  43. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/actions/models/requests/__init__.py +0 -0
  44. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/actions/models/requests/create_custom_provider_request.py +0 -0
  45. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/actions/models/requests/delete_custom_provider_request.py +0 -0
  46. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/actions/models/requests/list_providers_request.py +0 -0
  47. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/actions/models/requests/mcp_request.py +0 -0
  48. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/actions/models/requests/tool_request.py +0 -0
  49. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/actions/models/requests/update_custom_provider_request.py +0 -0
  50. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/actions/models/responses/__init__.py +0 -0
  51. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/actions/models/responses/create_connected_account_response.py +0 -0
  52. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/actions/models/responses/create_custom_provider_response.py +0 -0
  53. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/actions/models/responses/create_mcp_config_response.py +0 -0
  54. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/actions/models/responses/create_mcp_response.py +0 -0
  55. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/actions/models/responses/create_mcp_session_token_response.py +0 -0
  56. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/actions/models/responses/delete_connected_account_response.py +0 -0
  57. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/actions/models/responses/delete_custom_provider_response.py +0 -0
  58. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/actions/models/responses/delete_mcp_config_response.py +0 -0
  59. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/actions/models/responses/delete_mcp_instance_response.py +0 -0
  60. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/actions/models/responses/ensure_mcp_instance_response.py +0 -0
  61. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/actions/models/responses/execute_tool_response.py +0 -0
  62. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/actions/models/responses/get_mcp_instance_auth_state_response.py +0 -0
  63. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/actions/models/responses/get_mcp_instance_response.py +0 -0
  64. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/actions/models/responses/get_mcp_response.py +0 -0
  65. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/actions/models/responses/list_connected_accounts_response.py +0 -0
  66. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/actions/models/responses/list_mcp_configs_response.py +0 -0
  67. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/actions/models/responses/list_mcp_connected_accounts_response.py +0 -0
  68. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/actions/models/responses/list_mcp_instances_response.py +0 -0
  69. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/actions/models/responses/list_providers_response.py +0 -0
  70. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/actions/models/responses/magic_link_response.py +0 -0
  71. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/actions/models/responses/update_connected_account_response.py +0 -0
  72. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/actions/models/responses/update_custom_provider_response.py +0 -0
  73. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/actions/models/responses/update_mcp_config_response.py +0 -0
  74. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/actions/models/responses/update_mcp_instance_response.py +0 -0
  75. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/actions/models/responses/verify_connected_account_user_response.py +0 -0
  76. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/actions/models/tool_input_output.py +0 -0
  77. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/actions/models/tool_mapping.py +0 -0
  78. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/actions/modifier.py +0 -0
  79. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/actions/types.py +0 -0
  80. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/auth.py +0 -0
  81. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/client.py +0 -0
  82. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/common/__init__.py +0 -0
  83. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/common/exceptions.py +0 -0
  84. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/common/scalekit.py +0 -0
  85. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/common/user.py +0 -0
  86. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/connected_accounts.py +0 -0
  87. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/connection.py +0 -0
  88. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/constants/__init__.py +0 -0
  89. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/constants/user.py +0 -0
  90. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/directory.py +0 -0
  91. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/domain.py +0 -0
  92. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/m2m_client.py +0 -0
  93. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/mcp.py +0 -0
  94. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/organization.py +0 -0
  95. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/passwordless.py +0 -0
  96. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/permissions.py +0 -0
  97. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/providers.py +0 -0
  98. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/role.py +0 -0
  99. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/sessions.py +0 -0
  100. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/token.py +0 -0
  101. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/tools.py +0 -0
  102. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/users.py +0 -0
  103. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/utils/__init__.py +0 -0
  104. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/utils/directory.py +0 -0
  105. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/__init__.py +0 -0
  106. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/agentkit_logs/__init__.py +0 -0
  107. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/agentkit_logs/agentkit_analytics_pb2.py +0 -0
  108. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/agentkit_logs/agentkit_analytics_pb2.pyi +0 -0
  109. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/agentkit_logs/agentkit_analytics_pb2_grpc.py +0 -0
  110. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/agentkit_logs/agentkit_logs_pb2.py +0 -0
  111. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/agentkit_logs/agentkit_logs_pb2.pyi +0 -0
  112. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/agentkit_logs/agentkit_logs_pb2_grpc.py +0 -0
  113. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/auditlogs/__init__.py +0 -0
  114. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/auditlogs/auditlogs_pb2.py +0 -0
  115. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/auditlogs/auditlogs_pb2.pyi +0 -0
  116. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/auditlogs/auditlogs_pb2_grpc.py +0 -0
  117. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/auth/__init__.py +0 -0
  118. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/auth/auth_pb2.py +0 -0
  119. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/auth/auth_pb2.pyi +0 -0
  120. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/auth/auth_pb2_grpc.py +0 -0
  121. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/auth/passwordless_pb2.py +0 -0
  122. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/auth/passwordless_pb2.pyi +0 -0
  123. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/auth/passwordless_pb2_grpc.py +0 -0
  124. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/auth/totp_pb2.py +0 -0
  125. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/auth/totp_pb2.pyi +0 -0
  126. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/auth/totp_pb2_grpc.py +0 -0
  127. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/auth/webauthn_pb2.py +0 -0
  128. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/auth/webauthn_pb2.pyi +0 -0
  129. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/auth/webauthn_pb2_grpc.py +0 -0
  130. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/clients/__init__.py +0 -0
  131. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/clients/clients_pb2.py +0 -0
  132. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/clients/clients_pb2.pyi +0 -0
  133. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/clients/clients_pb2_grpc.py +0 -0
  134. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/commons/__init__.py +0 -0
  135. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/commons/commons_pb2.py +0 -0
  136. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/commons/commons_pb2.pyi +0 -0
  137. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/commons/commons_pb2_grpc.py +0 -0
  138. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/connected_accounts/__init__.py +0 -0
  139. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/connected_accounts/connected_accounts_pb2_grpc.py +0 -0
  140. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/connections/__init__.py +0 -0
  141. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/connections/connections_pb2_grpc.py +0 -0
  142. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/directories/__init__.py +0 -0
  143. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/directories/directories_pb2.py +0 -0
  144. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/directories/directories_pb2.pyi +0 -0
  145. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/directories/directories_pb2_grpc.py +0 -0
  146. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/domains/__init__.py +0 -0
  147. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/domains/domains_pb2.py +0 -0
  148. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/domains/domains_pb2.pyi +0 -0
  149. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/domains/domains_pb2_grpc.py +0 -0
  150. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/emails/__init__.py +0 -0
  151. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/emails/emails_pb2.py +0 -0
  152. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/emails/emails_pb2.pyi +0 -0
  153. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/emails/emails_pb2_grpc.py +0 -0
  154. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/environments/__init__.py +0 -0
  155. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/environments/environments_pb2.py +0 -0
  156. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/environments/environments_pb2.pyi +0 -0
  157. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/environments/environments_pb2_grpc.py +0 -0
  158. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/errdetails/__init__.py +0 -0
  159. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/errdetails/errdetails_pb2.py +0 -0
  160. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/errdetails/errdetails_pb2.pyi +0 -0
  161. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/errdetails/errdetails_pb2_grpc.py +0 -0
  162. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/events/__init__.py +0 -0
  163. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/events/events_pb2.py +0 -0
  164. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/events/events_pb2.pyi +0 -0
  165. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/events/events_pb2_grpc.py +0 -0
  166. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/interceptors/__init__.py +0 -0
  167. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/interceptors/interceptors_pb2.py +0 -0
  168. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/interceptors/interceptors_pb2.pyi +0 -0
  169. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/interceptors/interceptors_pb2_grpc.py +0 -0
  170. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/keys/__init__.py +0 -0
  171. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/keys/keys_pb2.py +0 -0
  172. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/keys/keys_pb2.pyi +0 -0
  173. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/keys/keys_pb2_grpc.py +0 -0
  174. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/mcp/__init__.py +0 -0
  175. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/mcp/mcp_pb2.py +0 -0
  176. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/mcp/mcp_pb2.pyi +0 -0
  177. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/mcp/mcp_pb2_grpc.py +0 -0
  178. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/members/__init__.py +0 -0
  179. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/members/members_pb2.py +0 -0
  180. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/members/members_pb2.pyi +0 -0
  181. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/members/members_pb2_grpc.py +0 -0
  182. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/migrations/__init__.py +0 -0
  183. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/migrations/migrations_pb2.py +0 -0
  184. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/migrations/migrations_pb2.pyi +0 -0
  185. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/migrations/migrations_pb2_grpc.py +0 -0
  186. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/options/__init__.py +0 -0
  187. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/options/options_pb2.py +0 -0
  188. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/options/options_pb2.pyi +0 -0
  189. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/options/options_pb2_grpc.py +0 -0
  190. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/organizations/__init__.py +0 -0
  191. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/organizations/organizations_pb2.py +0 -0
  192. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/organizations/organizations_pb2.pyi +0 -0
  193. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/organizations/organizations_pb2_grpc.py +0 -0
  194. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/providers/__init__.py +0 -0
  195. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/providers/providers_pb2.py +0 -0
  196. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/providers/providers_pb2.pyi +0 -0
  197. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/providers/providers_pb2_grpc.py +0 -0
  198. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/roles/__init__.py +0 -0
  199. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/roles/roles_pb2.pyi +0 -0
  200. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/roles/roles_pb2_grpc.py +0 -0
  201. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/secrets/__init__.py +0 -0
  202. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/secrets/secrets_pb2.py +0 -0
  203. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/secrets/secrets_pb2.pyi +0 -0
  204. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/secrets/secrets_pb2_grpc.py +0 -0
  205. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/sessions/__init__.py +0 -0
  206. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/sessions/sessions_pb2.py +0 -0
  207. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/sessions/sessions_pb2.pyi +0 -0
  208. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/sessions/sessions_pb2_grpc.py +0 -0
  209. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/tokens/__init__.py +0 -0
  210. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/tokens/tokens_pb2.py +0 -0
  211. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/tokens/tokens_pb2.pyi +0 -0
  212. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/tokens/tokens_pb2_grpc.py +0 -0
  213. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/tools/__init__.py +0 -0
  214. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/tools/tools_pb2.py +0 -0
  215. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/tools/tools_pb2.pyi +0 -0
  216. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/tools/tools_pb2_grpc.py +0 -0
  217. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/user_attributes/__init__.py +0 -0
  218. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/user_attributes/user_attributes_pb2.py +0 -0
  219. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/user_attributes/user_attributes_pb2.pyi +0 -0
  220. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/user_attributes/user_attributes_pb2_grpc.py +0 -0
  221. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/users/__init__.py +0 -0
  222. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/users/users_pb2.py +0 -0
  223. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/users/users_pb2.pyi +0 -0
  224. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/users/users_pb2_grpc.py +0 -0
  225. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/webhooks/__init__.py +0 -0
  226. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/webhooks/webhooks_pb2.py +0 -0
  227. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/webhooks/webhooks_pb2.pyi +0 -0
  228. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/webhooks/webhooks_pb2_grpc.py +0 -0
  229. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/workspaces/__init__.py +0 -0
  230. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/workspaces/workspaces_pb2.py +0 -0
  231. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/workspaces/workspaces_pb2.pyi +0 -0
  232. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/v1/workspaces/workspaces_pb2_grpc.py +0 -0
  233. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit/webauthn.py +0 -0
  234. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit_sdk_python.egg-info/SOURCES.txt +0 -0
  235. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit_sdk_python.egg-info/dependency_links.txt +0 -0
  236. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit_sdk_python.egg-info/requires.txt +0 -0
  237. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/scalekit_sdk_python.egg-info/top_level.txt +0 -0
  238. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/setup.cfg +0 -0
  239. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/setup.py +0 -0
  240. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/tests/test_actions.py +0 -0
  241. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/tests/test_connected_accounts.py +0 -0
  242. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/tests/test_connection.py +0 -0
  243. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/tests/test_directory.py +0 -0
  244. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/tests/test_domain.py +0 -0
  245. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/tests/test_m2m_client.py +0 -0
  246. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/tests/test_mcp.py +0 -0
  247. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/tests/test_org_roles.py +0 -0
  248. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/tests/test_organization.py +0 -0
  249. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/tests/test_organization_session_policy.py +0 -0
  250. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/tests/test_organization_slug_logo.py +0 -0
  251. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/tests/test_passwordless.py +0 -0
  252. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/tests/test_providers.py +0 -0
  253. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/tests/test_role_defaults_dependent.py +0 -0
  254. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/tests/test_roles.py +0 -0
  255. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/tests/test_sessions.py +0 -0
  256. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/tests/test_tokens.py +0 -0
  257. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/tests/test_tools.py +0 -0
  258. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/tests/test_user_roles_permissions.py +0 -0
  259. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.0}/tests/test_users.py +0 -0
  260. {scalekit_sdk_python-2.11.0 → scalekit_sdk_python-2.12.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.11.0
3
+ Version: 2.12.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
@@ -1,3 +1,3 @@
1
1
  # Single source of truth for the SDK version.
2
2
  # Import this in setup.py and scalekit/core.py — never hardcode the version elsewhere.
3
- __version__ = "2.11.0"
3
+ __version__ = "2.12.0"
@@ -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", "text"),
90
- hint=d.get("hint", ""),
91
- required=d.get("required", False),
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
@@ -164,6 +164,8 @@ class CoreClient:
164
164
  return resp
165
165
  except grpc.RpcError as exp:
166
166
  if exp.code() == grpc.StatusCode.UNAUTHENTICATED:
167
+ if retry <= 0:
168
+ raise ScalekitServerException.promote(exp)
167
169
  try:
168
170
  self.__authenticate_client()
169
171
  return self.grpc_exec(func, data, retry=retry-1)
@@ -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=19769
258
- _globals['_CONNECTORSTATUS']._serialized_end=19908
259
- _globals['_CONNECTORTYPE']._serialized_start=19911
260
- _globals['_CONNECTORTYPE']._serialized_end=20090
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=17124
303
- _globals['_GOOGLEDWDAUTH']._serialized_start=17127
304
- _globals['_GOOGLEDWDAUTH']._serialized_end=17727
305
- _globals['_OAUTHTOKEN']._serialized_start=17730
306
- _globals['_OAUTHTOKEN']._serialized_end=18462
307
- _globals['_STATICAUTH']._serialized_start=18465
308
- _globals['_STATICAUTH']._serialized_end=18709
309
- _globals['_GETCONNECTEDACCOUNTREQUEST']._serialized_start=18712
310
- _globals['_GETCONNECTEDACCOUNTREQUEST']._serialized_end=18971
311
- _globals['_GETCONNECTEDACCOUNTRESPONSE']._serialized_start=18974
312
- _globals['_GETCONNECTEDACCOUNTRESPONSE']._serialized_end=19171
313
- _globals['_DISCONNECTCONNECTEDACCOUNTREQUEST']._serialized_start=19174
314
- _globals['_DISCONNECTCONNECTEDACCOUNTREQUEST']._serialized_end=19352
315
- _globals['_DISCONNECTCONNECTEDACCOUNTRESPONSE']._serialized_start=19355
316
- _globals['_DISCONNECTCONNECTEDACCOUNTRESPONSE']._serialized_end=19553
317
- _globals['_GETREDIRECTURLREQUEST']._serialized_start=19555
318
- _globals['_GETREDIRECTURLREQUEST']._serialized_end=19578
319
- _globals['_GETREDIRECTURLRESPONSE']._serialized_start=19581
320
- _globals['_GETREDIRECTURLRESPONSE']._serialized_end=19766
321
- _globals['_CONNECTEDACCOUNTSERVICE']._serialized_start=20093
322
- _globals['_CONNECTEDACCOUNTSERVICE']._serialized_end=31248
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)
@@ -35,6 +35,7 @@ class ConnectorType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
35
35
  OAUTH_M2M: _ClassVar[ConnectorType]
36
36
  TRELLO_OAUTH1: _ClassVar[ConnectorType]
37
37
  GOOGLE_DWD: _ClassVar[ConnectorType]
38
+ TRUSTED_IDP: _ClassVar[ConnectorType]
38
39
  CONNECTION_STATUS_UNSPECIFIED: ConnectorStatus
39
40
  ACTIVE: ConnectorStatus
40
41
  EXPIRED: ConnectorStatus
@@ -51,6 +52,7 @@ BASIC: ConnectorType
51
52
  OAUTH_M2M: ConnectorType
52
53
  TRELLO_OAUTH1: ConnectorType
53
54
  GOOGLE_DWD: ConnectorType
55
+ TRUSTED_IDP: ConnectorType
54
56
 
55
57
  class ListConnectedAccountsRequest(_message.Message):
56
58
  __slots__ = ("organization_id", "user_id", "connector", "identifier", "provider", "page_size", "page_token", "query", "connection_names")
@@ -299,14 +301,16 @@ class ConnectedAccountForList(_message.Message):
299
301
  def __init__(self, identifier: _Optional[str] = ..., provider: _Optional[str] = ..., status: _Optional[_Union[ConnectorStatus, str]] = ..., authorization_type: _Optional[_Union[ConnectorType, str]] = ..., token_expires_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., updated_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., connector: _Optional[str] = ..., last_used_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., id: _Optional[str] = ..., connection_id: _Optional[str] = ...) -> None: ...
300
302
 
301
303
  class AuthorizationDetails(_message.Message):
302
- __slots__ = ("oauth_token", "static_auth", "google_dwd")
304
+ __slots__ = ("oauth_token", "static_auth", "google_dwd", "trusted_idp")
303
305
  OAUTH_TOKEN_FIELD_NUMBER: _ClassVar[int]
304
306
  STATIC_AUTH_FIELD_NUMBER: _ClassVar[int]
305
307
  GOOGLE_DWD_FIELD_NUMBER: _ClassVar[int]
308
+ TRUSTED_IDP_FIELD_NUMBER: _ClassVar[int]
306
309
  oauth_token: OauthToken
307
310
  static_auth: StaticAuth
308
311
  google_dwd: GoogleDWDAuth
309
- def __init__(self, oauth_token: _Optional[_Union[OauthToken, _Mapping]] = ..., static_auth: _Optional[_Union[StaticAuth, _Mapping]] = ..., google_dwd: _Optional[_Union[GoogleDWDAuth, _Mapping]] = ...) -> None: ...
312
+ trusted_idp: TrustedIDPAuth
313
+ def __init__(self, oauth_token: _Optional[_Union[OauthToken, _Mapping]] = ..., static_auth: _Optional[_Union[StaticAuth, _Mapping]] = ..., google_dwd: _Optional[_Union[GoogleDWDAuth, _Mapping]] = ..., trusted_idp: _Optional[_Union[TrustedIDPAuth, _Mapping]] = ...) -> None: ...
310
314
 
311
315
  class GoogleDWDAuth(_message.Message):
312
316
  __slots__ = ("subject", "access_token", "scopes", "token_expires_at")
@@ -320,6 +324,20 @@ class GoogleDWDAuth(_message.Message):
320
324
  token_expires_at: _timestamp_pb2.Timestamp
321
325
  def __init__(self, subject: _Optional[str] = ..., access_token: _Optional[str] = ..., scopes: _Optional[_Iterable[str]] = ..., token_expires_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ...
322
326
 
327
+ class TrustedIDPAuth(_message.Message):
328
+ __slots__ = ("db_user", "access_key_id", "secret_access_key", "session_token", "expiry")
329
+ DB_USER_FIELD_NUMBER: _ClassVar[int]
330
+ ACCESS_KEY_ID_FIELD_NUMBER: _ClassVar[int]
331
+ SECRET_ACCESS_KEY_FIELD_NUMBER: _ClassVar[int]
332
+ SESSION_TOKEN_FIELD_NUMBER: _ClassVar[int]
333
+ EXPIRY_FIELD_NUMBER: _ClassVar[int]
334
+ db_user: str
335
+ access_key_id: str
336
+ secret_access_key: str
337
+ session_token: str
338
+ expiry: _timestamp_pb2.Timestamp
339
+ def __init__(self, db_user: _Optional[str] = ..., access_key_id: _Optional[str] = ..., secret_access_key: _Optional[str] = ..., session_token: _Optional[str] = ..., expiry: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ...
340
+
323
341
  class OauthToken(_message.Message):
324
342
  __slots__ = ("access_token", "refresh_token", "scopes", "domain")
325
343
  ACCESS_TOKEN_FIELD_NUMBER: _ClassVar[int]