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.
- {scalekit_sdk_python-2.4.17/scalekit_sdk_python.egg-info → scalekit_sdk_python-2.6.0}/PKG-INFO +1 -1
- scalekit_sdk_python-2.6.0/pyproject.toml +7 -0
- scalekit_sdk_python-2.6.0/scalekit/_version.py +3 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/client.py +30 -9
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/core.py +3 -2
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/directory.py +1 -1
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/m2m_client.py +1 -1
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/organization.py +10 -3
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/role.py +26 -8
- scalekit_sdk_python-2.6.0/scalekit/token.py +159 -0
- scalekit_sdk_python-2.6.0/scalekit/v1/auditlogs/auditlogs_pb2.py +50 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/auditlogs/auditlogs_pb2.pyi +13 -4
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/auth/auth_pb2.py +45 -37
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/auth/auth_pb2.pyi +26 -6
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/clients/clients_pb2.py +239 -153
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/clients/clients_pb2.pyi +99 -10
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/clients/clients_pb2_grpc.py +66 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/commons/commons_pb2.py +3 -1
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/commons/commons_pb2.pyi +9 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/connections/connections_pb2.py +10 -10
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/directories/directories_pb2.py +17 -17
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/domains/domains_pb2.py +7 -7
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/environments/environments_pb2.py +133 -125
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/environments/environments_pb2.pyi +14 -4
- scalekit_sdk_python-2.6.0/scalekit/v1/migrations/migrations_pb2.py +84 -0
- scalekit_sdk_python-2.6.0/scalekit/v1/migrations/migrations_pb2.pyi +151 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/migrations/migrations_pb2_grpc.py +67 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/organizations/organizations_pb2.py +4 -4
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/providers/providers_pb2.py +32 -24
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/providers/providers_pb2.pyi +18 -6
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/roles/roles_pb2.py +36 -32
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/roles/roles_pb2.pyi +14 -2
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/sessions/sessions_pb2.py +20 -12
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/sessions/sessions_pb2.pyi +12 -2
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/user_attributes/user_attributes_pb2.py +4 -4
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/users/users_pb2.py +90 -82
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/users/users_pb2.pyi +14 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/users/users_pb2_grpc.py +36 -3
- scalekit_sdk_python-2.6.0/scalekit/v1/workspaces/workspaces_pb2.py +243 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/workspaces/workspaces_pb2.pyi +25 -6
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/workspaces/workspaces_pb2_grpc.py +33 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0/scalekit_sdk_python.egg-info}/PKG-INFO +1 -1
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit_sdk_python.egg-info/SOURCES.txt +22 -1
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/setup.py +5 -1
- scalekit_sdk_python-2.6.0/tests/basetest.py +17 -0
- scalekit_sdk_python-2.6.0/tests/test_actions.py +1923 -0
- scalekit_sdk_python-2.6.0/tests/test_connected_accounts.py +417 -0
- scalekit_sdk_python-2.6.0/tests/test_connection.py +100 -0
- scalekit_sdk_python-2.6.0/tests/test_directory.py +133 -0
- scalekit_sdk_python-2.6.0/tests/test_domain.py +195 -0
- scalekit_sdk_python-2.6.0/tests/test_m2m_client.py +404 -0
- scalekit_sdk_python-2.6.0/tests/test_mcp.py +156 -0
- scalekit_sdk_python-2.6.0/tests/test_org_roles.py +121 -0
- scalekit_sdk_python-2.6.0/tests/test_organization.py +183 -0
- scalekit_sdk_python-2.6.0/tests/test_passwordless.py +242 -0
- scalekit_sdk_python-2.6.0/tests/test_permissions.py +331 -0
- scalekit_sdk_python-2.6.0/tests/test_roles.py +384 -0
- scalekit_sdk_python-2.6.0/tests/test_sessions.py +192 -0
- scalekit_sdk_python-2.6.0/tests/test_tokens.py +234 -0
- scalekit_sdk_python-2.6.0/tests/test_tools.py +117 -0
- scalekit_sdk_python-2.6.0/tests/test_users.py +557 -0
- scalekit_sdk_python-2.6.0/tests/test_webauthn_credentials.py +113 -0
- scalekit_sdk_python-2.4.17/scalekit/v1/auditlogs/auditlogs_pb2.py +0 -41
- scalekit_sdk_python-2.4.17/scalekit/v1/migrations/migrations_pb2.py +0 -60
- scalekit_sdk_python-2.4.17/scalekit/v1/migrations/migrations_pb2.pyi +0 -87
- scalekit_sdk_python-2.4.17/scalekit/v1/workspaces/workspaces_pb2.py +0 -228
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/LICENSE +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/README.md +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/buf/__init__.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/buf/validate/__init__.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/buf/validate/expression_pb2.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/buf/validate/expression_pb2.pyi +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/buf/validate/expression_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/buf/validate/priv/__init__.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/buf/validate/priv/private_pb2.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/buf/validate/priv/private_pb2.pyi +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/buf/validate/priv/private_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/buf/validate/validate_pb2.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/buf/validate/validate_pb2.pyi +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/buf/validate/validate_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/__init__.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/__init__.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/actions.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/frameworks/__init__.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/frameworks/google_adk.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/frameworks/langchain.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/frameworks/types/__init__.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/frameworks/types/google_adk_tool.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/frameworks/util.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/__init__.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/mcp_config.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/mcp_instance.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/requests/__init__.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/requests/create_connected_account_request.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/requests/mcp_request.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/requests/tool_request.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/requests/update_connected_account_request.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/responses/__init__.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/responses/create_connected_account_response.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/responses/create_mcp_config_response.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/responses/create_mcp_response.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/responses/delete_connected_account_response.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/responses/delete_mcp_config_response.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/responses/delete_mcp_instance_response.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/responses/ensure_mcp_instance_response.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/responses/execute_tool_response.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/responses/get_connected_account_auth_response.py +0 -0
- {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
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/responses/get_mcp_instance_response.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/responses/get_mcp_response.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/responses/list_connected_accounts_response.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/responses/list_mcp_configs_response.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/responses/list_mcp_instances_response.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/responses/magic_link_response.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/responses/update_connected_account_response.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/responses/update_mcp_config_response.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/responses/update_mcp_instance_response.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/tool_input_output.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/models/tool_mapping.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/modifier.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/actions/types.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/auth.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/common/__init__.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/common/exceptions.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/common/scalekit.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/common/user.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/connected_accounts.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/connection.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/constants/__init__.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/constants/user.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/domain.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/mcp.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/passwordless.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/permissions.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/sessions.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/tools.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/users.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/utils/__init__.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/utils/directory.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/__init__.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/auditlogs/__init__.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/auditlogs/auditlogs_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/auth/__init__.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/auth/auth_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/auth/passwordless_pb2.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/auth/passwordless_pb2.pyi +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/auth/passwordless_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/auth/totp_pb2.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/auth/totp_pb2.pyi +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/auth/totp_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/auth/webauthn_pb2.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/auth/webauthn_pb2.pyi +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/auth/webauthn_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/clients/__init__.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/commons/__init__.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/commons/commons_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/connected_accounts/__init__.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/connected_accounts/connected_accounts_pb2.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/connected_accounts/connected_accounts_pb2.pyi +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/connected_accounts/connected_accounts_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/connections/__init__.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/connections/connections_pb2.pyi +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/connections/connections_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/directories/__init__.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/directories/directories_pb2.pyi +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/directories/directories_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/domains/__init__.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/domains/domains_pb2.pyi +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/domains/domains_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/emails/__init__.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/emails/emails_pb2.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/emails/emails_pb2.pyi +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/emails/emails_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/environments/__init__.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/environments/environments_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/errdetails/__init__.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/errdetails/errdetails_pb2.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/errdetails/errdetails_pb2.pyi +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/errdetails/errdetails_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/events/__init__.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/events/events_pb2.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/events/events_pb2.pyi +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/events/events_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/interceptors/__init__.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/interceptors/interceptors_pb2.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/interceptors/interceptors_pb2.pyi +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/interceptors/interceptors_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/mcp/__init__.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/mcp/mcp_pb2.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/mcp/mcp_pb2.pyi +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/mcp/mcp_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/members/__init__.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/members/members_pb2.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/members/members_pb2.pyi +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/members/members_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/migrations/__init__.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/options/__init__.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/options/options_pb2.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/options/options_pb2.pyi +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/options/options_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/organizations/__init__.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/organizations/organizations_pb2.pyi +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/organizations/organizations_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/providers/__init__.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/providers/providers_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/roles/__init__.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/roles/roles_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/secrets/__init__.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/secrets/secrets_pb2.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/secrets/secrets_pb2.pyi +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/secrets/secrets_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/sessions/__init__.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/sessions/sessions_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/tokens/__init__.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/tokens/tokens_pb2.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/tokens/tokens_pb2.pyi +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/tokens/tokens_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/tools/__init__.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/tools/tools_pb2.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/tools/tools_pb2.pyi +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/tools/tools_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/user_attributes/__init__.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/user_attributes/user_attributes_pb2.pyi +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/user_attributes/user_attributes_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/users/__init__.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/webhooks/__init__.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/webhooks/webhooks_pb2.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/webhooks/webhooks_pb2.pyi +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/webhooks/webhooks_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/workspaces/__init__.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/webauthn.py +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit_sdk_python.egg-info/dependency_links.txt +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit_sdk_python.egg-info/requires.txt +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit_sdk_python.egg-info/top_level.txt +0 -0
- {scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/setup.cfg +0 -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
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
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/
|
|
30
|
-
api_version = "
|
|
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):
|
|
@@ -24,21 +24,28 @@ class OrganizationClient:
|
|
|
24
24
|
)
|
|
25
25
|
|
|
26
26
|
def list_organizations(
|
|
27
|
-
self,
|
|
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
|
-
|
|
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
|
|
45
|
+
Method to get role by name
|
|
46
46
|
|
|
47
|
-
:param
|
|
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
|
|
76
|
+
Method to update an existing role by name
|
|
77
77
|
|
|
78
|
-
:param
|
|
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
|
|
100
|
+
Method to delete role by name
|
|
101
101
|
|
|
102
|
-
:param
|
|
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
|
|
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)
|
{scalekit_sdk_python-2.4.17 → scalekit_sdk_python-2.6.0}/scalekit/v1/auditlogs/auditlogs_pb2.pyi
RENAMED
|
@@ -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
|
-
|
|
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
|
-
|
|
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")
|