scalekit-sdk-python 2.15.0__tar.gz → 2.16.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 (261) hide show
  1. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/PKG-INFO +1 -1
  2. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/_version.py +1 -1
  3. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/auth.py +2 -3
  4. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/client.py +2 -0
  5. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/core.py +1 -1
  6. scalekit_sdk_python-2.16.0/scalekit/events.py +58 -0
  7. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/auth/auth_pb2.py +26 -18
  8. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/auth/auth_pb2.pyi +10 -2
  9. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/auth/auth_pb2_grpc.py +3 -3
  10. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit_sdk_python.egg-info/PKG-INFO +1 -1
  11. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit_sdk_python.egg-info/SOURCES.txt +3 -0
  12. scalekit_sdk_python-2.16.0/tests/test_events.py +21 -0
  13. scalekit_sdk_python-2.16.0/tests/test_login.py +14 -0
  14. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/LICENSE +0 -0
  15. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/README.md +0 -0
  16. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/buf/__init__.py +0 -0
  17. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/buf/validate/__init__.py +0 -0
  18. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/buf/validate/validate_pb2.py +0 -0
  19. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/buf/validate/validate_pb2.pyi +0 -0
  20. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/buf/validate/validate_pb2_grpc.py +0 -0
  21. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/pyproject.toml +0 -0
  22. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/__init__.py +0 -0
  23. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/actions/__init__.py +0 -0
  24. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/actions/actions.py +0 -0
  25. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/actions/frameworks/__init__.py +0 -0
  26. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/actions/frameworks/google_adk.py +0 -0
  27. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/actions/frameworks/langchain.py +0 -0
  28. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/actions/frameworks/types/__init__.py +0 -0
  29. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/actions/frameworks/types/google_adk_tool.py +0 -0
  30. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/actions/frameworks/util.py +0 -0
  31. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/actions/models/__init__.py +0 -0
  32. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/actions/models/custom_provider.py +0 -0
  33. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/actions/models/mcp_config.py +0 -0
  34. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/actions/models/mcp_connection_auth_state.py +0 -0
  35. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/actions/models/mcp_instance.py +0 -0
  36. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/actions/models/requests/__init__.py +0 -0
  37. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/actions/models/requests/create_connected_account_request.py +0 -0
  38. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/actions/models/requests/create_custom_provider_request.py +0 -0
  39. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/actions/models/requests/delete_custom_provider_request.py +0 -0
  40. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/actions/models/requests/list_providers_request.py +0 -0
  41. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/actions/models/requests/mcp_request.py +0 -0
  42. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/actions/models/requests/tool_request.py +0 -0
  43. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/actions/models/requests/update_connected_account_request.py +0 -0
  44. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/actions/models/requests/update_custom_provider_request.py +0 -0
  45. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/actions/models/responses/__init__.py +0 -0
  46. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/actions/models/responses/create_connected_account_response.py +0 -0
  47. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/actions/models/responses/create_custom_provider_response.py +0 -0
  48. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/actions/models/responses/create_mcp_config_response.py +0 -0
  49. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/actions/models/responses/create_mcp_response.py +0 -0
  50. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/actions/models/responses/create_mcp_session_token_response.py +0 -0
  51. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/actions/models/responses/delete_connected_account_response.py +0 -0
  52. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/actions/models/responses/delete_custom_provider_response.py +0 -0
  53. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/actions/models/responses/delete_mcp_config_response.py +0 -0
  54. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/actions/models/responses/delete_mcp_instance_response.py +0 -0
  55. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/actions/models/responses/ensure_mcp_instance_response.py +0 -0
  56. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/actions/models/responses/execute_tool_response.py +0 -0
  57. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/actions/models/responses/get_connected_account_auth_response.py +0 -0
  58. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/actions/models/responses/get_mcp_instance_auth_state_response.py +0 -0
  59. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/actions/models/responses/get_mcp_instance_response.py +0 -0
  60. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/actions/models/responses/get_mcp_response.py +0 -0
  61. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/actions/models/responses/list_connected_accounts_response.py +0 -0
  62. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/actions/models/responses/list_mcp_configs_response.py +0 -0
  63. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/actions/models/responses/list_mcp_connected_accounts_response.py +0 -0
  64. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/actions/models/responses/list_mcp_instances_response.py +0 -0
  65. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/actions/models/responses/list_providers_response.py +0 -0
  66. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/actions/models/responses/magic_link_response.py +0 -0
  67. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/actions/models/responses/update_connected_account_response.py +0 -0
  68. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/actions/models/responses/update_custom_provider_response.py +0 -0
  69. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/actions/models/responses/update_mcp_config_response.py +0 -0
  70. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/actions/models/responses/update_mcp_instance_response.py +0 -0
  71. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/actions/models/responses/verify_connected_account_user_response.py +0 -0
  72. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/actions/models/tool_input_output.py +0 -0
  73. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/actions/models/tool_mapping.py +0 -0
  74. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/actions/modifier.py +0 -0
  75. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/actions/types.py +0 -0
  76. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/common/__init__.py +0 -0
  77. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/common/exceptions.py +0 -0
  78. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/common/scalekit.py +0 -0
  79. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/common/user.py +0 -0
  80. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/connected_accounts.py +0 -0
  81. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/connection.py +0 -0
  82. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/constants/__init__.py +0 -0
  83. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/constants/user.py +0 -0
  84. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/directory.py +0 -0
  85. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/domain.py +0 -0
  86. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/m2m_client.py +0 -0
  87. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/mcp.py +0 -0
  88. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/organization.py +0 -0
  89. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/passwordless.py +0 -0
  90. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/permissions.py +0 -0
  91. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/providers.py +0 -0
  92. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/role.py +0 -0
  93. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/sessions.py +0 -0
  94. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/token.py +0 -0
  95. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/tools.py +0 -0
  96. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/users.py +0 -0
  97. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/utils/__init__.py +0 -0
  98. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/utils/directory.py +0 -0
  99. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/__init__.py +0 -0
  100. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/agentkit_logs/__init__.py +0 -0
  101. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/agentkit_logs/agentkit_analytics_pb2.py +0 -0
  102. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/agentkit_logs/agentkit_analytics_pb2.pyi +0 -0
  103. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/agentkit_logs/agentkit_analytics_pb2_grpc.py +0 -0
  104. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/agentkit_logs/agentkit_logs_pb2.py +0 -0
  105. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/agentkit_logs/agentkit_logs_pb2.pyi +0 -0
  106. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/agentkit_logs/agentkit_logs_pb2_grpc.py +0 -0
  107. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/auditlogs/__init__.py +0 -0
  108. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/auditlogs/auditlogs_pb2.py +0 -0
  109. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/auditlogs/auditlogs_pb2.pyi +0 -0
  110. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/auditlogs/auditlogs_pb2_grpc.py +0 -0
  111. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/auth/__init__.py +0 -0
  112. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/auth/passwordless_pb2.py +0 -0
  113. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/auth/passwordless_pb2.pyi +0 -0
  114. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/auth/passwordless_pb2_grpc.py +0 -0
  115. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/auth/totp_pb2.py +0 -0
  116. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/auth/totp_pb2.pyi +0 -0
  117. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/auth/totp_pb2_grpc.py +0 -0
  118. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/auth/webauthn_pb2.py +0 -0
  119. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/auth/webauthn_pb2.pyi +0 -0
  120. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/auth/webauthn_pb2_grpc.py +0 -0
  121. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/clients/__init__.py +0 -0
  122. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/clients/clients_pb2.py +0 -0
  123. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/clients/clients_pb2.pyi +0 -0
  124. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/clients/clients_pb2_grpc.py +0 -0
  125. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/commons/__init__.py +0 -0
  126. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/commons/commons_pb2.py +0 -0
  127. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/commons/commons_pb2.pyi +0 -0
  128. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/commons/commons_pb2_grpc.py +0 -0
  129. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/connected_accounts/__init__.py +0 -0
  130. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/connected_accounts/connected_accounts_pb2.py +0 -0
  131. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/connected_accounts/connected_accounts_pb2.pyi +0 -0
  132. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/connected_accounts/connected_accounts_pb2_grpc.py +0 -0
  133. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/connections/__init__.py +0 -0
  134. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/connections/connections_pb2.py +0 -0
  135. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/connections/connections_pb2.pyi +0 -0
  136. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/connections/connections_pb2_grpc.py +0 -0
  137. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/directories/__init__.py +0 -0
  138. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/directories/directories_pb2.py +0 -0
  139. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/directories/directories_pb2.pyi +0 -0
  140. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/directories/directories_pb2_grpc.py +0 -0
  141. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/domains/__init__.py +0 -0
  142. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/domains/domains_pb2.py +0 -0
  143. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/domains/domains_pb2.pyi +0 -0
  144. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/domains/domains_pb2_grpc.py +0 -0
  145. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/emails/__init__.py +0 -0
  146. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/emails/emails_pb2.py +0 -0
  147. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/emails/emails_pb2.pyi +0 -0
  148. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/emails/emails_pb2_grpc.py +0 -0
  149. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/environments/__init__.py +0 -0
  150. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/environments/environments_pb2.py +0 -0
  151. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/environments/environments_pb2.pyi +0 -0
  152. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/environments/environments_pb2_grpc.py +0 -0
  153. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/errdetails/__init__.py +0 -0
  154. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/errdetails/errdetails_pb2.py +0 -0
  155. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/errdetails/errdetails_pb2.pyi +0 -0
  156. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/errdetails/errdetails_pb2_grpc.py +0 -0
  157. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/events/__init__.py +0 -0
  158. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/events/events_pb2.py +0 -0
  159. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/events/events_pb2.pyi +0 -0
  160. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/events/events_pb2_grpc.py +0 -0
  161. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/gateway/__init__.py +0 -0
  162. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/gateway/gateway_pb2.py +0 -0
  163. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/gateway/gateway_pb2.pyi +0 -0
  164. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/gateway/gateway_pb2_grpc.py +0 -0
  165. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/interceptors/__init__.py +0 -0
  166. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/interceptors/interceptors_pb2.py +0 -0
  167. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/interceptors/interceptors_pb2.pyi +0 -0
  168. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/interceptors/interceptors_pb2_grpc.py +0 -0
  169. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/keys/__init__.py +0 -0
  170. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/keys/keys_pb2.py +0 -0
  171. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/keys/keys_pb2.pyi +0 -0
  172. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/keys/keys_pb2_grpc.py +0 -0
  173. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/mcp/__init__.py +0 -0
  174. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/mcp/mcp_pb2.py +0 -0
  175. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/mcp/mcp_pb2.pyi +0 -0
  176. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/mcp/mcp_pb2_grpc.py +0 -0
  177. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/members/__init__.py +0 -0
  178. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/members/members_pb2.py +0 -0
  179. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/members/members_pb2.pyi +0 -0
  180. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/members/members_pb2_grpc.py +0 -0
  181. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/migrations/__init__.py +0 -0
  182. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/migrations/migrations_pb2.py +0 -0
  183. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/migrations/migrations_pb2.pyi +0 -0
  184. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/migrations/migrations_pb2_grpc.py +0 -0
  185. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/options/__init__.py +0 -0
  186. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/options/options_pb2.py +0 -0
  187. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/options/options_pb2.pyi +0 -0
  188. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/options/options_pb2_grpc.py +0 -0
  189. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/organizations/__init__.py +0 -0
  190. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/organizations/organizations_pb2.py +0 -0
  191. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/organizations/organizations_pb2.pyi +0 -0
  192. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/organizations/organizations_pb2_grpc.py +0 -0
  193. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/providers/__init__.py +0 -0
  194. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/providers/providers_pb2.py +0 -0
  195. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/providers/providers_pb2.pyi +0 -0
  196. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/providers/providers_pb2_grpc.py +0 -0
  197. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/roles/__init__.py +0 -0
  198. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/roles/roles_pb2.py +0 -0
  199. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/roles/roles_pb2.pyi +0 -0
  200. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/roles/roles_pb2_grpc.py +0 -0
  201. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/secrets/__init__.py +0 -0
  202. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/secrets/secrets_pb2.py +0 -0
  203. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/secrets/secrets_pb2.pyi +0 -0
  204. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/secrets/secrets_pb2_grpc.py +0 -0
  205. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/sessions/__init__.py +0 -0
  206. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/sessions/sessions_pb2.py +0 -0
  207. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/sessions/sessions_pb2.pyi +0 -0
  208. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/sessions/sessions_pb2_grpc.py +0 -0
  209. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/tokens/__init__.py +0 -0
  210. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/tokens/tokens_pb2.py +0 -0
  211. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/tokens/tokens_pb2.pyi +0 -0
  212. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/tokens/tokens_pb2_grpc.py +0 -0
  213. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/tools/__init__.py +0 -0
  214. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/tools/tools_pb2.py +0 -0
  215. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/tools/tools_pb2.pyi +0 -0
  216. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/tools/tools_pb2_grpc.py +0 -0
  217. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/user_attributes/__init__.py +0 -0
  218. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/user_attributes/user_attributes_pb2.py +0 -0
  219. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/user_attributes/user_attributes_pb2.pyi +0 -0
  220. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/user_attributes/user_attributes_pb2_grpc.py +0 -0
  221. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/users/__init__.py +0 -0
  222. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/users/users_pb2.py +0 -0
  223. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/users/users_pb2.pyi +0 -0
  224. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/users/users_pb2_grpc.py +0 -0
  225. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/webhooks/__init__.py +0 -0
  226. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/webhooks/webhooks_pb2.py +0 -0
  227. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/webhooks/webhooks_pb2.pyi +0 -0
  228. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/webhooks/webhooks_pb2_grpc.py +0 -0
  229. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/workspaces/__init__.py +0 -0
  230. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/workspaces/workspaces_pb2.py +0 -0
  231. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/workspaces/workspaces_pb2.pyi +0 -0
  232. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/v1/workspaces/workspaces_pb2_grpc.py +0 -0
  233. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit/webauthn.py +0 -0
  234. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit_sdk_python.egg-info/dependency_links.txt +0 -0
  235. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit_sdk_python.egg-info/requires.txt +0 -0
  236. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/scalekit_sdk_python.egg-info/top_level.txt +0 -0
  237. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/setup.cfg +0 -0
  238. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/setup.py +0 -0
  239. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/tests/test_actions.py +0 -0
  240. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/tests/test_connected_accounts.py +0 -0
  241. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/tests/test_connection.py +0 -0
  242. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/tests/test_directory.py +0 -0
  243. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/tests/test_domain.py +0 -0
  244. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/tests/test_m2m_client.py +0 -0
  245. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/tests/test_mcp.py +0 -0
  246. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/tests/test_org_roles.py +0 -0
  247. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/tests/test_organization.py +0 -0
  248. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/tests/test_organization_session_policy.py +0 -0
  249. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/tests/test_organization_slug_logo.py +0 -0
  250. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/tests/test_passwordless.py +0 -0
  251. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/tests/test_permissions.py +0 -0
  252. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/tests/test_providers.py +0 -0
  253. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/tests/test_role_defaults_dependent.py +0 -0
  254. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/tests/test_roles.py +0 -0
  255. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/tests/test_sessions.py +0 -0
  256. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/tests/test_sk819_retry_behavior.py +0 -0
  257. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/tests/test_tokens.py +0 -0
  258. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/tests/test_tools.py +0 -0
  259. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/tests/test_user_roles_permissions.py +0 -0
  260. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.0}/tests/test_users.py +0 -0
  261. {scalekit_sdk_python-2.15.0 → scalekit_sdk_python-2.16.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.15.0
3
+ Version: 2.16.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.15.0"
3
+ __version__ = "2.16.0"
@@ -1,6 +1,5 @@
1
1
  from typing import Optional, Dict, Any, Mapping
2
2
  from google.protobuf.json_format import ParseDict
3
- from google.protobuf.empty_pb2 import Empty
4
3
 
5
4
  from scalekit.core import CoreClient
6
5
  from scalekit.v1.auth import auth_pb2
@@ -29,7 +28,7 @@ class AuthClient:
29
28
  connection_id: str,
30
29
  login_request_id: str,
31
30
  user: Optional[Mapping[str, Any]] = None,
32
- ) -> Empty:
31
+ ) -> auth_pb2.UpdateLoginUserDetailsResponse:
33
32
  """
34
33
  Method to update user details for a login request
35
34
 
@@ -55,7 +54,7 @@ class AuthClient:
55
54
  :type : ``` dict ```
56
55
 
57
56
  :returns:
58
- Tuple of (Empty response, grpc.Call metadata)
57
+ Tuple of (UpdateLoginUserDetailsResponse carrying auth_request_id, grpc.Call metadata)
59
58
  """
