diff --git a/kinde_fastapi/examples/example_app.py b/kinde_fastapi/examples/example_app.py index d8ec1ba6..fa1696a9 100644 --- a/kinde_fastapi/examples/example_app.py +++ b/kinde_fastapi/examples/example_app.py @@ -8,6 +8,7 @@ import logging from kinde_sdk.auth.oauth import OAuth from kinde_sdk.auth import claims, feature_flags, permissions, tokens +from kinde_sdk.management import ManagementClient; logger = logging.getLogger(__name__) @@ -38,6 +39,35 @@ async def home(request: Request): """ if kinde_oauth.is_authenticated(): user = kinde_oauth.get_user_info() + + # Validate environment variables + domain = os.getenv("KINDE_DOMAIN") + client_id = os.getenv("KINDE_MANAGEMENT_CLIENT_ID") + client_secret = os.getenv("KINDE_MANAGEMENT_CLIENT_SECRET") + + if not all([domain, client_id, client_secret]): + return """ + +
+Missing required environment variables for management client.
+ Logout + + + """ + + management_client = ManagementClient( + domain=domain, + client_id=client_id, + client_secret=client_secret + ) + try: + api_response = management_client.get_users() + user_count = len(api_response.users) if hasattr(api_response, 'users') else 0 + except Exception as e: + logger.error(f"Failed to fetch users: {e}") + user_count = 0 + return f""" @@ -46,6 +76,7 @@ async def home(request: Request):feature flags: {await feature_flags.get_all_flags()}
permissions: {await permissions.get_permissions()}
tokens: {tokens.get_token_manager().get_access_token()}
+users: {user_count} user(s) found
You are logged in.
Logout diff --git a/kinde_sdk/management/management_client.py b/kinde_sdk/management/management_client.py index 6c13b5b1..2df0cd37 100644 --- a/kinde_sdk/management/management_client.py +++ b/kinde_sdk/management/management_client.py @@ -108,8 +108,8 @@ class ManagementClient: # Define response types for each endpoint RESPONSE_TYPES = { 'users': { - 'list': {'200': 'GetUsersResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '429': 'ErrorResponse'}, - 'get': {'200': 'GetUserResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '404': 'ErrorResponse', '429': 'ErrorResponse'}, + 'list': {'200': 'UsersResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '429': 'ErrorResponse'}, + 'get': {'200': 'User', '400': 'ErrorResponse', '403': 'ErrorResponse', '404': 'ErrorResponse', '429': 'ErrorResponse'}, 'create': {'201': 'CreateUserResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '429': 'ErrorResponse'}, 'update': {'200': 'UpdateUserResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '404': 'ErrorResponse', '429': 'ErrorResponse'}, 'delete': {'200': 'SuccessResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '404': 'ErrorResponse', '429': 'ErrorResponse'}, @@ -130,16 +130,16 @@ class ManagementClient: }, 'permissions': { 'list': {'200': 'GetPermissionsResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '429': 'ErrorResponse'}, - 'get': {'200': 'GetPermissionResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '404': 'ErrorResponse', '429': 'ErrorResponse'}, - 'create': {'201': 'CreatePermissionResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '429': 'ErrorResponse'}, - 'update': {'200': 'UpdatePermissionResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '404': 'ErrorResponse', '429': 'ErrorResponse'}, + 'get': {'200': 'Permissions', '400': 'ErrorResponse', '403': 'ErrorResponse', '404': 'ErrorResponse', '429': 'ErrorResponse'}, + 'create': {'201': 'SuccessResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '429': 'ErrorResponse'}, + 'update': {'200': 'SuccessResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '404': 'ErrorResponse', '429': 'ErrorResponse'}, 'delete': {'200': 'SuccessResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '404': 'ErrorResponse', '429': 'ErrorResponse'}, }, 'feature_flags': { 'list': {'200': 'GetFeatureFlagsResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '429': 'ErrorResponse'}, - 'get': {'200': 'GetFeatureFlagResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '404': 'ErrorResponse', '429': 'ErrorResponse'}, - 'create': {'201': 'CreateFeatureFlagResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '429': 'ErrorResponse'}, - 'update': {'200': 'UpdateFeatureFlagResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '404': 'ErrorResponse', '429': 'ErrorResponse'}, + 'get': {'200': 'GetFeatureFlagsResponseDataFeatureFlagsInner', '400': 'ErrorResponse', '403': 'ErrorResponse', '404': 'ErrorResponse', '429': 'ErrorResponse'}, + 'create': {'201': 'SuccessResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '429': 'ErrorResponse'}, + 'update': {'200': 'SuccessResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '404': 'ErrorResponse', '429': 'ErrorResponse'}, 'delete': {'200': 'SuccessResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '404': 'ErrorResponse', '429': 'ErrorResponse'}, }, 'subscribers': { diff --git a/pyproject.toml b/pyproject.toml index 9ebf22d7..425d300a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "kinde-python-sdk" -version = "2.0.2" +version = "2.0.6" authors = [ { name = "Kinde Engineering", email = "engineering@kinde.com" }, ]