scalekit-sdk-python 2.4.17__tar.gz → 2.6.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 (235) hide show
  1. {scalekit_sdk_python-2.4.17/scalekit_sdk_python.egg-info → scalekit_sdk_python-2.6.0}/PKG-INFO +1 -1
  2. scalekit_sdk_python-2.6.0/pyproject.toml +7 -0
  3. scalekit_sdk_python-2.6.0/scalekit/_version.py +3 -0
  4. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/client.py +30 -9
  5. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/core.py +3 -2
  6. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/directory.py +1 -1
  7. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/m2m_client.py +1 -1
  8. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/organization.py +10 -3
  9. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/role.py +26 -8
  10. scalekit_sdk_python-2.6.0/scalekit/token.py +159 -0
  11. scalekit_sdk_python-2.6.0/scalekit/v1/auditlogs/auditlogs_pb2.py +50 -0
  12. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/auditlogs/auditlogs_pb2.pyi +13 -4
  13. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/auth/auth_pb2.py +45 -37
  14. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/auth/auth_pb2.pyi +26 -6
  15. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/clients/clients_pb2.py +239 -153
  16. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/clients/clients_pb2.pyi +99 -10
  17. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/clients/clients_pb2_grpc.py +66 -0
  18. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/commons/commons_pb2.py +3 -1
  19. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/commons/commons_pb2.pyi +9 -0
  20. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/connections/connections_pb2.py +10 -10
  21. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/directories/directories_pb2.py +17 -17
  22. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/domains/domains_pb2.py +7 -7
  23. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/environments/environments_pb2.py +133 -125
  24. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/environments/environments_pb2.pyi +14 -4
  25. scalekit_sdk_python-2.6.0/scalekit/v1/migrations/migrations_pb2.py +84 -0
  26. scalekit_sdk_python-2.6.0/scalekit/v1/migrations/migrations_pb2.pyi +151 -0
  27. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/migrations/migrations_pb2_grpc.py +67 -0
  28. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/organizations/organizations_pb2.py +4 -4
  29. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/providers/providers_pb2.py +32 -24
  30. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/providers/providers_pb2.pyi +18 -6
  31. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/roles/roles_pb2.py +36 -32
  32. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/roles/roles_pb2.pyi +14 -2
  33. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/sessions/sessions_pb2.py +20 -12
  34. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/sessions/sessions_pb2.pyi +12 -2
  35. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/user_attributes/user_attributes_pb2.py +4 -4
  36. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/users/users_pb2.py +90 -82
  37. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/users/users_pb2.pyi +14 -0
  38. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/users/users_pb2_grpc.py +36 -3
  39. scalekit_sdk_python-2.6.0/scalekit/v1/workspaces/workspaces_pb2.py +243 -0
  40. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/workspaces/workspaces_pb2.pyi +25 -6
  41. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/workspaces/workspaces_pb2_grpc.py +33 -0
  42. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0/scalekit_sdk_python.egg-info}/PKG-INFO +1 -1
  43. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit_sdk_python.egg-info/SOURCES.txt +22 -1
  44. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/setup.py +5 -1
  45. scalekit_sdk_python-2.6.0/tests/basetest.py +17 -0
  46. scalekit_sdk_python-2.6.0/tests/test_actions.py +1923 -0
  47. scalekit_sdk_python-2.6.0/tests/test_connected_accounts.py +417 -0
  48. scalekit_sdk_python-2.6.0/tests/test_connection.py +100 -0
  49. scalekit_sdk_python-2.6.0/tests/test_directory.py +133 -0
  50. scalekit_sdk_python-2.6.0/tests/test_domain.py +195 -0
  51. scalekit_sdk_python-2.6.0/tests/test_m2m_client.py +404 -0
  52. scalekit_sdk_python-2.6.0/tests/test_mcp.py +156 -0
  53. scalekit_sdk_python-2.6.0/tests/test_org_roles.py +121 -0
  54. scalekit_sdk_python-2.6.0/tests/test_organization.py +183 -0
  55. scalekit_sdk_python-2.6.0/tests/test_passwordless.py +242 -0
  56. scalekit_sdk_python-2.6.0/tests/test_permissions.py +331 -0
  57. scalekit_sdk_python-2.6.0/tests/test_roles.py +384 -0
  58. scalekit_sdk_python-2.6.0/tests/test_sessions.py +192 -0
  59. scalekit_sdk_python-2.6.0/tests/test_tokens.py +234 -0
  60. scalekit_sdk_python-2.6.0/tests/test_tools.py +117 -0
  61. scalekit_sdk_python-2.6.0/tests/test_users.py +557 -0
  62. scalekit_sdk_python-2.6.0/tests/test_webauthn_credentials.py +113 -0
  63. scalekit_sdk_python-2.4.17/scalekit/v1/auditlogs/auditlogs_pb2.py +0 -41
  64. scalekit_sdk_python-2.4.17/scalekit/v1/migrations/migrations_pb2.py +0 -60
  65. scalekit_sdk_python-2.4.17/scalekit/v1/migrations/migrations_pb2.pyi +0 -87
  66. scalekit_sdk_python-2.4.17/scalekit/v1/workspaces/workspaces_pb2.py +0 -228
  67. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/LICENSE +0 -0
  68. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/README.md +0 -0
  69. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/buf/__init__.py +0 -0
  70. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/buf/validate/__init__.py +0 -0
  71. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/buf/validate/expression_pb2.py +0 -0
  72. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/buf/validate/expression_pb2.pyi +0 -0
  73. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/buf/validate/expression_pb2_grpc.py +0 -0
  74. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/buf/validate/priv/__init__.py +0 -0
  75. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/buf/validate/priv/private_pb2.py +0 -0
  76. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/buf/validate/priv/private_pb2.pyi +0 -0
  77. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/buf/validate/priv/private_pb2_grpc.py +0 -0
  78. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/buf/validate/validate_pb2.py +0 -0
  79. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/buf/validate/validate_pb2.pyi +0 -0
  80. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/buf/validate/validate_pb2_grpc.py +0 -0
  81. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/__init__.py +0 -0
  82. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/__init__.py +0 -0
  83. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/actions.py +0 -0
  84. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/frameworks/__init__.py +0 -0
  85. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/frameworks/google_adk.py +0 -0
  86. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/frameworks/langchain.py +0 -0
  87. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/frameworks/types/__init__.py +0 -0
  88. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/frameworks/types/google_adk_tool.py +0 -0
  89. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/frameworks/util.py +0 -0
  90. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/__init__.py +0 -0
  91. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/mcp_config.py +0 -0
  92. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/mcp_instance.py +0 -0
  93. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/requests/__init__.py +0 -0
  94. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/requests/create_connected_account_request.py +0 -0
  95. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/requests/mcp_request.py +0 -0
  96. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/requests/tool_request.py +0 -0
  97. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/requests/update_connected_account_request.py +0 -0
  98. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/responses/__init__.py +0 -0
  99. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/responses/create_connected_account_response.py +0 -0
  100. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/responses/create_mcp_config_response.py +0 -0
  101. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/responses/create_mcp_response.py +0 -0
  102. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/responses/delete_connected_account_response.py +0 -0
  103. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/responses/delete_mcp_config_response.py +0 -0
  104. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/responses/delete_mcp_instance_response.py +0 -0
  105. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/responses/ensure_mcp_instance_response.py +0 -0
  106. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/responses/execute_tool_response.py +0 -0
  107. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/responses/get_connected_account_auth_response.py +0 -0
  108. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/responses/get_mcp_instance_auth_state_response.py +0 -0
  109. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/responses/get_mcp_instance_response.py +0 -0
  110. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/responses/get_mcp_response.py +0 -0
  111. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/responses/list_connected_accounts_response.py +0 -0
  112. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/responses/list_mcp_configs_response.py +0 -0
  113. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/responses/list_mcp_instances_response.py +0 -0
  114. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/responses/magic_link_response.py +0 -0
  115. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/responses/update_connected_account_response.py +0 -0
  116. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/responses/update_mcp_config_response.py +0 -0
  117. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/responses/update_mcp_instance_response.py +0 -0
  118. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/tool_input_output.py +0 -0
  119. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/tool_mapping.py +0 -0
  120. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/modifier.py +0 -0
  121. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/types.py +0 -0
  122. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/auth.py +0 -0
  123. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/common/__init__.py +0 -0
  124. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/common/exceptions.py +0 -0
  125. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/common/scalekit.py +0 -0
  126. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/common/user.py +0 -0
  127. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/connected_accounts.py +0 -0
  128. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/connection.py +0 -0
  129. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/constants/__init__.py +0 -0
  130. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/constants/user.py +0 -0
  131. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/domain.py +0 -0
  132. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/mcp.py +0 -0
  133. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/passwordless.py +0 -0
  134. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/permissions.py +0 -0
  135. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/sessions.py +0 -0
  136. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/tools.py +0 -0
  137. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/users.py +0 -0
  138. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/utils/__init__.py +0 -0
  139. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/utils/directory.py +0 -0
  140. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/__init__.py +0 -0
  141. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/auditlogs/__init__.py +0 -0
  142. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/auditlogs/auditlogs_pb2_grpc.py +0 -0
  143. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/auth/__init__.py +0 -0
  144. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/auth/auth_pb2_grpc.py +0 -0
  145. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/auth/passwordless_pb2.py +0 -0
  146. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/auth/passwordless_pb2.pyi +0 -0
  147. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/auth/passwordless_pb2_grpc.py +0 -0
  148. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/auth/totp_pb2.py +0 -0
  149. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/auth/totp_pb2.pyi +0 -0
  150. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/auth/totp_pb2_grpc.py +0 -0
  151. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/auth/webauthn_pb2.py +0 -0
  152. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/auth/webauthn_pb2.pyi +0 -0
  153. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/auth/webauthn_pb2_grpc.py +0 -0
  154. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/clients/__init__.py +0 -0
  155. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/commons/__init__.py +0 -0
  156. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/commons/commons_pb2_grpc.py +0 -0
  157. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/connected_accounts/__init__.py +0 -0
  158. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/connected_accounts/connected_accounts_pb2.py +0 -0
  159. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/connected_accounts/connected_accounts_pb2.pyi +0 -0
  160. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/connected_accounts/connected_accounts_pb2_grpc.py +0 -0
  161. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/connections/__init__.py +0 -0
  162. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/connections/connections_pb2.pyi +0 -0
  163. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/connections/connections_pb2_grpc.py +0 -0
  164. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/directories/__init__.py +0 -0
  165. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/directories/directories_pb2.pyi +0 -0
  166. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/directories/directories_pb2_grpc.py +0 -0
  167. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/domains/__init__.py +0 -0
  168. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/domains/domains_pb2.pyi +0 -0
  169. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/domains/domains_pb2_grpc.py +0 -0
  170. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/emails/__init__.py +0 -0
  171. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/emails/emails_pb2.py +0 -0
  172. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/emails/emails_pb2.pyi +0 -0
  173. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/emails/emails_pb2_grpc.py +0 -0
  174. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/environments/__init__.py +0 -0
  175. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/environments/environments_pb2_grpc.py +0 -0
  176. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/errdetails/__init__.py +0 -0
  177. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/errdetails/errdetails_pb2.py +0 -0
  178. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/errdetails/errdetails_pb2.pyi +0 -0
  179. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/errdetails/errdetails_pb2_grpc.py +0 -0
  180. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/events/__init__.py +0 -0
  181. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/events/events_pb2.py +0 -0
  182. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/events/events_pb2.pyi +0 -0
  183. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/events/events_pb2_grpc.py +0 -0
  184. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/interceptors/__init__.py +0 -0
  185. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/interceptors/interceptors_pb2.py +0 -0
  186. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/interceptors/interceptors_pb2.pyi +0 -0
  187. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/interceptors/interceptors_pb2_grpc.py +0 -0
  188. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/mcp/__init__.py +0 -0
  189. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/mcp/mcp_pb2.py +0 -0
  190. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/mcp/mcp_pb2.pyi +0 -0
  191. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/mcp/mcp_pb2_grpc.py +0 -0
  192. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/members/__init__.py +0 -0
  193. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/members/members_pb2.py +0 -0
  194. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/members/members_pb2.pyi +0 -0
  195. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/members/members_pb2_grpc.py +0 -0
  196. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/migrations/__init__.py +0 -0
  197. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/options/__init__.py +0 -0
  198. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/options/options_pb2.py +0 -0
  199. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/options/options_pb2.pyi +0 -0
  200. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/options/options_pb2_grpc.py +0 -0
  201. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/organizations/__init__.py +0 -0
  202. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/organizations/organizations_pb2.pyi +0 -0
  203. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/organizations/organizations_pb2_grpc.py +0 -0
  204. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/providers/__init__.py +0 -0
  205. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/providers/providers_pb2_grpc.py +0 -0
  206. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/roles/__init__.py +0 -0
  207. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/roles/roles_pb2_grpc.py +0 -0
  208. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/secrets/__init__.py +0 -0
  209. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/secrets/secrets_pb2.py +0 -0
  210. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/secrets/secrets_pb2.pyi +0 -0
  211. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/secrets/secrets_pb2_grpc.py +0 -0
  212. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/sessions/__init__.py +0 -0
  213. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/sessions/sessions_pb2_grpc.py +0 -0
  214. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/tokens/__init__.py +0 -0
  215. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/tokens/tokens_pb2.py +0 -0
  216. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/tokens/tokens_pb2.pyi +0 -0
  217. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/tokens/tokens_pb2_grpc.py +0 -0
  218. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/tools/__init__.py +0 -0
  219. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/tools/tools_pb2.py +0 -0
  220. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/tools/tools_pb2.pyi +0 -0
  221. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/tools/tools_pb2_grpc.py +0 -0
  222. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/user_attributes/__init__.py +0 -0
  223. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/user_attributes/user_attributes_pb2.pyi +0 -0
  224. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/user_attributes/user_attributes_pb2_grpc.py +0 -0
  225. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/users/__init__.py +0 -0
  226. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/webhooks/__init__.py +0 -0
  227. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/webhooks/webhooks_pb2.py +0 -0
  228. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/webhooks/webhooks_pb2.pyi +0 -0
  229. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/webhooks/webhooks_pb2_grpc.py +0 -0
  230. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/workspaces/__init__.py +0 -0
  231. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/webauthn.py +0 -0
  232. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit_sdk_python.egg-info/dependency_links.txt +0 -0
  233. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit_sdk_python.egg-info/requires.txt +0 -0
  234. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit_sdk_python.egg-info/top_level.txt +0 -0
  235. {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: scalekit-sdk-python
3
- Version: 2.4.17
3
+ Version: 2.6.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
@@ -0,0 +1,7 @@
1
+ [tool.codeflash]
2
+ # All paths are relative to this pyproject.toml's directory.
3
+ module-root = "scalekit"
4
+ tests-root = "tests"
5
+ test-framework = "pytest"
6
+ ignore-paths = []
7
+ formatter-cmds = ["black $file"]
@@ -0,0 +1,3 @@
1
+ # Single source of truth for the SDK version.
2
+ # Import this in setup.py and scalekit/core.py — never hardcode the version elsewhere.
3
+ __version__ = "2.6.0"
@@ -1,3 +1,4 @@
1
+ from __future__ import annotations
1
2
  import json
2
3
  from math import floor
3
4
  from typing import Any, Optional, Dict
@@ -25,6 +26,7 @@ from scalekit.mcp import McpClient
25
26
  from scalekit.sessions import SessionsClient
26
27
  from scalekit.auth import AuthClient
27
28
  from scalekit.webauthn import WebAuthnClient
29
+ from scalekit.token import TokenClient
28
30
  from scalekit.common.scalekit import (
29
31
  AuthorizationUrlOptions,
30
32
  CodeAuthenticationOptions,
@@ -80,6 +82,7 @@ class ScalekitClient:
80
82
  self.sessions = SessionsClient(self.core_client)
81
83
  self.auth = AuthClient(self.core_client)
82
84
  self.webauthn = WebAuthnClient(self.core_client)
85
+ self.tokens = TokenClient(self.core_client)
83
86
  except Exception as exp:
84
87
  raise exp
85
88
 
@@ -201,7 +204,7 @@ class ScalekitClient:
201
204
  except Exception:
202
205
  return False
203
206
 
204
- def generate_client_token(self, client_id: str, client_secret: str) -> str:
207
+ def generate_client_token(self, client_id: str, client_secret: str, scopes: Optional[list[str]] = None) -> str:
205
208
  """
206
209
  Method to generate access token
207
210
 
@@ -209,22 +212,40 @@ class ScalekitClient:
209
212
  :type : ``` str ```
210
213
  :param client_secret : Client Secret for access token
211
214
  :type : ``` str ```
215
+ :param scopes : Optional list of scopes to be requested in the token (e.g. ["read:users", "write:users"])
216
+ :type : ``` list[str] ```
212
217
  :returns:
213
218
  access token
214
219
  """
215
220
  try:
216
- response = self.core_client.authenticate(
217
- {
218
- "grant_type": GrantType.ClientCredentials.value,
219
- "client_id": client_id,
220
- "client_secret": client_secret,
221
- }
222
- )
221
+ payload = {
222
+ "grant_type": GrantType.ClientCredentials.value,
223
+ "client_id": client_id,
224
+ "client_secret": client_secret,
225
+ }
226
+ if scopes:
227
+ payload["scope"] = " ".join(scopes)
228
+
229
+ response = self.core_client.authenticate(payload)
223
230
  response = json.loads(response.content)
224
- return response
231
+ return response['access_token']
225
232
  except Exception as exp:
226
233
  raise exp
227
234
 
235
+ def get_client_access_token(self) -> str:
236
+ """
237
+ Method to generate an access token using the stored client credentials.
238
+
239
+ Uses the client_id and client_secret supplied to the ScalekitClient constructor.
240
+
241
+ :returns:
242
+ access token string
243
+ """
244
+ return self.generate_client_token(
245
+ self.core_client.client_id,
246
+ self.core_client.client_secret,
247
+ )
248
+
228
249
  def validate_access_token_and_get_claims(self, token: str, options: Optional[TokenValidationOptions] = None, audience = None) -> Dict[str, Any]:
229
250
  """
230
251
  Method to validate access token and get claims
@@ -8,6 +8,7 @@ import platform
8
8
  from urllib.parse import urlparse
9
9
 
10
10
  from cryptography.hazmat.primitives import serialization
11
+ from scalekit._version import __version__ as _sdk_version
11
12
  from scalekit.common.scalekit import GrantType
12
13
  from scalekit.common.exceptions import ScalekitServerException, ScalekitException
13
14
 
@@ -26,8 +27,8 @@ class WithCall(Protocol):
26
27
  class CoreClient:
27
28
  """Class definition for Core Client"""
28
29
 
29
- sdk_version = "Scalekit-Python/2.4.17"
30
- api_version = "20260113"
30
+ sdk_version = f"Scalekit-Python/{_sdk_version}"
31
+ api_version = "20260310"
31
32
  user_agent = f"{sdk_version} Python/{platform.python_version()} ({platform.system()}; {platform.architecture()}"
32
33
 
33
34
  def __init__(self, env_url, client_id, client_secret):
@@ -154,7 +154,7 @@ class DirectoryClient:
154
154
  :type : ``` str ```
155
155
 
156
156
  :returns:
157
- list of directory users
157
+ list of directory groups
158
158
  """
159
159
  response = self.core_client.grpc_exec(
160
160
  self.directory_service.ListDirectoryGroups.with_call,
@@ -61,7 +61,7 @@ class M2MClient:
61
61
  :param client_id : client id
62
62
  :type : ``` str ```
63
63
  :returns:
64
- None
64
+ GetOrganizationClientResponse: The organization client details
65
65
  """
66
66
  return self.core_client.grpc_exec(
67
67
  self.client_service.GetOrganizationClient.with_call,
@@ -24,21 +24,28 @@ class OrganizationClient:
24
24
  )
25
25
 
26
26
  def list_organizations(
27
- self, page_size: int, page_token: Optional[str] = None
27
+ self,
28
+ page_size: Optional[int] = None,
29
+ page_token: Optional[str] = None,
28
30
  ) -> ListOrganizationsResponse:
29
31
  """
30
32
  Method to list organizations
31
33
 
32
- :param page_size : page size for org list fetch
34
+ :param page_size : page size for org list fetch (optional, uses server default if not provided)
33
35
  :type : ``` int ```
34
36
  :param page_token : page token for org list fetch
35
37
  :type : ``` str ```
36
38
  :returns:
37
39
  list of organizations
38
40
  """
41
+ request = ListOrganizationsRequest()
42
+ if page_size is not None:
43
+ request.page_size = page_size
44
+ if page_token is not None:
45
+ request.page_token = page_token
39
46
  return self.core_client.grpc_exec(
40
47
  self.organization_service.ListOrganization.with_call,
41
- ListOrganizationsRequest(page_size=page_size, page_token=page_token),
48
+ request,
42
49
  )
43
50
 
44
51
  def create_organization(
@@ -42,9 +42,9 @@ class RoleClient:
42
42
 
43
43
  def get_role(self, role_name: str) -> GetRoleResponse:
44
44
  """
45
- Method to get role by ID
45
+ Method to get role by name
46
46
 
47
- :param role_id : Role id to get role details
47
+ :param role_name : Role name to get role details
48
48
  :type : ``` str ```
49
49
 
50
50
  :returns:
@@ -73,9 +73,9 @@ class RoleClient:
73
73
  role: UpdateRole
74
74
  ) -> UpdateRoleResponse:
75
75
  """
76
- Method to update an existing role by ID
76
+ Method to update an existing role by name
77
77
 
78
- :param role_id : Role id to update
78
+ :param role_name : Role name to update
79
79
  :type : ``` str ```
80
80
  :param role : UpdateRole object with expected values for role update
81
81
  :type : ``` obj ```
@@ -97,9 +97,9 @@ class RoleClient:
97
97
  reassign_role_name: Optional[str] = None
98
98
  ):
99
99
  """
100
- Method to delete role by ID
100
+ Method to delete role by name
101
101
 
102
- :param role_id : Role id to be deleted
102
+ :param role_name : Role name to be deleted
103
103
  :type : ``` str ```
104
104
  :param reassign_role_name: Role name to reassign users to when deleting this role
105
105
  :type : ``` str ```
@@ -116,14 +116,32 @@ class RoleClient:
116
116
  request,
117
117
  )
118
118
 
119
+ def delete_role_base(
120
+ self,
121
+ role_name: str
122
+ ):
123
+ """
124
+ Method to delete the base inheritance relationship for an environment-level role
125
+
126
+ :param role_name : Role name to remove base relationship for
127
+ :type : ``` str ```
128
+
129
+ :returns:
130
+ None
131
+ """
132
+ return self.core_client.grpc_exec(
133
+ self.role_service.DeleteRoleBase.with_call,
134
+ DeleteRoleBaseRequest(role_name=role_name),
135
+ )
136
+
119
137
  def get_role_users_count(
120
- self,
138
+ self,
121
139
  role_name: str
122
140
  ) -> GetRoleUsersCountResponse:
123
141
  """
124
142
  Method to get the count of users associated with a role
125
143
 
126
- :param role_id : Role id to get user count for
144
+ :param role_name : Role name to get user count for
127
145
  :type : ``` str ```
128
146
 
129
147
  :returns:
@@ -0,0 +1,159 @@
1
+ from typing import Optional, Dict
2
+
3
+ import grpc
4
+
5
+ from scalekit.core import CoreClient
6
+ from scalekit.common.exceptions import ScalekitServerException, ScalekitValidateTokenFailureException
7
+ from scalekit.v1.tokens.tokens_pb2 import (
8
+ CreateToken,
9
+ CreateTokenRequest,
10
+ CreateTokenResponse,
11
+ ValidateTokenRequest,
12
+ ValidateTokenResponse,
13
+ InvalidateTokenRequest,
14
+ ListTokensRequest,
15
+ ListTokensResponse,
16
+ )
17
+ from scalekit.v1.tokens.tokens_pb2_grpc import ApiTokenServiceStub
18
+
19
+
20
+ class TokenClient:
21
+ """Class definition for Token Client"""
22
+
23
+ def __init__(self, core_client: CoreClient):
24
+ """
25
+ Initializer for Token Client
26
+
27
+ :param core_client : CoreClient Object
28
+ :type : ``` obj ```
29
+ :returns
30
+ None
31
+ """
32
+ self.core_client = core_client
33
+ self.token_service = ApiTokenServiceStub(
34
+ self.core_client.grpc_secure_channel
35
+ )
36
+
37
+ def create_token(
38
+ self,
39
+ organization_id: str,
40
+ user_id: Optional[str] = None,
41
+ custom_claims: Optional[Dict[str, str]] = None,
42
+ expiry=None,
43
+ description: Optional[str] = None,
44
+ ) -> CreateTokenResponse:
45
+ """
46
+ Method to create an API token for an organization or user
47
+
48
+ :param organization_id : Organization ID for token scope
49
+ :type : ``` str ```
50
+ :param user_id : Optional User ID to scope token to a specific user
51
+ :type : ``` str ```
52
+ :param custom_claims : Optional custom claims key-value pairs
53
+ :type : ``` dict[str, str] ```
54
+ :param expiry : Optional expiry timestamp
55
+ :type : ``` google.protobuf.Timestamp ```
56
+ :param description : Optional human-readable label
57
+ :type : ``` str ```
58
+ :returns:
59
+ CreateTokenResponse with token, token_id, and token_info
60
+ """
61
+ if not organization_id:
62
+ raise ValueError("Invalid organization_id")
63
+ token = CreateToken(
64
+ organization_id=organization_id,
65
+ )
66
+ if user_id:
67
+ token.user_id = user_id
68
+ if custom_claims:
69
+ token.custom_claims.update(custom_claims)
70
+ if expiry:
71
+ token.expiry.CopyFrom(expiry)
72
+ if description:
73
+ token.description = description
74
+
75
+ return self.core_client.grpc_exec(
76
+ self.token_service.CreateToken,
77
+ CreateTokenRequest(token=token),
78
+ )
79
+
80
+ def validate_token(self, token: str) -> ValidateTokenResponse:
81
+ """
82
+ Method to validate an API token and return associated context
83
+
84
+ :param token : Opaque token string or token_id (apit_xxxxx)
85
+ :type : ``` str ```
86
+ :returns:
87
+ ValidateTokenResponse with token_info
88
+ :raises ScalekitValidateTokenFailureException: If the token is invalid, expired, or not found
89
+ """
90
+ if not token:
91
+ raise ValueError("Invalid token")
92
+ try:
93
+ return self.core_client.grpc_exec(
94
+ self.token_service.ValidateToken,
95
+ ValidateTokenRequest(token=token),
96
+ )
97
+ except ScalekitServerException as e:
98
+ validation_codes = {
99
+ grpc.StatusCode.UNAUTHENTICATED,
100
+ grpc.StatusCode.NOT_FOUND,
101
+ grpc.StatusCode.INVALID_ARGUMENT,
102
+ grpc.StatusCode.PERMISSION_DENIED,
103
+ }
104
+ if e.grpc_status in validation_codes:
105
+ raise ScalekitValidateTokenFailureException(e) from e
106
+ raise
107
+
108
+ def invalidate_token(self, token: str):
109
+ """
110
+ Method to invalidate (soft delete) an API token
111
+
112
+ :param token : Opaque token string or token_id (apit_xxxxx)
113
+ :type : ``` str ```
114
+ :returns:
115
+ Empty response (idempotent operation)
116
+ """
117
+ if not token:
118
+ raise ValueError("Invalid token")
119
+ return self.core_client.grpc_exec(
120
+ self.token_service.InvalidateToken,
121
+ InvalidateTokenRequest(token=token),
122
+ )
123
+
124
+ def list_tokens(
125
+ self,
126
+ organization_id: str,
127
+ user_id: Optional[str] = None,
128
+ page_size: int = 10,
129
+ page_token: Optional[str] = None,
130
+ ) -> ListTokensResponse:
131
+ """
132
+ Method to list API tokens for an organization
133
+
134
+ :param organization_id : Organization ID to filter tokens
135
+ :type : ``` str ```
136
+ :param user_id : Optional User ID to filter tokens
137
+ :type : ``` str ```
138
+ :param page_size : Page size (default 10, max 30)
139
+ :type : ``` int ```
140
+ :param page_token : Pagination cursor for next page
141
+ :type : ``` str ```
142
+ :returns:
143
+ ListTokensResponse with tokens, total_count, and pagination cursors
144
+ """
145
+ if not organization_id:
146
+ raise ValueError("Invalid organization_id")
147
+ request = ListTokensRequest(
148
+ organization_id=organization_id,
149
+ page_size=page_size,
150
+ )
151
+ if user_id:
152
+ request.user_id = user_id
153
+ if page_token:
154
+ request.page_token = page_token
155
+
156
+ return self.core_client.grpc_exec(
157
+ self.token_service.ListTokens,
158
+ request,
159
+ )
@@ -0,0 +1,50 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: scalekit/v1/auditlogs/auditlogs.proto
4
+ # Protobuf Python Version: 5.26.1
5
+ """Generated protocol buffer code."""
6
+ from google.protobuf import descriptor as _descriptor
7
+ from google.protobuf import descriptor_pool as _descriptor_pool
8
+ from google.protobuf import symbol_database as _symbol_database
9
+ from google.protobuf.internal import builder as _builder
10
+ # @@protoc_insertion_point(imports)
11
+
12
+ _sym_db = _symbol_database.Default()
13
+
14
+
15
+ from buf.validate import validate_pb2 as buf_dot_validate_dot_validate__pb2
16
+ from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2
17
+ from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
18
+ from protoc_gen_openapiv2.options import annotations_pb2 as protoc__gen__openapiv2_dot_options_dot_annotations__pb2
19
+ from scalekit.v1.options import options_pb2 as scalekit_dot_v1_dot_options_dot_options__pb2
20
+
21
+
22
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%scalekit/v1/auditlogs/auditlogs.proto\x12\x15scalekit.v1.auditlogs\x1a\x1b\x62uf/validate/validate.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a.protoc-gen-openapiv2/options/annotations.proto\x1a!scalekit/v1/options/options.proto\"\xb0\x03\n\x12ListAuthLogRequest\x12\x1b\n\tpage_size\x18\x01 \x01(\rR\x08pageSize\x12\x1d\n\npage_token\x18\x02 \x01(\tR\tpageToken\x12\x14\n\x05\x65mail\x18\x03 \x01(\tR\x05\x65mail\x12\x16\n\x06status\x18\x04 \x03(\tR\x06status\x12\x39\n\nstart_time\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tstartTime\x12\x35\n\x08\x65nd_time\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x07\x65ndTime\x12\x1f\n\x0bresource_id\x18\x07 \x01(\tR\nresourceId\x12@\n\x1c\x63onnected_account_identifier\x18\x08 \x01(\tR\x1a\x63onnectedAccountIdentifier\x12[\n\tclient_id\x18\t \x01(\tB>\x92\x41;2\'Filter authentication logs by client IDJ\x10\"skc_1234567890\"R\x08\x63lientId\"\xcf\x01\n\x13ListAuthLogResponse\x12&\n\x0fnext_page_token\x18\x01 \x01(\tR\rnextPageToken\x12&\n\x0fprev_page_token\x18\x02 \x01(\tR\rprevPageToken\x12\x1d\n\ntotal_size\x18\x03 \x01(\rR\ttotalSize\x12I\n\x0c\x61uthRequests\x18\x04 \x03(\x0b\x32%.scalekit.v1.auditlogs.AuthLogRequestR\x0c\x61uthRequests\"\xc5\x07\n\x0e\x41uthLogRequest\x12\'\n\x0forganization_id\x18\x01 \x01(\tR\x0eorganizationId\x12%\n\x0e\x65nvironment_id\x18\x02 \x01(\tR\renvironmentId\x12#\n\rconnection_id\x18\x03 \x01(\tR\x0c\x63onnectionId\x12&\n\x0f\x61uth_request_id\x18\x04 \x01(\tR\rauthRequestId\x12\x14\n\x05\x65mail\x18\x05 \x01(\tR\x05\x65mail\x12\'\n\x0f\x63onnection_type\x18\x06 \x01(\tR\x0e\x63onnectionType\x12/\n\x13\x63onnection_provider\x18\x07 \x01(\tR\x12\x63onnectionProvider\x12\x16\n\x06status\x18\x08 \x01(\tR\x06status\x12\x38\n\ttimestamp\x18\t \x01(\x0b\x32\x1a.google.protobuf.TimestampR\ttimestamp\x12W\n\x12\x63onnection_details\x18\n \x03(\x0b\x32(.scalekit.v1.auditlogs.ConnectionDetailsR\x11\x63onnectionDetails\x12\x1a\n\x08workflow\x18\x0b \x01(\tR\x08workflow\x12\x1f\n\x0bresource_id\x18\x0c \x01(\tR\nresourceId\x12#\n\rresource_name\x18\r \x01(\tR\x0cresourceName\x12#\n\rresource_type\x18\x0e \x01(\tR\x0cresourceType\x12@\n\x1c\x63onnected_account_identifier\x18\x0f \x01(\tR\x1a\x63onnectedAccountIdentifier\x12}\n\tclient_id\x18\x10 \x01(\tB`\x92\x41]2IUnique identifier of the client associated with this authentication eventJ\x10\"skc_1234567890\"R\x08\x63lientId\x12K\n\x0b\x63lient_name\x18\x11 \x01(\tB*\x92\x41\'2\x1a\x44isplay name of the clientJ\t\"Default\"R\nclientName\x12\x66\n\x0b\x63lient_type\x18\x12 \x01(\tBE\x92\x41\x42\x32\x39Type of the client application (e.g., WEB, NTV, SPA, M2M)J\x05\"WEB\"R\nclientType\"\xbb\x01\n\x11\x43onnectionDetails\x12#\n\rconnection_id\x18\x01 \x01(\tR\x0c\x63onnectionId\x12\'\n\x0forganization_id\x18\x02 \x01(\tR\x0eorganizationId\x12\'\n\x0f\x63onnection_type\x18\x03 \x01(\tR\x0e\x63onnectionType\x12/\n\x13\x63onnection_provider\x18\x04 \x01(\tR\x12\x63onnectionProvider2\xb2\x01\n\x10\x41uditLogsService\x12\x9d\x01\n\x10ListAuthRequests\x12).scalekit.v1.auditlogs.ListAuthLogRequest\x1a*.scalekit.v1.auditlogs.ListAuthLogResponse\"2\x82\xb5\x18\x02\x18\x44\x82\xd3\xe4\x93\x02&\x12$/api/v1/logs/authentication/requestsB5Z3github.com/scalekit-inc/scalekit/pkg/grpc/auditlogsb\x06proto3')
23
+
24
+ _globals = globals()
25
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
26
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'scalekit.v1.auditlogs.auditlogs_pb2', _globals)
27
+ if not _descriptor._USE_C_DESCRIPTORS:
28
+ _globals['DESCRIPTOR']._loaded_options = None
29
+ _globals['DESCRIPTOR']._serialized_options = b'Z3github.com/scalekit-inc/scalekit/pkg/grpc/auditlogs'
30
+ _globals['_LISTAUTHLOGREQUEST'].fields_by_name['client_id']._loaded_options = None
31
+ _globals['_LISTAUTHLOGREQUEST'].fields_by_name['client_id']._serialized_options = b'\222A;2\'Filter authentication logs by client IDJ\020\"skc_1234567890\"'
32
+ _globals['_AUTHLOGREQUEST'].fields_by_name['client_id']._loaded_options = None
33
+ _globals['_AUTHLOGREQUEST'].fields_by_name['client_id']._serialized_options = b'\222A]2IUnique identifier of the client associated with this authentication eventJ\020\"skc_1234567890\"'
34
+ _globals['_AUTHLOGREQUEST'].fields_by_name['client_name']._loaded_options = None
35
+ _globals['_AUTHLOGREQUEST'].fields_by_name['client_name']._serialized_options = b'\222A\'2\032Display name of the clientJ\t\"Default\"'
36
+ _globals['_AUTHLOGREQUEST'].fields_by_name['client_type']._loaded_options = None
37
+ _globals['_AUTHLOGREQUEST'].fields_by_name['client_type']._serialized_options = b'\222AB29Type of the client application (e.g., WEB, NTV, SPA, M2M)J\005\"WEB\"'
38
+ _globals['_AUDITLOGSSERVICE'].methods_by_name['ListAuthRequests']._loaded_options = None
39
+ _globals['_AUDITLOGSSERVICE'].methods_by_name['ListAuthRequests']._serialized_options = b'\202\265\030\002\030D\202\323\344\223\002&\022$/api/v1/logs/authentication/requests'
40
+ _globals['_LISTAUTHLOGREQUEST']._serialized_start=240
41
+ _globals['_LISTAUTHLOGREQUEST']._serialized_end=672
42
+ _globals['_LISTAUTHLOGRESPONSE']._serialized_start=675
43
+ _globals['_LISTAUTHLOGRESPONSE']._serialized_end=882
44
+ _globals['_AUTHLOGREQUEST']._serialized_start=885
45
+ _globals['_AUTHLOGREQUEST']._serialized_end=1850
46
+ _globals['_CONNECTIONDETAILS']._serialized_start=1853
47
+ _globals['_CONNECTIONDETAILS']._serialized_end=2040
48
+ _globals['_AUDITLOGSSERVICE']._serialized_start=2043
49
+ _globals['_AUDITLOGSSERVICE']._serialized_end=2221
50
+ # @@protoc_insertion_point(module_scope)
@@ -1,6 +1,7 @@
1
1
  from buf.validate import validate_pb2 as _validate_pb2
2
2
  from google.api import annotations_pb2 as _annotations_pb2
3
3
  from google.protobuf import timestamp_pb2 as _timestamp_pb2
4
+ from protoc_gen_openapiv2.options import annotations_pb2 as _annotations_pb2_1
4
5
  from scalekit.v1.options import options_pb2 as _options_pb2
5
6
  from google.protobuf.internal import containers as _containers
6
7
  from google.protobuf import descriptor as _descriptor
@@ -10,7 +11,7 @@ from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Map
10
11
  DESCRIPTOR: _descriptor.FileDescriptor
11
12
 
12
13
  class ListAuthLogRequest(_message.Message):
13
- __slots__ = ("page_size", "page_token", "email", "status", "start_time", "end_time", "resource_id", "connected_account_identifier")
14
+ __slots__ = ("page_size", "page_token", "email", "status", "start_time", "end_time", "resource_id", "connected_account_identifier", "client_id")
14
15
  PAGE_SIZE_FIELD_NUMBER: _ClassVar[int]
15
16
  PAGE_TOKEN_FIELD_NUMBER: _ClassVar[int]
16
17
  EMAIL_FIELD_NUMBER: _ClassVar[int]
@@ -19,6 +20,7 @@ class ListAuthLogRequest(_message.Message):
19
20
  END_TIME_FIELD_NUMBER: _ClassVar[int]
20
21
  RESOURCE_ID_FIELD_NUMBER: _ClassVar[int]
21
22
  CONNECTED_ACCOUNT_IDENTIFIER_FIELD_NUMBER: _ClassVar[int]
23
+ CLIENT_ID_FIELD_NUMBER: _ClassVar[int]
22
24
  page_size: int
23
25
  page_token: str
24
26
  email: str
@@ -27,7 +29,8 @@ class ListAuthLogRequest(_message.Message):
27
29
  end_time: _timestamp_pb2.Timestamp
28
30
  resource_id: str
29
31
  connected_account_identifier: str
30
- def __init__(self, page_size: _Optional[int] = ..., page_token: _Optional[str] = ..., email: _Optional[str] = ..., status: _Optional[_Iterable[str]] = ..., start_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., end_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., resource_id: _Optional[str] = ..., connected_account_identifier: _Optional[str] = ...) -> None: ...
32
+ client_id: str
33
+ def __init__(self, page_size: _Optional[int] = ..., page_token: _Optional[str] = ..., email: _Optional[str] = ..., status: _Optional[_Iterable[str]] = ..., start_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., end_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., resource_id: _Optional[str] = ..., connected_account_identifier: _Optional[str] = ..., client_id: _Optional[str] = ...) -> None: ...
31
34
 
32
35
  class ListAuthLogResponse(_message.Message):
33
36
  __slots__ = ("next_page_token", "prev_page_token", "total_size", "authRequests")
@@ -42,7 +45,7 @@ class ListAuthLogResponse(_message.Message):
42
45
  def __init__(self, next_page_token: _Optional[str] = ..., prev_page_token: _Optional[str] = ..., total_size: _Optional[int] = ..., authRequests: _Optional[_Iterable[_Union[AuthLogRequest, _Mapping]]] = ...) -> None: ...
43
46
 
44
47
  class AuthLogRequest(_message.Message):
45
- __slots__ = ("organization_id", "environment_id", "connection_id", "auth_request_id", "email", "connection_type", "connection_provider", "status", "timestamp", "connection_details", "workflow", "resource_id", "resource_name", "resource_type", "connected_account_identifier")
48
+ __slots__ = ("organization_id", "environment_id", "connection_id", "auth_request_id", "email", "connection_type", "connection_provider", "status", "timestamp", "connection_details", "workflow", "resource_id", "resource_name", "resource_type", "connected_account_identifier", "client_id", "client_name", "client_type")
46
49
  ORGANIZATION_ID_FIELD_NUMBER: _ClassVar[int]
47
50
  ENVIRONMENT_ID_FIELD_NUMBER: _ClassVar[int]
48
51
  CONNECTION_ID_FIELD_NUMBER: _ClassVar[int]
@@ -58,6 +61,9 @@ class AuthLogRequest(_message.Message):
58
61
  RESOURCE_NAME_FIELD_NUMBER: _ClassVar[int]
59
62
  RESOURCE_TYPE_FIELD_NUMBER: _ClassVar[int]
60
63
  CONNECTED_ACCOUNT_IDENTIFIER_FIELD_NUMBER: _ClassVar[int]
64
+ CLIENT_ID_FIELD_NUMBER: _ClassVar[int]
65
+ CLIENT_NAME_FIELD_NUMBER: _ClassVar[int]
66
+ CLIENT_TYPE_FIELD_NUMBER: _ClassVar[int]
61
67
  organization_id: str
62
68
  environment_id: str
63
69
  connection_id: str
@@ -73,7 +79,10 @@ class AuthLogRequest(_message.Message):
73
79
  resource_name: str
74
80
  resource_type: str
75
81
  connected_account_identifier: str
76
- def __init__(self, organization_id: _Optional[str] = ..., environment_id: _Optional[str] = ..., connection_id: _Optional[str] = ..., auth_request_id: _Optional[str] = ..., email: _Optional[str] = ..., connection_type: _Optional[str] = ..., connection_provider: _Optional[str] = ..., status: _Optional[str] = ..., timestamp: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., connection_details: _Optional[_Iterable[_Union[ConnectionDetails, _Mapping]]] = ..., workflow: _Optional[str] = ..., resource_id: _Optional[str] = ..., resource_name: _Optional[str] = ..., resource_type: _Optional[str] = ..., connected_account_identifier: _Optional[str] = ...) -> None: ...
82
+ client_id: str
83
+ client_name: str
84
+ client_type: str
85
+ def __init__(self, organization_id: _Optional[str] = ..., environment_id: _Optional[str] = ..., connection_id: _Optional[str] = ..., auth_request_id: _Optional[str] = ..., email: _Optional[str] = ..., connection_type: _Optional[str] = ..., connection_provider: _Optional[str] = ..., status: _Optional[str] = ..., timestamp: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., connection_details: _Optional[_Iterable[_Union[ConnectionDetails, _Mapping]]] = ..., workflow: _Optional[str] = ..., resource_id: _Optional[str] = ..., resource_name: _Optional[str] = ..., resource_type: _Optional[str] = ..., connected_account_identifier: _Optional[str] = ..., client_id: _Optional[str] = ..., client_name: _Optional[str] = ..., client_type: _Optional[str] = ...) -> None: ...
77
86
 
78
87
  class ConnectionDetails(_message.Message):
79
88
  __slots__ = ("connection_id", "organization_id", "connection_type", "connection_provider")