60
59
 
61
60
  user_data: Dict[str, Any] = {}
@@ -26,6 +26,7 @@ from scalekit.passwordless import PasswordlessClient
26
26
  from scalekit.mcp import McpClient
27
27
  from scalekit.sessions import SessionsClient
28
28
  from scalekit.auth import AuthClient
29
+ from scalekit.events import EventsClient
29
30
  from scalekit.webauthn import WebAuthnClient
30
31
  from scalekit.token import TokenClient
31
32
  from scalekit.common.scalekit import (
@@ -83,6 +84,7 @@ class ScalekitClient:
83
84
  self.passwordless = PasswordlessClient(self.core_client)
84
85
  self.sessions = SessionsClient(self.core_client)
85
86
  self.auth = AuthClient(self.core_client)
87
+ self.events = EventsClient(self.core_client)
86
88
  self.webauthn = WebAuthnClient(self.core_client)
87
89
  self.tokens = TokenClient(self.core_client)
88
90
  except Exception:
@@ -29,7 +29,7 @@ class CoreClient:
29
29
 
30
30
  sdk_version = f"Scalekit-Python/{_sdk_version}"
31
31
  # YYYYMMDD
32
- api_version = "20260717"
32
+ api_version = "20260727"
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):
@@ -0,0 +1,58 @@
1
+ from typing import Optional
2
+
3
+ from scalekit.core import CoreClient
4
+ from scalekit.v1.events.events_pb2 import (
5
+ EventFilter,
6
+ ListEventsPaginatedRequest,
7
+ ListEventsPaginatedResponse,
8
+ )
9
+ from scalekit.v1.events.events_pb2_grpc import EventsServiceStub
10
+
11
+
12
+ class EventsClient:
13
+ """Class definition for Events Client"""
14
+
15
+ def __init__(self, core_client: CoreClient):
16
+ """
17
+ Initializer for Events Client
18
+
19
+ :param core_client : CoreClient Object
20
+ :type : ``` obj ```
21
+ :returns
22
+ None
23
+ """
24
+ self.core_client = core_client
25
+ self.events_service = EventsServiceStub(
26
+ self.core_client.grpc_secure_channel
27
+ )
28
+
29
+ def list_events_paginated(
30
+ self,
31
+ page_size: Optional[int] = None,
32
+ page_token: Optional[str] = None,
33
+ filter: Optional[EventFilter] = None, # noqa: A002
34
+ ) -> ListEventsPaginatedResponse:
35
+ """
36
+ Method to list events with pagination
37
+
38
+ :param page_size : page size for events list fetch (optional, uses server default if not provided)
39
+ :type : ``` int ```
40
+ :param page_token : page token for events list fetch
41
+ :type : ``` str ```
42
+ :param filter : EventFilter object to filter events (optional)
43
+ :type : ``` obj ```
44
+
45
+ :returns:
46
+ List Events Paginated Response
47
+ """
48
+ request = ListEventsPaginatedRequest()
49
+ if page_size is not None:
50
+ request.page_size = page_size
51
+ if page_token is not None:
52
+ request.page_token = page_token
53
+ if filter is not None:
54
+ request.filter.CopyFrom(filter)
55
+ return self.core_client.grpc_exec(
56
+ self.events_service.ListEventsPaginated.with_call,
57
+ request,
58
+ )
@@ -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\"\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\"\xce\x02\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\x12z\n\x1borganization_customizations\x18\x04 \x01(\x0b\x32/.scalekit.v1.commons.OrganizationCustomizationsB\x03\xe0\x41\x03H\x00R\x1aorganizationCustomizations\x88\x01\x01\x42\x1e\n\x1c_organization_customizations\"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\"\xe7\x05\n\x0cOrganization\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12+\n\x11membership_status\x18\x03 \x01(\tR\x10membershipStatus\x12=\n\x18invitation_inviter_email\x18\x04 \x01(\tH\x00R\x16invitationInviterEmail\x88\x01\x01\x12U\n\x16invitation_accepted_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x01R\x14invitationAcceptedAt\x88\x01\x01\x12S\n\x15invitation_created_at\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x02R\x13invitationCreatedAt\x88\x01\x01\x12S\n\x15invitation_expires_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x03R\x13invitationExpiresAt\x88\x01\x01\x12\xcc\x01\n\x08logo_url\x18\x08 \x01(\tB\xab\x01\x92\x41\x9f\x01\x32_HTTPS URL of the organization\'s logo image. Maximum 2048 characters. Must use the https scheme.J\'\"https://cdn.example.com/acme-logo.png\"x\x80\x10\x8a\x01\t^https://\xa2\x02\x03uri\xbaH\x05r\x03\x18\x80\x10H\x04R\x07logoUrl\x88\x01\x01\x42\x1b\n\x19_invitation_inviter_emailB\x19\n\x17_invitation_accepted_atB\x18\n\x16_invitation_created_atB\x18\n\x16_invitation_expires_atB\x0b\n\t_logo_url\"_\n\x0bUserDetails\x12\x14\n\x05\x65mail\x18\x01 \x01(\tR\x05\x65mail\x12\x1d\n\nfirst_name\x18\x02 \x01(\tR\tfirstName\x12\x1b\n\tlast_name\x18\x03 \x01(\tR\x08lastName\"\xc4\x01\n\x19SignupOrganizationRequest\x12+\n\x11organization_name\x18\x01 \x01(\tR\x10organizationName\x12\x1d\n\nfirst_name\x18\x02 \x01(\tR\tfirstName\x12\x1b\n\tlast_name\x18\x03 \x01(\tR\x08lastName\x12\x1b\n\tfull_name\x18\x04 \x01(\tR\x08\x66ullName\x12!\n\x0cphone_number\x18\x05 \x01(\tR\x0bphoneNumber\"r\n\x1aSignupOrganizationResponse\x12\'\n\x0forganization_id\x18\x01 \x01(\tR\x0eorganizationId\x12+\n\x11organization_name\x18\x02 \x01(\tR\x10organizationName\"\xd6\x02\n\x1dUpdateLoginUserDetailsRequest\x12v\n\rconnection_id\x18\x01 \x01(\tBQ\x92\x41\x45\x32+Connection ID. Unique ID for the connectionJ\x16\"conn_121312434123312\"\xbaH\x06r\x04\x10\x01\x18 R\x0c\x63onnectionId\x12\x90\x01\n\x10login_request_id\x18\x02 \x01(\tBf\x92\x41]2BLogin Request ID that was shared as part of authorization initiateJ\x17\"lri_73415099636808061\"\xbaH\x03\xc8\x01\x01R\x0eloginRequestId\x12*\n\x04user\x18\x03 \x01(\x0b\x32\x16.scalekit.v1.auth.UserR\x04user\"\x95\x10\n\x04User\x12\x83\x01\n\x03sub\x18\x01 \x01(\tBq\x92\x41g2WSubject identifier for the user (typically a unique user ID from the identity provider)J\x0c\"1234567890\"\xbaH\x04r\x02\x10\x01R\x03sub\x12R\n\x05\x65mail\x18\x02 \x01(\tB<\x92\x41\x32\x32\x1cUser\'s primary email addressJ\x12\"user@example.com\"\xbaH\x04r\x02\x10\x01R\x05\x65mail\x12=\n\ngiven_name\x18\x03 \x01(\tB\x1e\x92\x41\x1b\x32\x11User\'s first nameJ\x06\"John\"R\tgivenName\x12=\n\x0b\x66\x61mily_name\x18\x04 \x01(\tB\x1c\x92\x41\x19\x32\x10User\'s last nameJ\x05\"Doe\"R\nfamilyName\x12\x88\x01\n\x0e\x65mail_verified\x18\x05 \x01(\x08\x42\x61\x92\x41^2VIndicates whether the user\'s email address has been verified by the identity provider.J\x04trueR\remailVerified\x12\x63\n\x0cphone_number\x18\x06 \x01(\tB@\x92\x41=2,User\'s primary phone number in E.164 format.J\r\"+1234567890\"R\x0bphoneNumber\x12\x95\x01\n\x15phone_number_verified\x18\x07 \x01(\x08\x42\x61\x92\x41^2UIndicates whether the user\'s phone number has been verified by the identity provider.J\x05\x66\x61lseR\x13phoneNumberVerified\x12\x42\n\x04name\x18\x08 \x01(\tB.\x92\x41+2\x1d\x46ull display name of the userJ\n\"John Doe\"R\x04name\x12\x62\n\x12preferred_username\x18\t \x01(\tB3\x92\x41\x30\x32#User\'s preferred username or handleJ\t\"johndoe\"R\x11preferredUsername\x12\x62\n\x07picture\x18\n \x01(\tBH\x92\x41\x45\x32!URL to the user\'s profile pictureJ \"https://example.com/avatar.jpg\"R\x07picture\x12X\n\x06gender\x18\x0b \x01(\tB@\x92\x41=23User\'s gender as reported by the identity provider.J\x06\"male\"R\x06gender\x12\x65\n\x06locale\x18\x0c \x01(\tBM\x92\x41J2?User\'s locale or language preference (IETF BCP 47 language tag)J\x07\"en-US\"R\x06locale\x12\x66\n\x06groups\x18\r \x03(\tBN\x92\x41K2/List of group names or IDs the user belongs to.J\x18[\"admins\", \"developers\"]R\x06groups\x12\xf2\x01\n\x11\x63ustom_attributes\x18\x0e \x01(\x0b\x32\x17.google.protobuf.StructB\xab\x01\x92\x41\xa7\x01\x32mCustom attributes for the user, represented as a key-value map. Used for additional identity provider claims.J6{\"department\": \"Engineering\", \"employee_id\": \"E12345\"}R\x10\x63ustomAttributes\x12\xb1\x01\n\x18organization_external_id\x18\x0f \x01(\tBr\x92\x41o2EIdentifier for the user\xe2\x80\x99s organization within the identity providerJ&\"132d085d-d89d-4a2e-95bb-49bde680d14f\"H\x00R\x16organizationExternalId\x88\x01\x01\x12S\n\x05roles\x18\x10 \x03(\tB=\x92\x41:2#List of roles assigned to the user.J\x13[\"admin\", \"editor\"]R\x05roles\x12\xbd\x01\n\x1aorganization_external_name\x18\x11 \x01(\tBz\x92\x41o2`Name of the organization the user is authenticating into. Used to display on the consent screen.J\x0b\"Acme Corp\"\xbaH\x05r\x03\x18\xc8\x01H\x01R\x18organizationExternalName\x88\x01\x01\x42\x1b\n\x19_organization_external_idB\x1d\n\x1b_organization_external_name\"\xb1\x02\n\x14GetAuthStateResponse\x12:\n\nauth_state\x18\x01 \x01(\x0e\x32\x1b.scalekit.v1.auth.AuthStateR\tauthState\x12\x31\n\x04user\x18\x02 \x01(\x0b\x32\x1d.scalekit.v1.auth.UserDetailsR\x04user\x12\xa9\x01\n\nlogin_hint\x18\x03 \x01(\tB\x89\x01\x92\x41\x85\x01\x32oLogin hint from the original authorize request. Typically an email address used to pre-fill the login UI input.J\x12\"user@example.com\"R\tloginHint\"\x8c\x01\n\x13GetAuthErrorRequest\x12u\n\x08\x65rror_id\x18\x01 \x01(\tBZ\x92\x41H2.Unique identifier for the authentication errorJ\x16\"err_1234567890abcdef\"\xbaH\x0cr\n\x10\x01\x18@:\x04\x65rr_R\x07\x65rrorId\"Y\n\x14GetAuthErrorResponse\x12\x14\n\x05\x65rror\x18\x01 \x01(\tR\x05\x65rror\x12+\n\x11\x65rror_description\x18\x02 \x01(\tR\x10\x65rrorDescription*:\n\x06Intent\x12\x16\n\x12INTENT_UNSPECIFIED\x10\x00\x12\x0b\n\x07sign_in\x10\x01\x12\x0b\n\x07sign_up\x10\x02*\xb4\x04\n\tAuthState\x12\x1a\n\x16\x41UTH_STATE_UNSPECIFIED\x10\x00\x12\x1e\n\x1a\x41UTHENTICATION_IN_PROGRESS\x10\x01\x12\x19\n\x15ORGANIZATION_SWITCHER\x10\x02\x12\x19\n\x15ORGANIZATION_SELECTED\x10\x03\x12\x17\n\x13ORGANIZATION_SIGNUP\x10\x04\x12 \n\x1cORGANIZATION_SWITCHER_SIGNUP\x10\x05\x12\x1c\n\x18OTP_VERIFICATION_PENDING\x10\x06\x12\x13\n\x0fMAGIC_LINK_SENT\x10\x07\x12&\n\"LINK_SENT_OTP_VERIFICATION_PENDING\x10\x08\x12\x10\n\x0cOTP_VERIFIED\x10\t\x12\x11\n\rLINK_VERIFIED\x10\n\x12\x15\n\x11SSO_AUTHENTICATED\x10\x0b\x12\x14\n\x10ORG_USER_CREATED\x10\x0c\x12\x1c\n\x18\x41UTHENTICATION_COMPLETED\x10\r\x12\x19\n\x15\x41UTHENTICATION_FAILED\x10\x0e\x12\x15\n\x11WEBAUTHN_VERIFIED\x10\x0f\x12 \n\x1cVERIFICATION_MAGIC_LINK_SENT\x10\x10\x12$\n VERIFICATION_MAGIC_LINK_OTP_SENT\x10\x11\x12\x19\n\x15VERIFICATION_OTP_SENT\x10\x12\x12\x1a\n\x16VERIFICATION_COMPLETED\x10\x13\x32\xa7\x10\n\x0b\x41uthService\x12\x98\x01\n\x0fListAuthMethods\x12(.scalekit.v1.auth.ListAuthMethodsRequest\x1a).scalekit.v1.auth.ListAuthMethodsResponse\"0\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x15\x12\x13/api/v1/authmethods\x12\xba\x01\n\x13\x44iscoveryAuthMethod\x12,.scalekit.v1.auth.DiscoveryAuthMethodRequest\x1a-.scalekit.v1.auth.DiscoveryAuthMethodResponse\"F\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02+\"\x16/api/v1/auth:discovery:\x11\x64iscovery_request\x12\xc0\x01\n\x15VerifyPasswordLessOtp\x12..scalekit.v1.auth.VerifyPasswordLessOtpRequest\x1a/.scalekit.v1.auth.VerifyPasswordLessOtpResponse\"F\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02+\" /api/v1/auth/passwordless:verify:\x07otp_req\x12\x83\x01\n\x12ResendPasswordless\x12\x16.google.protobuf.Empty\x1a\x16.google.protobuf.Empty\"=\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\"\" /api/v1/auth/passwordless:resend\x12\x99\x01\n\x15ListUserOrganizations\x12\x16.google.protobuf.Empty\x1a/.scalekit.v1.auth.ListUserOrganizationsResponse\"7\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x1c\x12\x1a/api/v1/auth:organizations\x12\xa4\x01\n\x12SignupOrganization\x12+.scalekit.v1.auth.SignupOrganizationRequest\x1a,.scalekit.v1.auth.SignupOrganizationResponse\"3\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x18\"\x13/api/v1/auth:signup:\x01*\x12\x7f\n\x0cGetAuthState\x12\x16.google.protobuf.Empty\x1a&.scalekit.v1.auth.GetAuthStateResponse\"/\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x14\x12\x12/api/v1/auth/state\x12\xb6\x01\n\x0cGetAuthError\x12%.scalekit.v1.auth.GetAuthErrorRequest\x1a&.scalekit.v1.auth.GetAuthErrorResponse\"W\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02<\x12\x19/api/v1/errors/{error_id}Z\x1f\x12\x1d/api/v1/auth/error/{error_id}\x12j\n\x06Logout\x12\x16.google.protobuf.Empty\x1a\x16.google.protobuf.Empty\"0\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x15\"\x13/api/v1/auth/logout\x12\xb2\x01\n\x15GetAuthCustomizations\x12..scalekit.v1.auth.GetAuthCustomizationsRequest\x1a/.scalekit.v1.auth.GetAuthCustomizationsResponse\"8\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x1d\x12\x1b/api/v1/auth:customizations\x12\x88\x01\n\x0fGetAuthFeatures\x12\x16.google.protobuf.Empty\x1a).scalekit.v1.auth.GetAuthFeaturesResponse\"2\x82\xb5\x18\x02\x18\x01\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02\x17\x12\x15/api/v1/auth:features\x12\xcd\x02\n\x16UpdateLoginUserDetails\x12/.scalekit.v1.auth.UpdateLoginUserDetailsRequest\x1a\x16.google.protobuf.Empty\"\xe9\x01\x92\x41z\n\x0b\x43onnections\x12%Update User Details for login request\x1a%Update User Details for login requestJ\x1d\n\x03\x32\x30\x30\x12\x16\n\x14\x44\x65leted Successfully\x82\xb5\x18\x02\x18\x04\xfa\xd2\xe4\x93\x02\t\x12\x07PREVIEW\x82\xd3\xe4\x93\x02Q\"I/api/v1/connections/{connection_id}/auth-requests/{login_request_id}/user:\x04userB0Z.github.com/scalekit-inc/scalekit/pkg/grpc/authb\x06proto3')
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\"\xce\x02\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\x12z\n\x1borganization_customizations\x18\x04 \x01(\x0b\x32/.scalekit.v1.commons.OrganizationCustomizationsB\x03\xe0\x41\x03H\x00R\x1aorganizationCustomizations\x88\x01\x01\x42\x1e\n\x1c_organization_customizations\"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\"\xe7\x05\n\x0cOrganization\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12+\n\x11membership_status\x18\x03 \x01(\tR\x10membershipStatus\x12=\n\x18invitation_inviter_email\x18\x04 \x01(\tH\x00R\x16invitationInviterEmail\x88\x01\x01\x12U\n\x16invitation_accepted_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x01R\x14invitationAcceptedAt\x88\x01\x01\x12S\n\x15invitation_created_at\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x02R\x13invitationCreatedAt\x88\x01\x01\x12S\n\x15invitation_expires_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x03R\x13invitationExpiresAt\x88\x01\x01\x12\xcc\x01\n\x08logo_url\x18\x08 \x01(\tB\xab\x01\x92\x41\x9f\x01\x32_HTTPS URL of the organization\'s logo image. Maximum 2048 characters. Must use the https scheme.J\'\"https://cdn.example.com/acme-logo.png\"x\x80\x10\x8a\x01\t^https://\xa2\x02\x03uri\xbaH\x05r\x03\x18\x80\x10H\x04R\x07logoUrl\x88\x01\x01\x42\x1b\n\x19_invitation_inviter_emailB\x19\n\x17_invitation_accepted_atB\x18\n\x16_invitation_created_atB\x18\n\x16_invitation_expires_atB\x0b\n\t_logo_url\"_\n\x0bUserDetails\x12\x14\n\x05\x65mail\x18\x01 \x01(\tR\x05\x65mail\x12\x1d\n\nfirst_name\x18\x02 \x01(\tR\tfirstName\x12\x1b\n\tlast_name\x18\x03 \x01(\tR\x08lastName\"\xc4\x01\n\x19SignupOrganizationRequest\x12+\n\x11organization_name\x18\x01 \x01(\tR\x10organizationName\x12\x1d\n\nfirst_name\x18\x02 \x01(\tR\tfirstName\x12\x1b\n\tlast_name\x18\x03 \x01(\tR\x08lastName\x12\x1b\n\tfull_name\x18\x04 \x01(\tR\x08\x66ullName\x12!\n\x0cphone_number\x18\x05 \x01(\tR\x0bphoneNumber\"r\n\x1aSignupOrganizationResponse\x12\'\n\x0forganization_id\x18\x01 \x01(\tR\x0eorganizationId\x12+\n\x11organization_name\x18\x02 \x01(\tR\x10organizationName\"\xd6\x02\n\x1dUpdateLoginUserDetailsRequest\x12v\n\rconnection_id\x18\x01 \x01(\tBQ\x92\x41\x45\x32+Connection ID. Unique ID for the connectionJ\x16\"conn_121312434123312\"\xbaH\x06r\x04\x10\x01\x18 R\x0c\x63onnectionId\x12\x90\x01\n\x10login_request_id\x18\x02 \x01(\tBf\x92\x41]2BLogin Request ID that was shared as part of authorization initiateJ\x17\"lri_73415099636808061\"\xbaH\x03\xc8\x01\x01R\x0eloginRequestId\x12*\n\x04user\x18\x03 \x01(\x0b\x32\x16.scalekit.v1.auth.UserR\x04user\"\xd2\x01\n\x1eUpdateLoginUserDetailsResponse\x12\xaf\x01\n\x0f\x61uth_request_id\x18\x01 \x01(\tB\x86\x01\x92\x41\x82\x01\x32gThe auth request ID which can be used to look up the authentication journey of the user using auth logsJ\x17\"req_73415099636808061\"R\rauthRequestId\"\xb6\x13\n\x04User\x12\xa5\x01\n\x03sub\x18\x01 \x01(\tB\x92\x01\x92\x41\x8e\x01\x32~Subject identifier for the user (typically a unique user ID from the identity provider). Required unless login_failed is true.J\x0c\"1234567890\"R\x03sub\x12r\n\x05\x65mail\x18\x02 \x01(\tB\\\x92\x41Y2CUser\'s primary email address. Required unless login_failed is true.J\x12\"user@example.com\"R\x05\x65mail\x12=\n\ngiven_name\x18\x03 \x01(\tB\x1e\x92\x41\x1b\x32\x11User\'s first nameJ\x06\"John\"R\tgivenName\x12=\n\x0b\x66\x61mily_name\x18\x04 \x01(\tB\x1c\x92\x41\x19\x32\x10User\'s last nameJ\x05\"Doe\"R\nfamilyName\x12\x88\x01\n\x0e\x65mail_verified\x18\x05 \x01(\x08\x42\x61\x92\x41^2VIndicates whether the user\'s email address has been verified by the identity provider.J\x04trueR\remailVerified\x12\x63\n\x0cphone_number\x18\x06 \x01(\tB@\x92\x41=2,User\'s primary phone number in E.164 format.J\r\"+1234567890\"R\x0bphoneNumber\x12\x95\x01\n\x15phone_number_verified\x18\x07 \x01(\x08\x42\x61\x92\x41^2UIndicates whether the user\'s phone number has been verified by the identity provider.J\x05\x66\x61lseR\x13phoneNumberVerified\x12\x42\n\x04name\x18\x08 \x01(\tB.\x92\x41+2\x1d\x46ull display name of the userJ\n\"John Doe\"R\x04name\x12\x62\n\x12preferred_username\x18\t \x01(\tB3\x92\x41\x30\x32#User\'s preferred username or handleJ\t\"johndoe\"R\x11preferredUsername\x12\x62\n\x07picture\x18\n \x01(\tBH\x92\x41\x45\x32!URL to the user\'s profile pictureJ \"https://example.com/avatar.jpg\"R\x07picture\x12X\n\x06gender\x18\x0b \x01(\tB@\x92\x41=23User\'s gender as reported by the identity provider.J\x06\"male\"R\x06gender\x12\x65\n\x06locale\x18\x0c \x01(\tBM\x92\x41J2?User\'s locale or language preference (IETF BCP 47 language tag)J\x07\"en-US\"R\x06locale\x12\x66\n\x06groups\x18\r \x03(\tBN\x92\x41K2/List of group names or IDs the user belongs to.J\x18[\"admins\", \"developers\"]R\x06groups\x12\xf2\x01\n\x11\x63ustom_attributes\x18\x0e \x01(\x0b\x32\x17.google.protobuf.StructB\xab\x01\x92\x41\xa7\x01\x32mCustom attributes for the user, represented as a key-value map. Used for additional identity provider claims.J6{\"department\": \"Engineering\", \"employee_id\": \"E12345\"}R\x10\x63ustomAttributes\x12\xb1\x01\n\x18organization_external_id\x18\x0f \x01(\tBr\x92\x41o2EIdentifier for the user\xe2\x80\x99s organization within the identity providerJ&\"132d085d-d89d-4a2e-95bb-49bde680d14f\"H\x00R\x16organizationExternalId\x88\x01\x01\x12S\n\x05roles\x18\x10 \x03(\tB=\x92\x41:2#List of roles assigned to the user.J\x13[\"admin\", \"editor\"]R\x05roles\x12\xbd\x01\n\x1aorganization_external_name\x18\x11 \x01(\tBz\x92\x41o2`Name of the organization the user is authenticating into. Used to display on the consent screen.J\x0b\"Acme Corp\"\xbaH\x05r\x03\x18\xc8\x01H\x01R\x18organizationExternalName\x88\x01\x01\x12\xad\x01\n\x0clogin_failed\x18\x12 \x01(\x08\x42\x89\x01\x92\x41\x85\x01\x32|Indicates the upstream login attempt failed. When true, the login request should be treated as failed rather than completed.J\x05\x66\x61lseR\x0bloginFailed:\xac\x01\xbaH\xa8\x01\x1a\xa5\x01\n+user.sub_email_required_unless_login_failed\x12;sub and email must be non-empty unless login_failed is true\x1a\x39this.login_failed || (this.sub != \'\' && this.email != \'\')B\x1b\n\x19_organization_external_idB\x1d\n\x1b_organization_external_name\"\xb1\x02\n\x14GetAuthStateResponse\x12:\n\nauth_state\x18\x01 \x01(\x0e\x32\x1b.scalekit.v1.auth.AuthStateR\tauthState\x12\x31\n\x04user\x18\x02 \x01(\x0b\x32\x1d.scalekit.v1.auth.UserDetailsR\x04user\x12\xa9\x01\n\nlogin_hint\x18\x03 \x01(\tB\x89\x01\x92\x41\x85\x01\x32oLogin hint from the original authorize request. Typically an email address used to pre-fill the login UI input.J\x12\"user@example.com\"R\tloginHint\"\x8c\x01\n\x13GetAuthErrorRequest\x12u\n\x08\x65rror_id\x18\x01 \x01(\tBZ\x92\x41H2.Unique identifier for the authentication errorJ\x16\"err_1234567890abcdef\"\xbaH\x0cr\n\x10\x01\x18@:\x04\x65rr_R\x07\x65rrorId\"Y\n\x14GetAuthErrorResponse\x12\x14\n\x05\x65rror\x18\x01 \x01(\tR\x05\x65rror\x12+\n\x11\x65rror_description\x18\x02 \x01(\tR\x10\x65rrorDescription*:\n\x06Intent\x12\x16\n\x12INTENT_UNSPECIFIED\x10\x00\x12\x0b\n\x07sign_in\x10\x01\x12\x0b\n\x07sign_up\x10\x02*\xb4\x04\n\tAuthState\x12\x1a\n\x16\x41UTH_STATE_UNSPECIFIED\x10\x00\x12\x1e\n\x1a\x41UTHENTICATION_IN_PROGRESS\x10\x01\x12\x19\n\x15ORGANIZATION_SWITCHER\x10\x02\x12\x19\n\x15ORGANIZATION_SELECTED\x10\x03\x12\x17\n\x13ORGANIZATION_SIGNUP\x10\x04\x12 \n\x1cORGANIZATION_SWITCHER_SIGNUP\x10\x05\x12\x1c\n\x18OTP_VERIFICATION_PENDING\x10\x06\x12\x13\n\x0fMAGIC_LINK_SENT\x10\x07\x12&\n\"LINK_SENT_OTP_VERIFICATION_PENDING\x10\x08\x12\x10\n\x0cOTP_VERIFIED\x10\t\x12\x11\n\rLINK_VERIFIED\x10\n\x12\x15\n\x11SSO_AUTHENTICATED\x10\x0b\x12\x14\n\x10ORG_USER_CREATED\x10\x0c\x12\x1c\n\x18\x41UTHENTICATION_COMPLETED\x10\r\x12\x19\n\x15\x41UTHENTICATION_FAILED\x10\x0e\x12\x15\n\x11WEBAUTHN_VERIFIED\x10\x0f\x12 \n\x1cVERIFICATION_MAGIC_LINK_SENT\x10\x10\x12$\n VERIFICATION_MAGIC_LINK_OTP_SENT\x10\x11\x12\x19\n\x15VERIFICATION_OTP_SENT\x10\x12\x12\x1a\n\x16VERIFICATION_COMPLETED\x10\x13\x32\xc5\x11\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\xeb\x03\n\x16UpdateLoginUserDetails\x12/.scalekit.v1.auth.UpdateLoginUserDetailsRequest\x1a\x30.scalekit.v1.auth.UpdateLoginUserDetailsResponse\"\xed\x02\x92\x41\xfd\x01\n\x0b\x43onnections\x12%Update User Details for login request\x1a%Update User Details for login requestJ\x9f\x01\n\x03\x32\x30\x30\x12\x97\x01\n_User details submitted successfully; returns the auth request ID for the authentication journey\x12\x34\n2\x1a\x30.scalekit.v1.auth.UpdateLoginUserDetailsResponse\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)
@@ -69,10 +69,12 @@ if not _descriptor._USE_C_DESCRIPTORS:
69
69
  _globals['_UPDATELOGINUSERDETAILSREQUEST'].fields_by_name['connection_id']._serialized_options = b'\222AE2+Connection ID. Unique ID for the connectionJ\026\"conn_121312434123312\"\272H\006r\004\020\001\030 '
