scalekit-sdk-python 2.8.0__tar.gz → 2.9.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 (237) hide show
  1. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/PKG-INFO +1 -1
  2. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/_version.py +1 -1
  3. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/actions/actions.py +59 -6
  4. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/actions/models/responses/get_connected_account_auth_response.py +35 -0
  5. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/actions/types.py +2 -1
  6. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/connected_accounts.py +36 -0
  7. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/core.py +1 -1
  8. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/auth/auth_pb2.py +40 -38
  9. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/auth/auth_pb2.pyi +4 -2
  10. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/connected_accounts/connected_accounts_pb2.py +4 -2
  11. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/connected_accounts/connected_accounts_pb2_grpc.py +34 -0
  12. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit_sdk_python.egg-info/PKG-INFO +1 -1
  13. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/tests/test_actions.py +57 -0
  14. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/LICENSE +0 -0
  15. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/README.md +0 -0
  16. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/buf/__init__.py +0 -0
  17. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/buf/validate/__init__.py +0 -0
  18. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/buf/validate/expression_pb2.py +0 -0
  19. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/buf/validate/expression_pb2.pyi +0 -0
  20. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/buf/validate/expression_pb2_grpc.py +0 -0
  21. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/buf/validate/priv/__init__.py +0 -0
  22. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/buf/validate/priv/private_pb2.py +0 -0
  23. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/buf/validate/priv/private_pb2.pyi +0 -0
  24. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/buf/validate/priv/private_pb2_grpc.py +0 -0
  25. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/buf/validate/validate_pb2.py +0 -0
  26. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/buf/validate/validate_pb2.pyi +0 -0
  27. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/buf/validate/validate_pb2_grpc.py +0 -0
  28. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/pyproject.toml +0 -0
  29. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/__init__.py +0 -0
  30. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/actions/__init__.py +0 -0
  31. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/actions/frameworks/__init__.py +0 -0
  32. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/actions/frameworks/google_adk.py +0 -0
  33. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/actions/frameworks/langchain.py +0 -0
  34. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/actions/frameworks/types/__init__.py +0 -0
  35. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/actions/frameworks/types/google_adk_tool.py +0 -0
  36. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/actions/frameworks/util.py +0 -0
  37. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/actions/models/__init__.py +0 -0
  38. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/actions/models/mcp_config.py +0 -0
  39. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/actions/models/mcp_instance.py +0 -0
  40. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/actions/models/requests/__init__.py +0 -0
  41. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/actions/models/requests/create_connected_account_request.py +0 -0
  42. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/actions/models/requests/mcp_request.py +0 -0
  43. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/actions/models/requests/tool_request.py +0 -0
  44. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/actions/models/requests/update_connected_account_request.py +0 -0
  45. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/actions/models/responses/__init__.py +0 -0
  46. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/actions/models/responses/create_connected_account_response.py +0 -0
  47. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/actions/models/responses/create_mcp_config_response.py +0 -0
  48. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/actions/models/responses/create_mcp_response.py +0 -0
  49. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/actions/models/responses/delete_connected_account_response.py +0 -0
  50. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/actions/models/responses/delete_mcp_config_response.py +0 -0
  51. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/actions/models/responses/delete_mcp_instance_response.py +0 -0
  52. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/actions/models/responses/ensure_mcp_instance_response.py +0 -0
  53. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/actions/models/responses/execute_tool_response.py +0 -0
  54. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/actions/models/responses/get_mcp_instance_auth_state_response.py +0 -0
  55. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/actions/models/responses/get_mcp_instance_response.py +0 -0
  56. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/actions/models/responses/get_mcp_response.py +0 -0
  57. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/actions/models/responses/list_connected_accounts_response.py +0 -0
  58. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/actions/models/responses/list_mcp_configs_response.py +0 -0
  59. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/actions/models/responses/list_mcp_instances_response.py +0 -0
  60. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/actions/models/responses/magic_link_response.py +0 -0
  61. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/actions/models/responses/update_connected_account_response.py +0 -0
  62. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/actions/models/responses/update_mcp_config_response.py +0 -0
  63. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/actions/models/responses/update_mcp_instance_response.py +0 -0
  64. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/actions/models/responses/verify_connected_account_user_response.py +0 -0
  65. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/actions/models/tool_input_output.py +0 -0
  66. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/actions/models/tool_mapping.py +0 -0
  67. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/actions/modifier.py +0 -0
  68. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/auth.py +0 -0
  69. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/client.py +0 -0
  70. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/common/__init__.py +0 -0
  71. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/common/exceptions.py +0 -0
  72. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/common/scalekit.py +0 -0
  73. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/common/user.py +0 -0
  74. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/connection.py +0 -0
  75. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/constants/__init__.py +0 -0
  76. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/constants/user.py +0 -0
  77. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/directory.py +0 -0
  78. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/domain.py +0 -0
  79. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/m2m_client.py +0 -0
  80. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/mcp.py +0 -0
  81. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/organization.py +0 -0
  82. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/passwordless.py +0 -0
  83. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/permissions.py +0 -0
  84. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/role.py +0 -0
  85. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/sessions.py +0 -0
  86. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/token.py +0 -0
  87. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/tools.py +0 -0
  88. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/users.py +0 -0
  89. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/utils/__init__.py +0 -0
  90. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/utils/directory.py +0 -0
  91. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/__init__.py +0 -0
  92. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/auditlogs/__init__.py +0 -0
  93. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/auditlogs/auditlogs_pb2.py +0 -0
  94. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/auditlogs/auditlogs_pb2.pyi +0 -0
  95. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/auditlogs/auditlogs_pb2_grpc.py +0 -0
  96. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/auth/__init__.py +0 -0
  97. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/auth/auth_pb2_grpc.py +0 -0
  98. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/auth/passwordless_pb2.py +0 -0
  99. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/auth/passwordless_pb2.pyi +0 -0
  100. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/auth/passwordless_pb2_grpc.py +0 -0
  101. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/auth/totp_pb2.py +0 -0
  102. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/auth/totp_pb2.pyi +0 -0
  103. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/auth/totp_pb2_grpc.py +0 -0
  104. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/auth/webauthn_pb2.py +0 -0
  105. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/auth/webauthn_pb2.pyi +0 -0
  106. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/auth/webauthn_pb2_grpc.py +0 -0
  107. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/clients/__init__.py +0 -0
  108. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/clients/clients_pb2.py +0 -0
  109. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/clients/clients_pb2.pyi +0 -0
  110. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/clients/clients_pb2_grpc.py +0 -0
  111. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/commons/__init__.py +0 -0
  112. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/commons/commons_pb2.py +0 -0
  113. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/commons/commons_pb2.pyi +0 -0
  114. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/commons/commons_pb2_grpc.py +0 -0
  115. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/connected_accounts/__init__.py +0 -0
  116. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/connected_accounts/connected_accounts_pb2.pyi +0 -0
  117. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/connections/__init__.py +0 -0
  118. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/connections/connections_pb2.py +0 -0
  119. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/connections/connections_pb2.pyi +0 -0
  120. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/connections/connections_pb2_grpc.py +0 -0
  121. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/directories/__init__.py +0 -0
  122. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/directories/directories_pb2.py +0 -0
  123. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/directories/directories_pb2.pyi +0 -0
  124. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/directories/directories_pb2_grpc.py +0 -0
  125. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/domains/__init__.py +0 -0
  126. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/domains/domains_pb2.py +0 -0
  127. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/domains/domains_pb2.pyi +0 -0
  128. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/domains/domains_pb2_grpc.py +0 -0
  129. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/emails/__init__.py +0 -0
  130. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/emails/emails_pb2.py +0 -0
  131. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/emails/emails_pb2.pyi +0 -0
  132. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/emails/emails_pb2_grpc.py +0 -0
  133. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/environments/__init__.py +0 -0
  134. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/environments/environments_pb2.py +0 -0
  135. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/environments/environments_pb2.pyi +0 -0
  136. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/environments/environments_pb2_grpc.py +0 -0
  137. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/errdetails/__init__.py +0 -0
  138. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/errdetails/errdetails_pb2.py +0 -0
  139. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/errdetails/errdetails_pb2.pyi +0 -0
  140. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/errdetails/errdetails_pb2_grpc.py +0 -0
  141. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/events/__init__.py +0 -0
  142. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/events/events_pb2.py +0 -0
  143. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/events/events_pb2.pyi +0 -0
  144. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/events/events_pb2_grpc.py +0 -0
  145. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/interceptors/__init__.py +0 -0
  146. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/interceptors/interceptors_pb2.py +0 -0
  147. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/interceptors/interceptors_pb2.pyi +0 -0
  148. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/interceptors/interceptors_pb2_grpc.py +0 -0
  149. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/keys/__init__.py +0 -0
  150. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/keys/keys_pb2.py +0 -0
  151. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/keys/keys_pb2.pyi +0 -0
  152. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/keys/keys_pb2_grpc.py +0 -0
  153. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/mcp/__init__.py +0 -0
  154. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/mcp/mcp_pb2.py +0 -0
  155. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/mcp/mcp_pb2.pyi +0 -0
  156. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/mcp/mcp_pb2_grpc.py +0 -0
  157. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/members/__init__.py +0 -0
  158. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/members/members_pb2.py +0 -0
  159. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/members/members_pb2.pyi +0 -0
  160. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/members/members_pb2_grpc.py +0 -0
  161. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/migrations/__init__.py +0 -0
  162. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/migrations/migrations_pb2.py +0 -0
  163. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/migrations/migrations_pb2.pyi +0 -0
  164. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/migrations/migrations_pb2_grpc.py +0 -0
  165. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/options/__init__.py +0 -0
  166. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/options/options_pb2.py +0 -0
  167. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/options/options_pb2.pyi +0 -0
  168. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/options/options_pb2_grpc.py +0 -0
  169. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/organizations/__init__.py +0 -0
  170. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/organizations/organizations_pb2.py +0 -0
  171. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/organizations/organizations_pb2.pyi +0 -0
  172. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/organizations/organizations_pb2_grpc.py +0 -0
  173. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/providers/__init__.py +0 -0
  174. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/providers/providers_pb2.py +0 -0
  175. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/providers/providers_pb2.pyi +0 -0
  176. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/providers/providers_pb2_grpc.py +0 -0
  177. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/roles/__init__.py +0 -0
  178. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/roles/roles_pb2.py +0 -0
  179. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/roles/roles_pb2.pyi +0 -0
  180. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/roles/roles_pb2_grpc.py +0 -0
  181. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/secrets/__init__.py +0 -0
  182. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/secrets/secrets_pb2.py +0 -0
  183. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/secrets/secrets_pb2.pyi +0 -0
  184. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/secrets/secrets_pb2_grpc.py +0 -0
  185. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/sessions/__init__.py +0 -0
  186. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/sessions/sessions_pb2.py +0 -0
  187. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/sessions/sessions_pb2.pyi +0 -0
  188. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/sessions/sessions_pb2_grpc.py +0 -0
  189. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/tokens/__init__.py +0 -0
  190. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/tokens/tokens_pb2.py +0 -0
  191. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/tokens/tokens_pb2.pyi +0 -0
  192. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/tokens/tokens_pb2_grpc.py +0 -0
  193. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/tools/__init__.py +0 -0
  194. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/tools/tools_pb2.py +0 -0
  195. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/tools/tools_pb2.pyi +0 -0
  196. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/tools/tools_pb2_grpc.py +0 -0
  197. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/user_attributes/__init__.py +0 -0
  198. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/user_attributes/user_attributes_pb2.py +0 -0
  199. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/user_attributes/user_attributes_pb2.pyi +0 -0
  200. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/user_attributes/user_attributes_pb2_grpc.py +0 -0
  201. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/users/__init__.py +0 -0
  202. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/users/users_pb2.py +0 -0
  203. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/users/users_pb2.pyi +0 -0
  204. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/users/users_pb2_grpc.py +0 -0
  205. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/webhooks/__init__.py +0 -0
  206. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/webhooks/webhooks_pb2.py +0 -0
  207. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/webhooks/webhooks_pb2.pyi +0 -0
  208. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/webhooks/webhooks_pb2_grpc.py +0 -0
  209. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/workspaces/__init__.py +0 -0
  210. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/workspaces/workspaces_pb2.py +0 -0
  211. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/workspaces/workspaces_pb2.pyi +0 -0
  212. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/v1/workspaces/workspaces_pb2_grpc.py +0 -0
  213. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit/webauthn.py +0 -0
  214. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit_sdk_python.egg-info/SOURCES.txt +0 -0
  215. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit_sdk_python.egg-info/dependency_links.txt +0 -0
  216. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit_sdk_python.egg-info/requires.txt +0 -0
  217. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/scalekit_sdk_python.egg-info/top_level.txt +0 -0
  218. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/setup.cfg +0 -0
  219. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/setup.py +0 -0
  220. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/tests/test_connected_accounts.py +0 -0
  221. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/tests/test_connection.py +0 -0
  222. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/tests/test_directory.py +0 -0
  223. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/tests/test_domain.py +0 -0
  224. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/tests/test_m2m_client.py +0 -0
  225. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/tests/test_mcp.py +0 -0
  226. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/tests/test_org_roles.py +0 -0
  227. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/tests/test_organization.py +0 -0
  228. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/tests/test_passwordless.py +0 -0
  229. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/tests/test_permissions.py +0 -0
  230. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/tests/test_role_defaults_dependent.py +0 -0
  231. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/tests/test_roles.py +0 -0
  232. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/tests/test_sessions.py +0 -0
  233. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/tests/test_tokens.py +0 -0
  234. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/tests/test_tools.py +0 -0
  235. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/tests/test_user_roles_permissions.py +0 -0
  236. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.0}/tests/test_users.py +0 -0
  237. {scalekit_sdk_python-2.8.0 → scalekit_sdk_python-2.9.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.8.0
3
+ Version: 2.9.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.8.0"
3
+ __version__ = "2.9.0"
@@ -1,6 +1,6 @@
1
1
  from typing import Optional, Any, List, Dict, Union
2
2
  import requests
3
- from scalekit.actions.types import ToolRequest,ExecuteToolResponse,MagicLinkResponse,ListConnectedAccountsResponse,DeleteConnectedAccountResponse,GetConnectedAccountAuthResponse,ToolInput, \
3
+ from scalekit.actions.types import ToolRequest,ExecuteToolResponse,MagicLinkResponse,ListConnectedAccountsResponse,DeleteConnectedAccountResponse,GetConnectedAccountAuthResponse,GetConnectedAccountDetailsResponse,ToolInput, \
4
4
  UpdateConnectedAccountResponse,CreateMcpConfigResponse,ListMcpConfigsResponse,UpdateMcpConfigResponse,DeleteMcpConfigResponse, \
5
5
  EnsureMcpInstanceResponse,UpdateMcpInstanceResponse,GetMcpInstanceResponse,ListMcpInstancesResponse,DeleteMcpInstanceResponse,GetMcpInstanceAuthStateResponse, \
6
6
  McpConfig,McpConfigConnectionToolMapping,VerifyConnectedAccountUserResponse
@@ -323,7 +323,51 @@ class ActionClient:
323
323
 
324
324
  # Convert proto to our GetConnectedAccountAuthResponse class
325
325
  return GetConnectedAccountAuthResponse.from_proto(proto_response)
326
-
326
+
327
+ def get_connected_account_details(
328
+ self,
329
+ connection_name: Optional[str] = None,
330
+ identifier: Optional[str] = None,
331
+ connected_account_id: Optional[str] = None,
332
+ **kwargs
333
+ ) -> GetConnectedAccountDetailsResponse:
334
+ """
335
+ Get connected account details by identifier, without auth credentials.
336
+
337
+ Use this instead of :meth:`get_connected_account` when you only need
338
+ account metadata (status, connector, api_config, etc.) and do not
339
+ require the access/refresh tokens.
340
+
341
+ You must provide **one** of the following to identify the connected account:
342
+
343
+ - ``connection_name`` **and** ``identifier`` — use when you know the
344
+ connector name and the end-user's identifier (e.g. email address).
345
+ - ``connected_account_id`` — use when you already hold the Scalekit
346
+ connected account ID.
347
+
348
+ :param connection_name: Connector identifier, e.g. ``"salesforce-1hpnGzcD"``.
349
+ Required when ``connected_account_id`` is not provided.
350
+ :type connection_name: str
351
+ :param identifier: End-user identifier tied to the connected account,
352
+ e.g. ``"john.doe"``. Required when ``connected_account_id`` is not provided.
353
+ :type identifier: str
354
+ :param connected_account_id: Scalekit connected account ID. When supplied,
355
+ ``connection_name`` and ``identifier`` are ignored.
356
+ :type connected_account_id: str
357
+
358
+ :returns:
359
+ GetConnectedAccountDetailsResponse containing account metadata
360
+ without auth credentials
361
+ :rtype: GetConnectedAccountDetailsResponse
362
+ """
363
+ result_tuple = self.connected_accounts.get_connected_account_details_by_identifier(
364
+ connector=connection_name,
365
+ identifier=identifier,
366
+ connected_account_id=connected_account_id
367
+ )
368
+ proto_response = result_tuple[0]
369
+ return GetConnectedAccountDetailsResponse.from_proto(proto_response)
370
+
327
371
  def add_modifier(self, modifier: Modifier) -> None:
328
372
  """Add a modifier to the private list"""
329
373
  self._modifiers.append(modifier)
@@ -383,6 +427,7 @@ class ActionClient:
383
427
  query_params: Optional[Dict[str, Any]] = None,
384
428
  body: Optional[Any] = None,
385
429
  form_data: Optional[Dict[str, Any]] = None,
430
+ raw_body: Optional[Union[bytes, str]] = None,
386
431
  headers: Optional[Dict[str, str]] = None,
387
432
  **kwargs,
388
433
  ) -> requests.Response:
@@ -403,6 +448,14 @@ class ActionClient:
403
448
  :type body: Optional[Any]
404
449
  :param form_data: Request body sent as URL-encoded form data
405
450
  :type form_data: Optional[Dict[str, Any]]
451
+ :param raw_body: Raw request body sent as-is, without any serialization.
452
+ Use this **only** when the request payload is not JSON — for example,
453
+ when the downstream API expects an XML body, a plain-text payload, or
454
+ any other non-JSON content type. For JSON payloads use ``body`` instead.
455
+ When ``raw_body`` is provided it takes priority over both ``body`` and
456
+ ``form_data``. You must also pass a matching ``Content-Type`` header via
457
+ ``headers`` (e.g. ``"Content-Type": "application/xml"``).
458
+ :type raw_body: Optional[Union[bytes, str]]
406
459
  :param headers: Additional HTTP headers to merge into the request
407
460
  :type headers: Optional[Dict[str, str]]
408
461
 
@@ -439,8 +492,8 @@ class ActionClient:
439
492
  method=method.upper(),
440
493
  url=url,
441
494
  params=params,
442
- json=body,
443
- data=form_data,
495
+ json=body if raw_body is None else None,
496
+ data=raw_body or form_data,
444
497
  headers=req_headers,
445
498
  timeout=timeout,
446
499
  **kwargs,
@@ -454,8 +507,8 @@ class ActionClient:
454
507
  method=method.upper(),
455
508
  url=url,
456
509
  params=params,
457
- json=body,
458
- data=form_data,
510
+ json=body if raw_body is None else None,
511
+ data=raw_body if raw_body is not None else form_data,
459
512
  headers=req_headers,
460
513
  timeout=timeout,
461
514
  **kwargs,
@@ -119,6 +119,41 @@ class GetConnectedAccountAuthResponse(BaseModel):
119
119
 
120
120
  class Config:
121
121
  """Pydantic configuration"""
