kinde-python-sdk 2.0.0b2__tar.gz → 2.0.0b4__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.
- kinde_python_sdk-2.0.0b4/MANIFEST.in +14 -0
- {kinde_python_sdk-2.0.0b2/kinde_python_sdk.egg-info → kinde_python_sdk-2.0.0b4}/PKG-INFO +165 -4
- {kinde_python_sdk-2.0.0b2 → kinde_python_sdk-2.0.0b4}/README.md +164 -3
- kinde_python_sdk-2.0.0b4/kinde_fastapi/examples/example_app.py +61 -0
- kinde_python_sdk-2.0.0b4/kinde_fastapi/examples/session.py +74 -0
- kinde_python_sdk-2.0.0b4/kinde_fastapi/framework/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_fastapi/framework/fastapi_framework.py +192 -0
- kinde_python_sdk-2.0.0b4/kinde_fastapi/framework/fastapi_framework_factory.py +24 -0
- kinde_python_sdk-2.0.0b4/kinde_fastapi/middleware/framework_middleware.py +32 -0
- kinde_python_sdk-2.0.0b4/kinde_fastapi/storage/fastapi_storage.py +81 -0
- kinde_python_sdk-2.0.0b4/kinde_fastapi/storage/fastapi_storage_factory.py +26 -0
- kinde_python_sdk-2.0.0b4/kinde_flask/examples/example_app.py +47 -0
- kinde_python_sdk-2.0.0b4/kinde_flask/framework/flask_framework.py +209 -0
- kinde_python_sdk-2.0.0b4/kinde_flask/framework/flask_framework_factory.py +24 -0
- kinde_python_sdk-2.0.0b4/kinde_flask/middleware/framework_middleware.py +34 -0
- kinde_python_sdk-2.0.0b4/kinde_flask/storage/flask_storage_factory.py +89 -0
- {kinde_python_sdk-2.0.0b2 → kinde_python_sdk-2.0.0b4/kinde_python_sdk.egg-info}/PKG-INFO +165 -4
- kinde_python_sdk-2.0.0b4/kinde_python_sdk.egg-info/SOURCES.txt +904 -0
- kinde_python_sdk-2.0.0b4/kinde_python_sdk.egg-info/not-zip-safe +1 -0
- {kinde_python_sdk-2.0.0b2 → kinde_python_sdk-2.0.0b4}/kinde_sdk/__init__.py +5 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/__init__.py +3 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/path_to_api.py +200 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/__init__.py +3 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_apis.py +9 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_apis_api_id.py +9 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_apis_api_id_applications.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_applications.py +9 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_applications_app_id_auth_logout_urls.py +13 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_applications_app_id_auth_redirect_urls.py +13 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_applications_application_id.py +11 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_applications_application_id_connections.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_applications_application_id_connections_connection_id.py +9 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_business.py +9 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_connected_apps_auth_url.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_connected_apps_revoke.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_connected_apps_token.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_connections.py +9 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_connections_connection_id.py +11 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_environment_feature_flags.py +9 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_environment_feature_flags_feature_flag_key.py +9 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_event_types.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_events_event_id.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_feature_flags.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_feature_flags_feature_flag_key.py +9 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_industries.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_organization.py +9 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_organization_org_code.py +9 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_organization_org_code_handle.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_organizations.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_organizations_org_code_feature_flags.py +9 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_organizations_org_code_feature_flags_feature_flag_key.py +9 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_organizations_org_code_properties.py +9 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_organizations_org_code_properties_property_key.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_organizations_org_code_users.py +11 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_organizations_org_code_users_user_id.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_organizations_org_code_users_user_id_permissions.py +9 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_organizations_org_code_users_user_id_permissions_permission_id.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_organizations_org_code_users_user_id_roles.py +9 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_organizations_org_code_users_user_id_roles_role_id.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_permissions.py +9 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_permissions_permission_id.py +9 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_properties.py +9 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_properties_property_id.py +9 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_property_categories.py +9 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_property_categories_category_id.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_roles.py +9 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_roles_role_id.py +9 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_roles_role_id_permissions.py +9 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_roles_role_id_permissions_permission_id.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_subscribers.py +9 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_subscribers_subscriber_id.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_timezones.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_user.py +13 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_users.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_users_user_id_feature_flags_feature_flag_key.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_users_user_id_password.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_users_user_id_properties.py +9 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_users_user_id_properties_property_key.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_users_user_id_refresh_claims.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_webhooks.py +11 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/api_v1_webhooks_webhook_id.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/oauth2_introspect.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/oauth2_revoke.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/oauth2_user_profile.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/paths/oauth2_v2_user_profile.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/tag_to_api.py +71 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/tags/__init__.py +27 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/tags/apis_api.py +32 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/tags/applications_api.py +38 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/tags/business_api.py +26 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/tags/callbacks_api.py +38 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/tags/connected_apps_api.py +28 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/tags/connections_api.py +32 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/tags/environments_api.py +30 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/tags/feature_flags_api.py +28 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/tags/industries_api.py +24 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/tags/o_auth_api.py +30 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/tags/organizations_api.py +68 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/tags/permissions_api.py +30 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/tags/properties_api.py +30 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/tags/property_categories_api.py +28 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/tags/roles_api.py +36 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/tags/subscribers_api.py +28 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/tags/timezones_api.py +24 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/tags/users_api.py +44 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/apis/tags/webhooks_api.py +34 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/auth/__init__.py +8 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/auth/claims.py +79 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/auth/config_loader.py +22 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/auth/enums.py +20 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/auth/feature_flags.py +134 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/auth/login_options.py +29 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/auth/oauth.py +660 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/auth/permissions.py +97 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/auth/token_manager.py +168 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/auth/user_session.py +195 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/core/__init__.py +13 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/core/exceptions.py +19 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/core/framework/__init__.py +9 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/core/framework/framework_context.py +37 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/core/framework/framework_factory.py +98 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/core/framework/framework_interface.py +84 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/core/framework/null_framework.py +75 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/core/helpers.py +695 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/core/storage/__init__.py +14 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/core/storage/framework_aware_storage.py +105 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/core/storage/local_storage.py +52 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/core/storage/memory_storage.py +50 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/core/storage/storage_factory.py +68 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/core/storage/storage_interface.py +49 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/core/storage/storage_manager.py +232 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/management/__init__.py +11 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/management/api_client.py +1500 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/management/configuration.py +440 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/management/management_client.py +315 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/management/management_token_manager.py +92 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/__init__.py +5 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/add_organization_users_response.py +121 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/api.py +230 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/api_result.py +79 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/apis.py +109 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/applications.py +99 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/category.py +89 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/connected_apps_access_token.py +89 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/connected_apps_auth_url.py +89 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/connection.py +109 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/create_application_response.py +168 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/create_category_response.py +148 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/create_connection_response.py +148 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/create_organization_response.py +148 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/create_property_response.py +146 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/create_subscriber_success_response.py +128 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/create_user_response.py +126 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/create_webhook_response.py +158 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/delete_webhook_response.py +89 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/error.py +89 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/error_response.py +106 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/event_type.py +119 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/get_application_response.py +188 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/get_applications_response.py +136 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/get_categories_response.py +136 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/get_connections_response.py +136 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/get_environment_feature_flags_response.py +221 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/get_event_response.py +188 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/get_event_types_response.py +126 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/get_organization_feature_flags_response.py +211 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/get_organization_users_response.py +136 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/get_organizations_response.py +136 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/get_organizations_user_permissions_response.py +126 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/get_organizations_user_roles_response.py +136 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/get_permissions_response.py +136 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/get_properties_response.py +136 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/get_property_values_response.py +136 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/get_redirect_callback_urls_response.py +106 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/get_roles_response.py +136 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/get_subscriber_response.py +126 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/get_subscribers_response.py +136 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/get_webhooks_response.py +126 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/logout_redirect_urls.py +101 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/model_property.py +129 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/organization.py +109 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/organization_user.py +161 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/organization_user_permission.py +200 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/organization_user_role.py +99 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/organization_user_role_permissions.py +148 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/organization_users.py +57 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/permissions.py +109 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/property_value.py +119 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/redirect_callback_urls.py +101 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/role.py +109 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/roles.py +109 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/roles_permission_response.py +131 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/subscriber.py +109 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/subscribers_subscriber.py +119 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/success_response.py +89 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/token_error_response.py +89 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/token_introspect.py +141 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/update_organization_users_response.py +175 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/update_role_permissions_response.py +153 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/update_user_response.py +139 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/update_webhook_response.py +148 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/user.py +388 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/user_identity.py +138 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/user_profile.py +158 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/user_profile_v2.py +178 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/users.py +59 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/users_response.py +489 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/model/webhook.py +151 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/models/__init__.py +84 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/__init__.py +70 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_apis/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_apis/get.py +311 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_apis/post.py +471 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_apis_api_id/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_apis_api_id/delete.py +365 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_apis_api_id/get.py +365 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_apis_api_id_applications/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_apis_api_id_applications/patch.py +602 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_applications/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_applications/get.py +420 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_applications/post.py +475 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_applications_app_id_auth_logout_urls/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_applications_app_id_auth_logout_urls/delete.py +416 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_applications_app_id_auth_logout_urls/get.py +354 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_applications_app_id_auth_logout_urls/post.py +520 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_applications_app_id_auth_logout_urls/put.py +513 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_applications_app_id_auth_redirect_urls/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_applications_app_id_auth_redirect_urls/delete.py +416 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_applications_app_id_auth_redirect_urls/get.py +354 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_applications_app_id_auth_redirect_urls/post.py +520 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_applications_app_id_auth_redirect_urls/put.py +513 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_applications_application_id/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_applications_application_id/delete.py +361 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_applications_application_id/get.py +354 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_applications_application_id/patch.py +559 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_applications_application_id_connections/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_applications_application_id_connections/get.py +354 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_applications_application_id_connections_connection_id/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_applications_application_id_connections_connection_id/delete.py +370 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_applications_application_id_connections_connection_id/post.py +351 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_business/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_business/get.py +447 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_business/patch.py +542 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_connected_apps_auth_url/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_connected_apps_auth_url/get.py +406 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_connected_apps_revoke/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_connected_apps_revoke/post.py +379 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_connected_apps_token/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_connected_apps_token/get.py +366 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_connections/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_connections/get.py +440 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_connections/post.py +614 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_connections_connection_id/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_connections_connection_id/delete.py +361 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_connections_connection_id/get.py +354 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_connections_connection_id/patch.py +552 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_environment_feature_flags/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_environment_feature_flags/delete.py +300 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_environment_feature_flags/get.py +300 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_environment_feature_flags_feature_flag_key/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_environment_feature_flags_feature_flag_key/delete.py +354 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_environment_feature_flags_feature_flag_key/patch.py +505 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_event_types/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_event_types/get.py +311 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_events_event_id/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_events_event_id/get.py +365 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_feature_flags/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_feature_flags/post.py +554 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_feature_flags_feature_flag_key/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_feature_flags_feature_flag_key/delete.py +354 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_feature_flags_feature_flag_key/put.py +494 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_industries/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_industries/get.py +333 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_organization/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_organization/get.py +354 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_organization/post.py +640 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_organization_org_code/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_organization_org_code/delete.py +342 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_organization_org_code/patch.py +617 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_organization_org_code_handle/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_organization_org_code_handle/delete.py +354 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_organizations/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_organizations/get.py +430 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_organizations_org_code_feature_flags/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_organizations_org_code_feature_flags/delete.py +354 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_organizations_org_code_feature_flags/get.py +354 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_organizations_org_code_feature_flags_feature_flag_key/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_organizations_org_code_feature_flags_feature_flag_key/delete.py +363 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_organizations_org_code_feature_flags_feature_flag_key/patch.py +418 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_organizations_org_code_properties/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_organizations_org_code_properties/get.py +354 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_organizations_org_code_properties/patch.py +505 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_organizations_org_code_properties_property_key/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_organizations_org_code_properties_property_key/put.py +418 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_organizations_org_code_users/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_organizations_org_code_users/get.py +537 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_organizations_org_code_users/patch.py +642 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_organizations_org_code_users/post.py +654 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_organizations_org_code_users_user_id/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_organizations_org_code_users_user_id/delete.py +363 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_organizations_org_code_users_user_id_permissions/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_organizations_org_code_users_user_id_permissions/get.py +411 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_organizations_org_code_users_user_id_permissions/post.py +484 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_organizations_org_code_users_user_id_permissions_permission_id/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_organizations_org_code_users_user_id_permissions_permission_id/delete.py +372 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_organizations_org_code_users_user_id_roles/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_organizations_org_code_users_user_id_roles/get.py +338 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_organizations_org_code_users_user_id_roles/post.py +484 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_organizations_org_code_users_user_id_roles_role_id/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_organizations_org_code_users_user_id_roles_role_id/delete.py +372 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_permissions/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_permissions/get.py +442 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_permissions/post.py +458 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_permissions_permission_id/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_permissions_permission_id/delete.py +354 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_permissions_permission_id/patch.py +515 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_properties/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_properties/get.py +484 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_properties/post.py +558 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_properties_property_id/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_properties_property_id/delete.py +354 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_properties_property_id/put.py +539 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_property_categories/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_property_categories/get.py +484 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_property_categories/post.py +480 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_property_categories_category_id/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_property_categories_category_id/put.py +500 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_roles/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_roles/get.py +442 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_roles/post.py +468 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_roles_role_id/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_roles_role_id/delete.py +354 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_roles_role_id/patch.py +532 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_roles_role_id_permissions/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_roles_role_id_permissions/get.py +509 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_roles_role_id_permissions/patch.py +568 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_roles_role_id_permissions_permission_id/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_roles_role_id_permissions_permission_id/delete.py +363 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_subscribers/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_subscribers/get.py +433 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_subscribers/post.py +411 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_subscribers_subscriber_id/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_subscribers_subscriber_id/get.py +352 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_timezones/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_timezones/get.py +333 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_user/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_user/delete.py +364 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_user/get.py +383 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_user/patch.py +531 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_user/post.py +694 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_users/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_users/get.py +488 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_users_user_id_feature_flags_feature_flag_key/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_users_user_id_feature_flags_feature_flag_key/patch.py +418 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_users_user_id_password/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_users_user_id_password/put.py +595 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_users_user_id_properties/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_users_user_id_properties/get.py +354 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_users_user_id_properties/patch.py +505 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_users_user_id_properties_property_key/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_users_user_id_properties_property_key/put.py +418 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_users_user_id_refresh_claims/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_users_user_id_refresh_claims/post.py +365 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_webhooks/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_webhooks/get.py +311 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_webhooks/patch.py +515 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_webhooks/post.py +534 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_webhooks_webhook_id/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/api_v1_webhooks_webhook_id/delete.py +365 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/oauth2_introspect/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/oauth2_introspect/post.py +450 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/oauth2_revoke/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/oauth2_revoke/post.py +448 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/oauth2_user_profile/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/oauth2_user_profile/get.py +257 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/oauth2_v2_user_profile/__init__.py +7 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/paths/oauth2_v2_user_profile/get.py +270 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/__init__.py +0 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_kinde_api_client.py +207 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/__init__.py +0 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_add_organization_users_response.py +37 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_api.py +26 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_api_result.py +36 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_apis.py +26 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_applications.py +26 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_category.py +26 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_connected_apps_access_token.py +36 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_connected_apps_auth_url.py +37 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_connection.py +26 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_create_application_response.py +26 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_create_category_response.py +26 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_create_connection_response.py +26 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_create_organization_response.py +26 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_create_property_response.py +26 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_create_subscriber_success_response.py +26 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_create_user_response.py +37 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_create_webhook_response.py +26 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_delete_webhook_response.py +26 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_error.py +37 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_error_response.py +36 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_event_type.py +26 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_get_application_response.py +26 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_get_applications_response.py +26 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_get_categories_response.py +26 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_get_connections_response.py +26 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_get_environment_feature_flags_response.py +26 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_get_event_response.py +26 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_get_event_types_response.py +26 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_get_organization_feature_flags_response.py +26 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_get_organization_users_response.py +26 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_get_organizations_response.py +37 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_get_organizations_user_permissions_response.py +26 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_get_organizations_user_roles_response.py +26 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_get_permissions_response.py +26 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_get_properties_response.py +26 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_get_property_values_response.py +26 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_get_redirect_callback_urls_response.py +26 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_get_roles_response.py +26 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_get_subscriber_response.py +26 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_get_subscribers_response.py +26 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_get_webhooks_response.py +26 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_logout_redirect_urls.py +26 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_model_property.py +26 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_organization.py +37 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_organization_user.py +37 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_organization_user_permission.py +26 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_organization_user_role.py +26 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_organization_user_role_permissions.py +26 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_organization_users.py +27 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_permissions.py +26 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_property_value.py +26 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_redirect_callback_urls.py +26 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_role.py +26 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_roles.py +26 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_roles_permission_response.py +26 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_subscriber.py +26 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_subscribers_subscriber.py +26 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_success_response.py +36 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_token_error_response.py +26 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_token_introspect.py +26 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_update_organization_users_response.py +26 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_update_role_permissions_response.py +26 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_update_user_response.py +26 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_update_webhook_response.py +26 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_user.py +37 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_user_identity.py +37 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_user_profile.py +37 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_user_profile_v2.py +37 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_users.py +27 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_users_response.py +36 -0
- kinde_python_sdk-2.0.0b4/kinde_sdk/test/test_models/test_webhook.py +26 -0
- {kinde_python_sdk-2.0.0b2 → kinde_python_sdk-2.0.0b4}/pyproject.toml +9 -1
- kinde_python_sdk-2.0.0b2/kinde_python_sdk.egg-info/SOURCES.txt +0 -11
- {kinde_python_sdk-2.0.0b2 → kinde_python_sdk-2.0.0b4}/LICENSE +0 -0
- {kinde_python_sdk-2.0.0b2 → kinde_python_sdk-2.0.0b4}/kinde_fastapi/__init__.py +0 -0
- {kinde_python_sdk-2.0.0b2 → kinde_python_sdk-2.0.0b4}/kinde_flask/__init__.py +0 -0
- {kinde_python_sdk-2.0.0b2 → kinde_python_sdk-2.0.0b4}/kinde_python_sdk.egg-info/dependency_links.txt +0 -0
- {kinde_python_sdk-2.0.0b2 → kinde_python_sdk-2.0.0b4}/kinde_python_sdk.egg-info/requires.txt +0 -0
- {kinde_python_sdk-2.0.0b2 → kinde_python_sdk-2.0.0b4}/kinde_python_sdk.egg-info/top_level.txt +0 -0
- {kinde_python_sdk-2.0.0b2 → kinde_python_sdk-2.0.0b4}/setup.cfg +0 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
include README.md
|
|
2
|
+
include LICENSE
|
|
3
|
+
recursive-include kinde_sdk *.py
|
|
4
|
+
recursive-include kinde_sdk *.json
|
|
5
|
+
recursive-include kinde_sdk *.yaml
|
|
6
|
+
recursive-include kinde_sdk *.yml
|
|
7
|
+
recursive-include kinde_fastapi *.py
|
|
8
|
+
recursive-include kinde_fastapi *.json
|
|
9
|
+
recursive-include kinde_fastapi *.yaml
|
|
10
|
+
recursive-include kinde_fastapi *.yml
|
|
11
|
+
recursive-include kinde_flask *.py
|
|
12
|
+
recursive-include kinde_flask *.json
|
|
13
|
+
recursive-include kinde_flask *.yaml
|
|
14
|
+
recursive-include kinde_flask *.yml
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: kinde-python-sdk
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.0b4
|
|
4
4
|
Summary: Connect your app to the Kinde platform
|
|
5
5
|
Author-email: Kinde Engineering <engineering@kinde.com>
|
|
6
6
|
Project-URL: Homepage, https://github.com/kinde-oss/kinde-python-sdk
|
|
@@ -166,6 +166,169 @@ data = storage_manager.get("some_key")
|
|
|
166
166
|
# After initializing both OAuth and KindeApiClient use the following fn to get proper urls
|
|
167
167
|
api_client.fetch_openid_configuration(oauth)
|
|
168
168
|
|
|
169
|
+
## Framework Integrations
|
|
170
|
+
|
|
171
|
+
The Kinde Python SDK provides seamless integration with popular Python web frameworks. Below are detailed guides for using Kinde with FastAPI and Flask.
|
|
172
|
+
|
|
173
|
+
### FastAPI Integration
|
|
174
|
+
|
|
175
|
+
The `kinde_fastapi` module provides easy integration with FastAPI applications.
|
|
176
|
+
|
|
177
|
+
#### Installation
|
|
178
|
+
|
|
179
|
+
```bash
|
|
180
|
+
pip install fastapi uvicorn python-multipart
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
#### Basic Setup
|
|
184
|
+
|
|
185
|
+
```python
|
|
186
|
+
from fastapi import FastAPI
|
|
187
|
+
from kinde_sdk.auth.oauth import OAuth
|
|
188
|
+
|
|
189
|
+
# Initialize FastAPI app
|
|
190
|
+
app = FastAPI()
|
|
191
|
+
|
|
192
|
+
# Initialize Kinde OAuth with FastAPI framework
|
|
193
|
+
kinde_oauth = OAuth(
|
|
194
|
+
framework="fastapi",
|
|
195
|
+
app=app
|
|
196
|
+
)
|
|
197
|
+
|
|
198
|
+
# Example home route
|
|
199
|
+
@app.get("/")
|
|
200
|
+
async def home(request: Request):
|
|
201
|
+
if kinde_oauth.is_authenticated():
|
|
202
|
+
user = kinde_oauth.get_user_info()
|
|
203
|
+
return f"Welcome, {user.get('email', 'User')}!"
|
|
204
|
+
return "Please log in"
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
#### Configuration
|
|
208
|
+
|
|
209
|
+
Create a `.env` file with your Kinde credentials:
|
|
210
|
+
|
|
211
|
+
```env
|
|
212
|
+
KINDE_CLIENT_ID=your_client_id
|
|
213
|
+
KINDE_CLIENT_SECRET=your_client_secret
|
|
214
|
+
KINDE_REDIRECT_URI=http://localhost:8000/callback
|
|
215
|
+
KINDE_DOMAIN=your_kinde_domain
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
#### Available Routes
|
|
219
|
+
|
|
220
|
+
The FastAPI integration automatically provides these routes:
|
|
221
|
+
|
|
222
|
+
- `/login` - Redirects to Kinde login
|
|
223
|
+
- `/callback` - Handles OAuth callback
|
|
224
|
+
- `/logout` - Logs out the user
|
|
225
|
+
- `/register` - Redirects to Kinde registration
|
|
226
|
+
- `/user` - Returns user information
|
|
227
|
+
|
|
228
|
+
#### Protected Routes
|
|
229
|
+
|
|
230
|
+
```python
|
|
231
|
+
from fastapi import Depends
|
|
232
|
+
from kinde_sdk.kinde_api_client import KindeApiClient
|
|
233
|
+
|
|
234
|
+
@router.get("/protected")
|
|
235
|
+
async def protected_route(
|
|
236
|
+
kinde_client: KindeApiClient = Depends(get_kinde_client)
|
|
237
|
+
):
|
|
238
|
+
return {"message": "This is a protected route"}
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
### Flask Integration
|
|
242
|
+
|
|
243
|
+
The `kinde_flask` module provides easy integration with Flask applications.
|
|
244
|
+
|
|
245
|
+
#### Installation
|
|
246
|
+
|
|
247
|
+
```bash
|
|
248
|
+
pip install flask python-dotenv flask-session
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
#### Basic Setup
|
|
252
|
+
|
|
253
|
+
```python
|
|
254
|
+
from flask import Flask
|
|
255
|
+
from kinde_sdk.auth.oauth import OAuth
|
|
256
|
+
|
|
257
|
+
# Initialize Flask app
|
|
258
|
+
app = Flask(__name__)
|
|
259
|
+
|
|
260
|
+
# Configure Flask session
|
|
261
|
+
app.config['SECRET_KEY'] = 'your-secret-key'
|
|
262
|
+
app.config['SESSION_TYPE'] = 'filesystem'
|
|
263
|
+
app.config['SESSION_PERMANENT'] = False
|
|
264
|
+
|
|
265
|
+
# Initialize Kinde OAuth with Flask framework
|
|
266
|
+
kinde_oauth = OAuth(
|
|
267
|
+
framework="flask",
|
|
268
|
+
app=app
|
|
269
|
+
)
|
|
270
|
+
|
|
271
|
+
# Example home route
|
|
272
|
+
@app.route('/')
|
|
273
|
+
def home():
|
|
274
|
+
if kinde_oauth.is_authenticated():
|
|
275
|
+
user = kinde_oauth.get_user_info()
|
|
276
|
+
return f"Welcome, {user.get('email', 'User')}!"
|
|
277
|
+
return "Please log in"
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
#### Configuration
|
|
281
|
+
|
|
282
|
+
Create a `.env` file with your Kinde credentials:
|
|
283
|
+
|
|
284
|
+
```env
|
|
285
|
+
KINDE_CLIENT_ID=your_client_id
|
|
286
|
+
KINDE_CLIENT_SECRET=your_client_secret
|
|
287
|
+
KINDE_REDIRECT_URI=http://localhost:5000/callback
|
|
288
|
+
KINDE_DOMAIN=your_kinde_domain
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
#### Available Routes
|
|
292
|
+
|
|
293
|
+
The Flask integration automatically provides these routes:
|
|
294
|
+
|
|
295
|
+
- `/login` - Redirects to Kinde login
|
|
296
|
+
- `/callback` - Handles OAuth callback
|
|
297
|
+
- `/logout` - Logs out the user
|
|
298
|
+
- `/register` - Redirects to Kinde registration
|
|
299
|
+
- `/user` - Returns user information
|
|
300
|
+
|
|
301
|
+
#### Protected Routes
|
|
302
|
+
|
|
303
|
+
```python
|
|
304
|
+
from functools import wraps
|
|
305
|
+
from flask import session, redirect
|
|
306
|
+
|
|
307
|
+
def login_required(f):
|
|
308
|
+
@wraps(f)
|
|
309
|
+
def decorated_function(*args, **kwargs):
|
|
310
|
+
if not kinde_oauth.is_authenticated():
|
|
311
|
+
return redirect('/login')
|
|
312
|
+
return f(*args, **kwargs)
|
|
313
|
+
return decorated_function
|
|
314
|
+
|
|
315
|
+
@app.route('/protected')
|
|
316
|
+
@login_required
|
|
317
|
+
def protected_route():
|
|
318
|
+
return {"message": "This is a protected route"}
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
#### Security Considerations
|
|
322
|
+
|
|
323
|
+
For both FastAPI and Flask integrations:
|
|
324
|
+
|
|
325
|
+
1. Always use HTTPS in production
|
|
326
|
+
2. Use a secure session secret key
|
|
327
|
+
3. Implement proper state parameter validation
|
|
328
|
+
4. Handle OAuth errors appropriately
|
|
329
|
+
5. Implement proper session management
|
|
330
|
+
6. Consider implementing CSRF protection
|
|
331
|
+
|
|
169
332
|
# Kinde Management API Module
|
|
170
333
|
|
|
171
334
|
This module provides a client for the Kinde Management API, allowing you to manage users, organizations, roles, permissions, and feature flags programmatically.
|
|
@@ -542,15 +705,13 @@ def main():
|
|
|
542
705
|
if __name__ == "__main__":
|
|
543
706
|
main()
|
|
544
707
|
|
|
545
|
-
```
|
|
546
|
-
|
|
547
708
|
## Publishing
|
|
548
709
|
|
|
549
710
|
The core team handles publishing.
|
|
550
711
|
|
|
551
712
|
## Contributing
|
|
552
713
|
|
|
553
|
-
Please refer to Kinde
|
|
714
|
+
Please refer to Kinde's [contributing guidelines](https://github.com/kinde-oss/.github/blob/489e2ca9c3307c2b2e098a885e22f2239116394a/CONTRIBUTING.md).
|
|
554
715
|
|
|
555
716
|
## License
|
|
556
717
|
|
|
@@ -125,6 +125,169 @@ data = storage_manager.get("some_key")
|
|
|
125
125
|
# After initializing both OAuth and KindeApiClient use the following fn to get proper urls
|
|
126
126
|
api_client.fetch_openid_configuration(oauth)
|
|
127
127
|
|
|
128
|
+
## Framework Integrations
|
|
129
|
+
|
|
130
|
+
The Kinde Python SDK provides seamless integration with popular Python web frameworks. Below are detailed guides for using Kinde with FastAPI and Flask.
|
|
131
|
+
|
|
132
|
+
### FastAPI Integration
|
|
133
|
+
|
|
134
|
+
The `kinde_fastapi` module provides easy integration with FastAPI applications.
|
|
135
|
+
|
|
136
|
+
#### Installation
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
pip install fastapi uvicorn python-multipart
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
#### Basic Setup
|
|
143
|
+
|
|
144
|
+
```python
|
|
145
|
+
from fastapi import FastAPI
|
|
146
|
+
from kinde_sdk.auth.oauth import OAuth
|
|
147
|
+
|
|
148
|
+
# Initialize FastAPI app
|
|
149
|
+
app = FastAPI()
|
|
150
|
+
|
|
151
|
+
# Initialize Kinde OAuth with FastAPI framework
|
|
152
|
+
kinde_oauth = OAuth(
|
|
153
|
+
framework="fastapi",
|
|
154
|
+
app=app
|
|
155
|
+
)
|
|
156
|
+
|
|
157
|
+
# Example home route
|
|
158
|
+
@app.get("/")
|
|
159
|
+
async def home(request: Request):
|
|
160
|
+
if kinde_oauth.is_authenticated():
|
|
161
|
+
user = kinde_oauth.get_user_info()
|
|
162
|
+
return f"Welcome, {user.get('email', 'User')}!"
|
|
163
|
+
return "Please log in"
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
#### Configuration
|
|
167
|
+
|
|
168
|
+
Create a `.env` file with your Kinde credentials:
|
|
169
|
+
|
|
170
|
+
```env
|
|
171
|
+
KINDE_CLIENT_ID=your_client_id
|
|
172
|
+
KINDE_CLIENT_SECRET=your_client_secret
|
|
173
|
+
KINDE_REDIRECT_URI=http://localhost:8000/callback
|
|
174
|
+
KINDE_DOMAIN=your_kinde_domain
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
#### Available Routes
|
|
178
|
+
|
|
179
|
+
The FastAPI integration automatically provides these routes:
|
|
180
|
+
|
|
181
|
+
- `/login` - Redirects to Kinde login
|
|
182
|
+
- `/callback` - Handles OAuth callback
|
|
183
|
+
- `/logout` - Logs out the user
|
|
184
|
+
- `/register` - Redirects to Kinde registration
|
|
185
|
+
- `/user` - Returns user information
|
|
186
|
+
|
|
187
|
+
#### Protected Routes
|
|
188
|
+
|
|
189
|
+
```python
|
|
190
|
+
from fastapi import Depends
|
|
191
|
+
from kinde_sdk.kinde_api_client import KindeApiClient
|
|
192
|
+
|
|
193
|
+
@router.get("/protected")
|
|
194
|
+
async def protected_route(
|
|
195
|
+
kinde_client: KindeApiClient = Depends(get_kinde_client)
|
|
196
|
+
):
|
|
197
|
+
return {"message": "This is a protected route"}
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
### Flask Integration
|
|
201
|
+
|
|
202
|
+
The `kinde_flask` module provides easy integration with Flask applications.
|
|
203
|
+
|
|
204
|
+
#### Installation
|
|
205
|
+
|
|
206
|
+
```bash
|
|
207
|
+
pip install flask python-dotenv flask-session
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
#### Basic Setup
|
|
211
|
+
|
|
212
|
+
```python
|
|
213
|
+
from flask import Flask
|
|
214
|
+
from kinde_sdk.auth.oauth import OAuth
|
|
215
|
+
|
|
216
|
+
# Initialize Flask app
|
|
217
|
+
app = Flask(__name__)
|
|
218
|
+
|
|
219
|
+
# Configure Flask session
|
|
220
|
+
app.config['SECRET_KEY'] = 'your-secret-key'
|
|
221
|
+
app.config['SESSION_TYPE'] = 'filesystem'
|
|
222
|
+
app.config['SESSION_PERMANENT'] = False
|
|
223
|
+
|
|
224
|
+
# Initialize Kinde OAuth with Flask framework
|
|
225
|
+
kinde_oauth = OAuth(
|
|
226
|
+
framework="flask",
|
|
227
|
+
app=app
|
|
228
|
+
)
|
|
229
|
+
|
|
230
|
+
# Example home route
|
|
231
|
+
@app.route('/')
|
|
232
|
+
def home():
|
|
233
|
+
if kinde_oauth.is_authenticated():
|
|
234
|
+
user = kinde_oauth.get_user_info()
|
|
235
|
+
return f"Welcome, {user.get('email', 'User')}!"
|
|
236
|
+
return "Please log in"
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
#### Configuration
|
|
240
|
+
|
|
241
|
+
Create a `.env` file with your Kinde credentials:
|
|
242
|
+
|
|
243
|
+
```env
|
|
244
|
+
KINDE_CLIENT_ID=your_client_id
|
|
245
|
+
KINDE_CLIENT_SECRET=your_client_secret
|
|
246
|
+
KINDE_REDIRECT_URI=http://localhost:5000/callback
|
|
247
|
+
KINDE_DOMAIN=your_kinde_domain
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
#### Available Routes
|
|
251
|
+
|
|
252
|
+
The Flask integration automatically provides these routes:
|
|
253
|
+
|
|
254
|
+
- `/login` - Redirects to Kinde login
|
|
255
|
+
- `/callback` - Handles OAuth callback
|
|
256
|
+
- `/logout` - Logs out the user
|
|
257
|
+
- `/register` - Redirects to Kinde registration
|
|
258
|
+
- `/user` - Returns user information
|
|
259
|
+
|
|
260
|
+
#### Protected Routes
|
|
261
|
+
|
|
262
|
+
```python
|
|
263
|
+
from functools import wraps
|
|
264
|
+
from flask import session, redirect
|
|
265
|
+
|
|
266
|
+
def login_required(f):
|
|
267
|
+
@wraps(f)
|
|
268
|
+
def decorated_function(*args, **kwargs):
|
|
269
|
+
if not kinde_oauth.is_authenticated():
|
|
270
|
+
return redirect('/login')
|
|
271
|
+
return f(*args, **kwargs)
|
|
272
|
+
return decorated_function
|
|
273
|
+
|
|
274
|
+
@app.route('/protected')
|
|
275
|
+
@login_required
|
|
276
|
+
def protected_route():
|
|
277
|
+
return {"message": "This is a protected route"}
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
#### Security Considerations
|
|
281
|
+
|
|
282
|
+
For both FastAPI and Flask integrations:
|
|
283
|
+
|
|
284
|
+
1. Always use HTTPS in production
|
|
285
|
+
2. Use a secure session secret key
|
|
286
|
+
3. Implement proper state parameter validation
|
|
287
|
+
4. Handle OAuth errors appropriately
|
|
288
|
+
5. Implement proper session management
|
|
289
|
+
6. Consider implementing CSRF protection
|
|
290
|
+
|
|
128
291
|
# Kinde Management API Module
|
|
129
292
|
|
|
130
293
|
This module provides a client for the Kinde Management API, allowing you to manage users, organizations, roles, permissions, and feature flags programmatically.
|
|
@@ -501,15 +664,13 @@ def main():
|
|
|
501
664
|
if __name__ == "__main__":
|
|
502
665
|
main()
|
|
503
666
|
|
|
504
|
-
```
|
|
505
|
-
|
|
506
667
|
## Publishing
|
|
507
668
|
|
|
508
669
|
The core team handles publishing.
|
|
509
670
|
|
|
510
671
|
## Contributing
|
|
511
672
|
|
|
512
|
-
Please refer to Kinde
|
|
673
|
+
Please refer to Kinde's [contributing guidelines](https://github.com/kinde-oss/.github/blob/489e2ca9c3307c2b2e098a885e22f2239116394a/CONTRIBUTING.md).
|
|
513
674
|
|
|
514
675
|
## License
|
|
515
676
|
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
from fastapi import FastAPI, Request
|
|
2
|
+
from fastapi.responses import HTMLResponse
|
|
3
|
+
from starlette.middleware.sessions import SessionMiddleware
|
|
4
|
+
from .session import InMemorySessionMiddleware
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
import os
|
|
7
|
+
from dotenv import load_dotenv
|
|
8
|
+
import logging
|
|
9
|
+
from kinde_sdk.auth.oauth import OAuth
|
|
10
|
+
|
|
11
|
+
logger = logging.getLogger(__name__)
|
|
12
|
+
|
|
13
|
+
# Load environment variables from .env file
|
|
14
|
+
load_dotenv()
|
|
15
|
+
|
|
16
|
+
# Initialize FastAPI app
|
|
17
|
+
app = FastAPI(title="Kinde FastAPI Example")
|
|
18
|
+
|
|
19
|
+
# Add session middleware with proper configuration
|
|
20
|
+
app.add_middleware(
|
|
21
|
+
InMemorySessionMiddleware,
|
|
22
|
+
max_age=3600, # 1 hour
|
|
23
|
+
https_only=False
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
# Initialize Kinde OAuth with FastAPI framework
|
|
27
|
+
kinde_oauth = OAuth(
|
|
28
|
+
framework="fastapi",
|
|
29
|
+
app=app
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
# Example home route
|
|
33
|
+
@app.get("/", response_class=HTMLResponse)
|
|
34
|
+
async def home(request: Request):
|
|
35
|
+
"""
|
|
36
|
+
Home page that shows different content based on authentication status.
|
|
37
|
+
"""
|
|
38
|
+
if kinde_oauth.is_authenticated():
|
|
39
|
+
user = kinde_oauth.get_user_info()
|
|
40
|
+
return f"""
|
|
41
|
+
<html>
|
|
42
|
+
<body>
|
|
43
|
+
<h1>Welcome, {user.get('email', 'User')}!</h1>
|
|
44
|
+
<p>You are logged in.</p>
|
|
45
|
+
<a href="/logout">Logout</a>
|
|
46
|
+
</body>
|
|
47
|
+
</html>
|
|
48
|
+
"""
|
|
49
|
+
return """
|
|
50
|
+
<html>
|
|
51
|
+
<body>
|
|
52
|
+
<h1>Welcome to the Example App</h1>
|
|
53
|
+
<p>You are not logged in.</p>
|
|
54
|
+
<a href="/login">Login</a>
|
|
55
|
+
</body>
|
|
56
|
+
</html>
|
|
57
|
+
"""
|
|
58
|
+
|
|
59
|
+
if __name__ == "__main__":
|
|
60
|
+
import uvicorn
|
|
61
|
+
uvicorn.run(app, host="127.0.0.1", port=5000)
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
from fastapi import Request, Response
|
|
2
|
+
import json
|
|
3
|
+
import secrets
|
|
4
|
+
from datetime import datetime, timedelta
|
|
5
|
+
from typing import Optional, Any, Dict, Callable, Awaitable
|
|
6
|
+
from threading import Lock
|
|
7
|
+
from starlette.middleware.base import BaseHTTPMiddleware
|
|
8
|
+
from starlette.types import ASGIApp, Receive, Scope, Send
|
|
9
|
+
|
|
10
|
+
class InMemorySessionMiddleware(BaseHTTPMiddleware):
|
|
11
|
+
def __init__(
|
|
12
|
+
self,
|
|
13
|
+
app: ASGIApp,
|
|
14
|
+
session_cookie: str = "session",
|
|
15
|
+
max_age: int = 14 * 24 * 60 * 60, # 14 days in seconds
|
|
16
|
+
same_site: str = "lax",
|
|
17
|
+
https_only: bool = False
|
|
18
|
+
):
|
|
19
|
+
super().__init__(app)
|
|
20
|
+
self.session_cookie = session_cookie
|
|
21
|
+
self.max_age = max_age
|
|
22
|
+
self.same_site = same_site
|
|
23
|
+
self.https_only = https_only
|
|
24
|
+
self._sessions: Dict[str, Dict[str, Any]] = {}
|
|
25
|
+
self._lock = Lock() # Thread safety for session operations
|
|
26
|
+
|
|
27
|
+
async def dispatch(self, request: Request, call_next):
|
|
28
|
+
session_id = request.cookies.get(self.session_cookie)
|
|
29
|
+
|
|
30
|
+
if not session_id:
|
|
31
|
+
session_id = secrets.token_urlsafe(32)
|
|
32
|
+
session_data = {}
|
|
33
|
+
else:
|
|
34
|
+
session_data = self._get_session(session_id) or {}
|
|
35
|
+
|
|
36
|
+
# Add session to request scope
|
|
37
|
+
request.scope["session"] = session_data
|
|
38
|
+
|
|
39
|
+
# Process the request
|
|
40
|
+
response = await call_next(request)
|
|
41
|
+
|
|
42
|
+
# Update session in memory
|
|
43
|
+
if "session" in request.scope:
|
|
44
|
+
self._set_session(session_id, request.scope["session"])
|
|
45
|
+
|
|
46
|
+
# Set cookie
|
|
47
|
+
response.set_cookie(
|
|
48
|
+
key=self.session_cookie,
|
|
49
|
+
value=session_id,
|
|
50
|
+
max_age=self.max_age,
|
|
51
|
+
httponly=True,
|
|
52
|
+
samesite=self.same_site,
|
|
53
|
+
secure=self.https_only
|
|
54
|
+
)
|
|
55
|
+
|
|
56
|
+
return response
|
|
57
|
+
|
|
58
|
+
def _get_session(self, session_id: str) -> Optional[Dict[str, Any]]:
|
|
59
|
+
with self._lock:
|
|
60
|
+
return self._sessions.get(session_id)
|
|
61
|
+
|
|
62
|
+
def _set_session(self, session_id: str, data: Dict[str, Any]) -> None:
|
|
63
|
+
with self._lock:
|
|
64
|
+
self._sessions[session_id] = data
|
|
65
|
+
|
|
66
|
+
def delete_session(self, session_id: str) -> None:
|
|
67
|
+
with self._lock:
|
|
68
|
+
self._sessions.pop(session_id, None)
|
|
69
|
+
|
|
70
|
+
def cleanup_expired_sessions(self) -> None:
|
|
71
|
+
"""Optional: Method to clean up expired sessions if needed"""
|
|
72
|
+
with self._lock:
|
|
73
|
+
# Implementation would depend on how you want to track session expiration
|
|
74
|
+
pass
|