70
70
  _globals['_UPDATELOGINUSERDETAILSREQUEST'].fields_by_name['login_request_id']._loaded_options = None
71
71
  _globals['_UPDATELOGINUSERDETAILSREQUEST'].fields_by_name['login_request_id']._serialized_options = b'\222A]2BLogin Request ID that was shared as part of authorization initiateJ\027\"lri_73415099636808061\"\272H\003\310\001\001'
72
+ _globals['_UPDATELOGINUSERDETAILSRESPONSE'].fields_by_name['auth_request_id']._loaded_options = None
73
+ _globals['_UPDATELOGINUSERDETAILSRESPONSE'].fields_by_name['auth_request_id']._serialized_options = b'\222A\202\0012gThe auth request ID which can be used to look up the authentication journey of the user using auth logsJ\027\"req_73415099636808061\"'
72
74
  _globals['_USER'].fields_by_name['sub']._loaded_options = None
73
- _globals['_USER'].fields_by_name['sub']._serialized_options = b'\222Ag2WSubject identifier for the user (typically a unique user ID from the identity provider)J\014\"1234567890\"\272H\004r\002\020\001'
75
+ _globals['_USER'].fields_by_name['sub']._serialized_options = b'\222A\216\0012~Subject identifier for the user (typically a unique user ID from the identity provider). Required unless login_failed is true.J\014\"1234567890\"'
74
76
  _globals['_USER'].fields_by_name['email']._loaded_options = None