122
+ validate_assignment = True
123
+ json_encoders = {
124
+ datetime: lambda v: v.isoformat() if v else None
125
+ }
126
+
127
+
128
+ class GetConnectedAccountDetailsResponse(BaseModel):
129
+ """Connected account details response — same structure as GetConnectedAccountAuthResponse
130
+ but auth credentials (access/refresh tokens) are omitted by the server."""
131
+
132
+ connected_account: Optional[ConnectedAccount] = Field(
133
+ None,
134
+ description="Connected account details (without auth credentials)"
135
+ )
136
+
137
+ @classmethod
138
+ def from_proto(cls, proto_response) -> 'GetConnectedAccountDetailsResponse':
139
+ """
140
+ Create GetConnectedAccountDetailsResponse from protobuf GetConnectedAccountByIdentifierResponse
141
+
142
+ :param proto_response: The protobuf GetConnectedAccountByIdentifierResponse object
143
+ :returns:
144
+ GetConnectedAccountDetailsResponse instance
145
+ """
146
+ connected_account = None
147
+ if proto_response.connected_account:
148
+ connected_account = ConnectedAccount.from_proto(proto_response.connected_account)
149
+ return cls(connected_account=connected_account)
150
+
151
+ def to_dict(self) -> dict:
152
+ return {
153
+ "connected_account": self.connected_account.model_dump() if self.connected_account else None
154
+ }
155
+
156
+ class Config:
122
157
  validate_assignment = True
123
158
  json_encoders = {
124
159
  datetime: lambda v: v.isoformat() if v else None
@@ -6,7 +6,7 @@ from .models.responses.execute_tool_response import ExecuteToolResponse
6
6
  from .models.responses.magic_link_response import MagicLinkResponse
7
7
  from .models.responses.list_connected_accounts_response import ListConnectedAccountsResponse
8
8
  from .models.responses.delete_connected_account_response import DeleteConnectedAccountResponse
9
- from .models.responses.get_connected_account_auth_response import GetConnectedAccountAuthResponse
9
+ from .models.responses.get_connected_account_auth_response import GetConnectedAccountAuthResponse, GetConnectedAccountDetailsResponse
10
10
  from .models.responses.create_connected_account_response import CreateConnectedAccountResponse
11
11
  from .models.responses.update_connected_account_response import UpdateConnectedAccountResponse
12
12
  from .models.responses.create_mcp_response import CreateMcpResponse
@@ -38,6 +38,7 @@ __all__ = [
38
38
  'ListConnectedAccountsResponse',
39
39
  'DeleteConnectedAccountResponse',
40
40
  'GetConnectedAccountAuthResponse',
41
+ 'GetConnectedAccountDetailsResponse',
41
42
  'CreateConnectedAccountResponse',
42
43
  'UpdateConnectedAccountResponse',
43
44
  'CreateMcpResponse',
@@ -275,6 +275,42 @@ class ConnectedAccountsClient:
275
275
  ),
276
276
  )
277
277
 