75
- _globals['_USER'].fields_by_name['email']._serialized_options = b'\222A22\034User\'s primary email addressJ\022\"user@example.com\"\272H\004r\002\020\001'
77
+ _globals['_USER'].fields_by_name['email']._serialized_options = b'\222AY2CUser\'s primary email address. Required unless login_failed is true.J\022\"user@example.com\"'
76
78
  _globals['_USER'].fields_by_name['given_name']._loaded_options = None
77
79
  _globals['_USER'].fields_by_name['given_name']._serialized_options = b'\222A\0332\021User\'s first nameJ\006\"John\"'
78
80
  _globals['_USER'].fields_by_name['family_name']._loaded_options = None
@@ -103,6 +105,10 @@ if not _descriptor._USE_C_DESCRIPTORS:
103
105
  _globals['_USER'].fields_by_name['roles']._serialized_options = b'\222A:2#List of roles assigned to the user.J\023[\"admin\", \"editor\"]'
104
106
  _globals['_USER'].fields_by_name['organization_external_name']._loaded_options = None
105
107
  _globals['_USER'].fields_by_name['organization_external_name']._serialized_options = b'\222Ao2`Name of the organization the user is authenticating into. Used to display on the consent screen.J\013\"Acme Corp\"\272H\005r\003\030\310\001'
108
+ _globals['_USER'].fields_by_name['login_failed']._loaded_options = None
109
+ _globals['_USER'].fields_by_name['login_failed']._serialized_options = b'\222A\205\0012|Indicates the upstream login attempt failed. When true, the login request should be treated as failed rather than completed.J\005false'
110
+ _globals['_USER']._loaded_options = None
111
+ _globals['_USER']._serialized_options = b'\272H\250\001\032\245\001\n+user.sub_email_required_unless_login_failed\022;sub and email must be non-empty unless login_failed is true\0329this.login_failed || (this.sub != \'\' && this.email != \'\')'
106
112
  _globals['_GETAUTHSTATERESPONSE'].fields_by_name['login_hint']._loaded_options = None
107
113
  _globals['_GETAUTHSTATERESPONSE'].fields_by_name['login_hint']._serialized_options = b'\222A\205\0012oLogin hint from the original authorize request. Typically an email address used to pre-fill the login UI input.J\022\"user@example.com\"'
108
114
  _globals['_GETAUTHERRORREQUEST'].fields_by_name['error_id']._loaded_options = None
@@ -130,11 +136,11 @@ if not _descriptor._USE_C_DESCRIPTORS:
130
136
  _globals['_AUTHSERVICE'].methods_by_name['GetAuthFeatures']._loaded_options = None