278
+ def get_connected_account_details_by_identifier(
279
+ self,
280
+ connector: str,
281
+ identifier: str,
282
+ organization_id: Optional[str] = None,
283
+ user_id: Optional[str] = None,
284
+ connected_account_id: Optional[str] = None
285
+ ) -> GetConnectedAccountByIdentifierResponse:
286
+ """
287
+ Method to get connected account details (without auth credentials) by identifier
288
+
289
+ :param connector : Connector identifier
290
+ :type : ``` str ```
291
+ :param identifier : Identifier for the connector
292
+ :type : ``` str ```
293
+ :param organization_id : Organization ID
294
+ :type : ``` str ```
295
+ :param user_id : User ID
296
+ :type : ``` str ```
297
+ :param connected_account_id : ID of the connected account
298
+ :type : ``` str ```
299
+
300
+ :returns:
301
+ Get Connected Account By Identifier Response (without auth credentials)
302
+ """
303
+ return self.core_client.grpc_exec(
304
+ self.connected_accounts_service.GetConnectedAccountDetails.with_call,
305
+ GetConnectedAccountByIdentifierRequest(
306
+ organization_id=organization_id,
307
+ user_id=user_id,
308
+ connector=connector,
309
+ identifier=identifier,
310
+ id=connected_account_id
311
+ ),
312
+ )
313
+
278
314
  def verify_connected_account_user(
279
315
  self,
280
316
  auth_request_id: str,
@@ -29,7 +29,7 @@ class CoreClient:
29
29
 
30
30
  sdk_version = f"Scalekit-Python/{_sdk_version}"
31
31
  # YYYYMMDD
32
- api_version = "20260421"
32
+ api_version = "20260428"
33
33
  user_agent = f"{sdk_version} Python/{platform.python_version()} ({platform.system()}; {platform.architecture()}"
34
34
 
35
35
  def __init__(self, env_url, client_id, client_secret):
@@ -25,7 +25,7 @@ from scalekit.v1.connections import connections_pb2 as scalekit_dot_v1_dot_conne
25
25
  from scalekit.v1.options import options_pb2 as scalekit_dot_v1_dot_options_dot_options__pb2
26
26
 
27
27
 
28
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1bscalekit/v1/auth/auth.proto\x12\x10scalekit.v1.auth\x1a\x1b\x62uf/validate/validate.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1bgoogle/api/visibility.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a.protoc-gen-openapiv2/options/annotations.proto\x1a!scalekit/v1/commons/commons.proto\x1a)scalekit/v1/connections/connections.proto\x1a!scalekit/v1/options/options.proto\"0\n\x16ListAuthMethodsRequest\x12\x16\n\x06intent\x18\x01 \x01(\tR\x06intent\"Z\n\x17ListAuthMethodsResponse\x12?\n\x0c\x61uth_methods\x18\x01 \x03(\x0b\x32\x1c.scalekit.v1.auth.AuthMethodR\x0b\x61uthMethods\"\x89\t\n\nAuthMethod\x12}\n\rconnection_id\x18\x01 \x01(\tBX\x92\x41L22Unique identifier for the connection to be toggledJ\x16\"conn_121312434123312\"\xbaH\x06r\x04\x10\x01\x18 R\x0c\x63onnectionId\x12P\n\x0f\x63onnection_type\x18\x02 \x01(\x0e\x32\'.scalekit.v1.connections.ConnectionTypeR\x0e\x63onnectionType\x12\x1a\n\x08provider\x18\x03 \x01(\tR\x08provider\x12\x93\x01\n\x13\x61uth_initiation_uri\x18\x04 \x01(\tBc\x92\x41V2\x1eURI to initiate the connectionJ4\"https://sso.acmecorp.com/sso/v1/oidc/conn_123/init\"\xbaH\x07r\x05\x10\x01\x18\xff\x01R\x11\x61uthInitiationUri\x12z\n\x11passwordless_type\x18\x05 \x01(\x0e\x32).scalekit.v1.connections.PasswordlessTypeB\x1d\x92\x41\x1a\x32\x11Passwordless typeJ\x05\"OTP\"H\x00R\x10passwordlessType\x88\x01\x01\x12W\n\x15\x63ode_challenge_length\x18\x06 \x01(\rB\x1e\x92\x41\x1b\x32\x16Length of the OTP codeJ\x01\x36H\x01R\x13\x63odeChallengeLength\x88\x01\x01\x12\xa3\x01\n!enable_webauthn_auto_registration\x18\x07 \x01(\x08\x42S\x92\x41P2GIndicates if WebAuthn auto-registration is enabled for this auth method:\x05\x66\x61lseH\x02R\x1e\x65nableWebauthnAutoRegistration\x88\x01\x01\x12\x63\n\x13show_passkey_button\x18\x08 \x01(\x08\x42.\x92\x41+2#Show passkey button on login screen:\x04trueH\x03R\x11showPasskeyButton\x88\x01\x01\x12\x83\x01\n!enable_webauthn_conditional_login\x18\t \x01(\x08\x42\x33\x92\x41\x30\x32(Allow autofill of passkeys in login page:\x04trueH\x04R\x1e\x65nableWebauthnConditionalLogin\x88\x01\x01\x42\x14\n\x12_passwordless_typeB\x18\n\x16_code_challenge_lengthB$\n\"_enable_webauthn_auto_registrationB\x16\n\x14_show_passkey_buttonB$\n\"_enable_webauthn_conditional_login\"m\n\x1a\x44iscoveryAuthMethodRequest\x12O\n\x11\x64iscovery_request\x18\x02 \x01(\x0b\x32\".scalekit.v1.auth.DiscoveryRequestR\x10\x64iscoveryRequest\"\xb3\x01\n\x10\x44iscoveryRequest\x12\x63\n\x05\x65mail\x18\x01 \x01(\tBM\x92\x41\x41\x32*user identifier like email or phone numberJ\x13\"john@acmecorp.com\"\xbaH\x06r\x04\x10\x03\x18\x64R\x05\x65mail\x12:\n\x06intent\x18\x02 \x01(\x0e\x32\x18.scalekit.v1.auth.IntentB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x06intent\"\\\n\x1b\x44iscoveryAuthMethodResponse\x12=\n\x0b\x61uth_method\x18\x01 \x01(\x0b\x32\x1c.scalekit.v1.auth.AuthMethodR\nauthMethod\"\x1e\n\x1cGetAuthCustomizationsRequest\"\xab\x01\n\x0ePortalSettings\x12\x98\x01\n\x0f\x63ustom_branding\x18\x01 \x01(\x08\x42o\x92\x41l2dIndicates whether custom portal branding is enabled for this workspace based on billing subscriptionJ\x04trueR\x0e\x63ustomBranding\"\xb2\x01\n\x1dGetAuthCustomizationsResponse\x12N\n\x16\x63ustomization_settings\x18\x02 \x01(\x0b\x32\x17.google.protobuf.StructR\x15\x63ustomizationSettings\x12\x41\n\x08settings\x18\x03 \x01(\x0b\x32 .scalekit.v1.auth.PortalSettingsB\x03\xe0\x41\x03R\x08settings\"N\n\x17GetAuthFeaturesResponse\x12\x33\n\x08\x66\x65\x61tures\x18\x01 \x01(\x0b\x32\x17.google.protobuf.StructR\x08\x66\x65\x61tures\"U\n\x1cVerifyPasswordLessOtpRequest\x12\x35\n\x07otp_req\x18\x02 \x01(\x0b\x32\x1c.scalekit.v1.auth.OTPRequestR\x06otpReq\"\x1f\n\x1dVerifyPasswordLessOtpResponse\"i\n\nOTPRequest\x12[\n\x0e\x63ode_challenge\x18\x01 \x01(\tB4\x92\x41(2\x1cOTP sent to the user\'s emailJ\x08\"123456\"\xbaH\x06r\x04\x10\x05\x18\x06R\rcodeChallenge\"\xd4\x01\n\x1dListUserOrganizationsResponse\x12\x44\n\rorganizations\x18\x01 \x03(\x0b\x32\x1e.scalekit.v1.auth.OrganizationR\rorganizations\x12\x31\n\x04user\x18\x02 \x01(\x0b\x32\x1d.scalekit.v1.auth.UserDetailsR\x04user\x12:\n\x06intent\x18\x03 \x01(\x0e\x32\x18.scalekit.v1.auth.IntentB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x06intent\"\x8b\x04\n\x0cOrganization\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12+\n\x11membership_status\x18\x03 \x01(\tR\x10membershipStatus\x12=\n\x18invitation_inviter_email\x18\x04 \x01(\tH\x00R\x16invitationInviterEmail\x88\x01\x01\x12U\n\x16invitation_accepted_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x01R\x14invitationAcceptedAt\x88\x01\x01\x12S\n\x15invitation_created_at\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x02R\x13invitationCreatedAt\x88\x01\x01\x12S\n\x15invitation_expires_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x03R\x13invitationExpiresAt\x88\x01\x01\x42\x1b\n\x19_invitation_inviter_emailB\x19\n\x17_invitation_accepted_atB\x18\n\x16_invitation_created_atB\x18\n\x16_invitation_expires_at\"_\n\x0bUserDetails\x12\x14\n\x05\x65mail\x18\x01 \x01(\tR\x05\x65mail\x12\x1d\n\nfirst_name\x18\x02 \x01(\tR\tfirstName\x12\x1b\n\tlast_name\x18\x03 \x01(\tR\x08lastName\"\xc4\x01\n\x19SignupOrganizationRequest\x12+\n\x11organization_name\x18\x01 \x01(\tR\x10organizationName\x12\x1d\n\nfirst_name\x18\x02 \x01(\tR\tfirstName\x12\x1b\n\tlast_name\x18\x03 \x01(\tR\x08lastName\x12\x1b\n\tfull_name\x18\x04 \x01(\tR\x08\x66ullName\x12!\n\x0cphone_number\x18\x05 \x01(\tR\x0bphoneNumber\"r\n\x1aSignupOrganizationResponse\x12\'\n\x0forganization_id\x18\x01 \x01(\tR\x0eorganizationId\x12+\n\x11organization_name\x18\x02 \x01(\tR\x10organizationName\"\xd6\x02\n\x1dUpdateLoginUserDetailsRequest\x12v\n\rconnection_id\x18\x01 \x01(\tBQ\x92\x41\x45\x32+Connection ID. Unique ID for the connectionJ\x16\"conn_121312434123312\"\xbaH\x06r\x04\x10\x01\x18 R\x0c\x63onnectionId\x12\x90\x01\n\x10login_request_id\x18\x02 \x01(\tBf\x92\x41]2BLogin Request ID that was shared as part of authorization initiateJ\x17\"lri_73415099636808061\"\xbaH\x03\xc8\x01\x01R\x0eloginRequestId\x12*\n\x04user\x18\x03 \x01(\x0b\x32\x16.scalekit.v1.auth.UserR\x04user\"\xb6\x0e\n\x04User\x12\x83\x01\n\x03sub\x18\x01 \x01(\tBq\x92\x41g2WSubject identifier for the user (typically a unique user ID from the identity provider)J\x0c\"1234567890\"\xbaH\x04r\x02\x10\x01R\x03sub\x12R\n\x05\x65mail\x18\x02 \x01(\tB<\x92\x41\x32\x32\x1cUser\'s primary email addressJ\x12\"user@example.com\"\xbaH\x04r\x02\x10\x01R\x05\x65mail\x12=\n\ngiven_name\x18\x03 \x01(\tB\x1e\x92\x41\x1b\x32\x11User\'s first nameJ\x06\"John\"R\tgivenName\x12=\n\x0b\x66\x61mily_name\x18\x04 \x01(\tB\x1c\x92\x41\x19\x32\x10User\'s last nameJ\x05\"Doe\"R\nfamilyName\x12\x88\x01\n\x0e\x65mail_verified\x18\x05 \x01(\x08\x42\x61\x92\x41^2VIndicates whether the user\'s email address has been verified by the identity provider.J\x04trueR\remailVerified\x12\x63\n\x0cphone_number\x18\x06 \x01(\tB@\x92\x41=2,User\'s primary phone number in E.164 format.J\r\"+1234567890\"R\x0bphoneNumber\x12\x95\x01\n\x15phone_number_verified\x18\x07 \x01(\x08\x42\x61\x92\x41^2UIndicates whether the user\'s phone number has been verified by the identity provider.J\x05\x66\x61lseR\x13phoneNumberVerified\x12\x42\n\x04name\x18\x08 \x01(\tB.\x92\x41+2\x1d\x46ull display name of the userJ\n\"John Doe\"R\x04name\x12\x62\n\x12preferred_username\x18\t \x01(\tB3\x92\x41\x30\x32#User\'s preferred username or handleJ\t\"johndoe\"R\x11preferredUsername\x12\x62\n\x07picture\x18\n \x01(\tBH\x92\x41\x45\x32!URL to the user\'s profile pictureJ \"https://example.com/avatar.jpg\"R\x07picture\x12X\n\x06gender\x18\x0b \x01(\tB@\x92\x41=23User\'s gender as reported by the identity provider.J\x06\"male\"R\x06gender\x12\x65\n\x06locale\x18\x0c \x01(\tBM\x92\x41J2?User\'s locale or language preference (IETF BCP 47 language tag)J\x07\"en-US\"R\x06locale\x12\x66\n\x06groups\x18\r \x03(\tBN\x92\x41K2/List of group names or IDs the user belongs to.J\x18[\"admins\", \"developers\"]R\x06groups\x12\xf2\x01\n\x11\x63ustom_attributes\x18\x0e \x01(\x0b\x32\x17.google.protobuf.StructB\xab\x01\x92\x41\xa7\x01\x32mCustom attributes for the user, represented as a key-value map. Used for additional identity provider claims.J6{\"department\": \"Engineering\", \"employee_id\": \"E12345\"}R\x10\x63ustomAttributes\x12\xb1\x01\n\x18organization_external_id\x18\x0f \x01(\tBr\x92\x41o2EIdentifier for the user\xe2\x80\x99s organization within the identity providerJ&\"132d085d-d89d-4a2e-95bb-49bde680d14f\"H\x00R\x16organizationExternalId\x88\x01\x01\x12S\n\x05roles\x18\x10 \x03(\tB=\x92\x41:2#List of roles assigned to the user.J\x13[\"admin\", \"editor\"]R\x05rolesB\x1b\n\x19_organization_external_id\"\xb1\x02\n\x14GetAuthStateResponse\x12:\n\nauth_state\x18\x01 \x01(\x0e\x32\x1b.scalekit.v1.auth.AuthStateR\tauthState\x12\x31\n\x04user\x18\x02 \x01(\x0b\x32\x1d.scalekit.v1.auth.UserDetailsR\x04user\x12\xa9\x01\n\nlogin_hint\x18\x03 \x01(\tB\x89\x01\x92\x41\x85\x01\x32oLogin hint from the original authorize request. Typically an email address used to pre-fill the login UI input.J\x12\"user@example.com\"R\tloginHint\"\x8c\x01\n\x13GetAuthErrorRequest\x12u\n\x08\x65rror_id\x18\x01 \x01(\tBZ\x92\x41H2.Unique identifier for the authentication errorJ\x16\"err_1234567890abcdef\"\xbaH\x0cr\n\x10\x01\x18@:\x04\x65rr_R\x07\x65rrorId\"Y\n\x14GetAuthErrorResponse\x12\x14\n\x05\x65rror\x18\x01 \x01(\tR\x05\x65rror\x12+\n\x11\x65rror_description\x18\x02 \x01(\tR\x10\x65rrorDescription*:\n\x06Intent\x12\x16\n\x12INTENT_UNSPECIFIED\x10\x00\x12\x0b\n\x07sign_in\x10\x01\x12\x0b\n\x07sign_up\x10\x02*\xb4\x04\n\tAuthState\x12\x1a\n\x16\x41UTH_STATE_UNSPECIFIED\x10\x00\x12\x1e\n\x1a\x41UTHENTICATION_IN_PROGRESS\x10\x01\x12\x19\n\x15ORGANIZATION_SWITCHER\x10\x02\x12\x19\n\x15ORGANIZATION_SELECTED\x10\x03\x12\x17\n\x13ORGANIZATION_SIGNUP\x10\x04\x12 \n\x1cORGANIZATION_SWITCHER_SIGNUP\x10\x05\x12\x1c\n\x18OTP_VERIFICATION_PENDING\x10\x06\x12\x13\n\x0fMAGIC_LINK_SENT\x10\x07\x12&\n\"LINK_SENT_OTP_VERIFICATION_PENDING\x10\x08\x12\x10\n\x0cOTP_VERIFIED\x10\t\x12\x11\n\rLINK_VERIFIED\x10\n\x12\x15\n\x11SSO_AUTHENTICATED\x10\x0b\x12\x14\n\x10ORG_USER_CREATED\x10\x0c\x12\x1c\n\x18\x41UTHENTICATION_COMPLETED\x10\r\x12\x19\n\x15\x41UTHENTICATION_FAILED\x10\x0e\x12\x15\n\x11WEBAUTHN_VERIFIED\x10\x0f\x12 \n\x1cVERIFICATION_MAGIC_LINK_SENT\x10\x10\x12$\n VERIFICATION_MAGIC_LINK_OTP_SENT\x10\x11\x12\x19\n\x15VERIFICATION_OTP_SENT\x10\x12\x12\x1a\n\x16VERIFICATION_COMPLETED\x10\x13\x32\xa7\x10\n\x0b\x41uthService\x12\x98\x01\n\x0fListAuthMethods\x12(.scalekit.v1.auth.ListAuthMethodsRequest\x1a).scalekit.v1.auth.ListAuthMethodsResponse\"0\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x15\x12\x13/api/v1/authmethods\x12\xba\x01\n\x13\x44iscoveryAuthMethod\x12,.scalekit.v1.auth.DiscoveryAuthMethodRequest\x1a-.scalekit.v1.auth.DiscoveryAuthMethodResponse\"F\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02+\"\x16/api/v1/auth:discovery:\x11\x64iscovery_request\x12\xc0\x01\n\x15VerifyPasswordLessOtp\x12..scalekit.v1.auth.VerifyPasswordLessOtpRequest\x1a/.scalekit.v1.auth.VerifyPasswordLessOtpResponse\"F\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02+\" /api/v1/auth/passwordless:verify:\x07otp_req\x12\x83\x01\n\x12ResendPasswordless\x12\x16.google.protobuf.Empty\x1a\x16.google.protobuf.Empty\"=\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\"\" /api/v1/auth/passwordless:resend\x12\x99\x01\n\x15ListUserOrganizations\x12\x16.google.protobuf.Empty\x1a/.scalekit.v1.auth.ListUserOrganizationsResponse\"7\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x1c\x12\x1a/api/v1/auth:organizations\x12\xa4\x01\n\x12SignupOrganization\x12+.scalekit.v1.auth.SignupOrganizationRequest\x1a,.scalekit.v1.auth.SignupOrganizationResponse\"3\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x18\"\x13/api/v1/auth:signup:\x01*\x12\x7f\n\x0cGetAuthState\x12\x16.google.protobuf.Empty\x1a&.scalekit.v1.auth.GetAuthStateResponse\"/\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x14\x12\x12/api/v1/auth/state\x12\xb6\x01\n\x0cGetAuthError\x12%.scalekit.v1.auth.GetAuthErrorRequest\x1a&.scalekit.v1.auth.GetAuthErrorResponse\"W\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02<\x12\x19/api/v1/errors/{error_id}Z\x1f\x12\x1d/api/v1/auth/error/{error_id}\x12j\n\x06Logout\x12\x16.google.protobuf.Empty\x1a\x16.google.protobuf.Empty\"0\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x15\"\x13/api/v1/auth/logout\x12\xb2\x01\n\x15GetAuthCustomizations\x12..scalekit.v1.auth.GetAuthCustomizationsRequest\x1a/.scalekit.v1.auth.GetAuthCustomizationsResponse\"8\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x1d\x12\x1b/api/v1/auth:customizations\x12\x88\x01\n\x0fGetAuthFeatures\x12\x16.google.protobuf.Empty\x1a).scalekit.v1.auth.GetAuthFeaturesResponse\"2\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x17\x12\x15/api/v1/auth:features\x12\xcd\x02\n\x16UpdateLoginUserDetails\x12/.scalekit.v1.auth.UpdateLoginUserDetailsRequest\x1a\x16.google.protobuf.Empty\"\xe9\x01\x92\x41z\n\x0b\x43onnections\x12%Update User Details for login request\x1a%Update User Details for login requestJ\x1d\n\x03\x32\x30\x30\x12\x16\n\x14\x44\x65leted Successfully\x82\xb5\x18\x02\x18\x04\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02Q\"I/api/v1/connections/{connection_id}/auth-requests/{login_request_id}/user:\x04userB0Z.github.com/scalekit-inc/scalekit/pkg/grpc/authb\x06proto3')
28
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1bscalekit/v1/auth/auth.proto\x12\x10scalekit.v1.auth\x1a\x1b\x62uf/validate/validate.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1bgoogle/api/visibility.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a.protoc-gen-openapiv2/options/annotations.proto\x1a!scalekit/v1/commons/commons.proto\x1a)scalekit/v1/connections/connections.proto\x1a!scalekit/v1/options/options.proto\"0\n\x16ListAuthMethodsRequest\x12\x16\n\x06intent\x18\x01 \x01(\tR\x06intent\"Z\n\x17ListAuthMethodsResponse\x12?\n\x0c\x61uth_methods\x18\x01 \x03(\x0b\x32\x1c.scalekit.v1.auth.AuthMethodR\x0b\x61uthMethods\"\x89\t\n\nAuthMethod\x12}\n\rconnection_id\x18\x01 \x01(\tBX\x92\x41L22Unique identifier for the connection to be toggledJ\x16\"conn_121312434123312\"\xbaH\x06r\x04\x10\x01\x18 R\x0c\x63onnectionId\x12P\n\x0f\x63onnection_type\x18\x02 \x01(\x0e\x32\'.scalekit.v1.connections.ConnectionTypeR\x0e\x63onnectionType\x12\x1a\n\x08provider\x18\x03 \x01(\tR\x08provider\x12\x93\x01\n\x13\x61uth_initiation_uri\x18\x04 \x01(\tBc\x92\x41V2\x1eURI to initiate the connectionJ4\"https://sso.acmecorp.com/sso/v1/oidc/conn_123/init\"\xbaH\x07r\x05\x10\x01\x18\xff\x01R\x11\x61uthInitiationUri\x12z\n\x11passwordless_type\x18\x05 \x01(\x0e\x32).scalekit.v1.connections.PasswordlessTypeB\x1d\x92\x41\x1a\x32\x11Passwordless typeJ\x05\"OTP\"H\x00R\x10passwordlessType\x88\x01\x01\x12W\n\x15\x63ode_challenge_length\x18\x06 \x01(\rB\x1e\x92\x41\x1b\x32\x16Length of the OTP codeJ\x01\x36H\x01R\x13\x63odeChallengeLength\x88\x01\x01\x12\xa3\x01\n!enable_webauthn_auto_registration\x18\x07 \x01(\x08\x42S\x92\x41P2GIndicates if WebAuthn auto-registration is enabled for this auth method:\x05\x66\x61lseH\x02R\x1e\x65nableWebauthnAutoRegistration\x88\x01\x01\x12\x63\n\x13show_passkey_button\x18\x08 \x01(\x08\x42.\x92\x41+2#Show passkey button on login screen:\x04trueH\x03R\x11showPasskeyButton\x88\x01\x01\x12\x83\x01\n!enable_webauthn_conditional_login\x18\t \x01(\x08\x42\x33\x92\x41\x30\x32(Allow autofill of passkeys in login page:\x04trueH\x04R\x1e\x65nableWebauthnConditionalLogin\x88\x01\x01\x42\x14\n\x12_passwordless_typeB\x18\n\x16_code_challenge_lengthB$\n\"_enable_webauthn_auto_registrationB\x16\n\x14_show_passkey_buttonB$\n\"_enable_webauthn_conditional_login\"m\n\x1a\x44iscoveryAuthMethodRequest\x12O\n\x11\x64iscovery_request\x18\x02 \x01(\x0b\x32\".scalekit.v1.auth.DiscoveryRequestR\x10\x64iscoveryRequest\"\xb3\x01\n\x10\x44iscoveryRequest\x12\x63\n\x05\x65mail\x18\x01 \x01(\tBM\x92\x41\x41\x32*user identifier like email or phone numberJ\x13\"john@acmecorp.com\"\xbaH\x06r\x04\x10\x03\x18\x64R\x05\x65mail\x12:\n\x06intent\x18\x02 \x01(\x0e\x32\x18.scalekit.v1.auth.IntentB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x06intent\"\\\n\x1b\x44iscoveryAuthMethodResponse\x12=\n\x0b\x61uth_method\x18\x01 \x01(\x0b\x32\x1c.scalekit.v1.auth.AuthMethodR\nauthMethod\"\x1e\n\x1cGetAuthCustomizationsRequest\"\x8f\x03\n\x0ePortalSettings\x12\x98\x01\n\x0f\x63ustom_branding\x18\x01 \x01(\x08\x42o\x92\x41l2dIndicates whether custom portal branding is enabled for this workspace based on billing subscriptionJ\x04trueR\x0e\x63ustomBranding\x12\xc5\x01\n\x17new_self_serve_sso_scim\x18\x02 \x01(\x08\x42\x89\x01\x92\x41\x85\x01\x32|Indicates whether the new self-serve SSO/SCIM flow should be shown in the hosted pages (rollout-driven, not billing-derived)J\x05\x66\x61lseH\x00R\x13newSelfServeSsoScim\x88\x01\x01\x42\x1a\n\x18_new_self_serve_sso_scim\"\xb2\x01\n\x1dGetAuthCustomizationsResponse\x12N\n\x16\x63ustomization_settings\x18\x02 \x01(\x0b\x32\x17.google.protobuf.StructR\x15\x63ustomizationSettings\x12\x41\n\x08settings\x18\x03 \x01(\x0b\x32 .scalekit.v1.auth.PortalSettingsB\x03\xe0\x41\x03R\x08settings\"N\n\x17GetAuthFeaturesResponse\x12\x33\n\x08\x66\x65\x61tures\x18\x01 \x01(\x0b\x32\x17.google.protobuf.StructR\x08\x66\x65\x61tures\"U\n\x1cVerifyPasswordLessOtpRequest\x12\x35\n\x07otp_req\x18\x02 \x01(\x0b\x32\x1c.scalekit.v1.auth.OTPRequestR\x06otpReq\"\x1f\n\x1dVerifyPasswordLessOtpResponse\"i\n\nOTPRequest\x12[\n\x0e\x63ode_challenge\x18\x01 \x01(\tB4\x92\x41(2\x1cOTP sent to the user\'s emailJ\x08\"123456\"\xbaH\x06r\x04\x10\x05\x18\x06R\rcodeChallenge\"\xd4\x01\n\x1dListUserOrganizationsResponse\x12\x44\n\rorganizations\x18\x01 \x03(\x0b\x32\x1e.scalekit.v1.auth.OrganizationR\rorganizations\x12\x31\n\x04user\x18\x02 \x01(\x0b\x32\x1d.scalekit.v1.auth.UserDetailsR\x04user\x12:\n\x06intent\x18\x03 \x01(\x0e\x32\x18.scalekit.v1.auth.IntentB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x06intent\"\x8b\x04\n\x0cOrganization\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12+\n\x11membership_status\x18\x03 \x01(\tR\x10membershipStatus\x12=\n\x18invitation_inviter_email\x18\x04 \x01(\tH\x00R\x16invitationInviterEmail\x88\x01\x01\x12U\n\x16invitation_accepted_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x01R\x14invitationAcceptedAt\x88\x01\x01\x12S\n\x15invitation_created_at\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x02R\x13invitationCreatedAt\x88\x01\x01\x12S\n\x15invitation_expires_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x03R\x13invitationExpiresAt\x88\x01\x01\x42\x1b\n\x19_invitation_inviter_emailB\x19\n\x17_invitation_accepted_atB\x18\n\x16_invitation_created_atB\x18\n\x16_invitation_expires_at\"_\n\x0bUserDetails\x12\x14\n\x05\x65mail\x18\x01 \x01(\tR\x05\x65mail\x12\x1d\n\nfirst_name\x18\x02 \x01(\tR\tfirstName\x12\x1b\n\tlast_name\x18\x03 \x01(\tR\x08lastName\"\xc4\x01\n\x19SignupOrganizationRequest\x12+\n\x11organization_name\x18\x01 \x01(\tR\x10organizationName\x12\x1d\n\nfirst_name\x18\x02 \x01(\tR\tfirstName\x12\x1b\n\tlast_name\x18\x03 \x01(\tR\x08lastName\x12\x1b\n\tfull_name\x18\x04 \x01(\tR\x08\x66ullName\x12!\n\x0cphone_number\x18\x05 \x01(\tR\x0bphoneNumber\"r\n\x1aSignupOrganizationResponse\x12\'\n\x0forganization_id\x18\x01 \x01(\tR\x0eorganizationId\x12+\n\x11organization_name\x18\x02 \x01(\tR\x10organizationName\"\xd6\x02\n\x1dUpdateLoginUserDetailsRequest\x12v\n\rconnection_id\x18\x01 \x01(\tBQ\x92\x41\x45\x32+Connection ID. Unique ID for the connectionJ\x16\"conn_121312434123312\"\xbaH\x06r\x04\x10\x01\x18 R\x0c\x63onnectionId\x12\x90\x01\n\x10login_request_id\x18\x02 \x01(\tBf\x92\x41]2BLogin Request ID that was shared as part of authorization initiateJ\x17\"lri_73415099636808061\"\xbaH\x03\xc8\x01\x01R\x0eloginRequestId\x12*\n\x04user\x18\x03 \x01(\x0b\x32\x16.scalekit.v1.auth.UserR\x04user\"\xb6\x0e\n\x04User\x12\x83\x01\n\x03sub\x18\x01 \x01(\tBq\x92\x41g2WSubject identifier for the user (typically a unique user ID from the identity provider)J\x0c\"1234567890\"\xbaH\x04r\x02\x10\x01R\x03sub\x12R\n\x05\x65mail\x18\x02 \x01(\tB<\x92\x41\x32\x32\x1cUser\'s primary email addressJ\x12\"user@example.com\"\xbaH\x04r\x02\x10\x01R\x05\x65mail\x12=\n\ngiven_name\x18\x03 \x01(\tB\x1e\x92\x41\x1b\x32\x11User\'s first nameJ\x06\"John\"R\tgivenName\x12=\n\x0b\x66\x61mily_name\x18\x04 \x01(\tB\x1c\x92\x41\x19\x32\x10User\'s last nameJ\x05\"Doe\"R\nfamilyName\x12\x88\x01\n\x0e\x65mail_verified\x18\x05 \x01(\x08\x42\x61\x92\x41^2VIndicates whether the user\'s email address has been verified by the identity provider.J\x04trueR\remailVerified\x12\x63\n\x0cphone_number\x18\x06 \x01(\tB@\x92\x41=2,User\'s primary phone number in E.164 format.J\r\"+1234567890\"R\x0bphoneNumber\x12\x95\x01\n\x15phone_number_verified\x18\x07 \x01(\x08\x42\x61\x92\x41^2UIndicates whether the user\'s phone number has been verified by the identity provider.J\x05\x66\x61lseR\x13phoneNumberVerified\x12\x42\n\x04name\x18\x08 \x01(\tB.\x92\x41+2\x1d\x46ull display name of the userJ\n\"John Doe\"R\x04name\x12\x62\n\x12preferred_username\x18\t \x01(\tB3\x92\x41\x30\x32#User\'s preferred username or handleJ\t\"johndoe\"R\x11preferredUsername\x12\x62\n\x07picture\x18\n \x01(\tBH\x92\x41\x45\x32!URL to the user\'s profile pictureJ \"https://example.com/avatar.jpg\"R\x07picture\x12X\n\x06gender\x18\x0b \x01(\tB@\x92\x41=23User\'s gender as reported by the identity provider.J\x06\"male\"R\x06gender\x12\x65\n\x06locale\x18\x0c \x01(\tBM\x92\x41J2?User\'s locale or language preference (IETF BCP 47 language tag)J\x07\"en-US\"R\x06locale\x12\x66\n\x06groups\x18\r \x03(\tBN\x92\x41K2/List of group names or IDs the user belongs to.J\x18[\"admins\", \"developers\"]R\x06groups\x12\xf2\x01\n\x11\x63ustom_attributes\x18\x0e \x01(\x0b\x32\x17.google.protobuf.StructB\xab\x01\x92\x41\xa7\x01\x32mCustom attributes for the user, represented as a key-value map. Used for additional identity provider claims.J6{\"department\": \"Engineering\", \"employee_id\": \"E12345\"}R\x10\x63ustomAttributes\x12\xb1\x01\n\x18organization_external_id\x18\x0f \x01(\tBr\x92\x41o2EIdentifier for the user\xe2\x80\x99s organization within the identity providerJ&\"132d085d-d89d-4a2e-95bb-49bde680d14f\"H\x00R\x16organizationExternalId\x88\x01\x01\x12S\n\x05roles\x18\x10 \x03(\tB=\x92\x41:2#List of roles assigned to the user.J\x13[\"admin\", \"editor\"]R\x05rolesB\x1b\n\x19_organization_external_id\"\xb1\x02\n\x14GetAuthStateResponse\x12:\n\nauth_state\x18\x01 \x01(\x0e\x32\x1b.scalekit.v1.auth.AuthStateR\tauthState\x12\x31\n\x04user\x18\x02 \x01(\x0b\x32\x1d.scalekit.v1.auth.UserDetailsR\x04user\x12\xa9\x01\n\nlogin_hint\x18\x03 \x01(\tB\x89\x01\x92\x41\x85\x01\x32oLogin hint from the original authorize request. Typically an email address used to pre-fill the login UI input.J\x12\"user@example.com\"R\tloginHint\"\x8c\x01\n\x13GetAuthErrorRequest\x12u\n\x08\x65rror_id\x18\x01 \x01(\tBZ\x92\x41H2.Unique identifier for the authentication errorJ\x16\"err_1234567890abcdef\"\xbaH\x0cr\n\x10\x01\x18@:\x04\x65rr_R\x07\x65rrorId\"Y\n\x14GetAuthErrorResponse\x12\x14\n\x05\x65rror\x18\x01 \x01(\tR\x05\x65rror\x12+\n\x11\x65rror_description\x18\x02 \x01(\tR\x10\x65rrorDescription*:\n\x06Intent\x12\x16\n\x12INTENT_UNSPECIFIED\x10\x00\x12\x0b\n\x07sign_in\x10\x01\x12\x0b\n\x07sign_up\x10\x02*\xb4\x04\n\tAuthState\x12\x1a\n\x16\x41UTH_STATE_UNSPECIFIED\x10\x00\x12\x1e\n\x1a\x41UTHENTICATION_IN_PROGRESS\x10\x01\x12\x19\n\x15ORGANIZATION_SWITCHER\x10\x02\x12\x19\n\x15ORGANIZATION_SELECTED\x10\x03\x12\x17\n\x13ORGANIZATION_SIGNUP\x10\x04\x12 \n\x1cORGANIZATION_SWITCHER_SIGNUP\x10\x05\x12\x1c\n\x18OTP_VERIFICATION_PENDING\x10\x06\x12\x13\n\x0fMAGIC_LINK_SENT\x10\x07\x12&\n\"LINK_SENT_OTP_VERIFICATION_PENDING\x10\x08\x12\x10\n\x0cOTP_VERIFIED\x10\t\x12\x11\n\rLINK_VERIFIED\x10\n\x12\x15\n\x11SSO_AUTHENTICATED\x10\x0b\x12\x14\n\x10ORG_USER_CREATED\x10\x0c\x12\x1c\n\x18\x41UTHENTICATION_COMPLETED\x10\r\x12\x19\n\x15\x41UTHENTICATION_FAILED\x10\x0e\x12\x15\n\x11WEBAUTHN_VERIFIED\x10\x0f\x12 \n\x1cVERIFICATION_MAGIC_LINK_SENT\x10\x10\x12$\n VERIFICATION_MAGIC_LINK_OTP_SENT\x10\x11\x12\x19\n\x15VERIFICATION_OTP_SENT\x10\x12\x12\x1a\n\x16VERIFICATION_COMPLETED\x10\x13\x32\xa7\x10\n\x0b\x41uthService\x12\x98\x01\n\x0fListAuthMethods\x12(.scalekit.v1.auth.ListAuthMethodsRequest\x1a).scalekit.v1.auth.ListAuthMethodsResponse\"0\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x15\x12\x13/api/v1/authmethods\x12\xba\x01\n\x13\x44iscoveryAuthMethod\x12,.scalekit.v1.auth.DiscoveryAuthMethodRequest\x1a-.scalekit.v1.auth.DiscoveryAuthMethodResponse\"F\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02+\"\x16/api/v1/auth:discovery:\x11\x64iscovery_request\x12\xc0\x01\n\x15VerifyPasswordLessOtp\x12..scalekit.v1.auth.VerifyPasswordLessOtpRequest\x1a/.scalekit.v1.auth.VerifyPasswordLessOtpResponse\"F\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02+\" /api/v1/auth/passwordless:verify:\x07otp_req\x12\x83\x01\n\x12ResendPasswordless\x12\x16.google.protobuf.Empty\x1a\x16.google.protobuf.Empty\"=\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\"\" /api/v1/auth/passwordless:resend\x12\x99\x01\n\x15ListUserOrganizations\x12\x16.google.protobuf.Empty\x1a/.scalekit.v1.auth.ListUserOrganizationsResponse\"7\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x1c\x12\x1a/api/v1/auth:organizations\x12\xa4\x01\n\x12SignupOrganization\x12+.scalekit.v1.auth.SignupOrganizationRequest\x1a,.scalekit.v1.auth.SignupOrganizationResponse\"3\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x18\"\x13/api/v1/auth:signup:\x01*\x12\x7f\n\x0cGetAuthState\x12\x16.google.protobuf.Empty\x1a&.scalekit.v1.auth.GetAuthStateResponse\"/\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x14\x12\x12/api/v1/auth/state\x12\xb6\x01\n\x0cGetAuthError\x12%.scalekit.v1.auth.GetAuthErrorRequest\x1a&.scalekit.v1.auth.GetAuthErrorResponse\"W\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02<\x12\x19/api/v1/errors/{error_id}Z\x1f\x12\x1d/api/v1/auth/error/{error_id}\x12j\n\x06Logout\x12\x16.google.protobuf.Empty\x1a\x16.google.protobuf.Empty\"0\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x15\"\x13/api/v1/auth/logout\x12\xb2\x01\n\x15GetAuthCustomizations\x12..scalekit.v1.auth.GetAuthCustomizationsRequest\x1a/.scalekit.v1.auth.GetAuthCustomizationsResponse\"8\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x1d\x12\x1b/api/v1/auth:customizations\x12\x88\x01\n\x0fGetAuthFeatures\x12\x16.google.protobuf.Empty\x1a).scalekit.v1.auth.GetAuthFeaturesResponse\"2\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x17\x12\x15/api/v1/auth:features\x12\xcd\x02\n\x16UpdateLoginUserDetails\x12/.scalekit.v1.auth.UpdateLoginUserDetailsRequest\x1a\x16.google.protobuf.Empty\"\xe9\x01\x92\x41z\n\x0b\x43onnections\x12%Update User Details for login request\x1a%Update User Details for login requestJ\x1d\n\x03\x32\x30\x30\x12\x16\n\x14\x44\x65leted Successfully\x82\xb5\x18\x02\x18\x04\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02Q\"I/api/v1/connections/{connection_id}/auth-requests/{login_request_id}/user:\x04userB0Z.github.com/scalekit-inc/scalekit/pkg/grpc/authb\x06proto3')
29
29
 
30
30
  _globals = globals()
31
31
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -53,6 +53,8 @@ if not _descriptor._USE_C_DESCRIPTORS:
53
53
  _globals['_DISCOVERYREQUEST'].fields_by_name['intent']._serialized_options = b'\272H\005\202\001\002\020\001'
54
54
  _globals['_PORTALSETTINGS'].fields_by_name['custom_branding']._loaded_options = None
55
55
  _globals['_PORTALSETTINGS'].fields_by_name['custom_branding']._serialized_options = b'\222Al2dIndicates whether custom portal branding is enabled for this workspace based on billing subscriptionJ\004true'
56
+ _globals['_PORTALSETTINGS'].fields_by_name['new_self_serve_sso_scim']._loaded_options = None
57
+ _globals['_PORTALSETTINGS'].fields_by_name['new_self_serve_sso_scim']._serialized_options = b'\222A\205\0012|Indicates whether the new self-serve SSO/SCIM flow should be shown in the hosted pages (rollout-driven, not billing-derived)J\005false'
56
58
  _globals['_GETAUTHCUSTOMIZATIONSRESPONSE'].fields_by_name['settings']._loaded_options = None
57
59
  _globals['_GETAUTHCUSTOMIZATIONSRESPONSE'].fields_by_name['settings']._serialized_options = b'\340A\003'
58
60
  _globals['_OTPREQUEST'].fields_by_name['code_challenge']._loaded_options = None
@@ -123,10 +125,10 @@ if not _descriptor._USE_C_DESCRIPTORS:
123
125
  _globals['_AUTHSERVICE'].methods_by_name['GetAuthFeatures']._serialized_options = b'\202\265\030\002\030\001\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\002\027\022\025/api/v1/auth:features'
124
126
  _globals['_AUTHSERVICE'].methods_by_name['UpdateLoginUserDetails']._loaded_options = None
125
127
  _globals['_AUTHSERVICE'].methods_by_name['UpdateLoginUserDetails']._serialized_options = b'\222Az\n\013Connections\022%Update User Details for login request\032%Update User Details for login requestJ\035\n\003200\022\026\n\024Deleted Successfully\202\265\030\002\030\004\372\322\344\223\002\t\022\007PREVIEW\202\323\344\223\002Q\"I/api/v1/connections/{connection_id}/auth-requests/{login_request_id}/user:\004user'
126
- _globals['_INTENT']._serialized_start=6699
127
- _globals['_INTENT']._serialized_end=6757
128
- _globals['_AUTHSTATE']._serialized_start=6760
129
- _globals['_AUTHSTATE']._serialized_end=7324
128
+ _globals['_INTENT']._serialized_start=6927
129
+ _globals['_INTENT']._serialized_end=6985
130
+ _globals['_AUTHSTATE']._serialized_start=6988
131
+ _globals['_AUTHSTATE']._serialized_end=7552
130
132
  _globals['_LISTAUTHMETHODSREQUEST']._serialized_start=423
131
133
  _globals['_LISTAUTHMETHODSREQUEST']._serialized_end=471
132
134
  _globals['_LISTAUTHMETHODSRESPONSE']._serialized_start=473
@@ -142,37 +144,37 @@ if not _descriptor._USE_C_DESCRIPTORS:
142
144
  _globals['_GETAUTHCUSTOMIZATIONSREQUEST']._serialized_start=2116
143
145
  _globals['_GETAUTHCUSTOMIZATIONSREQUEST']._serialized_end=2146
144
146
  _globals['_PORTALSETTINGS']._serialized_start=2149
145
- _globals['_PORTALSETTINGS']._serialized_end=2320
146
- _globals['_GETAUTHCUSTOMIZATIONSRESPONSE']._serialized_start=2323
147
- _globals['_GETAUTHCUSTOMIZATIONSRESPONSE']._serialized_end=2501
148
- _globals['_GETAUTHFEATURESRESPONSE']._serialized_start=2503
149
- _globals['_GETAUTHFEATURESRESPONSE']._serialized_end=2581
150
- _globals['_VERIFYPASSWORDLESSOTPREQUEST']._serialized_start=2583
151
- _globals['_VERIFYPASSWORDLESSOTPREQUEST']._serialized_end=2668
152
- _globals['_VERIFYPASSWORDLESSOTPRESPONSE']._serialized_start=2670
153
- _globals['_VERIFYPASSWORDLESSOTPRESPONSE']._serialized_end=2701
154
- _globals['_OTPREQUEST']._serialized_start=2703
155
- _globals['_OTPREQUEST']._serialized_end=2808
156
- _globals['_LISTUSERORGANIZATIONSRESPONSE']._serialized_start=2811
157
- _globals['_LISTUSERORGANIZATIONSRESPONSE']._serialized_end=3023
158
- _globals['_ORGANIZATION']._serialized_start=3026
159
- _globals['_ORGANIZATION']._serialized_end=3549
160
- _globals['_USERDETAILS']._serialized_start=3551
161
- _globals['_USERDETAILS']._serialized_end=3646
162
- _globals['_SIGNUPORGANIZATIONREQUEST']._serialized_start=3649
163
- _globals['_SIGNUPORGANIZATIONREQUEST']._serialized_end=3845
164
- _globals['_SIGNUPORGANIZATIONRESPONSE']._serialized_start=3847
165
- _globals['_SIGNUPORGANIZATIONRESPONSE']._serialized_end=3961
166
- _globals['_UPDATELOGINUSERDETAILSREQUEST']._serialized_start=3964
167
- _globals['_UPDATELOGINUSERDETAILSREQUEST']._serialized_end=4306
168
- _globals['_USER']._serialized_start=4309
169
- _globals['_USER']._serialized_end=6155
170
- _globals['_GETAUTHSTATERESPONSE']._serialized_start=6158
171
- _globals['_GETAUTHSTATERESPONSE']._serialized_end=6463
172
- _globals['_GETAUTHERRORREQUEST']._serialized_start=6466
173
- _globals['_GETAUTHERRORREQUEST']._serialized_end=6606
174
- _globals['_GETAUTHERRORRESPONSE']._serialized_start=6608
175
- _globals['_GETAUTHERRORRESPONSE']._serialized_end=6697
176
- _globals['_AUTHSERVICE']._serialized_start=7327
177
- _globals['_AUTHSERVICE']._serialized_end=9414
147
+ _globals['_PORTALSETTINGS']._serialized_end=2548
148
+ _globals['_GETAUTHCUSTOMIZATIONSRESPONSE']._serialized_start=2551
149
+ _globals['_GETAUTHCUSTOMIZATIONSRESPONSE']._serialized_end=2729
150
+ _globals['_GETAUTHFEATURESRESPONSE']._serialized_start=2731
151
+ _globals['_GETAUTHFEATURESRESPONSE']._serialized_end=2809
152
+ _globals['_VERIFYPASSWORDLESSOTPREQUEST']._serialized_start=2811
153
+ _globals['_VERIFYPASSWORDLESSOTPREQUEST']._serialized_end=2896
154
+ _globals['_VERIFYPASSWORDLESSOTPRESPONSE']._serialized_start=2898
155
+ _globals['_VERIFYPASSWORDLESSOTPRESPONSE']._serialized_end=2929
156
+ _globals['_OTPREQUEST']._serialized_start=2931
157
+ _globals['_OTPREQUEST']._serialized_end=3036
158
+ _globals['_LISTUSERORGANIZATIONSRESPONSE']._serialized_start=3039
159
+ _globals['_LISTUSERORGANIZATIONSRESPONSE']._serialized_end=3251
160
+ _globals['_ORGANIZATION']._serialized_start=3254
161
+ _globals['_ORGANIZATION']._serialized_end=3777
162
+ _globals['_USERDETAILS']._serialized_start=3779
163
+ _globals['_USERDETAILS']._serialized_end=3874
164
+ _globals['_SIGNUPORGANIZATIONREQUEST']._serialized_start=3877
165
+ _globals['_SIGNUPORGANIZATIONREQUEST']._serialized_end=4073
166
+ _globals['_SIGNUPORGANIZATIONRESPONSE']._serialized_start=4075
167
+ _globals['_SIGNUPORGANIZATIONRESPONSE']._serialized_end=4189
168
+ _globals['_UPDATELOGINUSERDETAILSREQUEST']._serialized_start=4192
169
+ _globals['_UPDATELOGINUSERDETAILSREQUEST']._serialized_end=4534
170
+ _globals['_USER']._serialized_start=4537
171
+ _globals['_USER']._serialized_end=6383
172
+ _globals['_GETAUTHSTATERESPONSE']._serialized_start=6386
173
+ _globals['_GETAUTHSTATERESPONSE']._serialized_end=6691
174
+ _globals['_GETAUTHERRORREQUEST']._serialized_start=6694
175
+ _globals['_GETAUTHERRORREQUEST']._serialized_end=6834
176
+ _globals['_GETAUTHERRORRESPONSE']._serialized_start=6836
177
+ _globals['_GETAUTHERRORRESPONSE']._serialized_end=6925
178
+ _globals['_AUTHSERVICE']._serialized_start=7555
179
+ _globals['_AUTHSERVICE']._serialized_end=9642
178
180
  # @@protoc_insertion_point(module_scope)
@@ -128,10 +128,12 @@ class GetAuthCustomizationsRequest(_message.Message):
128
128
  def __init__(self) -> None: ...
129
129
 
130
130
  class PortalSettings(_message.Message):
131
- __slots__ = ("custom_branding",)
131
+ __slots__ = ("custom_branding", "new_self_serve_sso_scim")
132
132
  CUSTOM_BRANDING_FIELD_NUMBER: _ClassVar[int]
133
+ NEW_SELF_SERVE_SSO_SCIM_FIELD_NUMBER: _ClassVar[int]
133
134
  custom_branding: bool
134
- def __init__(self, custom_branding: bool = ...) -> None: ...
135
+ new_self_serve_sso_scim: bool
136
+ def __init__(self, custom_branding: bool = ..., new_self_serve_sso_scim: bool = ...) -> None: ...
135
137
 
136
138
  class GetAuthCustomizationsResponse(_message.Message):
137
139
  __slots__ = ("customization_settings", "settings")