131
137
  _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'
132
138
  _globals['_AUTHSERVICE'].methods_by_name['UpdateLoginUserDetails']._loaded_options = None
133
- _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'
134
- _globals['_INTENT']._serialized_start=7526
135
- _globals['_INTENT']._serialized_end=7584
136
- _globals['_AUTHSTATE']._serialized_start=7587
137
- _globals['_AUTHSTATE']._serialized_end=8151
139
+ _globals['_AUTHSERVICE'].methods_by_name['UpdateLoginUserDetails']._serialized_options = b'\222A\375\001\n\013Connections\022%Update User Details for login request\032%Update User Details for login requestJ\237\001\n\003200\022\227\001\n_User details submitted successfully; returns the auth request ID for the authentication journey\0224\n2\0320.scalekit.v1.auth.UpdateLoginUserDetailsResponse\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'
140
+ _globals['_INTENT']._serialized_start=8156
141
+ _globals['_INTENT']._serialized_end=8214
142
+ _globals['_AUTHSTATE']._serialized_start=8217
143
+ _globals['_AUTHSTATE']._serialized_end=8781
138
144
  _globals['_LISTAUTHMETHODSREQUEST']._serialized_start=423
139
145
  _globals['_LISTAUTHMETHODSREQUEST']._serialized_end=471
140
146
  _globals['_LISTAUTHMETHODSRESPONSE']._serialized_start=473
@@ -173,14 +179,16 @@ if not _descriptor._USE_C_DESCRIPTORS:
173
179
  _globals['_SIGNUPORGANIZATIONRESPONSE']._serialized_end=4565
174
180
  _globals['_UPDATELOGINUSERDETAILSREQUEST']._serialized_start=4568
175
181
  _globals['_UPDATELOGINUSERDETAILSREQUEST']._serialized_end=4910
176
- _globals['_USER']._serialized_start=4913
177
- _globals['_USER']._serialized_end=6982
178
- _globals['_GETAUTHSTATERESPONSE']._serialized_start=6985
179
- _globals['_GETAUTHSTATERESPONSE']._serialized_end=7290
180
- _globals['_GETAUTHERRORREQUEST']._serialized_start=7293
181
- _globals['_GETAUTHERRORREQUEST']._serialized_end=7433
182
- _globals['_GETAUTHERRORRESPONSE']._serialized_start=7435
183
- _globals['_GETAUTHERRORRESPONSE']._serialized_end=7524
184
- _globals['_AUTHSERVICE']._serialized_start=8154
185
- _globals['_AUTHSERVICE']._serialized_end=10241
182
+ _globals['_UPDATELOGINUSERDETAILSRESPONSE']._serialized_start=4913
183
+ _globals['_UPDATELOGINUSERDETAILSRESPONSE']._serialized_end=5123
184
+ _globals['_USER']._serialized_start=5126
185
+ _globals['_USER']._serialized_end=7612
186
+ _globals['_GETAUTHSTATERESPONSE']._serialized_start=7615
187
+ _globals['_GETAUTHSTATERESPONSE']._serialized_end=7920
188
+ _globals['_GETAUTHERRORREQUEST']._serialized_start=7923
189
+ _globals['_GETAUTHERRORREQUEST']._serialized_end=8063
190
+ _globals['_GETAUTHERRORRESPONSE']._serialized_start=8065
191
+ _globals['_GETAUTHERRORRESPONSE']._serialized_end=8154
192
+ _globals['_AUTHSERVICE']._serialized_start=8784
193
+ _globals['_AUTHSERVICE']._serialized_end=11029
186
194
  # @@protoc_insertion_point(module_scope)
@@ -239,8 +239,14 @@ class UpdateLoginUserDetailsRequest(_message.Message):
239
239
  user: User