@@ -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\"\xa9\x0c\n\x1cListConnectedAccountsRequest\x12\xb1\x01\n\x0forganization_id\x18\x01 \x01(\tB\x82\x01\x92\x41v2]Filter by organization ID. Returns only connected accounts associated with this organization.J\x15\"org_121312434123312\"\xbaH\x06r\x04\x10\x00\x18 H\x00R\x0eorganizationId\x88\x01\x01\x12\x91\x01\n\x07user_id\x18\x02 \x01(\tBs\x92\x41g2MFilter by user ID. Returns only connected accounts associated with this user.J\x16\"user_121312434123312\"\xbaH\x06r\x04\x10\x00\x18 H\x01R\x06userId\x88\x01\x01\x12\xef\x01\n\tconnector\x18\x03 \x01(\tB\xcb\x01\x92\x41\xa9\x01\x32\x9c\x01\x46ilter by connector type. Connector identifier such as \'notion\', \'slack\', \'google\', etc. Alphanumeric with spaces, hyphens, underscores, and colons allowed.J\x08\"notion\"\xbaH\x1br\x19\x10\x00\x18\x90\x03\x32\x12^[a-zA-Z0-9_: -]*$H\x02R\tconnector\x88\x01\x01\x12\xdb\x01\n\nidentifier\x18\x04 \x01(\tB\xb5\x01\x92\x41\xa8\x01\x32\x91\x01\x46ilter by account identifier. The unique identifier for the connected account within the third-party service (e.g., email address, workspace ID).J\x12\"user@example.com\"\xbaH\x06r\x04\x10\x00\x18\x64H\x03R\nidentifier\x88\x01\x01\x12\x9d\x01\n\x08provider\x18\x05 \x01(\tB\x80\x01\x92\x41t2hFilter by OAuth provider. The authentication provider name such as \'google\', \'microsoft\', \'github\', etc.J\x08\"google\"\xbaH\x06r\x04\x10\x00\x18\x32R\x08provider\x12\x9b\x01\n\tpage_size\x18\x06 \x01(\rB~\x92\x41r2lMaximum number of connected accounts to return per page. Must be between 0 and 100. Default is typically 10.J\x02\x31\x30\xbaH\x06*\x04\x10\x64(\x00R\x08pageSize\x12\xcb\x01\n\npage_token\x18\x07 \x01(\tB\xab\x01\x92\x41\x9e\x01\x32\x83\x01Pagination token from a previous response. Use the next_page_token value from ListConnectedAccountsResponse to fetch the next page.J\x16\"eyJvZmZzZXQiOjEwfQ==\"\xbaH\x06r\x04\x10\x00\x18\x64R\tpageToken\x12\xa7\x01\n\x05query\x18\x08 \x01(\tB\x90\x01\x92\x41\x83\x01\x32qText search query to filter connected accounts by name, identifier, or other searchable fields. Case-insensitive.J\x0e\"john@example\"\xbaH\x06r\x04\x10\x00\x18\x64R\x05queryB\x12\n\x10_organization_idB\n\n\x08_user_idB\x0c\n\n_connectorB\r\n\x0b_identifier\"\xbb\x06\n\x1dListConnectedAccountsResponse\x12\xdc\x01\n\x12\x63onnected_accounts\x18\x01 \x03(\x0b\x32\x37.scalekit.v1.connected_accounts.ConnectedAccountForListBt\x92\x41q2oList of connected accounts matching the filter criteria. Excludes sensitive authorization details for security.R\x11\x63onnectedAccounts\x12\x99\x01\n\ntotal_size\x18\x02 \x01(\rBz\x92\x41w2pTotal count of connected accounts matching the filter criteria across all pages. Use for calculating pagination.J\x03\x31\x30\x30R\ttotalSize\x12\xd2\x01\n\x0fnext_page_token\x18\x03 \x01(\tB\xa9\x01\x92\x41\x9c\x01\x32\x81\x01Pagination token for retrieving the next page. Empty if this is the last page. Pass this value to page_token in the next request.J\x16\"eyJvZmZzZXQiOjIwfQ==\"\xbaH\x06r\x04\x10\x00\x18 R\rnextPageToken\x12\xc9\x01\n\x0fprev_page_token\x18\x04 \x01(\tB\xa0\x01\x92\x41\x93\x01\x32}Pagination token for retrieving the previous page. Empty if this is the first page. Pass this value to page_token to go back.J\x12\"eyJvZmZzZXQiOjB9\"\xbaH\x06r\x04\x10\x00\x18 R\rprevPageToken\"\xe0\x06\n\x1eSearchConnectedAccountsRequest\x12\xb9\x01\n\x05query\x18\x01 \x01(\tB\xa2\x01\x92\x41\x91\x01\x32\x86\x01Search term to match against connected account identifiers, providers, or connectors. Must be at least 3 characters. Case insensitive.J\x06google\xbaH\nr\x05\x10\x03\x18\xc8\x01\xc8\x01\x01R\x05query\x12\x85\x01\n\tpage_size\x18\x02 \x01(\rBh\x92\x41^2XMaximum number of connected accounts to return per page. Value must be between 1 and 30.J\x02\x33\x30\xbaH\x04*\x02\x18\x1eR\x08pageSize\x12\xa5\x01\n\npage_token\x18\x03 \x01(\tB\x85\x01\x92\x41\x81\x01\x32\x61Token from a previous response for pagination. Provide this to retrieve the next page of results.J\x1c\x65yJwYWdlIjoyLCJsaW1pdCI6MzB9R\tpageToken\x12i\n\rconnection_id\x18\x04 \x01(\tBD\x92\x41\x38\x32*Connection ID to filter connected accountsJ\n\"conn_123\"\xbaH\x06r\x04\x10\x00\x18 R\x0c\x63onnectionId:\xe6\x01\x92\x41\xe2\x01\n\x9c\x01*\x19Search Connected Accounts2\x7fSearch for connected accounts in your environment using a text query that matches against identifiers, providers, or connectors2Aquery=google&page_size=30&page_token=eyJwYWdlIjoyLCJsaW1pdCI6MzB9\"\x87\x05\n\x1fSearchConnectedAccountsResponse\x12\xcc\x01\n\x12\x63onnected_accounts\x18\x01 \x03(\x0b\x32\x37.scalekit.v1.connected_accounts.ConnectedAccountForListBd\x92\x41\x61\x32_List of connected accounts matching the search query. Excludes sensitive authorization details.R\x11\x63onnectedAccounts\x12l\n\ntotal_size\x18\x02 \x01(\rBM\x92\x41J2CTotal count of accounts matching the search query across all pages.J\x03\x31\x30\x30R\ttotalSize\x12\x91\x01\n\x0fnext_page_token\x18\x03 \x01(\tBi\x92\x41]2CPagination token for the next page. Empty if this is the last page.J\x16\"eyJvZmZzZXQiOjMwfQ==\"\xbaH\x06r\x04\x10\x00\x18 R\rnextPageToken\x12\x92\x01\n\x0fprev_page_token\x18\x04 \x01(\tBj\x92\x41^2HPagination token for the previous page. Empty if this is the first page.J\x12\"eyJvZmZzZXQiOjB9\"\xbaH\x06r\x04\x10\x00\x18 R\rprevPageToken\"\xa8\x07\n\x1d\x43reateConnectedAccountRequest\x12t\n\x0forganization_id\x18\x01 \x01(\tBF\x92\x41:2!Organization ID for the connectorJ\x15\"org_121312434123312\"\xbaH\x06r\x04\x10\x00\x18 H\x00R\x0eorganizationId\x88\x01\x01\x12]\n\x07user_id\x18\x02 \x01(\tB?\x92\x41\x33\x32\x19User ID for the connectorJ\x16\"user_121312434123312\"\xbaH\x06r\x04\x10\x00\x18 H\x01R\x06userId\x88\x01\x01\x12\x64\n\tconnector\x18\x03 \x01(\tBA\x92\x41 2\x14\x43onnector identifierJ\x08\"notion\"\xbaH\x1br\x19\x10\x00\x18\x90\x03\x32\x12^[a-zA-Z0-9_: -]*$H\x02R\tconnector\x88\x01\x01\x12\xce\x01\n\nidentifier\x18\x04 \x01(\tB\xa8\x01\x92\x41\x9b\x01\x32\x84\x01The unique identifier for the connected account within the third-party service (e.g., email address, user ID, workspace identifier).J\x12\"user@example.com\"\xbaH\x06r\x04\x10\x00\x18\x64H\x03R\nidentifier\x88\x01\x01\x12\xbd\x02\n\x11\x63onnected_account\x18\x05 \x01(\x0b\x32\x36.scalekit.v1.connected_accounts.CreateConnectedAccountB\xd7\x01\x92\x41\xcd\x01\x32*Details of the connected account to createJ\x9e\x01{ \"authorization_type\": \"OAUTH2\", \"authorization_details\": { \"oauth_token\": { \"access_token\": \"...\", \"refresh_token\": \"...\", \"scopes\": [\"read\", \"write\"] } } }\xbaH\x03\xc8\x01\x01R\x10\x63onnectedAccountB\x12\n\x10_organization_idB\n\n\x08_user_idB\x0c\n\n_connectorB\r\n\x0b_identifier\"\x8d\x02\n\x1e\x43reateConnectedAccountResponse\x12\xea\x01\n\x11\x63onnected_account\x18\x01 \x01(\x0b\x32\x30.scalekit.v1.connected_accounts.ConnectedAccountB\x8a\x01\x92\x41\x86\x01\x32\x83\x01The newly created connected account with its unique identifier, status, and complete authorization details including access tokens.R\x10\x63onnectedAccount\"\x84\x08\n\x1dUpdateConnectedAccountRequest\x12t\n\x0forganization_id\x18\x01 \x01(\tBF\x92\x41:2!Organization ID for the connectorJ\x15\"org_121312434123312\"\xbaH\x06r\x04\x10\x00\x18 H\x00R\x0eorganizationId\x88\x01\x01\x12]\n\x07user_id\x18\x02 \x01(\tB?\x92\x41\x33\x32\x19User ID for the connectorJ\x16\"user_121312434123312\"\xbaH\x06r\x04\x10\x00\x18 H\x01R\x06userId\x88\x01\x01\x12P\n\tconnector\x18\x03 \x01(\tB-\x92\x41 2\x14\x43onnector identifierJ\x08\"notion\"\xbaH\x07r\x05\x10\x00\x18\x90\x03H\x02R\tconnector\x88\x01\x01\x12\xce\x01\n\nidentifier\x18\x04 \x01(\tB\xa8\x01\x92\x41\x9b\x01\x32\x84\x01The unique identifier for the connected account within the third-party service (e.g., email address, user ID, workspace identifier).J\x12\"user@example.com\"\xbaH\x06r\x04\x10\x00\x18\x64H\x03R\nidentifier\x88\x01\x01\x12g\n\x02id\x18\x06 \x01(\tBR\x92\x41\x41\x32\x35Unique identifier for the connected account to updateJ\x08\"ca_123\"\xbaH\x0br\t\x10\x00\x18 :\x03\x63\x61_H\x04R\x02id\x88\x01\x01\x12\xbd\x02\n\x11\x63onnected_account\x18\x05 \x01(\x0b\x32\x36.scalekit.v1.connected_accounts.UpdateConnectedAccountB\xd7\x01\x92\x41\xcd\x01\x32*Details of the connected account to updateJ\x9e\x01{ \"authorization_type\": \"OAUTH2\", \"authorization_details\": { \"oauth_token\": { \"access_token\": \"...\", \"refresh_token\": \"...\", \"scopes\": [\"read\", \"write\"] } } }\xbaH\x03\xc8\x01\x01R\x10\x63onnectedAccountB\x12\n\x10_organization_idB\n\n\x08_user_idB\x0c\n\n_connectorB\r\n\x0b_identifierB\x05\n\x03_id\"\xf7\x01\n\x1eUpdateConnectedAccountResponse\x12\xd4\x01\n\x11\x63onnected_account\x18\x01 \x01(\x0b\x32\x30.scalekit.v1.connected_accounts.ConnectedAccountBu\x92\x41r2pThe updated connected account with refreshed credentials, new token expiry, and modified configuration settings.R\x10\x63onnectedAccount\"\xd8\x05\n\x1d\x44\x65leteConnectedAccountRequest\x12t\n\x0forganization_id\x18\x01 \x01(\tBF\x92\x41:2!Organization ID for the connectorJ\x15\"org_121312434123312\"\xbaH\x06r\x04\x10\x00\x18 H\x00R\x0eorganizationId\x88\x01\x01\x12]\n\x07user_id\x18\x02 \x01(\tB?\x92\x41\x33\x32\x19User ID for the connectorJ\x16\"user_121312434123312\"\xbaH\x06r\x04\x10\x00\x18 H\x01R\x06userId\x88\x01\x01\x12\x64\n\tconnector\x18\x03 \x01(\tBA\x92\x41 2\x14\x43onnector identifierJ\x08\"notion\"\xbaH\x1br\x19\x10\x00\x18\x90\x03\x32\x12^[a-zA-Z0-9_: -]*$H\x02R\tconnector\x88\x01\x01\x12\xce\x01\n\nidentifier\x18\x04 \x01(\tB\xa8\x01\x92\x41\x9b\x01\x32\x84\x01The unique identifier for the connected account within the third-party service (e.g., email address, user ID, workspace identifier).J\x12\"user@example.com\"\xbaH\x06r\x04\x10\x00\x18\x64H\x03R\nidentifier\x88\x01\x01\x12g\n\x02id\x18\x05 \x01(\tBR\x92\x41\x41\x32\x35Unique identifier for the connected account to deleteJ\x08\"ca_123\"\xbaH\x0br\t\x10\x00\x18 :\x03\x63\x61_H\x04R\x02id\x88\x01\x01\x42\x12\n\x10_organization_idB\n\n\x08_user_idB\x0c\n\n_connectorB\r\n\x0b_identifierB\x05\n\x03_id\" \n\x1e\x44\x65leteConnectedAccountResponse\"\xd3\x08\n&GetMagicLinkForConnectedAccountRequest\x12t\n\x0forganization_id\x18\x01 \x01(\tBF\x92\x41:2!Organization ID for the connectorJ\x15\"org_121312434123312\"\xbaH\x06r\x04\x10\x00\x18 H\x00R\x0eorganizationId\x88\x01\x01\x12]\n\x07user_id\x18\x02 \x01(\tB?\x92\x41\x33\x32\x19User ID for the connectorJ\x16\"user_121312434123312\"\xbaH\x06r\x04\x10\x00\x18 H\x01R\x06userId\x88\x01\x01\x12P\n\tconnector\x18\x03 \x01(\tB-\x92\x41 2\x14\x43onnector identifierJ\x08\"notion\"\xbaH\x07r\x05\x10\x00\x18\x90\x03H\x02R\tconnector\x88\x01\x01\x12\xce\x01\n\nidentifier\x18\x04 \x01(\tB\xa8\x01\x92\x41\x9b\x01\x32\x84\x01The unique identifier for the connected account within the third-party service (e.g., email address, user ID, workspace identifier).J\x12\"user@example.com\"\xbaH\x06r\x04\x10\x00\x18\x64H\x03R\nidentifier\x88\x01\x01\x12]\n\x02id\x18\x05 \x01(\tBH\x92\x41\x37\x32+Unique identifier for the connected accountJ\x08\"ca_123\"\xbaH\x0br\t\x10\x00\x18 :\x03\x63\x61_H\x04R\x02id\x88\x01\x01\x12\xcf\x01\n\x05state\x18\x07 \x01(\tB\xb3\x01\x92\x41\xa5\x01\x32wOptional opaque state value. State added to the user verify redirect URL query params to validate the user verificationJ*\"QVNDSUFyY2hhYml0dGVyXzE2ODQ5NzIwNzI0NTY=\"\xbaH\x07r\x05\x10\x00\x18\x80\x04H\x05R\x05state\x88\x01\x01\x12\x9d\x01\n\x0fuser_verify_url\x18\x08 \x01(\tBp\x92\x41T2\"B2B app\'s user verify redirect URLJ.\"https://app.yourapp.com/user/verify/callback\"\xbaH\x16r\x14\x10\x00\x18\x80\x10\x32\r^$|^https?://H\x06R\ruserVerifyUrl\x88\x01\x01\x42\x12\n\x10_organization_idB\n\n\x08_user_idB\x0c\n\n_connectorB\r\n\x0b_identifierB\x05\n\x03_idB\x08\n\x06_stateB\x12\n\x10_user_verify_url\"\x9c\x02\n\'GetMagicLinkForConnectedAccountResponse\x12r\n\x04link\x18\x01 \x01(\tB^\x92\x41[2%Authentication link for the connectorJ2\"https://notion.com/oauth/authorize?client_id=...\"R\x04link\x12}\n\x06\x65xpiry\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampBI\x92\x41\x46\x32,Expiry timestamp for the authentication linkJ\x16\"2024-03-20T15:04:05Z\"R\x06\x65xpiry\"\xeb\x02\n!VerifyConnectedAccountUserRequest\x12\xc8\x01\n\x0f\x61uth_request_id\x18\x01 \x01(\tB\x9f\x01\x92\x41\x8e\x01\x32`Auth request ID as base64url-encoded opaque token from the user verify redirect URL query paramsJ*\"QVNDSUFyY2hhYml0dGVyXzE2ODQ5NzIwNzI0NTY=\"\xe0\x41\x02\xbaH\x07r\x05\x10\x01\x18\xe8\x07R\rauthRequestId\x12{\n\nidentifier\x18\x02 \x01(\tB[\x92\x41K25Current logged in user\'s connected account identifierJ\x12\"user@example.com\"\xe0\x41\x02\xbaH\x07r\x05\x10\x01\x18\xc8\x01R\nidentifier\"\xd3\x01\n\"VerifyConnectedAccountUserResponse\x12\xac\x01\n\x1dpost_user_verify_redirect_url\x18\x01 \x01(\tBj\x92\x41g29URL to redirect the user to after successful verificationJ*\"https://env1.example.com/connect/success\"R\x19postUserVerifyRedirectUrl\"\xc3\x05\n&GetConnectedAccountByIdentifierRequest\x12t\n\x0forganization_id\x18\x01 \x01(\tBF\x92\x41:2!Organization ID for the connectorJ\x15\"org_121312434123312\"\xbaH\x06r\x04\x10\x00\x18 H\x00R\x0eorganizationId\x88\x01\x01\x12]\n\x07user_id\x18\x02 \x01(\tB?\x92\x41\x33\x32\x19User ID for the connectorJ\x16\"user_121312434123312\"\xbaH\x06r\x04\x10\x00\x18 H\x01R\x06userId\x88\x01\x01\x12P\n\tconnector\x18\x03 \x01(\tB-\x92\x41 2\x14\x43onnector identifierJ\x08\"notion\"\xbaH\x07r\x05\x10\x00\x18\x90\x03H\x02R\tconnector\x88\x01\x01\x12\xce\x01\n\nidentifier\x18\x04 \x01(\tB\xa8\x01\x92\x41\x9b\x01\x32\x84\x01The unique identifier for the connected account within the third-party service (e.g., email address, user ID, workspace identifier).J\x12\"user@example.com\"\xbaH\x06r\x04\x10\x00\x18\x64H\x03R\nidentifier\x88\x01\x01\x12]\n\x02id\x18\x05 \x01(\tBH\x92\x41\x37\x32+Unique identifier for the connected accountJ\x08\"ca_123\"\xbaH\x0br\t\x10\x00\x18 :\x03\x63\x61_H\x04R\x02id\x88\x01\x01\x42\x12\n\x10_organization_idB\n\n\x08_user_idB\x0c\n\n_connectorB\r\n\x0b_identifierB\x05\n\x03_id\"\xbe\x02\n\'GetConnectedAccountByIdentifierResponse\x12\x92\x02\n\x11\x63onnected_account\x18\x01 \x01(\x0b\x32\x30.scalekit.v1.connected_accounts.ConnectedAccountB\xb2\x01\x92\x41\xae\x01\x32\xab\x01The connected account with complete details including sensitive authorization credentials (access tokens, refresh tokens, scopes). Handle with appropriate access controls.R\x10\x63onnectedAccount\"\xe3\x13\n\x10\x43onnectedAccount\x12\xbc\x01\n\nidentifier\x18\x01 \x01(\tB\x9b\x01\x92\x41\x97\x01\x32\x80\x01The unique identifier for this account in the third-party service. Typically an email address, user ID, or workspace identifier.J\x12\"user@example.com\"R\nidentifier\x12\xaa\x01\n\x08provider\x18\x02 \x01(\tB\x8d\x01\x92\x41\x89\x01\x32}OAuth provider name (e.g., \'google\', \'microsoft\', \'github\'). Identifies which authentication service manages this connection.J\x08\"google\"R\x08provider\x12\xe4\x01\n\x06status\x18\x03 \x01(\x0e\x32/.scalekit.v1.connected_accounts.ConnectorStatusB\x9a\x01\x92\x41\x96\x01\x32\x93\x01\x43urrent status of the connected account. Indicates if the account is active, expired, pending authorization, or pending user identity verification.R\x06status\x12\xe9\x01\n\x12\x61uthorization_type\x18\x04 \x01(\x0e\x32-.scalekit.v1.connected_accounts.ConnectorTypeB\x8a\x01\x92\x41\x86\x01\x32\x83\x01Type of authorization mechanism used. Specifies whether this connection uses OAuth, API keys, bearer tokens, or other auth methods.R\x11\x61uthorizationType\x12\x81\x02\n\x15\x61uthorization_details\x18\x05 \x01(\x0b\x32\x34.scalekit.v1.connected_accounts.AuthorizationDetailsB\x95\x01\x92\x41\x91\x01\x32\x8e\x01Sensitive authentication credentials including access tokens, refresh tokens, and scopes. Contains either OAuth tokens or static auth details.R\x14\x61uthorizationDetails\x12\xce\x01\n\x10token_expires_at\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x87\x01\x92\x41\x83\x01\x32iExpiration timestamp for the access token. After this time, the token must be refreshed or re-authorized.J\x16\"2024-12-31T23:59:59Z\"R\x0etokenExpiresAt\x12\xc9\x01\n\nupdated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x8d\x01\x92\x41\x89\x01\x32oTimestamp when this connected account was last modified. Updated whenever credentials or configuration changes.J\x16\"2024-03-20T15:04:05Z\"R\tupdatedAt\x12\xae\x01\n\tconnector\x18\x08 \x01(\tB\x8f\x01\x92\x41\x8b\x01\x32\x7f\x43onnector identifier (e.g., \'notion\', \'slack\', \'salesforce\'). Indicates which third-party application this account connects to.J\x08\"notion\"R\tconnector\x12\xcd\x01\n\x0clast_used_at\x18\t \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x8e\x01\x92\x41\x8a\x01\x32pTimestamp when this connected account was last used to make an API call. Useful for tracking active connections.J\x16\"2024-03-20T14:30:00Z\"R\nlastUsedAt\x12\x98\x01\n\x02id\x18\n \x01(\tB\x87\x01\x92\x41v2\\Unique Scalekit-generated identifier for this connected account. Always prefixed with \'ca_\'.J\x16\"ca_24834495392086178\"\xbaH\x0br\t\x10\x00\x18 :\x03\x63\x61_R\x02id\x12\xc6\x01\n\rconnection_id\x18\x0b \x01(\tB\xa0\x01\x92\x41\x93\x01\x32wReference to the parent connection configuration. Links this account to a specific connector setup in your environment.J\x18\"conn_24834495392086178\"\xbaH\x06r\x04\x10\x00\x18 R\x0c\x63onnectionId\x12\x89\x02\n\napi_config\x18\x0c \x01(\x0b\x32\x17.google.protobuf.StructB\xd0\x01\x92\x41\xcc\x01\x32xOptional JSON configuration for connector-specific API settings such as rate limits, custom endpoints, or feature flags.JP{\"rate_limit\": 1000, \"timeout\": 30, \"base_url\": \"https://api.custom-domain.com\"}R\tapiConfig\"\x9a\x06\n\x16\x43reateConnectedAccount\x12\xae\x03\n\x15\x61uthorization_details\x18\x05 \x01(\x0b\x32\x34.scalekit.v1.connected_accounts.AuthorizationDetailsB\xc2\x02\x92\x41\xbe\x02\x32\xcd\x01Optional authentication credentials for the connected account. Include OAuth tokens (access_token, refresh_token, scopes) or static auth details (API keys, bearer tokens). Can be provided later via update.Jl{\"oauth_token\": {\"access_token\": \"ya29.a0...\", \"refresh_token\": \"1//0g...\", \"scopes\": [\"email\", \"profile\"]}}R\x14\x61uthorizationDetails\x12\x98\x02\n\napi_config\x18\x0b \x01(\x0b\x32\x17.google.protobuf.StructB\xdf\x01\x92\x41\xdb\x01\x32\x86\x01Optional JSON configuration for connector-specific API settings such as rate limits, custom API endpoints, timeouts, or feature flags.JP{\"rate_limit\": 1000, \"timeout\": 30, \"base_url\": \"https://api.custom-domain.com\"}R\tapiConfigJ\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03J\x04\x08\x03\x10\x04J\x04\x08\x04\x10\x05J\x04\x08\x06\x10\x07J\x04\x08\x07\x10\x08J\x04\x08\x08\x10\tJ\x04\x08\t\x10\nJ\x04\x08\n\x10\x0b\"\xbc\x05\n\x16UpdateConnectedAccount\x12\x8d\x03\n\x15\x61uthorization_details\x18\x05 \x01(\x0b\x32\x34.scalekit.v1.connected_accounts.AuthorizationDetailsB\xa1\x02\x92\x41\x9d\x02\x32\x99\x01Updated authentication credentials. Provide new OAuth tokens (e.g., after refresh) or updated static auth details. Only included fields will be modified.J\x7f{\"oauth_token\": {\"access_token\": \"ya29.new_token...\", \"refresh_token\": \"1//0g...\", \"scopes\": [\"email\", \"profile\", \"calendar\"]}}R\x14\x61uthorizationDetails\x12\xe1\x01\n\napi_config\x18\n \x01(\x0b\x32\x17.google.protobuf.StructB\xa8\x01\x92\x41\xa4\x01\x32}Updated JSON configuration for API-specific settings. Merges with existing configuration - only provided fields are modified.J#{\"rate_limit\": 2000, \"timeout\": 60}R\tapiConfigJ\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03J\x04\x08\x03\x10\x04J\x04\x08\x04\x10\x05J\x04\x08\x06\x10\x07J\x04\x08\x07\x10\x08J\x04\x08\x08\x10\tJ\x04\x08\t\x10\n\"\xe0\x08\n\x17\x43onnectedAccountForList\x12{\n\nidentifier\x18\x01 \x01(\tB[\x92\x41X2BThe unique identifier for this account in the third-party service.J\x12\"user@example.com\"R\nidentifier\x12]\n\x08provider\x18\x02 \x01(\tBA\x92\x41>22OAuth provider name (e.g., \'google\', \'microsoft\').J\x08\"google\"R\x08provider\x12h\n\x06status\x18\x03 \x01(\x0e\x32/.scalekit.v1.connected_accounts.ConnectorStatusB\x1f\x92\x41\x1c\x32\x1a\x43urrent connection status.R\x06status\x12\x80\x01\n\x12\x61uthorization_type\x18\x04 \x01(\x0e\x32-.scalekit.v1.connected_accounts.ConnectorTypeB\"\x92\x41\x1f\x32\x1d\x41uthorization mechanism type.R\x11\x61uthorizationType\x12~\n\x10token_expires_at\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampB8\x92\x41\x35\x32\x1bToken expiration timestamp.J\x16\"2024-12-31T23:59:59Z\"R\x0etokenExpiresAt\x12t\n\nupdated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampB9\x92\x41\x36\x32\x1cLast modification timestamp.J\x16\"2024-03-20T15:04:05Z\"R\tupdatedAt\x12\x42\n\tconnector\x18\x08 \x01(\tB$\x92\x41!2\x15\x43onnector identifier.J\x08\"notion\"R\tconnector\x12p\n\x0clast_used_at\x18\t \x01(\x0b\x32\x1a.google.protobuf.TimestampB2\x92\x41/2\x15Last usage timestamp.J\x16\"2024-03-20T14:30:00Z\"R\nlastUsedAt\x12Q\n\x02id\x18\n \x01(\tBA\x92\x41>2$Unique connected account identifier.J\x16\"ca_24834495392086178\"R\x02id\x12w\n\rconnection_id\x18\x0b \x01(\tBR\x92\x41\x46\x32*Parent connection configuration reference.J\x18\"conn_24834495392086178\"\xbaH\x06r\x04\x10\x00\x18 R\x0c\x63onnectionIdJ\x04\x08\x05\x10\x06\"\xbf\x01\n\x14\x41uthorizationDetails\x12M\n\x0boauth_token\x18\x01 \x01(\x0b\x32*.scalekit.v1.connected_accounts.OauthTokenH\x00R\noauthToken\x12M\n\x0bstatic_auth\x18\x02 \x01(\x0b\x32*.scalekit.v1.connected_accounts.StaticAuthH\x00R\nstaticAuthB\t\n\x07\x64\x65tails\"\xdc\x05\n\nOauthToken\x12\xa0\x01\n\x0c\x61\x63\x63\x65ss_token\x18\x01 \x01(\tB}\x92\x41z2bOAuth access token for API requests. Typically short-lived and must be refreshed after expiration.J\x14\"ya29.a0AfH6SMBx...\"R\x0b\x61\x63\x63\x65ssToken\x12\xae\x01\n\rrefresh_token\x18\x02 \x01(\tB\x88\x01\x92\x41\x84\x01\x32nOAuth refresh token for obtaining new access tokens. Long-lived and used to maintain persistent authorization.J\x12\"1//0gHJxZ-Lb2...\"R\x0crefreshToken\x12\xe1\x01\n\x06scopes\x18\x03 \x03(\tB\xc8\x01\x92\x41\xc4\x01\x32\\List of granted OAuth scopes defining the permissions and access levels for this connection.Jd[\"https://www.googleapis.com/auth/drive.readonly\", \"https://www.googleapis.com/auth/userinfo.email\"]R\x06scopes\x12\x95\x01\n\x06\x64omain\x18\x04 \x01(\tB}\x92\x41z2iAssociated domain for workspace or organization-scoped OAuth connections (e.g., Google Workspace domain).J\r\"example.com\"R\x06\x64omain\"\xf4\x01\n\nStaticAuth\x12\xe5\x01\n\x07\x64\x65tails\x18\x01 \x01(\x0b\x32\x17.google.protobuf.StructB\xb1\x01\x92\x41\xad\x01\x32zFlexible JSON structure containing static credentials. Format varies by connector type (API key, username/password, etc.).J/{\"api_key\": \"sk_live_...\", \"api_secret\": \"...\"}R\x07\x64\x65tails*y\n\x0f\x43onnectorStatus\x12!\n\x1d\x43ONNECTION_STATUS_UNSPECIFIED\x10\x00\x12\n\n\x06\x41\x43TIVE\x10\x01\x12\x0b\n\x07\x45XPIRED\x10\x02\x12\x10\n\x0cPENDING_AUTH\x10\x03\x12\x18\n\x14PENDING_VERIFICATION\x10\x04*\xa3\x01\n\rConnectorType\x12\x1f\n\x1b\x43ONNECTION_TYPE_UNSPECIFIED\x10\x00\x12\t\n\x05OAUTH\x10\x01\x12\x0b\n\x07\x41PI_KEY\x10\x02\x12\x0e\n\nBASIC_AUTH\x10\x03\x12\x10\n\x0c\x42\x45\x41RER_TOKEN\x10\x04\x12\n\n\x06\x43USTOM\x10\x05\x12\t\n\x05\x42\x41SIC\x10\x06\x12\r\n\tOAUTH_M2M\x10\x07\x12\x11\n\rTRELLO_OAUTH1\x10\x08\x32\xf8;\n\x17\x43onnectedAccountService\x12\xde\x06\n\x15ListConnectedAccounts\x12<.scalekit.v1.connected_accounts.ListConnectedAccountsRequest\x1a=.scalekit.v1.connected_accounts.ListConnectedAccountsResponse\"\xc7\x05\x92\x41\x9b\x05\n\x12\x43onnected Accounts\x12\x17List connected accounts\x1a\x9a\x02Retrieves a paginated list of connected accounts for third-party integrations. Filter by organization, user, connector type, provider, or identifier. Returns OAuth tokens, API keys, and connection status for each account. Use pagination tokens to navigate through large result sets.J\xaf\x01\n\x03\x32\x30\x30\x12\xa7\x01\nbSuccessfully retrieved the list of connected accounts with their authentication details and status\x12\x41\n?\x1a=.scalekit.v1.connected_accounts.ListConnectedAccountsResponseJY\n\x03\x34\x30\x30\x12R\nPInvalid request - occurs when query parameters are malformed or validation failsJB\n\x03\x34\x30\x31\x12;\n9Authentication required - missing or invalid access token\x82\xb5\x18\x02\x18\x44\x82\xd3\xe4\x93\x02\x1c\x12\x1a/api/v1/connected_accounts\x12\xe0\x06\n\x17SearchConnectedAccounts\x12>.scalekit.v1.connected_accounts.SearchConnectedAccountsRequest\x1a?.scalekit.v1.connected_accounts.SearchConnectedAccountsResponse\"\xc3\x05\x92\x41\x90\x05\n\x12\x43onnected Accounts\x12\x19Search connected accounts\x1a\x99\x02Search for connected accounts in your environment using a text query that matches against identifiers, providers, or connectors. The search performs case-insensitive matching across account details. Returns paginated results with account status and authentication type information.J\x99\x01\n\x03\x32\x30\x30\x12\x91\x01\nJSuccessfully retrieved matching connected accounts with pagination support\x12\x43\nA\x1a?.scalekit.v1.connected_accounts.SearchConnectedAccountsResponseJc\n\x03\x34\x30\x30\x12\\\nZInvalid request - query parameter is too short (minimum 3 characters) or validation failedJB\n\x03\x34\x30\x31\x12;\n9Authentication required - missing or invalid access token\x82\xb5\x18\x02\x18\x44\x82\xd3\xe4\x93\x02#\x12!/api/v1/connected_accounts:search\x12\xfe\x07\n\x16\x43reateConnectedAccount\x12=.scalekit.v1.connected_accounts.CreateConnectedAccountRequest\x1a>.scalekit.v1.connected_accounts.CreateConnectedAccountResponse\"\xe4\x06\x92\x41\xb5\x06\n\x12\x43onnected Accounts\x12\x1a\x43reate a connected account\x1a\xdf\x02\x43reates a new connected account with OAuth tokens or API credentials for third-party service integration. Supply authorization details including access tokens, refresh tokens, scopes, and optional API configuration. The account can be scoped to an organization or user. Returns the created account with its unique identifier and authentication status.J\xa4\x01\n\x03\x32\x30\x31\x12\x9c\x01\nVConnected account created successfully with authentication credentials stored securely\x12\x42\n@\x1a>.scalekit.v1.connected_accounts.CreateConnectedAccountResponseJg\n\x03\x34\x30\x30\x12`\n^Invalid request - missing required fields, invalid authorization details, or validation failedJB\n\x03\x34\x30\x31\x12;\n9Authentication required - missing or invalid access tokenJM\n\x03\x34\x30\x39\x12\x46\nDConflict - connected account with the same identifier already exists\x82\xb5\x18\x02\x18\x44\x82\xd3\xe4\x93\x02\x1f\"\x1a/api/v1/connected_accounts:\x01*\x12\xef\x07\n\x16UpdateConnectedAccount\x12=.scalekit.v1.connected_accounts.UpdateConnectedAccountRequest\x1a>.scalekit.v1.connected_accounts.UpdateConnectedAccountResponse\"\xd5\x06\x92\x41\xa6\x06\n\x12\x43onnected Accounts\x12$Update connected account credentials\x1a\xd2\x02Updates authentication credentials and configuration for an existing connected account. Modify OAuth tokens, refresh tokens, access scopes, or API configuration settings. Specify the account by ID, or by combination of organization/user, connector, and identifier. Returns the updated account with new token expiry and status information.J\x9a\x01\n\x03\x32\x30\x30\x12\x92\x01\nLConnected account updated successfully with new credentials or configuration\x12\x42\n@\x1a>.scalekit.v1.connected_accounts.UpdateConnectedAccountResponseJg\n\x03\x34\x30\x30\x12`\n^Invalid request - missing required fields, invalid authorization details, or validation failedJB\n\x03\x34\x30\x31\x12;\n9Authentication required - missing or invalid access tokenJK\n\x03\x34\x30\x34\x12\x44\nBConnected account not found - the specified account does not exist\x82\xb5\x18\x02\x18\x44\x82\xd3\xe4\x93\x02\x1f\x1a\x1a/api/v1/connected_accounts:\x01*\x12\xc6\x06\n\x16\x44\x65leteConnectedAccount\x12=.scalekit.v1.connected_accounts.DeleteConnectedAccountRequest\x1a>.scalekit.v1.connected_accounts.DeleteConnectedAccountResponse\"\xac\x05\x92\x41\xf6\x04\n\x12\x43onnected Accounts\x12\x1a\x44\x65lete a connected account\x1a\x9f\x02Permanently removes a connected account and revokes all associated authentication credentials. Identify the account by ID, or by combination of organization/user, connector, and identifier. This action cannot be undone. All OAuth tokens and API keys for this account will be invalidated.JK\n\x03\x32\x30\x30\x12\x44\nBConnected account deleted successfully and all credentials revokedJD\n\x03\x34\x30\x30\x12=\n;Invalid request - malformed parameters or validation failedJB\n\x03\x34\x30\x31\x12;\n9Authentication required - missing or invalid access tokenJK\n\x03\x34\x30\x34\x12\x44\nBConnected account not found - the specified account does not exist\x82\xb5\x18\x02\x18\x44\x82\xd3\xe4\x93\x02&\"!/api/v1/connected_accounts:delete:\x01*\x12\xff\x06\n\x1fGetMagicLinkForConnectedAccount\x12\x46.scalekit.v1.connected_accounts.GetMagicLinkForConnectedAccountRequest\x1aG.scalekit.v1.connected_accounts.GetMagicLinkForConnectedAccountResponse\"\xca\x05\x92\x41\x90\x05\n\x12\x43onnected Accounts\x12\"Generate authentication magic link\x1a\xa2\x02\x43reates a time-limited magic link for connecting or re-authorizing a third-party account. The link directs users to the OAuth authorization flow for the specified connector. Returns the generated link URL and expiration timestamp. Links typically expire after a short duration for security.J\x9f\x01\n\x03\x32\x30\x30\x12\x97\x01\nHMagic link generated successfully with authorization URL and expiry time\x12K\nI\x1aG.scalekit.v1.connected_accounts.GetMagicLinkForConnectedAccountResponseJK\n\x03\x34\x30\x30\x12\x44\nBInvalid request - missing required parameters or invalid connectorJB\n\x03\x34\x30\x31\x12;\n9Authentication required - missing or invalid access token\x82\xb5\x18\x02\x18\x44\x82\xd3\xe4\x93\x02*\"%/api/v1/connected_accounts/magic_link:\x01*\x12\xb6\x07\n\x17GetConnectedAccountAuth\x12\x46.scalekit.v1.connected_accounts.GetConnectedAccountByIdentifierRequest\x1aG.scalekit.v1.connected_accounts.GetConnectedAccountByIdentifierResponse\"\x89\x06\x92\x41\xd8\x05\n\x12\x43onnected Accounts\x12\x1dGet connected account details\x1a\xab\x02Retrieves complete authentication details for a connected account including OAuth tokens, refresh tokens, scopes, and API configuration. Query by account ID or by combination of organization/user, connector, and identifier. Returns sensitive credential information - use appropriate access controls.J\xa0\x01\n\x03\x32\x30\x30\x12\x98\x01\nISuccessfully retrieved connected account with full authentication details\x12K\nI\x1aG.scalekit.v1.connected_accounts.GetConnectedAccountByIdentifierResponseJ<\n\x03\x34\x30\x30\x12\x35\n3Invalid request - missing required query parametersJB\n\x03\x34\x30\x31\x12;\n9Authentication required - missing or invalid access tokenJP\n\x03\x34\x30\x34\x12I\nGConnected account not found - no account matches the specified criteria\x82\xb5\x18\x02\x18\x44\x82\xd3\xe4\x93\x02!\x12\x1f/api/v1/connected_accounts/auth\x12\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\"\xa9\x0c\n\x1cListConnectedAccountsRequest\x12\xb1\x01\n\x0forganization_id\x18\x01 \x01(\tB\x82\x01\x92\x41v2]Filter by organization ID. Returns only connected accounts associated with this organization.J\x15\"org_121312434123312\"\xbaH\x06r\x04\x10\x00\x18 H\x00R\x0eorganizationId\x88\x01\x01\x12\x91\x01\n\x07user_id\x18\x02 \x01(\tBs\x92\x41g2MFilter by user ID. Returns only connected accounts associated with this user.J\x16\"user_121312434123312\"\xbaH\x06r\x04\x10\x00\x18 H\x01R\x06userId\x88\x01\x01\x12\xef\x01\n\tconnector\x18\x03 \x01(\tB\xcb\x01\x92\x41\xa9\x01\x32\x9c\x01\x46ilter by connector type. Connector identifier such as \'notion\', \'slack\', \'google\', etc. Alphanumeric with spaces, hyphens, underscores, and colons allowed.J\x08\"notion\"\xbaH\x1br\x19\x10\x00\x18\x90\x03\x32\x12^[a-zA-Z0-9_: -]*$H\x02R\tconnector\x88\x01\x01\x12\xdb\x01\n\nidentifier\x18\x04 \x01(\tB\xb5\x01\x92\x41\xa8\x01\x32\x91\x01\x46ilter by account identifier. The unique identifier for the connected account within the third-party service (e.g., email address, workspace ID).J\x12\"user@example.com\"\xbaH\x06r\x04\x10\x00\x18\x64H\x03R\nidentifier\x88\x01\x01\x12\x9d\x01\n\x08provider\x18\x05 \x01(\tB\x80\x01\x92\x41t2hFilter by OAuth provider. The authentication provider name such as \'google\', \'microsoft\', \'github\', etc.J\x08\"google\"\xbaH\x06r\x04\x10\x00\x18\x32R\x08provider\x12\x9b\x01\n\tpage_size\x18\x06 \x01(\rB~\x92\x41r2lMaximum number of connected accounts to return per page. Must be between 0 and 100. Default is typically 10.J\x02\x31\x30\xbaH\x06*\x04\x10\x64(\x00R\x08pageSize\x12\xcb\x01\n\npage_token\x18\x07 \x01(\tB\xab\x01\x92\x41\x9e\x01\x32\x83\x01Pagination token from a previous response. Use the next_page_token value from ListConnectedAccountsResponse to fetch the next page.J\x16\"eyJvZmZzZXQiOjEwfQ==\"\xbaH\x06r\x04\x10\x00\x18\x64R\tpageToken\x12\xa7\x01\n\x05query\x18\x08 \x01(\tB\x90\x01\x92\x41\x83\x01\x32qText search query to filter connected accounts by name, identifier, or other searchable fields. Case-insensitive.J\x0e\"john@example\"\xbaH\x06r\x04\x10\x00\x18\x64R\x05queryB\x12\n\x10_organization_idB\n\n\x08_user_idB\x0c\n\n_connectorB\r\n\x0b_identifier\"\xbb\x06\n\x1dListConnectedAccountsResponse\x12\xdc\x01\n\x12\x63onnected_accounts\x18\x01 \x03(\x0b\x32\x37.scalekit.v1.connected_accounts.ConnectedAccountForListBt\x92\x41q2oList of connected accounts matching the filter criteria. Excludes sensitive authorization details for security.R\x11\x63onnectedAccounts\x12\x99\x01\n\ntotal_size\x18\x02 \x01(\rBz\x92\x41w2pTotal count of connected accounts matching the filter criteria across all pages. Use for calculating pagination.J\x03\x31\x30\x30R\ttotalSize\x12\xd2\x01\n\x0fnext_page_token\x18\x03 \x01(\tB\xa9\x01\x92\x41\x9c\x01\x32\x81\x01Pagination token for retrieving the next page. Empty if this is the last page. Pass this value to page_token in the next request.J\x16\"eyJvZmZzZXQiOjIwfQ==\"\xbaH\x06r\x04\x10\x00\x18 R\rnextPageToken\x12\xc9\x01\n\x0fprev_page_token\x18\x04 \x01(\tB\xa0\x01\x92\x41\x93\x01\x32}Pagination token for retrieving the previous page. Empty if this is the first page. Pass this value to page_token to go back.J\x12\"eyJvZmZzZXQiOjB9\"\xbaH\x06r\x04\x10\x00\x18 R\rprevPageToken\"\xe0\x06\n\x1eSearchConnectedAccountsRequest\x12\xb9\x01\n\x05query\x18\x01 \x01(\tB\xa2\x01\x92\x41\x91\x01\x32\x86\x01Search term to match against connected account identifiers, providers, or connectors. Must be at least 3 characters. Case insensitive.J\x06google\xbaH\nr\x05\x10\x03\x18\xc8\x01\xc8\x01\x01R\x05query\x12\x85\x01\n\tpage_size\x18\x02 \x01(\rBh\x92\x41^2XMaximum number of connected accounts to return per page. Value must be between 1 and 30.J\x02\x33\x30\xbaH\x04*\x02\x18\x1eR\x08pageSize\x12\xa5\x01\n\npage_token\x18\x03 \x01(\tB\x85\x01\x92\x41\x81\x01\x32\x61Token from a previous response for pagination. Provide this to retrieve the next page of results.J\x1c\x65yJwYWdlIjoyLCJsaW1pdCI6MzB9R\tpageToken\x12i\n\rconnection_id\x18\x04 \x01(\tBD\x92\x41\x38\x32*Connection ID to filter connected accountsJ\n\"conn_123\"\xbaH\x06r\x04\x10\x00\x18 R\x0c\x63onnectionId:\xe6\x01\x92\x41\xe2\x01\n\x9c\x01*\x19Search Connected Accounts2\x7fSearch for connected accounts in your environment using a text query that matches against identifiers, providers, or connectors2Aquery=google&page_size=30&page_token=eyJwYWdlIjoyLCJsaW1pdCI6MzB9\"\x87\x05\n\x1fSearchConnectedAccountsResponse\x12\xcc\x01\n\x12\x63onnected_accounts\x18\x01 \x03(\x0b\x32\x37.scalekit.v1.connected_accounts.ConnectedAccountForListBd\x92\x41\x61\x32_List of connected accounts matching the search query. Excludes sensitive authorization details.R\x11\x63onnectedAccounts\x12l\n\ntotal_size\x18\x02 \x01(\rBM\x92\x41J2CTotal count of accounts matching the search query across all pages.J\x03\x31\x30\x30R\ttotalSize\x12\x91\x01\n\x0fnext_page_token\x18\x03 \x01(\tBi\x92\x41]2CPagination token for the next page. Empty if this is the last page.J\x16\"eyJvZmZzZXQiOjMwfQ==\"\xbaH\x06r\x04\x10\x00\x18 R\rnextPageToken\x12\x92\x01\n\x0fprev_page_token\x18\x04 \x01(\tBj\x92\x41^2HPagination token for the previous page. Empty if this is the first page.J\x12\"eyJvZmZzZXQiOjB9\"\xbaH\x06r\x04\x10\x00\x18 R\rprevPageToken\"\xa8\x07\n\x1d\x43reateConnectedAccountRequest\x12t\n\x0forganization_id\x18\x01 \x01(\tBF\x92\x41:2!Organization ID for the connectorJ\x15\"org_121312434123312\"\xbaH\x06r\x04\x10\x00\x18 H\x00R\x0eorganizationId\x88\x01\x01\x12]\n\x07user_id\x18\x02 \x01(\tB?\x92\x41\x33\x32\x19User ID for the connectorJ\x16\"user_121312434123312\"\xbaH\x06r\x04\x10\x00\x18 H\x01R\x06userId\x88\x01\x01\x12\x64\n\tconnector\x18\x03 \x01(\tBA\x92\x41 2\x14\x43onnector identifierJ\x08\"notion\"\xbaH\x1br\x19\x10\x00\x18\x90\x03\x32\x12^[a-zA-Z0-9_: -]*$H\x02R\tconnector\x88\x01\x01\x12\xce\x01\n\nidentifier\x18\x04 \x01(\tB\xa8\x01\x92\x41\x9b\x01\x32\x84\x01The unique identifier for the connected account within the third-party service (e.g., email address, user ID, workspace identifier).J\x12\"user@example.com\"\xbaH\x06r\x04\x10\x00\x18\x64H\x03R\nidentifier\x88\x01\x01\x12\xbd\x02\n\x11\x63onnected_account\x18\x05 \x01(\x0b\x32\x36.scalekit.v1.connected_accounts.CreateConnectedAccountB\xd7\x01\x92\x41\xcd\x01\x32*Details of the connected account to createJ\x9e\x01{ \"authorization_type\": \"OAUTH2\", \"authorization_details\": { \"oauth_token\": { \"access_token\": \"...\", \"refresh_token\": \"...\", \"scopes\": [\"read\", \"write\"] } } }\xbaH\x03\xc8\x01\x01R\x10\x63onnectedAccountB\x12\n\x10_organization_idB\n\n\x08_user_idB\x0c\n\n_connectorB\r\n\x0b_identifier\"\x8d\x02\n\x1e\x43reateConnectedAccountResponse\x12\xea\x01\n\x11\x63onnected_account\x18\x01 \x01(\x0b\x32\x30.scalekit.v1.connected_accounts.ConnectedAccountB\x8a\x01\x92\x41\x86\x01\x32\x83\x01The newly created connected account with its unique identifier, status, and complete authorization details including access tokens.R\x10\x63onnectedAccount\"\x84\x08\n\x1dUpdateConnectedAccountRequest\x12t\n\x0forganization_id\x18\x01 \x01(\tBF\x92\x41:2!Organization ID for the connectorJ\x15\"org_121312434123312\"\xbaH\x06r\x04\x10\x00\x18 H\x00R\x0eorganizationId\x88\x01\x01\x12]\n\x07user_id\x18\x02 \x01(\tB?\x92\x41\x33\x32\x19User ID for the connectorJ\x16\"user_121312434123312\"\xbaH\x06r\x04\x10\x00\x18 H\x01R\x06userId\x88\x01\x01\x12P\n\tconnector\x18\x03 \x01(\tB-\x92\x41 2\x14\x43onnector identifierJ\x08\"notion\"\xbaH\x07r\x05\x10\x00\x18\x90\x03H\x02R\tconnector\x88\x01\x01\x12\xce\x01\n\nidentifier\x18\x04 \x01(\tB\xa8\x01\x92\x41\x9b\x01\x32\x84\x01The unique identifier for the connected account within the third-party service (e.g., email address, user ID, workspace identifier).J\x12\"user@example.com\"\xbaH\x06r\x04\x10\x00\x18\x64H\x03R\nidentifier\x88\x01\x01\x12g\n\x02id\x18\x06 \x01(\tBR\x92\x41\x41\x32\x35Unique identifier for the connected account to updateJ\x08\"ca_123\"\xbaH\x0br\t\x10\x00\x18 :\x03\x63\x61_H\x04R\x02id\x88\x01\x01\x12\xbd\x02\n\x11\x63onnected_account\x18\x05 \x01(\x0b\x32\x36.scalekit.v1.connected_accounts.UpdateConnectedAccountB\xd7\x01\x92\x41\xcd\x01\x32*Details of the connected account to updateJ\x9e\x01{ \"authorization_type\": \"OAUTH2\", \"authorization_details\": { \"oauth_token\": { \"access_token\": \"...\", \"refresh_token\": \"...\", \"scopes\": [\"read\", \"write\"] } } }\xbaH\x03\xc8\x01\x01R\x10\x63onnectedAccountB\x12\n\x10_organization_idB\n\n\x08_user_idB\x0c\n\n_connectorB\r\n\x0b_identifierB\x05\n\x03_id\"\xf7\x01\n\x1eUpdateConnectedAccountResponse\x12\xd4\x01\n\x11\x63onnected_account\x18\x01 \x01(\x0b\x32\x30.scalekit.v1.connected_accounts.ConnectedAccountBu\x92\x41r2pThe updated connected account with refreshed credentials, new token expiry, and modified configuration settings.R\x10\x63onnectedAccount\"\xd8\x05\n\x1d\x44\x65leteConnectedAccountRequest\x12t\n\x0forganization_id\x18\x01 \x01(\tBF\x92\x41:2!Organization ID for the connectorJ\x15\"org_121312434123312\"\xbaH\x06r\x04\x10\x00\x18 H\x00R\x0eorganizationId\x88\x01\x01\x12]\n\x07user_id\x18\x02 \x01(\tB?\x92\x41\x33\x32\x19User ID for the connectorJ\x16\"user_121312434123312\"\xbaH\x06r\x04\x10\x00\x18 H\x01R\x06userId\x88\x01\x01\x12\x64\n\tconnector\x18\x03 \x01(\tBA\x92\x41 2\x14\x43onnector identifierJ\x08\"notion\"\xbaH\x1br\x19\x10\x00\x18\x90\x03\x32\x12^[a-zA-Z0-9_: -]*$H\x02R\tconnector\x88\x01\x01\x12\xce\x01\n\nidentifier\x18\x04 \x01(\tB\xa8\x01\x92\x41\x9b\x01\x32\x84\x01The unique identifier for the connected account within the third-party service (e.g., email address, user ID, workspace identifier).J\x12\"user@example.com\"\xbaH\x06r\x04\x10\x00\x18\x64H\x03R\nidentifier\x88\x01\x01\x12g\n\x02id\x18\x05 \x01(\tBR\x92\x41\x41\x32\x35Unique identifier for the connected account to deleteJ\x08\"ca_123\"\xbaH\x0br\t\x10\x00\x18 :\x03\x63\x61_H\x04R\x02id\x88\x01\x01\x42\x12\n\x10_organization_idB\n\n\x08_user_idB\x0c\n\n_connectorB\r\n\x0b_identifierB\x05\n\x03_id\" \n\x1e\x44\x65leteConnectedAccountResponse\"\xd3\x08\n&GetMagicLinkForConnectedAccountRequest\x12t\n\x0forganization_id\x18\x01 \x01(\tBF\x92\x41:2!Organization ID for the connectorJ\x15\"org_121312434123312\"\xbaH\x06r\x04\x10\x00\x18 H\x00R\x0eorganizationId\x88\x01\x01\x12]\n\x07user_id\x18\x02 \x01(\tB?\x92\x41\x33\x32\x19User ID for the connectorJ\x16\"user_121312434123312\"\xbaH\x06r\x04\x10\x00\x18 H\x01R\x06userId\x88\x01\x01\x12P\n\tconnector\x18\x03 \x01(\tB-\x92\x41 2\x14\x43onnector identifierJ\x08\"notion\"\xbaH\x07r\x05\x10\x00\x18\x90\x03H\x02R\tconnector\x88\x01\x01\x12\xce\x01\n\nidentifier\x18\x04 \x01(\tB\xa8\x01\x92\x41\x9b\x01\x32\x84\x01The unique identifier for the connected account within the third-party service (e.g., email address, user ID, workspace identifier).J\x12\"user@example.com\"\xbaH\x06r\x04\x10\x00\x18\x64H\x03R\nidentifier\x88\x01\x01\x12]\n\x02id\x18\x05 \x01(\tBH\x92\x41\x37\x32+Unique identifier for the connected accountJ\x08\"ca_123\"\xbaH\x0br\t\x10\x00\x18 :\x03\x63\x61_H\x04R\x02id\x88\x01\x01\x12\xcf\x01\n\x05state\x18\x07 \x01(\tB\xb3\x01\x92\x41\xa5\x01\x32wOptional opaque state value. State added to the user verify redirect URL query params to validate the user verificationJ*\"QVNDSUFyY2hhYml0dGVyXzE2ODQ5NzIwNzI0NTY=\"\xbaH\x07r\x05\x10\x00\x18\x80\x04H\x05R\x05state\x88\x01\x01\x12\x9d\x01\n\x0fuser_verify_url\x18\x08 \x01(\tBp\x92\x41T2\"B2B app\'s user verify redirect URLJ.\"https://app.yourapp.com/user/verify/callback\"\xbaH\x16r\x14\x10\x00\x18\x80\x10\x32\r^$|^https?://H\x06R\ruserVerifyUrl\x88\x01\x01\x42\x12\n\x10_organization_idB\n\n\x08_user_idB\x0c\n\n_connectorB\r\n\x0b_identifierB\x05\n\x03_idB\x08\n\x06_stateB\x12\n\x10_user_verify_url\"\x9c\x02\n\'GetMagicLinkForConnectedAccountResponse\x12r\n\x04link\x18\x01 \x01(\tB^\x92\x41[2%Authentication link for the connectorJ2\"https://notion.com/oauth/authorize?client_id=...\"R\x04link\x12}\n\x06\x65xpiry\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampBI\x92\x41\x46\x32,Expiry timestamp for the authentication linkJ\x16\"2024-03-20T15:04:05Z\"R\x06\x65xpiry\"\xeb\x02\n!VerifyConnectedAccountUserRequest\x12\xc8\x01\n\x0f\x61uth_request_id\x18\x01 \x01(\tB\x9f\x01\x92\x41\x8e\x01\x32`Auth request ID as base64url-encoded opaque token from the user verify redirect URL query paramsJ*\"QVNDSUFyY2hhYml0dGVyXzE2ODQ5NzIwNzI0NTY=\"\xe0\x41\x02\xbaH\x07r\x05\x10\x01\x18\xe8\x07R\rauthRequestId\x12{\n\nidentifier\x18\x02 \x01(\tB[\x92\x41K25Current logged in user\'s connected account identifierJ\x12\"user@example.com\"\xe0\x41\x02\xbaH\x07r\x05\x10\x01\x18\xc8\x01R\nidentifier\"\xd3\x01\n\"VerifyConnectedAccountUserResponse\x12\xac\x01\n\x1dpost_user_verify_redirect_url\x18\x01 \x01(\tBj\x92\x41g29URL to redirect the user to after successful verificationJ*\"https://env1.example.com/connect/success\"R\x19postUserVerifyRedirectUrl\"\xc3\x05\n&GetConnectedAccountByIdentifierRequest\x12t\n\x0forganization_id\x18\x01 \x01(\tBF\x92\x41:2!Organization ID for the connectorJ\x15\"org_121312434123312\"\xbaH\x06r\x04\x10\x00\x18 H\x00R\x0eorganizationId\x88\x01\x01\x12]\n\x07user_id\x18\x02 \x01(\tB?\x92\x41\x33\x32\x19User ID for the connectorJ\x16\"user_121312434123312\"\xbaH\x06r\x04\x10\x00\x18 H\x01R\x06userId\x88\x01\x01\x12P\n\tconnector\x18\x03 \x01(\tB-\x92\x41 2\x14\x43onnector identifierJ\x08\"notion\"\xbaH\x07r\x05\x10\x00\x18\x90\x03H\x02R\tconnector\x88\x01\x01\x12\xce\x01\n\nidentifier\x18\x04 \x01(\tB\xa8\x01\x92\x41\x9b\x01\x32\x84\x01The unique identifier for the connected account within the third-party service (e.g., email address, user ID, workspace identifier).J\x12\"user@example.com\"\xbaH\x06r\x04\x10\x00\x18\x64H\x03R\nidentifier\x88\x01\x01\x12]\n\x02id\x18\x05 \x01(\tBH\x92\x41\x37\x32+Unique identifier for the connected accountJ\x08\"ca_123\"\xbaH\x0br\t\x10\x00\x18 :\x03\x63\x61_H\x04R\x02id\x88\x01\x01\x42\x12\n\x10_organization_idB\n\n\x08_user_idB\x0c\n\n_connectorB\r\n\x0b_identifierB\x05\n\x03_id\"\xbe\x02\n\'GetConnectedAccountByIdentifierResponse\x12\x92\x02\n\x11\x63onnected_account\x18\x01 \x01(\x0b\x32\x30.scalekit.v1.connected_accounts.ConnectedAccountB\xb2\x01\x92\x41\xae\x01\x32\xab\x01The connected account with complete details including sensitive authorization credentials (access tokens, refresh tokens, scopes). Handle with appropriate access controls.R\x10\x63onnectedAccount\"\xe3\x13\n\x10\x43onnectedAccount\x12\xbc\x01\n\nidentifier\x18\x01 \x01(\tB\x9b\x01\x92\x41\x97\x01\x32\x80\x01The unique identifier for this account in the third-party service. Typically an email address, user ID, or workspace identifier.J\x12\"user@example.com\"R\nidentifier\x12\xaa\x01\n\x08provider\x18\x02 \x01(\tB\x8d\x01\x92\x41\x89\x01\x32}OAuth provider name (e.g., \'google\', \'microsoft\', \'github\'). Identifies which authentication service manages this connection.J\x08\"google\"R\x08provider\x12\xe4\x01\n\x06status\x18\x03 \x01(\x0e\x32/.scalekit.v1.connected_accounts.ConnectorStatusB\x9a\x01\x92\x41\x96\x01\x32\x93\x01\x43urrent status of the connected account. Indicates if the account is active, expired, pending authorization, or pending user identity verification.R\x06status\x12\xe9\x01\n\x12\x61uthorization_type\x18\x04 \x01(\x0e\x32-.scalekit.v1.connected_accounts.ConnectorTypeB\x8a\x01\x92\x41\x86\x01\x32\x83\x01Type of authorization mechanism used. Specifies whether this connection uses OAuth, API keys, bearer tokens, or other auth methods.R\x11\x61uthorizationType\x12\x81\x02\n\x15\x61uthorization_details\x18\x05 \x01(\x0b\x32\x34.scalekit.v1.connected_accounts.AuthorizationDetailsB\x95\x01\x92\x41\x91\x01\x32\x8e\x01Sensitive authentication credentials including access tokens, refresh tokens, and scopes. Contains either OAuth tokens or static auth details.R\x14\x61uthorizationDetails\x12\xce\x01\n\x10token_expires_at\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x87\x01\x92\x41\x83\x01\x32iExpiration timestamp for the access token. After this time, the token must be refreshed or re-authorized.J\x16\"2024-12-31T23:59:59Z\"R\x0etokenExpiresAt\x12\xc9\x01\n\nupdated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x8d\x01\x92\x41\x89\x01\x32oTimestamp when this connected account was last modified. Updated whenever credentials or configuration changes.J\x16\"2024-03-20T15:04:05Z\"R\tupdatedAt\x12\xae\x01\n\tconnector\x18\x08 \x01(\tB\x8f\x01\x92\x41\x8b\x01\x32\x7f\x43onnector identifier (e.g., \'notion\', \'slack\', \'salesforce\'). Indicates which third-party application this account connects to.J\x08\"notion\"R\tconnector\x12\xcd\x01\n\x0clast_used_at\x18\t \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x8e\x01\x92\x41\x8a\x01\x32pTimestamp when this connected account was last used to make an API call. Useful for tracking active connections.J\x16\"2024-03-20T14:30:00Z\"R\nlastUsedAt\x12\x98\x01\n\x02id\x18\n \x01(\tB\x87\x01\x92\x41v2\\Unique Scalekit-generated identifier for this connected account. Always prefixed with \'ca_\'.J\x16\"ca_24834495392086178\"\xbaH\x0br\t\x10\x00\x18 :\x03\x63\x61_R\x02id\x12\xc6\x01\n\rconnection_id\x18\x0b \x01(\tB\xa0\x01\x92\x41\x93\x01\x32wReference to the parent connection configuration. Links this account to a specific connector setup in your environment.J\x18\"conn_24834495392086178\"\xbaH\x06r\x04\x10\x00\x18 R\x0c\x63onnectionId\x12\x89\x02\n\napi_config\x18\x0c \x01(\x0b\x32\x17.google.protobuf.StructB\xd0\x01\x92\x41\xcc\x01\x32xOptional JSON configuration for connector-specific API settings such as rate limits, custom endpoints, or feature flags.JP{\"rate_limit\": 1000, \"timeout\": 30, \"base_url\": \"https://api.custom-domain.com\"}R\tapiConfig\"\x9a\x06\n\x16\x43reateConnectedAccount\x12\xae\x03\n\x15\x61uthorization_details\x18\x05 \x01(\x0b\x32\x34.scalekit.v1.connected_accounts.AuthorizationDetailsB\xc2\x02\x92\x41\xbe\x02\x32\xcd\x01Optional authentication credentials for the connected account. Include OAuth tokens (access_token, refresh_token, scopes) or static auth details (API keys, bearer tokens). Can be provided later via update.Jl{\"oauth_token\": {\"access_token\": \"ya29.a0...\", \"refresh_token\": \"1//0g...\", \"scopes\": [\"email\", \"profile\"]}}R\x14\x61uthorizationDetails\x12\x98\x02\n\napi_config\x18\x0b \x01(\x0b\x32\x17.google.protobuf.StructB\xdf\x01\x92\x41\xdb\x01\x32\x86\x01Optional JSON configuration for connector-specific API settings such as rate limits, custom API endpoints, timeouts, or feature flags.JP{\"rate_limit\": 1000, \"timeout\": 30, \"base_url\": \"https://api.custom-domain.com\"}R\tapiConfigJ\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03J\x04\x08\x03\x10\x04J\x04\x08\x04\x10\x05J\x04\x08\x06\x10\x07J\x04\x08\x07\x10\x08J\x04\x08\x08\x10\tJ\x04\x08\t\x10\nJ\x04\x08\n\x10\x0b\"\xbc\x05\n\x16UpdateConnectedAccount\x12\x8d\x03\n\x15\x61uthorization_details\x18\x05 \x01(\x0b\x32\x34.scalekit.v1.connected_accounts.AuthorizationDetailsB\xa1\x02\x92\x41\x9d\x02\x32\x99\x01Updated authentication credentials. Provide new OAuth tokens (e.g., after refresh) or updated static auth details. Only included fields will be modified.J\x7f{\"oauth_token\": {\"access_token\": \"ya29.new_token...\", \"refresh_token\": \"1//0g...\", \"scopes\": [\"email\", \"profile\", \"calendar\"]}}R\x14\x61uthorizationDetails\x12\xe1\x01\n\napi_config\x18\n \x01(\x0b\x32\x17.google.protobuf.StructB\xa8\x01\x92\x41\xa4\x01\x32}Updated JSON configuration for API-specific settings. Merges with existing configuration - only provided fields are modified.J#{\"rate_limit\": 2000, \"timeout\": 60}R\tapiConfigJ\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03J\x04\x08\x03\x10\x04J\x04\x08\x04\x10\x05J\x04\x08\x06\x10\x07J\x04\x08\x07\x10\x08J\x04\x08\x08\x10\tJ\x04\x08\t\x10\n\"\xe0\x08\n\x17\x43onnectedAccountForList\x12{\n\nidentifier\x18\x01 \x01(\tB[\x92\x41X2BThe unique identifier for this account in the third-party service.J\x12\"user@example.com\"R\nidentifier\x12]\n\x08provider\x18\x02 \x01(\tBA\x92\x41>22OAuth provider name (e.g., \'google\', \'microsoft\').J\x08\"google\"R\x08provider\x12h\n\x06status\x18\x03 \x01(\x0e\x32/.scalekit.v1.connected_accounts.ConnectorStatusB\x1f\x92\x41\x1c\x32\x1a\x43urrent connection status.R\x06status\x12\x80\x01\n\x12\x61uthorization_type\x18\x04 \x01(\x0e\x32-.scalekit.v1.connected_accounts.ConnectorTypeB\"\x92\x41\x1f\x32\x1d\x41uthorization mechanism type.R\x11\x61uthorizationType\x12~\n\x10token_expires_at\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampB8\x92\x41\x35\x32\x1bToken expiration timestamp.J\x16\"2024-12-31T23:59:59Z\"R\x0etokenExpiresAt\x12t\n\nupdated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampB9\x92\x41\x36\x32\x1cLast modification timestamp.J\x16\"2024-03-20T15:04:05Z\"R\tupdatedAt\x12\x42\n\tconnector\x18\x08 \x01(\tB$\x92\x41!2\x15\x43onnector identifier.J\x08\"notion\"R\tconnector\x12p\n\x0clast_used_at\x18\t \x01(\x0b\x32\x1a.google.protobuf.TimestampB2\x92\x41/2\x15Last usage timestamp.J\x16\"2024-03-20T14:30:00Z\"R\nlastUsedAt\x12Q\n\x02id\x18\n \x01(\tBA\x92\x41>2$Unique connected account identifier.J\x16\"ca_24834495392086178\"R\x02id\x12w\n\rconnection_id\x18\x0b \x01(\tBR\x92\x41\x46\x32*Parent connection configuration reference.J\x18\"conn_24834495392086178\"\xbaH\x06r\x04\x10\x00\x18 R\x0c\x63onnectionIdJ\x04\x08\x05\x10\x06\"\xbf\x01\n\x14\x41uthorizationDetails\x12M\n\x0boauth_token\x18\x01 \x01(\x0b\x32*.scalekit.v1.connected_accounts.OauthTokenH\x00R\noauthToken\x12M\n\x0bstatic_auth\x18\x02 \x01(\x0b\x32*.scalekit.v1.connected_accounts.StaticAuthH\x00R\nstaticAuthB\t\n\x07\x64\x65tails\"\xdc\x05\n\nOauthToken\x12\xa0\x01\n\x0c\x61\x63\x63\x65ss_token\x18\x01 \x01(\tB}\x92\x41z2bOAuth access token for API requests. Typically short-lived and must be refreshed after expiration.J\x14\"ya29.a0AfH6SMBx...\"R\x0b\x61\x63\x63\x65ssToken\x12\xae\x01\n\rrefresh_token\x18\x02 \x01(\tB\x88\x01\x92\x41\x84\x01\x32nOAuth refresh token for obtaining new access tokens. Long-lived and used to maintain persistent authorization.J\x12\"1//0gHJxZ-Lb2...\"R\x0crefreshToken\x12\xe1\x01\n\x06scopes\x18\x03 \x03(\tB\xc8\x01\x92\x41\xc4\x01\x32\\List of granted OAuth scopes defining the permissions and access levels for this connection.Jd[\"https://www.googleapis.com/auth/drive.readonly\", \"https://www.googleapis.com/auth/userinfo.email\"]R\x06scopes\x12\x95\x01\n\x06\x64omain\x18\x04 \x01(\tB}\x92\x41z2iAssociated domain for workspace or organization-scoped OAuth connections (e.g., Google Workspace domain).J\r\"example.com\"R\x06\x64omain\"\xf4\x01\n\nStaticAuth\x12\xe5\x01\n\x07\x64\x65tails\x18\x01 \x01(\x0b\x32\x17.google.protobuf.StructB\xb1\x01\x92\x41\xad\x01\x32zFlexible JSON structure containing static credentials. Format varies by connector type (API key, username/password, etc.).J/{\"api_key\": \"sk_live_...\", \"api_secret\": \"...\"}R\x07\x64\x65tails*y\n\x0f\x43onnectorStatus\x12!\n\x1d\x43ONNECTION_STATUS_UNSPECIFIED\x10\x00\x12\n\n\x06\x41\x43TIVE\x10\x01\x12\x0b\n\x07\x45XPIRED\x10\x02\x12\x10\n\x0cPENDING_AUTH\x10\x03\x12\x18\n\x14PENDING_VERIFICATION\x10\x04*\xa3\x01\n\rConnectorType\x12\x1f\n\x1b\x43ONNECTION_TYPE_UNSPECIFIED\x10\x00\x12\t\n\x05OAUTH\x10\x01\x12\x0b\n\x07\x41PI_KEY\x10\x02\x12\x0e\n\nBASIC_AUTH\x10\x03\x12\x10\n\x0c\x42\x45\x41RER_TOKEN\x10\x04\x12\n\n\x06\x43USTOM\x10\x05\x12\t\n\x05\x42\x41SIC\x10\x06\x12\r\n\tOAUTH_M2M\x10\x07\x12\x11\n\rTRELLO_OAUTH1\x10\x08\x32\xf5\x42\n\x17\x43onnectedAccountService\x12\xde\x06\n\x15ListConnectedAccounts\x12<.scalekit.v1.connected_accounts.ListConnectedAccountsRequest\x1a=.scalekit.v1.connected_accounts.ListConnectedAccountsResponse\"\xc7\x05\x92\x41\x9b\x05\n\x12\x43onnected Accounts\x12\x17List connected accounts\x1a\x9a\x02Retrieves a paginated list of connected accounts for third-party integrations. Filter by organization, user, connector type, provider, or identifier. Returns OAuth tokens, API keys, and connection status for each account. Use pagination tokens to navigate through large result sets.J\xaf\x01\n\x03\x32\x30\x30\x12\xa7\x01\nbSuccessfully retrieved the list of connected accounts with their authentication details and status\x12\x41\n?\x1a=.scalekit.v1.connected_accounts.ListConnectedAccountsResponseJY\n\x03\x34\x30\x30\x12R\nPInvalid request - occurs when query parameters are malformed or validation failsJB\n\x03\x34\x30\x31\x12;\n9Authentication required - missing or invalid access token\x82\xb5\x18\x02\x18\x44\x82\xd3\xe4\x93\x02\x1c\x12\x1a/api/v1/connected_accounts\x12\xe0\x06\n\x17SearchConnectedAccounts\x12>.scalekit.v1.connected_accounts.SearchConnectedAccountsRequest\x1a?.scalekit.v1.connected_accounts.SearchConnectedAccountsResponse\"\xc3\x05\x92\x41\x90\x05\n\x12\x43onnected Accounts\x12\x19Search connected accounts\x1a\x99\x02Search for connected accounts in your environment using a text query that matches against identifiers, providers, or connectors. The search performs case-insensitive matching across account details. Returns paginated results with account status and authentication type information.J\x99\x01\n\x03\x32\x30\x30\x12\x91\x01\nJSuccessfully retrieved matching connected accounts with pagination support\x12\x43\nA\x1a?.scalekit.v1.connected_accounts.SearchConnectedAccountsResponseJc\n\x03\x34\x30\x30\x12\\\nZInvalid request - query parameter is too short (minimum 3 characters) or validation failedJB\n\x03\x34\x30\x31\x12;\n9Authentication required - missing or invalid access token\x82\xb5\x18\x02\x18\x44\x82\xd3\xe4\x93\x02#\x12!/api/v1/connected_accounts:search\x12\xfe\x07\n\x16\x43reateConnectedAccount\x12=.scalekit.v1.connected_accounts.CreateConnectedAccountRequest\x1a>.scalekit.v1.connected_accounts.CreateConnectedAccountResponse\"\xe4\x06\x92\x41\xb5\x06\n\x12\x43onnected Accounts\x12\x1a\x43reate a connected account\x1a\xdf\x02\x43reates a new connected account with OAuth tokens or API credentials for third-party service integration. Supply authorization details including access tokens, refresh tokens, scopes, and optional API configuration. The account can be scoped to an organization or user. Returns the created account with its unique identifier and authentication status.J\xa4\x01\n\x03\x32\x30\x31\x12\x9c\x01\nVConnected account created successfully with authentication credentials stored securely\x12\x42\n@\x1a>.scalekit.v1.connected_accounts.CreateConnectedAccountResponseJg\n\x03\x34\x30\x30\x12`\n^Invalid request - missing required fields, invalid authorization details, or validation failedJB\n\x03\x34\x30\x31\x12;\n9Authentication required - missing or invalid access tokenJM\n\x03\x34\x30\x39\x12\x46\nDConflict - connected account with the same identifier already exists\x82\xb5\x18\x02\x18\x44\x82\xd3\xe4\x93\x02\x1f\"\x1a/api/v1/connected_accounts:\x01*\x12\xef\x07\n\x16UpdateConnectedAccount\x12=.scalekit.v1.connected_accounts.UpdateConnectedAccountRequest\x1a>.scalekit.v1.connected_accounts.UpdateConnectedAccountResponse\"\xd5\x06\x92\x41\xa6\x06\n\x12\x43onnected Accounts\x12$Update connected account credentials\x1a\xd2\x02Updates authentication credentials and configuration for an existing connected account. Modify OAuth tokens, refresh tokens, access scopes, or API configuration settings. Specify the account by ID, or by combination of organization/user, connector, and identifier. Returns the updated account with new token expiry and status information.J\x9a\x01\n\x03\x32\x30\x30\x12\x92\x01\nLConnected account updated successfully with new credentials or configuration\x12\x42\n@\x1a>.scalekit.v1.connected_accounts.UpdateConnectedAccountResponseJg\n\x03\x34\x30\x30\x12`\n^Invalid request - missing required fields, invalid authorization details, or validation failedJB\n\x03\x34\x30\x31\x12;\n9Authentication required - missing or invalid access tokenJK\n\x03\x34\x30\x34\x12\x44\nBConnected account not found - the specified account does not exist\x82\xb5\x18\x02\x18\x44\x82\xd3\xe4\x93\x02\x1f\x1a\x1a/api/v1/connected_accounts:\x01*\x12\xc6\x06\n\x16\x44\x65leteConnectedAccount\x12=.scalekit.v1.connected_accounts.DeleteConnectedAccountRequest\x1a>.scalekit.v1.connected_accounts.DeleteConnectedAccountResponse\"\xac\x05\x92\x41\xf6\x04\n\x12\x43onnected Accounts\x12\x1a\x44\x65lete a connected account\x1a\x9f\x02Permanently removes a connected account and revokes all associated authentication credentials. Identify the account by ID, or by combination of organization/user, connector, and identifier. This action cannot be undone. All OAuth tokens and API keys for this account will be invalidated.JK\n\x03\x32\x30\x30\x12\x44\nBConnected account deleted successfully and all credentials revokedJD\n\x03\x34\x30\x30\x12=\n;Invalid request - malformed parameters or validation failedJB\n\x03\x34\x30\x31\x12;\n9Authentication required - missing or invalid access tokenJK\n\x03\x34\x30\x34\x12\x44\nBConnected account not found - the specified account does not exist\x82\xb5\x18\x02\x18\x44\x82\xd3\xe4\x93\x02&\"!/api/v1/connected_accounts:delete:\x01*\x12\xff\x06\n\x1fGetMagicLinkForConnectedAccount\x12\x46.scalekit.v1.connected_accounts.GetMagicLinkForConnectedAccountRequest\x1aG.scalekit.v1.connected_accounts.GetMagicLinkForConnectedAccountResponse\"\xca\x05\x92\x41\x90\x05\n\x12\x43onnected Accounts\x12\"Generate authentication magic link\x1a\xa2\x02\x43reates a time-limited magic link for connecting or re-authorizing a third-party account. The link directs users to the OAuth authorization flow for the specified connector. Returns the generated link URL and expiration timestamp. Links typically expire after a short duration for security.J\x9f\x01\n\x03\x32\x30\x30\x12\x97\x01\nHMagic link generated successfully with authorization URL and expiry time\x12K\nI\x1aG.scalekit.v1.connected_accounts.GetMagicLinkForConnectedAccountResponseJK\n\x03\x34\x30\x30\x12\x44\nBInvalid request - missing required parameters or invalid connectorJB\n\x03\x34\x30\x31\x12;\n9Authentication required - missing or invalid access token\x82\xb5\x18\x02\x18\x44\x82\xd3\xe4\x93\x02*\"%/api/v1/connected_accounts/magic_link:\x01*\x12\xb6\x07\n\x17GetConnectedAccountAuth\x12\x46.scalekit.v1.connected_accounts.GetConnectedAccountByIdentifierRequest\x1aG.scalekit.v1.connected_accounts.GetConnectedAccountByIdentifierResponse\"\x89\x06\x92\x41\xd8\x05\n\x12\x43onnected Accounts\x12\x1dGet connected account details\x1a\xab\x02Retrieves complete authentication details for a connected account including OAuth tokens, refresh tokens, scopes, and API configuration. Query by account ID or by combination of organization/user, connector, and identifier. Returns sensitive credential information - use appropriate access controls.J\xa0\x01\n\x03\x32\x30\x30\x12\x98\x01\nISuccessfully retrieved connected account with full authentication details\x12K\nI\x1aG.scalekit.v1.connected_accounts.GetConnectedAccountByIdentifierResponseJ<\n\x03\x34\x30\x30\x12\x35\n3Invalid request - missing required query parametersJB\n\x03\x34\x30\x31\x12;\n9Authentication required - missing or invalid access tokenJP\n\x03\x34\x30\x34\x12I\nGConnected account not found - no account matches the specified criteria\x82\xb5\x18\x02\x18\x44\x82\xd3\xe4\x93\x02!\x12\x1f/api/v1/connected_accounts/auth\x12\xfa\x06\n\x1aGetConnectedAccountDetails\x12\x46.scalekit.v1.connected_accounts.GetConnectedAccountByIdentifierRequest\x1aG.scalekit.v1.connected_accounts.GetConnectedAccountByIdentifierResponse\"\xca\x05\x92\x41\x96\x05\n\x12\x43onnected Accounts\x12\x1dGet connected account details\x1a\x83\x02Returns metadata for a connected account including status, connector type, provider, and configuration without exposing stored authorization credentials. Look up by account ID, or by a combination of organization (or user), connector, and external identifier.J\x86\x01\n\x03\x32\x30\x30\x12\x7f\n0Successfully retrieved connected account details\x12K\nI\x1aG.scalekit.v1.connected_accounts.GetConnectedAccountByIdentifierResponseJ<\n\x03\x34\x30\x30\x12\x35\n3Invalid request - missing required query parametersJB\n\x03\x34\x30\x31\x12;\n9Authentication required - missing or invalid access tokenJP\n\x03\x34\x30\x34\x12I\nGConnected account not found - no account matches the specified criteria\x82\xb5\x18\x02\x18\x44\x82\xd3\xe4\x93\x02$\x12\"/api/v1/connected_accounts/details\x12\xbb\x07\n\x1aVerifyConnectedAccountUser\x12\x41.scalekit.v1.connected_accounts.VerifyConnectedAccountUserRequest\x1a\x42.scalekit.v1.connected_accounts.VerifyConnectedAccountUserResponse\"\x95\x06\x92\x41\xda\x05\n\x12\x43onnected Accounts\x12\x1dVerify connected account user\x1a\xa4\x02\x43onfirms the user assertion and activates the connected account after the user completes third-party OAuth. Called by the B2B app server with auth_request_id and identifier. Validates that the asserted identifier matches the one stored on the auth request and promotes pending tokens to live.J\x8a\x01\n\x03\x32\x30\x30\x12\x82\x01\n8Verification successful; connected account is now ACTIVE\x12\x46\nD\x1a\x42.scalekit.v1.connected_accounts.VerifyConnectedAccountUserResponseJ6\n\x03\x34\x30\x30\x12/\n-Invalid request - missing or malformed fieldsJ7\n\x03\x34\x30\x31\x12\x30\n.Unauthorized - invalid or missing access tokenJ(\n\x03\x34\x30\x33\x12!\n\x1f\x46orbidden - identifier mismatchJV\n\x03\x34\x30\x34\x12O\nMNot found - no pending flow for the given auth_request_id or already consumed\x82\xb5\x18\x02\x18\x44\x82\xd3\xe4\x93\x02+\"&/api/v1/connected_accounts/user/verify:\x01*\x1a\xe3\x01\x92\x41\xdf\x01\n\x12\x43onnected Accounts\x12\xc8\x01Manage connected accounts for third-party integrations and OAuth connections. Connected accounts represent authenticated access to external services like Google, Notion, Slack, and other applications.B\xa4\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)
@@ -222,6 +222,8 @@ if not _descriptor._USE_C_DESCRIPTORS:
222
222
  _globals['_CONNECTEDACCOUNTSERVICE'].methods_by_name['GetMagicLinkForConnectedAccount']._serialized_options = b'\222A\220\005\n\022Connected Accounts\022\"Generate authentication magic link\032\242\002Creates a time-limited magic link for connecting or re-authorizing a third-party account. The link directs users to the OAuth authorization flow for the specified connector. Returns the generated link URL and expiration timestamp. Links typically expire after a short duration for security.J\237\001\n\003200\022\227\001\nHMagic link generated successfully with authorization URL and expiry time\022K\nI\032G.scalekit.v1.connected_accounts.GetMagicLinkForConnectedAccountResponseJK\n\003400\022D\nBInvalid request - missing required parameters or invalid connectorJB\n\003401\022;\n9Authentication required - missing or invalid access token\202\265\030\002\030D\202\323\344\223\002*\"%/api/v1/connected_accounts/magic_link:\001*'