240
240
  def __init__(self, connection_id: _Optional[str] = ..., login_request_id: _Optional[str] = ..., user: _Optional[_Union[User, _Mapping]] = ...) -> None: ...
241
241
 
242
+ class UpdateLoginUserDetailsResponse(_message.Message):
243
+ __slots__ = ("auth_request_id",)
244
+ AUTH_REQUEST_ID_FIELD_NUMBER: _ClassVar[int]
245
+ auth_request_id: str
246
+ def __init__(self, auth_request_id: _Optional[str] = ...) -> None: ...
247
+
242
248
  class User(_message.Message):
243
- __slots__ = ("sub", "email", "given_name", "family_name", "email_verified", "phone_number", "phone_number_verified", "name", "preferred_username", "picture", "gender", "locale", "groups", "custom_attributes", "organization_external_id", "roles", "organization_external_name")
249
+ __slots__ = ("sub", "email", "given_name", "family_name", "email_verified", "phone_number", "phone_number_verified", "name", "preferred_username", "picture", "gender", "locale", "groups", "custom_attributes", "organization_external_id", "roles", "organization_external_name", "login_failed")
244
250
  SUB_FIELD_NUMBER: _ClassVar[int]
245
251
  EMAIL_FIELD_NUMBER: _ClassVar[int]
246
252
  GIVEN_NAME_FIELD_NUMBER: _ClassVar[int]
@@ -258,6 +264,7 @@ class User(_message.Message):
258
264
  ORGANIZATION_EXTERNAL_ID_FIELD_NUMBER: _ClassVar[int]
259
265
  ROLES_FIELD_NUMBER: _ClassVar[int]
260
266
  ORGANIZATION_EXTERNAL_NAME_FIELD_NUMBER: _ClassVar[int]
267
+ LOGIN_FAILED_FIELD_NUMBER: _ClassVar[int]
261
268
  sub: str
262
269
  email: str
263
270
  given_name: str
@@ -275,7 +282,8 @@ class User(_message.Message):
275
282
  organization_external_id: str
276
283
  roles: _containers.RepeatedScalarFieldContainer[str]
277
284
  organization_external_name: str
278
- def __init__(self, sub: _Optional[str] = ..., email: _Optional[str] = ..., given_name: _Optional[str] = ..., family_name: _Optional[str] = ..., email_verified: bool = ..., phone_number: _Optional[str] = ..., phone_number_verified: bool = ..., name: _Optional[str] = ..., preferred_username: _Optional[str] = ..., picture: _Optional[str] = ..., gender: _Optional[str] = ..., locale: _Optional[str] = ..., groups: _Optional[_Iterable[str]] = ..., custom_attributes: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ..., organization_external_id: _Optional[str] = ..., roles: _Optional[_Iterable[str]] = ..., organization_external_name: _Optional[str] = ...) -> None: ...
285
+ login_failed: bool
286
+ def __init__(self, sub: _Optional[str] = ..., email: _Optional[str] = ..., given_name: _Optional[str] = ..., family_name: _Optional[str] = ..., email_verified: bool = ..., phone_number: _Optional[str] = ..., phone_number_verified: bool = ..., name: _Optional[str] = ..., preferred_username: _Optional[str] = ..., picture: _Optional[str] = ..., gender: _Optional[str] = ..., locale: _Optional[str] = ..., groups: _Optional[_Iterable[str]] = ..., custom_attributes: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ..., organization_external_id: _Optional[str] = ..., roles: _Optional[_Iterable[str]] = ..., organization_external_name: _Optional[str] = ..., login_failed: bool = ...) -> None: ...
279
287
 
280
288
  class GetAuthStateResponse(_message.Message):
281
289
  __slots__ = ("auth_state", "user", "login_hint")
@@ -73,7 +73,7 @@ class AuthServiceStub(object):
73
73
  self.UpdateLoginUserDetails = channel.unary_unary(
74
74
  '/scalekit.v1.auth.AuthService/UpdateLoginUserDetails',
75
75
  request_serializer=scalekit_dot_v1_dot_auth_dot_auth__pb2.UpdateLoginUserDetailsRequest.SerializeToString,
76
- response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
76
+ response_deserializer=scalekit_dot_v1_dot_auth_dot_auth__pb2.UpdateLoginUserDetailsResponse.FromString,
77
77
  )
78
78
 
79
79
 
@@ -213,7 +213,7 @@ def add_AuthServiceServicer_to_server(servicer, server):
213
213
  'UpdateLoginUserDetails': grpc.unary_unary_rpc_method_handler(
214
214
  servicer.UpdateLoginUserDetails,
215
215
  request_deserializer=scalekit_dot_v1_dot_auth_dot_auth__pb2.UpdateLoginUserDetailsRequest.FromString,
216
- response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
216
+ response_serializer=scalekit_dot_v1_dot_auth_dot_auth__pb2.UpdateLoginUserDetailsResponse.SerializeToString,
217
217
  ),
218
218
  }
219
219
  generic_handler = grpc.method_handlers_generic_handler(
@@ -425,6 +425,6 @@ class AuthService(object):
425
425
  metadata=None):
426
426
  return grpc.experimental.unary_unary(request, target, '/scalekit.v1.auth.AuthService/UpdateLoginUserDetails',
427
427
  scalekit_dot_v1_dot_auth_dot_auth__pb2.UpdateLoginUserDetailsRequest.SerializeToString,
428
- google_dot_protobuf_dot_empty__pb2.Empty.FromString,
428
+ scalekit_dot_v1_dot_auth_dot_auth__pb2.UpdateLoginUserDetailsResponse.FromString,
429
429
  options, channel_credentials,
430
430
  insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: scalekit-sdk-python
3
- Version: 2.15.0
3
+ Version: 2.16.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
@@ -16,6 +16,7 @@ scalekit/connection.py
16
16
  scalekit/core.py
17
17
  scalekit/directory.py
18
18
  scalekit/domain.py
19
+ scalekit/events.py
19
20
  scalekit/m2m_client.py
20
21
  scalekit/mcp.py
21
22
  scalekit/organization.py
@@ -236,6 +237,8 @@ tests/test_connected_accounts.py
236
237
  tests/test_connection.py
237
238
  tests/test_directory.py
238
239
  tests/test_domain.py
240
+ tests/test_events.py
241
+ tests/test_login.py
239
242
  tests/test_m2m_client.py
240
243
  tests/test_mcp.py
241
244
  tests/test_org_roles.py
@@ -0,0 +1,21 @@
1
+ from basetest import BaseTest
2
+
3
+
4
+ class TestEvents(BaseTest):
5
+ """ Class definition for Test Events Class """
6
+
7
+ def test_list_events_paginated(self):
8
+ """ Method to test list events paginated """
9
+ response = self.scalekit_client.events.list_events_paginated(
10
+ page_size=10, page_token=""
11
+ )
12
+ self.assertEqual(response[1].code().name, "OK")
13
+ self.assertTrue(response[0] is not None)
14
+
15
+ # events is iterable (may be empty)
16
+ events = list(response[0].events)
17
+ self.assertIsNotNone(events)
18
+
19
+ # reading pagination tokens must not throw
20
+ _ = response[0].next_page_token
21
+ _ = response[0].prev_page_token
@@ -0,0 +1,14 @@
1
+ from basetest import BaseTest
2
+
3
+
4
+ class TestLogin(BaseTest):
5
+ """ Class definition for Test Login Class """
6
+
7
+ def test_update_login_user_details_invalid_user_type(self):
8
+ """ Client-side validation: a non-mapping user raises TypeError (always runs) """
9
+ with self.assertRaises(TypeError):
10
+ self.scalekit_client.auth.update_login_user_details(
11
+ connection_id="conn_test",
12
+ login_request_id="req_test",
13
+ user=12345,
14
+ )