223
223
  _globals['_CONNECTEDACCOUNTSERVICE'].methods_by_name['GetConnectedAccountAuth']._loaded_options = None
224
224
  _globals['_CONNECTEDACCOUNTSERVICE'].methods_by_name['GetConnectedAccountAuth']._serialized_options = b'\222A\330\005\n\022Connected Accounts\022\035Get connected account details\032\253\002Retrieves complete authentication details for a connected account including OAuth tokens, refresh tokens, scopes, and API configuration. Query by account ID or by combination of organization/user, connector, and identifier. Returns sensitive credential information - use appropriate access controls.J\240\001\n\003200\022\230\001\nISuccessfully retrieved connected account with full authentication details\022K\nI\032G.scalekit.v1.connected_accounts.GetConnectedAccountByIdentifierResponseJ<\n\003400\0225\n3Invalid request - missing required query parametersJB\n\003401\022;\n9Authentication required - missing or invalid access tokenJP\n\003404\022I\nGConnected account not found - no account matches the specified criteria\202\265\030\002\030D\202\323\344\223\002!\022\037/api/v1/connected_accounts/auth'
225
+ _globals['_CONNECTEDACCOUNTSERVICE'].methods_by_name['GetConnectedAccountDetails']._loaded_options = None
226
+ _globals['_CONNECTEDACCOUNTSERVICE'].methods_by_name['GetConnectedAccountDetails']._serialized_options = b'\222A\226\005\n\022Connected Accounts\022\035Get connected account details\032\203\002Returns metadata for a connected account including status, connector type, provider, and configuration without exposing stored authorization credentials. Look up by account ID, or by a combination of organization (or user), connector, and external identifier.J\206\001\n\003200\022\177\n0Successfully retrieved connected account details\022K\nI\032G.scalekit.v1.connected_accounts.GetConnectedAccountByIdentifierResponseJ<\n\003400\0225\n3Invalid request - missing required query parametersJB\n\003401\022;\n9Authentication required - missing or invalid access tokenJP\n\003404\022I\nGConnected account not found - no account matches the specified criteria\202\265\030\002\030D\202\323\344\223\002$\022\"/api/v1/connected_accounts/details'
225
227
  _globals['_CONNECTEDACCOUNTSERVICE'].methods_by_name['VerifyConnectedAccountUser']._loaded_options = None
226
228
  _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*'
227
229
  _globals['_CONNECTORSTATUS']._serialized_start=16883
@@ -275,5 +277,5 @@ if not _descriptor._USE_C_DESCRIPTORS:
275
277
  _globals['_STATICAUTH']._serialized_start=16637
276
278
  _globals['_STATICAUTH']._serialized_end=16881
277
279
  _globals['_CONNECTEDACCOUNTSERVICE']._serialized_start=17173
278
- _globals['_CONNECTEDACCOUNTSERVICE']._serialized_end=24845
280
+ _globals['_CONNECTEDACCOUNTSERVICE']._serialized_end=25738
279
281
  # @@protoc_insertion_point(module_scope)