kinde_sdk 1.2.3 → 1.7.0
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.
- checksums.yaml +4 -4
- data/app/assets/stylesheets/kinde/ruby/sdk/application.css +15 -0
- data/app/controllers/kinde_sdk/auth_controller.rb +301 -0
- data/app/helpers/auth_helper.rb +88 -0
- data/config/routes.rb +9 -0
- data/kinde_api/Gemfile +9 -0
- data/kinde_api/README.md +316 -47
- data/kinde_api/Rakefile +10 -0
- data/kinde_api/docs/APIsApi.md +569 -60
- data/kinde_api/docs/AddAPIScopeRequest.md +20 -0
- data/kinde_api/docs/AddAPIsRequest.md +4 -4
- data/kinde_api/docs/AddOrganizationUsersRequestUsersInner.md +1 -1
- data/kinde_api/docs/AddRoleScopeRequest.md +18 -0
- data/kinde_api/docs/AddRoleScopeResponse.md +20 -0
- data/kinde_api/docs/ApplicationsApi.md +465 -38
- data/kinde_api/docs/AuthorizeAppApiResponse.md +24 -0
- data/kinde_api/docs/BillingAgreementsApi.md +157 -0
- data/kinde_api/docs/BillingEntitlementsApi.md +89 -0
- data/kinde_api/docs/BillingMeterUsageApi.md +77 -0
- data/kinde_api/docs/BusinessApi.md +27 -66
- data/kinde_api/docs/CallbacksApi.md +25 -25
- data/kinde_api/docs/Category.md +20 -0
- data/kinde_api/docs/ConnectedAppsApi.md +8 -8
- data/kinde_api/docs/Connection.md +22 -0
- data/kinde_api/docs/ConnectionConnection.md +24 -0
- data/kinde_api/docs/ConnectionsApi.md +439 -0
- data/kinde_api/docs/CreateApiScopesResponse.md +22 -0
- data/kinde_api/docs/CreateApiScopesResponseScope.md +18 -0
- data/kinde_api/docs/CreateApisResponse.md +22 -0
- data/kinde_api/docs/CreateApisResponseApi.md +18 -0
- data/kinde_api/docs/CreateApplicationRequest.md +3 -3
- data/kinde_api/docs/CreateApplicationResponseApplication.md +4 -4
- data/kinde_api/docs/CreateBillingAgreementRequest.md +24 -0
- data/kinde_api/docs/CreateCategoryRequest.md +20 -0
- data/kinde_api/docs/CreateCategoryResponse.md +22 -0
- data/kinde_api/docs/CreateCategoryResponseCategory.md +18 -0
- data/kinde_api/docs/CreateConnectionRequest.md +28 -0
- data/kinde_api/docs/CreateConnectionRequestOptions.md +51 -0
- data/kinde_api/docs/CreateConnectionRequestOptionsOneOf.md +22 -0
- data/kinde_api/docs/CreateConnectionRequestOptionsOneOf1.md +34 -0
- data/kinde_api/docs/CreateConnectionRequestOptionsOneOf2.md +44 -0
- data/kinde_api/docs/CreateConnectionResponse.md +22 -0
- data/kinde_api/docs/CreateConnectionResponseConnection.md +18 -0
- data/kinde_api/docs/CreateEnvironmentVariableRequest.md +22 -0
- data/kinde_api/docs/CreateEnvironmentVariableResponse.md +22 -0
- data/kinde_api/docs/CreateEnvironmentVariableResponseEnvironmentVariable.md +18 -0
- data/kinde_api/docs/CreateIdentityResponse.md +22 -0
- data/kinde_api/docs/CreateIdentityResponseIdentity.md +18 -0
- data/kinde_api/docs/CreateMeterUsageRecordRequest.md +26 -0
- data/kinde_api/docs/CreateMeterUsageRecordResponse.md +20 -0
- data/kinde_api/docs/CreateOrganizationRequest.md +17 -7
- data/kinde_api/docs/CreateOrganizationResponse.md +4 -4
- data/kinde_api/docs/CreateOrganizationResponseOrganization.md +4 -2
- data/kinde_api/docs/CreatePropertyRequest.md +30 -0
- data/kinde_api/docs/CreatePropertyResponse.md +22 -0
- data/kinde_api/docs/CreatePropertyResponseProperty.md +18 -0
- data/kinde_api/docs/CreateRolesResponse.md +22 -0
- data/kinde_api/docs/CreateRolesResponseRole.md +18 -0
- data/kinde_api/docs/CreateUserIdentityRequest.md +24 -0
- data/kinde_api/docs/CreateUserRequest.md +3 -1
- data/kinde_api/docs/CreateUserRequestIdentitiesInner.md +3 -1
- data/kinde_api/docs/CreateUserRequestIdentitiesInnerDetails.md +7 -1
- data/kinde_api/docs/CreateUserRequestProfile.md +3 -1
- data/kinde_api/docs/CreateUserResponse.md +1 -1
- data/kinde_api/docs/CreateWebHookRequest.md +24 -0
- data/kinde_api/docs/CreateWebhookResponse.md +22 -0
- data/kinde_api/docs/CreateWebhookResponseWebhook.md +20 -0
- data/kinde_api/docs/DeleteApiResponse.md +20 -0
- data/kinde_api/docs/DeleteEnvironmentVariableResponse.md +20 -0
- data/kinde_api/docs/DeleteRoleScopeResponse.md +20 -0
- data/kinde_api/docs/DeleteWebhookResponse.md +20 -0
- data/kinde_api/docs/EnvironmentVariable.md +26 -0
- data/kinde_api/docs/EnvironmentVariablesApi.md +356 -0
- data/kinde_api/docs/EnvironmentsApi.md +281 -5
- data/kinde_api/docs/EventType.md +26 -0
- data/kinde_api/docs/FeatureFlagsApi.md +4 -4
- data/kinde_api/docs/GetApiResponse.md +22 -0
- data/kinde_api/docs/GetApiResponseApi.md +28 -0
- data/kinde_api/docs/GetApiResponseApiApplicationsInner.md +24 -0
- data/kinde_api/docs/GetApiResponseApiScopesInner.md +20 -0
- data/kinde_api/docs/GetApiScopeResponse.md +22 -0
- data/kinde_api/docs/GetApiScopesResponse.md +22 -0
- data/kinde_api/docs/GetApiScopesResponseScopesInner.md +22 -0
- data/kinde_api/docs/GetApisResponse.md +24 -0
- data/kinde_api/docs/GetApisResponseApisInner.md +26 -0
- data/kinde_api/docs/GetApisResponseApisInnerScopesInner.md +20 -0
- data/kinde_api/docs/GetApplicationResponseApplication.md +11 -5
- data/kinde_api/docs/GetBillingAgreementsResponse.md +24 -0
- data/kinde_api/docs/GetBillingAgreementsResponseAgreementsInner.md +26 -0
- data/kinde_api/docs/GetBillingAgreementsResponseAgreementsInnerEntitlementsInner.md +20 -0
- data/kinde_api/docs/GetBillingEntitlementsResponse.md +26 -0
- data/kinde_api/docs/GetBillingEntitlementsResponseEntitlementsInner.md +32 -0
- data/kinde_api/docs/GetBillingEntitlementsResponsePlansInner.md +20 -0
- data/kinde_api/docs/GetBusinessResponse.md +22 -0
- data/kinde_api/docs/GetBusinessResponseBusiness.md +38 -0
- data/kinde_api/docs/GetCategoriesResponse.md +24 -0
- data/kinde_api/docs/GetConnectionsResponse.md +24 -0
- data/kinde_api/docs/GetEnvironmentResponse.md +22 -0
- data/kinde_api/docs/GetEnvironmentResponseEnvironment.md +68 -0
- data/kinde_api/docs/GetEnvironmentResponseEnvironmentBackgroundColor.md +22 -0
- data/kinde_api/docs/GetEnvironmentResponseEnvironmentLinkColor.md +22 -0
- data/kinde_api/docs/GetEnvironmentVariableResponse.md +22 -0
- data/kinde_api/docs/GetEnvironmentVariablesResponse.md +24 -0
- data/kinde_api/docs/GetEventResponse.md +22 -0
- data/kinde_api/docs/GetEventResponseEvent.md +26 -0
- data/kinde_api/docs/GetEventTypesResponse.md +22 -0
- data/kinde_api/docs/GetIdentitiesResponse.md +24 -0
- data/kinde_api/docs/GetIndustriesResponse.md +22 -0
- data/kinde_api/docs/GetIndustriesResponseIndustriesInner.md +20 -0
- data/kinde_api/docs/GetOrganizationResponse.md +72 -0
- data/kinde_api/docs/GetOrganizationResponseBilling.md +20 -0
- data/kinde_api/docs/GetOrganizationResponseBillingAgreementsInner.md +20 -0
- data/kinde_api/docs/GetOrganizationUsersResponse.md +2 -2
- data/kinde_api/docs/GetOrganizationsResponse.md +4 -4
- data/kinde_api/docs/GetPropertiesResponse.md +24 -0
- data/kinde_api/docs/GetPropertyValuesResponse.md +24 -0
- data/kinde_api/docs/GetRoleResponse.md +22 -0
- data/kinde_api/docs/GetRoleResponseRole.md +26 -0
- data/kinde_api/docs/GetTimezonesResponse.md +22 -0
- data/kinde_api/docs/GetTimezonesResponseTimezonesInner.md +20 -0
- data/kinde_api/docs/GetUserMfaResponse.md +22 -0
- data/kinde_api/docs/GetUserMfaResponseMfa.md +30 -0
- data/kinde_api/docs/GetUserSessionsResponse.md +24 -0
- data/kinde_api/docs/GetUserSessionsResponseSessionsInner.md +40 -0
- data/kinde_api/docs/GetWebhooksResponse.md +22 -0
- data/kinde_api/docs/IdentitiesApi.md +219 -0
- data/kinde_api/docs/Identity.md +34 -0
- data/kinde_api/docs/IndustriesApi.md +14 -21
- data/kinde_api/docs/LogoutRedirectUrls.md +6 -2
- data/kinde_api/docs/MFAApi.md +77 -0
- data/kinde_api/docs/NotFoundResponse.md +18 -0
- data/kinde_api/docs/NotFoundResponseErrors.md +20 -0
- data/kinde_api/docs/OAuthApi.md +32 -97
- data/kinde_api/docs/OrganizationItemSchema.md +28 -0
- data/kinde_api/docs/OrganizationUser.md +17 -11
- data/kinde_api/docs/OrganizationsApi.md +1440 -210
- data/kinde_api/docs/Permissions.md +1 -1
- data/kinde_api/docs/PermissionsApi.md +7 -7
- data/kinde_api/docs/PropertiesApi.md +297 -0
- data/kinde_api/docs/Property.md +28 -0
- data/kinde_api/docs/PropertyCategoriesApi.md +227 -0
- data/kinde_api/docs/PropertyValue.md +26 -0
- data/kinde_api/docs/ReadEnvLogoResponse.md +22 -0
- data/kinde_api/docs/ReadEnvLogoResponseLogosInner.md +20 -0
- data/kinde_api/docs/ReadLogoResponse.md +22 -0
- data/kinde_api/docs/ReadLogoResponseLogosInner.md +22 -0
- data/kinde_api/docs/ReplaceConnectionRequest.md +24 -0
- data/kinde_api/docs/ReplaceConnectionRequestOptions.md +51 -0
- data/kinde_api/docs/ReplaceConnectionRequestOptionsOneOf.md +32 -0
- data/kinde_api/docs/ReplaceConnectionRequestOptionsOneOf1.md +40 -0
- data/kinde_api/docs/ReplaceMFARequest.md +20 -0
- data/kinde_api/docs/ReplaceOrganizationMFARequest.md +18 -0
- data/kinde_api/docs/RolePermissionsResponse.md +24 -0
- data/kinde_api/docs/RoleScopesResponse.md +22 -0
- data/kinde_api/docs/Roles.md +4 -2
- data/kinde_api/docs/RolesApi.md +338 -54
- data/kinde_api/docs/Scopes.md +24 -0
- data/kinde_api/docs/SearchApi.md +89 -0
- data/kinde_api/docs/SearchUsersResponse.md +22 -0
- data/kinde_api/docs/SearchUsersResponseResultsInner.md +46 -0
- data/kinde_api/docs/SetUserPasswordRequest.md +26 -0
- data/kinde_api/docs/SubscribersApi.md +4 -4
- data/kinde_api/docs/SuccessResponse.md +2 -2
- data/kinde_api/docs/TimezonesApi.md +14 -21
- data/kinde_api/docs/TokenIntrospect.md +5 -5
- data/kinde_api/docs/UpdateAPIApplicationsRequestApplicationsInner.md +4 -4
- data/kinde_api/docs/UpdateAPIScopeRequest.md +18 -0
- data/kinde_api/docs/UpdateApplicationRequest.md +5 -1
- data/kinde_api/docs/UpdateApplicationTokensRequest.md +26 -0
- data/kinde_api/docs/UpdateApplicationsPropertyRequest.md +18 -0
- data/kinde_api/docs/UpdateApplicationsPropertyRequestValue.md +49 -0
- data/kinde_api/docs/UpdateBusinessRequest.md +36 -0
- data/kinde_api/docs/UpdateCategoryRequest.md +18 -0
- data/kinde_api/docs/UpdateConnectionRequest.md +24 -0
- data/kinde_api/docs/UpdateEnvironmentVariableRequest.md +22 -0
- data/kinde_api/docs/UpdateEnvironmentVariableResponse.md +20 -0
- data/kinde_api/docs/UpdateIdentityRequest.md +18 -0
- data/kinde_api/docs/UpdateOrganizationPropertiesRequest.md +18 -0
- data/kinde_api/docs/UpdateOrganizationRequest.md +27 -15
- data/kinde_api/docs/UpdateOrganizationSessionsRequest.md +24 -0
- data/kinde_api/docs/UpdateOrganizationUsersRequestUsersInner.md +2 -2
- data/kinde_api/docs/UpdateOrganizationUsersResponse.md +3 -1
- data/kinde_api/docs/UpdatePropertyRequest.md +24 -0
- data/kinde_api/docs/UpdateUserRequest.md +5 -1
- data/kinde_api/docs/UpdateUserResponse.md +1 -1
- data/kinde_api/docs/UpdateWebHookRequest.md +22 -0
- data/kinde_api/docs/UpdateWebhookResponse.md +22 -0
- data/kinde_api/docs/UpdateWebhookResponseWebhook.md +18 -0
- data/kinde_api/docs/User.md +6 -2
- data/kinde_api/docs/UserProfileV2.md +17 -13
- data/kinde_api/docs/UsersApi.md +893 -99
- data/kinde_api/docs/UsersResponseUsersInner.md +6 -2
- data/kinde_api/docs/Webhook.md +28 -0
- data/kinde_api/docs/WebhooksApi.md +423 -0
- data/kinde_api/git_push.sh +57 -0
- data/kinde_api/kinde_api.gemspec +38 -0
- data/kinde_api/lib/kinde_api/api/apis_api.rb +640 -127
- data/kinde_api/lib/kinde_api/api/applications_api.rb +524 -112
- data/kinde_api/lib/kinde_api/api/billing_agreements_api.rb +166 -0
- data/kinde_api/lib/kinde_api/api/billing_entitlements_api.rb +105 -0
- data/kinde_api/lib/kinde_api/api/billing_meter_usage_api.rb +90 -0
- data/kinde_api/lib/kinde_api/api/business_api.rb +61 -126
- data/kinde_api/lib/kinde_api/api/callbacks_api.rb +152 -172
- data/kinde_api/lib/kinde_api/api/connected_apps_api.rb +57 -67
- data/kinde_api/lib/kinde_api/api/connections_api.rb +433 -0
- data/kinde_api/lib/kinde_api/api/environment_variables_api.rb +347 -0
- data/kinde_api/lib/kinde_api/api/environments_api.rb +327 -78
- data/kinde_api/lib/kinde_api/api/feature_flags_api.rb +68 -88
- data/kinde_api/lib/kinde_api/api/frontend/billing_api.rb +148 -0
- data/kinde_api/lib/kinde_api/api/frontend/feature_flags_api.rb +85 -0
- data/kinde_api/lib/kinde_api/api/frontend/o_auth_api.rb +241 -0
- data/kinde_api/lib/kinde_api/api/frontend/permissions_api.rb +85 -0
- data/kinde_api/lib/kinde_api/api/frontend/properties_api.rb +85 -0
- data/kinde_api/lib/kinde_api/api/frontend/roles_api.rb +85 -0
- data/kinde_api/lib/kinde_api/api/frontend/self_serve_portal_api.rb +89 -0
- data/kinde_api/lib/kinde_api/api/identities_api.rb +222 -0
- data/kinde_api/lib/kinde_api/api/industries_api.rb +29 -34
- data/kinde_api/lib/kinde_api/api/mfa_api.rb +90 -0
- data/kinde_api/lib/kinde_api/api/o_auth_api.rb +104 -129
- data/kinde_api/lib/kinde_api/api/organizations_api.rb +1689 -544
- data/kinde_api/lib/kinde_api/api/permissions_api.rb +76 -80
- data/kinde_api/lib/kinde_api/api/properties_api.rb +300 -0
- data/kinde_api/lib/kinde_api/api/property_categories_api.rb +237 -0
- data/kinde_api/lib/kinde_api/api/roles_api.rb +432 -166
- data/kinde_api/lib/kinde_api/api/search_api.rb +97 -0
- data/kinde_api/lib/kinde_api/api/subscribers_api.rb +59 -60
- data/kinde_api/lib/kinde_api/api/timezones_api.rb +29 -34
- data/kinde_api/lib/kinde_api/api/users_api.rb +900 -150
- data/kinde_api/lib/kinde_api/api/webhooks_api.rb +404 -0
- data/kinde_api/lib/kinde_api/api_client.rb +79 -68
- data/kinde_api/lib/kinde_api/api_error.rb +16 -16
- data/kinde_api/lib/kinde_api/configuration.rb +101 -24
- data/kinde_api/lib/kinde_api/models/add_api_scope_request.rb +235 -0
- data/kinde_api/lib/kinde_api/models/add_apis_request.rb +54 -49
- data/kinde_api/lib/kinde_api/models/add_organization_users_request.rb +40 -42
- data/kinde_api/lib/kinde_api/models/add_organization_users_request_users_inner.rb +53 -51
- data/kinde_api/lib/kinde_api/models/add_organization_users_response.rb +52 -50
- data/kinde_api/lib/kinde_api/models/add_role_scope_request.rb +225 -0
- data/kinde_api/lib/kinde_api/models/add_role_scope_response.rb +230 -0
- data/kinde_api/lib/kinde_api/models/api_result.rb +38 -40
- data/kinde_api/lib/kinde_api/models/applications.rb +55 -50
- data/kinde_api/lib/kinde_api/models/authorize_app_api_response.rb +250 -0
- data/kinde_api/lib/kinde_api/models/category.rb +228 -0
- data/kinde_api/lib/kinde_api/models/connected_apps_access_token.rb +44 -45
- data/kinde_api/lib/kinde_api/models/connected_apps_auth_url.rb +44 -45
- data/kinde_api/lib/kinde_api/models/connection.rb +239 -0
- data/kinde_api/lib/kinde_api/models/connection_connection.rb +246 -0
- data/kinde_api/lib/kinde_api/models/create_api_scopes_response.rb +239 -0
- data/kinde_api/lib/kinde_api/models/create_api_scopes_response_scope.rb +220 -0
- data/kinde_api/lib/kinde_api/models/create_apis_response.rb +239 -0
- data/kinde_api/lib/kinde_api/models/create_apis_response_api.rb +220 -0
- data/kinde_api/lib/kinde_api/models/create_application_request.rb +60 -52
- data/kinde_api/lib/kinde_api/models/create_application_response.rb +50 -49
- data/kinde_api/lib/kinde_api/models/create_application_response_application.rb +51 -50
- data/kinde_api/lib/kinde_api/models/create_billing_agreement_request.rb +260 -0
- data/kinde_api/lib/kinde_api/models/create_category_request.rb +274 -0
- data/kinde_api/lib/kinde_api/models/create_category_response.rb +237 -0
- data/kinde_api/lib/kinde_api/models/create_category_response_category.rb +220 -0
- data/kinde_api/lib/kinde_api/models/create_connection_request.rb +306 -0
- data/kinde_api/lib/kinde_api/models/create_connection_request_options.rb +106 -0
- data/kinde_api/lib/kinde_api/models/create_connection_request_options_one_of.rb +241 -0
- data/kinde_api/lib/kinde_api/models/create_connection_request_options_one_of1.rb +303 -0
- data/kinde_api/lib/kinde_api/models/create_connection_request_options_one_of2.rb +333 -0
- data/kinde_api/lib/kinde_api/models/create_connection_response.rb +237 -0
- data/kinde_api/lib/kinde_api/models/create_connection_response_connection.rb +220 -0
- data/kinde_api/lib/kinde_api/models/create_environment_variable_request.rb +250 -0
- data/kinde_api/lib/kinde_api/models/create_environment_variable_response.rb +239 -0
- data/kinde_api/lib/kinde_api/models/create_environment_variable_response_environment_variable.rb +220 -0
- data/kinde_api/lib/kinde_api/models/create_feature_flag_request.rb +87 -77
- data/kinde_api/lib/kinde_api/models/create_identity_response.rb +237 -0
- data/kinde_api/lib/kinde_api/models/create_identity_response_identity.rb +220 -0
- data/kinde_api/lib/kinde_api/models/create_meter_usage_record_request.rb +309 -0
- data/kinde_api/lib/kinde_api/models/create_meter_usage_record_response.rb +230 -0
- data/kinde_api/lib/kinde_api/models/create_organization_request.rb +175 -100
- data/kinde_api/lib/kinde_api/models/create_organization_response.rb +57 -50
- data/kinde_api/lib/kinde_api/models/create_organization_response_organization.rb +49 -42
- data/kinde_api/lib/kinde_api/models/create_organization_user_permission_request.rb +38 -41
- data/kinde_api/lib/kinde_api/models/create_organization_user_role_request.rb +38 -41
- data/kinde_api/lib/kinde_api/models/create_permission_request.rb +50 -49
- data/kinde_api/lib/kinde_api/models/create_property_request.rb +356 -0
- data/kinde_api/lib/kinde_api/models/create_property_response.rb +237 -0
- data/kinde_api/lib/kinde_api/models/create_property_response_property.rb +220 -0
- data/kinde_api/lib/kinde_api/models/create_role_request.rb +56 -53
- data/kinde_api/lib/kinde_api/models/create_roles_response.rb +239 -0
- data/kinde_api/lib/kinde_api/models/create_roles_response_role.rb +220 -0
- data/kinde_api/lib/kinde_api/models/create_subscriber_success_response.rb +38 -41
- data/kinde_api/lib/kinde_api/models/create_subscriber_success_response_subscriber.rb +38 -41
- data/kinde_api/lib/kinde_api/models/create_user_identity_request.rb +284 -0
- data/kinde_api/lib/kinde_api/models/create_user_request.rb +62 -50
- data/kinde_api/lib/kinde_api/models/create_user_request_identities_inner.rb +60 -52
- data/kinde_api/lib/kinde_api/models/create_user_request_identities_inner_details.rb +67 -40
- data/kinde_api/lib/kinde_api/models/create_user_request_profile.rb +54 -45
- data/kinde_api/lib/kinde_api/models/create_user_response.rb +53 -51
- data/kinde_api/lib/kinde_api/models/create_web_hook_request.rb +268 -0
- data/kinde_api/lib/kinde_api/models/create_webhook_response.rb +239 -0
- data/kinde_api/lib/kinde_api/models/create_webhook_response_webhook.rb +228 -0
- data/kinde_api/lib/kinde_api/models/delete_api_response.rb +228 -0
- data/kinde_api/lib/kinde_api/models/delete_environment_variable_response.rb +230 -0
- data/kinde_api/lib/kinde_api/models/delete_role_scope_response.rb +230 -0
- data/kinde_api/lib/kinde_api/models/delete_webhook_response.rb +230 -0
- data/kinde_api/lib/kinde_api/models/environment_variable.rb +261 -0
- data/kinde_api/lib/kinde_api/models/error.rb +44 -44
- data/kinde_api/lib/kinde_api/models/error_response.rb +40 -42
- data/kinde_api/lib/kinde_api/models/event_type.rb +255 -0
- data/kinde_api/lib/kinde_api/models/frontend/error.rb +230 -0
- data/kinde_api/lib/kinde_api/models/frontend/error_response.rb +221 -0
- data/kinde_api/lib/kinde_api/models/frontend/get_entitlement_response.rb +228 -0
- data/kinde_api/lib/kinde_api/models/frontend/get_entitlement_response_data.rb +229 -0
- data/kinde_api/lib/kinde_api/models/frontend/get_entitlement_response_data_entitlement.rb +295 -0
- data/kinde_api/lib/kinde_api/models/frontend/get_entitlements_response.rb +228 -0
- data/kinde_api/lib/kinde_api/models/frontend/get_entitlements_response_data.rb +244 -0
- data/kinde_api/lib/kinde_api/models/frontend/get_entitlements_response_data_entitlements_inner.rb +294 -0
- data/kinde_api/lib/kinde_api/models/frontend/get_entitlements_response_data_plans_inner.rb +240 -0
- data/kinde_api/lib/kinde_api/models/frontend/get_entitlements_response_metadata.rb +230 -0
- data/kinde_api/lib/kinde_api/models/frontend/get_feature_flags_response.rb +219 -0
- data/kinde_api/lib/kinde_api/models/frontend/get_feature_flags_response_data.rb +222 -0
- data/kinde_api/lib/kinde_api/models/frontend/get_feature_flags_response_data_feature_flags_inner.rb +259 -0
- data/kinde_api/lib/kinde_api/models/frontend/get_feature_flags_response_data_feature_flags_inner_value.rb +108 -0
- data/kinde_api/lib/kinde_api/models/frontend/get_user_permissions_response.rb +228 -0
- data/kinde_api/lib/kinde_api/models/frontend/get_user_permissions_response_data.rb +232 -0
- data/kinde_api/lib/kinde_api/models/frontend/get_user_permissions_response_data_permissions_inner.rb +240 -0
- data/kinde_api/lib/kinde_api/models/frontend/get_user_permissions_response_metadata.rb +230 -0
- data/kinde_api/lib/kinde_api/models/frontend/get_user_properties_response.rb +228 -0
- data/kinde_api/lib/kinde_api/models/frontend/get_user_properties_response_data.rb +222 -0
- data/kinde_api/lib/kinde_api/models/frontend/get_user_properties_response_data_properties_inner.rb +249 -0
- data/kinde_api/lib/kinde_api/models/frontend/get_user_properties_response_data_properties_inner_value.rb +107 -0
- data/kinde_api/lib/kinde_api/models/frontend/get_user_properties_response_metadata.rb +230 -0
- data/kinde_api/lib/kinde_api/models/frontend/get_user_roles_response.rb +228 -0
- data/kinde_api/lib/kinde_api/models/frontend/get_user_roles_response_data.rb +232 -0
- data/kinde_api/lib/kinde_api/models/frontend/get_user_roles_response_data_roles_inner.rb +240 -0
- data/kinde_api/lib/kinde_api/models/frontend/get_user_roles_response_metadata.rb +230 -0
- data/kinde_api/lib/kinde_api/models/frontend/portal_link.rb +220 -0
- data/kinde_api/lib/kinde_api/models/frontend/token_error_response.rb +230 -0
- data/kinde_api/lib/kinde_api/models/frontend/token_introspect.rb +262 -0
- data/kinde_api/lib/kinde_api/models/frontend/user_profile_v2.rb +323 -0
- data/kinde_api/lib/kinde_api/models/get_api_response.rb +239 -0
- data/kinde_api/lib/kinde_api/models/get_api_response_api.rb +272 -0
- data/kinde_api/lib/kinde_api/models/get_api_response_api_applications_inner.rb +285 -0
- data/kinde_api/lib/kinde_api/models/get_api_response_api_scopes_inner.rb +230 -0
- data/kinde_api/lib/kinde_api/models/get_api_scope_response.rb +239 -0
- data/kinde_api/lib/kinde_api/models/get_api_scopes_response.rb +241 -0
- data/kinde_api/lib/kinde_api/models/get_api_scopes_response_scopes_inner.rb +240 -0
- data/kinde_api/lib/kinde_api/models/get_apis_response.rb +251 -0
- data/kinde_api/lib/kinde_api/models/get_apis_response_apis_inner.rb +261 -0
- data/kinde_api/lib/kinde_api/models/get_apis_response_apis_inner_scopes_inner.rb +228 -0
- data/kinde_api/lib/kinde_api/models/get_application_response.rb +50 -49
- data/kinde_api/lib/kinde_api/models/get_application_response_application.rb +126 -57
- data/kinde_api/lib/kinde_api/models/get_applications_response.rb +57 -54
- data/kinde_api/lib/kinde_api/models/get_billing_agreements_response.rb +252 -0
- data/kinde_api/lib/kinde_api/models/get_billing_agreements_response_agreements_inner.rb +262 -0
- data/kinde_api/lib/kinde_api/models/get_billing_agreements_response_agreements_inner_entitlements_inner.rb +230 -0
- data/kinde_api/lib/kinde_api/models/get_billing_entitlements_response.rb +264 -0
- data/kinde_api/lib/kinde_api/models/get_billing_entitlements_response_entitlements_inner.rb +290 -0
- data/kinde_api/lib/kinde_api/models/get_billing_entitlements_response_plans_inner.rb +229 -0
- data/kinde_api/lib/kinde_api/models/get_business_response.rb +239 -0
- data/kinde_api/lib/kinde_api/models/get_business_response_business.rb +326 -0
- data/kinde_api/lib/kinde_api/models/get_categories_response.rb +251 -0
- data/kinde_api/lib/kinde_api/models/get_connections_response.rb +251 -0
- data/kinde_api/lib/kinde_api/models/get_environment_feature_flags_response.rb +57 -54
- data/kinde_api/lib/kinde_api/models/get_environment_response.rb +239 -0
- data/kinde_api/lib/kinde_api/models/get_environment_response_environment.rb +526 -0
- data/kinde_api/lib/kinde_api/models/get_environment_response_environment_background_color.rb +237 -0
- data/kinde_api/lib/kinde_api/models/get_environment_response_environment_link_color.rb +237 -0
- data/kinde_api/lib/kinde_api/models/get_environment_variable_response.rb +239 -0
- data/kinde_api/lib/kinde_api/models/get_environment_variables_response.rb +251 -0
- data/kinde_api/lib/kinde_api/models/get_event_response.rb +239 -0
- data/kinde_api/lib/kinde_api/models/get_event_response_event.rb +257 -0
- data/kinde_api/lib/kinde_api/models/get_event_types_response.rb +241 -0
- data/kinde_api/lib/kinde_api/models/get_identities_response.rb +251 -0
- data/kinde_api/lib/kinde_api/models/get_industries_response.rb +241 -0
- data/kinde_api/lib/kinde_api/models/get_industries_response_industries_inner.rb +230 -0
- data/kinde_api/lib/kinde_api/models/get_organization_feature_flags_response.rb +52 -50
- data/kinde_api/lib/kinde_api/models/get_organization_feature_flags_response_feature_flags_value.rb +52 -52
- data/kinde_api/lib/kinde_api/models/get_organization_response.rb +547 -0
- data/kinde_api/lib/kinde_api/models/get_organization_response_billing.rb +232 -0
- data/kinde_api/lib/kinde_api/models/get_organization_response_billing_agreements_inner.rb +230 -0
- data/kinde_api/lib/kinde_api/models/get_organization_users_response.rb +57 -54
- data/kinde_api/lib/kinde_api/models/get_organizations_response.rb +57 -54
- data/kinde_api/lib/kinde_api/models/get_organizations_user_permissions_response.rb +52 -50
- data/kinde_api/lib/kinde_api/models/get_organizations_user_roles_response.rb +57 -54
- data/kinde_api/lib/kinde_api/models/get_permissions_response.rb +57 -54
- data/kinde_api/lib/kinde_api/models/get_properties_response.rb +251 -0
- data/kinde_api/lib/kinde_api/models/get_property_values_response.rb +251 -0
- data/kinde_api/lib/kinde_api/models/get_redirect_callback_urls_response.rb +40 -42
- data/kinde_api/lib/kinde_api/models/get_role_response.rb +239 -0
- data/kinde_api/lib/kinde_api/models/get_role_response_role.rb +260 -0
- data/kinde_api/lib/kinde_api/models/get_roles_response.rb +57 -54
- data/kinde_api/lib/kinde_api/models/get_subscriber_response.rb +52 -50
- data/kinde_api/lib/kinde_api/models/get_subscribers_response.rb +57 -54
- data/kinde_api/lib/kinde_api/models/get_timezones_response.rb +241 -0
- data/kinde_api/lib/kinde_api/models/get_timezones_response_timezones_inner.rb +230 -0
- data/kinde_api/lib/kinde_api/models/get_user_mfa_response.rb +237 -0
- data/kinde_api/lib/kinde_api/models/get_user_mfa_response_mfa.rb +280 -0
- data/kinde_api/lib/kinde_api/models/get_user_sessions_response.rb +248 -0
- data/kinde_api/lib/kinde_api/models/get_user_sessions_response_sessions_inner.rb +331 -0
- data/kinde_api/lib/kinde_api/models/get_webhooks_response.rb +241 -0
- data/kinde_api/lib/kinde_api/models/identity.rb +300 -0
- data/kinde_api/lib/kinde_api/models/logout_redirect_urls.rb +60 -42
- data/kinde_api/lib/kinde_api/models/not_found_response.rb +219 -0
- data/kinde_api/lib/kinde_api/models/not_found_response_errors.rb +228 -0
- data/kinde_api/lib/kinde_api/models/organization_item_schema.rb +272 -0
- data/kinde_api/lib/kinde_api/models/organization_user.rb +122 -62
- data/kinde_api/lib/kinde_api/models/organization_user_permission.rb +73 -59
- data/kinde_api/lib/kinde_api/models/organization_user_permission_roles_inner.rb +47 -46
- data/kinde_api/lib/kinde_api/models/organization_user_role.rb +55 -50
- data/kinde_api/lib/kinde_api/models/organization_user_role_permissions.rb +55 -50
- data/kinde_api/lib/kinde_api/models/organization_user_role_permissions_permissions.rb +38 -41
- data/kinde_api/lib/kinde_api/models/permissions.rb +57 -54
- data/kinde_api/lib/kinde_api/models/property.rb +264 -0
- data/kinde_api/lib/kinde_api/models/property_value.rb +257 -0
- data/kinde_api/lib/kinde_api/models/read_env_logo_response.rb +242 -0
- data/kinde_api/lib/kinde_api/models/read_env_logo_response_logos_inner.rb +230 -0
- data/kinde_api/lib/kinde_api/models/read_logo_response.rb +242 -0
- data/kinde_api/lib/kinde_api/models/read_logo_response_logos_inner.rb +240 -0
- data/kinde_api/lib/kinde_api/models/redirect_callback_urls.rb +40 -42
- data/kinde_api/lib/kinde_api/models/replace_connection_request.rb +251 -0
- data/kinde_api/lib/kinde_api/models/replace_connection_request_options.rb +106 -0
- data/kinde_api/lib/kinde_api/models/replace_connection_request_options_one_of.rb +293 -0
- data/kinde_api/lib/kinde_api/models/replace_connection_request_options_one_of1.rb +313 -0
- data/kinde_api/lib/kinde_api/models/replace_logout_redirect_urls_request.rb +40 -42
- data/kinde_api/lib/kinde_api/models/replace_mfa_request.rb +276 -0
- data/kinde_api/lib/kinde_api/models/replace_organization_mfa_request.rb +249 -0
- data/kinde_api/lib/kinde_api/models/replace_redirect_callback_urls_request.rb +40 -42
- data/kinde_api/lib/kinde_api/models/role.rb +63 -53
- data/kinde_api/lib/kinde_api/models/role_permissions_response.rb +251 -0
- data/kinde_api/lib/kinde_api/models/role_scopes_response.rb +241 -0
- data/kinde_api/lib/kinde_api/models/roles.rb +68 -53
- data/kinde_api/lib/kinde_api/models/scopes.rb +250 -0
- data/kinde_api/lib/kinde_api/models/search_users_response.rb +241 -0
- data/kinde_api/lib/kinde_api/models/search_users_response_results_inner.rb +374 -0
- data/kinde_api/lib/kinde_api/models/set_user_password_request.rb +311 -0
- data/kinde_api/lib/kinde_api/models/subscriber.rb +63 -54
- data/kinde_api/lib/kinde_api/models/subscribers_subscriber.rb +71 -58
- data/kinde_api/lib/kinde_api/models/success_response.rb +47 -46
- data/kinde_api/lib/kinde_api/models/token_error_response.rb +44 -45
- data/kinde_api/lib/kinde_api/models/token_introspect.rb +63 -58
- data/kinde_api/lib/kinde_api/models/update_api_applications_request.rb +42 -44
- data/kinde_api/lib/kinde_api/models/update_api_applications_request_applications_inner.rb +48 -49
- data/kinde_api/lib/kinde_api/models/update_api_scope_request.rb +220 -0
- data/kinde_api/lib/kinde_api/models/update_application_request.rb +78 -54
- data/kinde_api/lib/kinde_api/models/update_application_tokens_request.rb +260 -0
- data/kinde_api/lib/kinde_api/models/update_applications_property_request.rb +224 -0
- data/kinde_api/lib/kinde_api/models/update_applications_property_request_value.rb +106 -0
- data/kinde_api/lib/kinde_api/models/update_business_request.rb +320 -0
- data/kinde_api/lib/kinde_api/models/update_category_request.rb +220 -0
- data/kinde_api/lib/kinde_api/models/update_connection_request.rb +251 -0
- data/kinde_api/lib/kinde_api/models/update_environement_feature_flag_override_request.rb +40 -43
- data/kinde_api/lib/kinde_api/models/update_environment_variable_request.rb +240 -0
- data/kinde_api/lib/kinde_api/models/update_environment_variable_response.rb +230 -0
- data/kinde_api/lib/kinde_api/models/update_identity_request.rb +220 -0
- data/kinde_api/lib/kinde_api/models/update_organization_properties_request.rb +225 -0
- data/kinde_api/lib/kinde_api/models/update_organization_request.rb +209 -91
- data/kinde_api/lib/kinde_api/models/update_organization_sessions_request.rb +284 -0
- data/kinde_api/lib/kinde_api/models/update_organization_users_request.rb +40 -42
- data/kinde_api/lib/kinde_api/models/update_organization_users_request_users_inner.rb +59 -55
- data/kinde_api/lib/kinde_api/models/update_organization_users_response.rb +76 -57
- data/kinde_api/lib/kinde_api/models/update_property_request.rb +265 -0
- data/kinde_api/lib/kinde_api/models/update_role_permissions_request.rb +40 -42
- data/kinde_api/lib/kinde_api/models/update_role_permissions_request_permissions_inner.rb +44 -45
- data/kinde_api/lib/kinde_api/models/update_role_permissions_response.rb +66 -56
- data/kinde_api/lib/kinde_api/models/update_roles_request.rb +61 -56
- data/kinde_api/lib/kinde_api/models/update_user_request.rb +75 -52
- data/kinde_api/lib/kinde_api/models/update_user_response.rb +75 -67
- data/kinde_api/lib/kinde_api/models/update_web_hook_request.rb +243 -0
- data/kinde_api/lib/kinde_api/models/update_webhook_response.rb +237 -0
- data/kinde_api/lib/kinde_api/models/update_webhook_response_webhook.rb +219 -0
- data/kinde_api/lib/kinde_api/models/user.rb +138 -97
- data/kinde_api/lib/kinde_api/models/user_identities_inner.rb +47 -46
- data/kinde_api/lib/kinde_api/models/user_identity.rb +44 -45
- data/kinde_api/lib/kinde_api/models/user_identity_result.rb +38 -41
- data/kinde_api/lib/kinde_api/models/user_profile_v2.rb +113 -79
- data/kinde_api/lib/kinde_api/models/users_response.rb +57 -54
- data/kinde_api/lib/kinde_api/models/users_response_users_inner.rb +138 -98
- data/kinde_api/lib/kinde_api/models/webhook.rb +267 -0
- data/kinde_api/lib/kinde_api/version.rb +12 -12
- data/kinde_api/lib/kinde_api.rb +188 -36
- data/kinde_api/spec/api/billing_agreements_api_spec.rb +62 -0
- data/kinde_api/spec/api/billing_entitlements_api_spec.rb +52 -0
- data/kinde_api/spec/api/billing_meter_usage_api_spec.rb +47 -0
- data/kinde_api/spec/api/connections_api_spec.rb +112 -0
- data/kinde_api/spec/api/environment_variables_api_spec.rb +95 -0
- data/kinde_api/spec/api/identities_api_spec.rb +72 -0
- data/kinde_api/spec/api/mfa_api_spec.rb +47 -0
- data/kinde_api/spec/api/properties_api_spec.rb +87 -0
- data/kinde_api/spec/api/property_categories_api_spec.rb +75 -0
- data/kinde_api/spec/api/search_api_spec.rb +52 -0
- data/kinde_api/spec/api/webhooks_api_spec.rb +106 -0
- data/kinde_api/spec/api_client_spec.rb +27 -21
- data/kinde_api/spec/configuration_spec.rb +14 -14
- data/kinde_api/spec/models/add_api_scope_request_spec.rb +40 -0
- data/kinde_api/spec/models/add_role_scope_request_spec.rb +34 -0
- data/kinde_api/spec/models/add_role_scope_response_spec.rb +40 -0
- data/kinde_api/spec/models/authorize_app_api_response_spec.rb +52 -0
- data/kinde_api/spec/models/category_spec.rb +40 -0
- data/kinde_api/spec/models/connection_connection_spec.rb +52 -0
- data/kinde_api/spec/models/connection_spec.rb +46 -0
- data/kinde_api/spec/models/create_api_scopes_response_scope_spec.rb +34 -0
- data/kinde_api/spec/models/create_api_scopes_response_spec.rb +46 -0
- data/kinde_api/spec/models/create_apis_response_api_spec.rb +34 -0
- data/kinde_api/spec/models/create_apis_response_spec.rb +46 -0
- data/kinde_api/spec/models/create_billing_agreement_request_spec.rb +52 -0
- data/kinde_api/spec/models/create_category_request_spec.rb +44 -0
- data/kinde_api/spec/models/create_category_response_category_spec.rb +34 -0
- data/kinde_api/spec/models/create_category_response_spec.rb +46 -0
- data/kinde_api/spec/models/create_connection_request_options_one_of1_spec.rb +82 -0
- data/kinde_api/spec/models/create_connection_request_options_one_of2_spec.rb +100 -0
- data/kinde_api/spec/models/create_connection_request_options_one_of_spec.rb +46 -0
- data/kinde_api/spec/models/create_connection_request_options_spec.rb +31 -0
- data/kinde_api/spec/models/create_connection_request_spec.rb +68 -0
- data/kinde_api/spec/models/create_connection_response_connection_spec.rb +34 -0
- data/kinde_api/spec/models/create_connection_response_spec.rb +46 -0
- data/kinde_api/spec/models/create_environment_variable_request_spec.rb +46 -0
- data/kinde_api/spec/models/create_environment_variable_response_environment_variable_spec.rb +34 -0
- data/kinde_api/spec/models/create_environment_variable_response_spec.rb +46 -0
- data/kinde_api/spec/models/create_identity_response_identity_spec.rb +34 -0
- data/kinde_api/spec/models/create_identity_response_spec.rb +46 -0
- data/kinde_api/spec/models/create_meter_usage_record_request_spec.rb +62 -0
- data/kinde_api/spec/models/create_meter_usage_record_response_spec.rb +40 -0
- data/kinde_api/spec/models/create_property_request_spec.rb +78 -0
- data/kinde_api/spec/models/create_property_response_property_spec.rb +34 -0
- data/kinde_api/spec/models/create_property_response_spec.rb +46 -0
- data/kinde_api/spec/models/create_roles_response_role_spec.rb +34 -0
- data/kinde_api/spec/models/create_roles_response_spec.rb +46 -0
- data/kinde_api/spec/models/create_user_identity_request_spec.rb +56 -0
- data/kinde_api/spec/models/create_web_hook_request_spec.rb +52 -0
- data/kinde_api/spec/models/create_webhook_response_spec.rb +46 -0
- data/kinde_api/spec/models/create_webhook_response_webhook_spec.rb +40 -0
- data/kinde_api/spec/models/delete_api_response_spec.rb +40 -0
- data/kinde_api/spec/models/delete_environment_variable_response_spec.rb +40 -0
- data/kinde_api/spec/models/delete_role_scope_response_spec.rb +40 -0
- data/kinde_api/spec/models/delete_webhook_response_spec.rb +40 -0
- data/kinde_api/spec/models/environment_variable_spec.rb +58 -0
- data/kinde_api/spec/models/event_type_spec.rb +58 -0
- data/kinde_api/spec/models/get_api_response_api_applications_inner_spec.rb +56 -0
- data/kinde_api/spec/models/get_api_response_api_scopes_inner_spec.rb +40 -0
- data/kinde_api/spec/models/get_api_response_api_spec.rb +64 -0
- data/kinde_api/spec/models/get_api_response_spec.rb +46 -0
- data/kinde_api/spec/models/get_api_scope_response_spec.rb +46 -0
- data/kinde_api/spec/models/get_api_scopes_response_scopes_inner_spec.rb +46 -0
- data/kinde_api/spec/models/get_api_scopes_response_spec.rb +46 -0
- data/kinde_api/spec/models/get_apis_response_apis_inner_scopes_inner_spec.rb +40 -0
- data/kinde_api/spec/models/get_apis_response_apis_inner_spec.rb +58 -0
- data/kinde_api/spec/models/get_apis_response_spec.rb +52 -0
- data/kinde_api/spec/models/get_billing_agreements_response_agreements_inner_entitlements_inner_spec.rb +40 -0
- data/kinde_api/spec/models/get_billing_agreements_response_agreements_inner_spec.rb +58 -0
- data/kinde_api/spec/models/get_billing_agreements_response_spec.rb +52 -0
- data/kinde_api/spec/models/get_billing_entitlements_response_entitlements_inner_spec.rb +76 -0
- data/kinde_api/spec/models/get_billing_entitlements_response_plans_inner_spec.rb +40 -0
- data/kinde_api/spec/models/get_billing_entitlements_response_spec.rb +58 -0
- data/kinde_api/spec/models/get_business_response_business_spec.rb +94 -0
- data/kinde_api/spec/models/get_business_response_spec.rb +46 -0
- data/kinde_api/spec/models/get_categories_response_spec.rb +52 -0
- data/kinde_api/spec/models/get_connections_response_spec.rb +52 -0
- data/kinde_api/spec/models/get_environment_response_environment_background_color_spec.rb +46 -0
- data/kinde_api/spec/models/get_environment_response_environment_link_color_spec.rb +46 -0
- data/kinde_api/spec/models/get_environment_response_environment_spec.rb +192 -0
- data/kinde_api/spec/models/get_environment_response_spec.rb +46 -0
- data/kinde_api/spec/models/get_environment_variable_response_spec.rb +46 -0
- data/kinde_api/spec/models/get_environment_variables_response_spec.rb +52 -0
- data/kinde_api/spec/models/get_event_response_event_spec.rb +58 -0
- data/kinde_api/spec/models/get_event_response_spec.rb +46 -0
- data/kinde_api/spec/models/get_event_types_response_spec.rb +46 -0
- data/kinde_api/spec/models/get_identities_response_spec.rb +52 -0
- data/kinde_api/spec/models/get_industries_response_industries_inner_spec.rb +40 -0
- data/kinde_api/spec/models/get_industries_response_spec.rb +46 -0
- data/kinde_api/spec/models/get_organization_response_billing_agreements_inner_spec.rb +40 -0
- data/kinde_api/spec/models/get_organization_response_billing_spec.rb +40 -0
- data/kinde_api/spec/models/get_organization_response_spec.rb +204 -0
- data/kinde_api/spec/models/get_properties_response_spec.rb +52 -0
- data/kinde_api/spec/models/get_property_values_response_spec.rb +52 -0
- data/kinde_api/spec/models/get_role_response_role_spec.rb +58 -0
- data/kinde_api/spec/models/get_role_response_spec.rb +46 -0
- data/kinde_api/spec/models/get_timezones_response_spec.rb +46 -0
- data/kinde_api/spec/models/get_timezones_response_timezones_inner_spec.rb +40 -0
- data/kinde_api/spec/models/get_user_mfa_response_mfa_spec.rb +70 -0
- data/kinde_api/spec/models/get_user_mfa_response_spec.rb +46 -0
- data/kinde_api/spec/models/get_user_sessions_response_sessions_inner_spec.rb +100 -0
- data/kinde_api/spec/models/get_user_sessions_response_spec.rb +52 -0
- data/kinde_api/spec/models/get_webhooks_response_spec.rb +46 -0
- data/kinde_api/spec/models/identity_spec.rb +82 -0
- data/kinde_api/spec/models/not_found_response_errors_spec.rb +40 -0
- data/kinde_api/spec/models/not_found_response_spec.rb +34 -0
- data/kinde_api/spec/models/organization_item_schema_spec.rb +64 -0
- data/kinde_api/spec/models/property_spec.rb +64 -0
- data/kinde_api/spec/models/property_value_spec.rb +58 -0
- data/kinde_api/spec/models/read_env_logo_response_logos_inner_spec.rb +40 -0
- data/kinde_api/spec/models/read_env_logo_response_spec.rb +46 -0
- data/kinde_api/spec/models/read_logo_response_logos_inner_spec.rb +46 -0
- data/kinde_api/spec/models/read_logo_response_spec.rb +46 -0
- data/kinde_api/spec/models/replace_connection_request_options_one_of1_spec.rb +88 -0
- data/kinde_api/spec/models/replace_connection_request_options_one_of_spec.rb +76 -0
- data/kinde_api/spec/models/replace_connection_request_options_spec.rb +31 -0
- data/kinde_api/spec/models/replace_connection_request_spec.rb +52 -0
- data/kinde_api/spec/models/replace_mfa_request_spec.rb +48 -0
- data/kinde_api/spec/models/replace_organization_mfa_request_spec.rb +38 -0
- data/kinde_api/spec/models/role_permissions_response_spec.rb +52 -0
- data/kinde_api/spec/models/role_scopes_response_spec.rb +46 -0
- data/kinde_api/spec/models/scopes_spec.rb +52 -0
- data/kinde_api/spec/models/search_users_response_results_inner_spec.rb +118 -0
- data/kinde_api/spec/models/search_users_response_spec.rb +46 -0
- data/kinde_api/spec/models/set_user_password_request_spec.rb +66 -0
- data/kinde_api/spec/models/update_api_scope_request_spec.rb +34 -0
- data/kinde_api/spec/models/update_application_tokens_request_spec.rb +58 -0
- data/kinde_api/spec/models/update_applications_property_request_spec.rb +34 -0
- data/kinde_api/spec/models/update_applications_property_request_value_spec.rb +31 -0
- data/kinde_api/spec/models/update_business_request_spec.rb +88 -0
- data/kinde_api/spec/models/update_category_request_spec.rb +34 -0
- data/kinde_api/spec/models/update_connection_request_spec.rb +52 -0
- data/kinde_api/spec/models/update_environment_variable_request_spec.rb +46 -0
- data/kinde_api/spec/models/update_environment_variable_response_spec.rb +40 -0
- data/kinde_api/spec/models/update_identity_request_spec.rb +34 -0
- data/kinde_api/spec/models/update_organization_properties_request_spec.rb +34 -0
- data/kinde_api/spec/models/update_organization_sessions_request_spec.rb +56 -0
- data/kinde_api/spec/models/update_property_request_spec.rb +52 -0
- data/kinde_api/spec/models/update_web_hook_request_spec.rb +46 -0
- data/kinde_api/spec/models/update_webhook_response_spec.rb +46 -0
- data/kinde_api/spec/models/update_webhook_response_webhook_spec.rb +34 -0
- data/kinde_api/spec/models/webhook_spec.rb +64 -0
- data/kinde_api/spec/spec_helper.rb +63 -61
- data/lib/kinde_sdk/client/entitlements.rb +86 -0
- data/lib/kinde_sdk/client/feature_flags.rb +246 -10
- data/lib/kinde_sdk/client/permissions.rb +197 -6
- data/lib/kinde_sdk/client/roles.rb +218 -0
- data/lib/kinde_sdk/client.rb +354 -14
- data/lib/kinde_sdk/configuration.rb +11 -1
- data/lib/kinde_sdk/current.rb +16 -0
- data/lib/kinde_sdk/engine.rb +11 -0
- data/lib/kinde_sdk/errors.rb +7 -0
- data/lib/kinde_sdk/internal/frontend_client.rb +111 -0
- data/lib/kinde_sdk/middleware.rb +16 -0
- data/lib/kinde_sdk/token_manager.rb +85 -0
- data/lib/kinde_sdk/token_store.rb +29 -0
- data/lib/kinde_sdk/version.rb +1 -1
- data/lib/kinde_sdk.rb +160 -25
- data/spec/examples.txt +29 -0
- data/spec/kinde_sdk_spec.rb +317 -98
- data/spec/spec_helper.rb +7 -4
- metadata +666 -10
data/lib/kinde_sdk/client.rb
CHANGED
|
@@ -1,26 +1,71 @@
|
|
|
1
|
-
|
|
1
|
+
require_relative '../../kinde_api/lib/kinde_api'
|
|
2
|
+
require_relative 'token_manager'
|
|
3
|
+
require_relative 'token_store'
|
|
4
|
+
require_relative 'current'
|
|
5
|
+
require_relative 'errors'
|
|
6
|
+
require_relative 'internal/frontend_client'
|
|
7
|
+
require_relative 'client/feature_flags'
|
|
8
|
+
require_relative 'client/permissions'
|
|
9
|
+
require_relative 'client/roles'
|
|
10
|
+
require_relative 'client/entitlements'
|
|
2
11
|
|
|
3
12
|
module KindeSdk
|
|
13
|
+
# Constants for portal page navigation - matches PHP SDK exactly
|
|
14
|
+
module PortalPage
|
|
15
|
+
ORGANIZATION_DETAILS = 'organization_details'
|
|
16
|
+
ORGANIZATION_MEMBERS = 'organization_members'
|
|
17
|
+
ORGANIZATION_PLAN_DETAILS = 'organization_plan_details'
|
|
18
|
+
ORGANIZATION_PAYMENT_DETAILS = 'organization_payment_details'
|
|
19
|
+
ORGANIZATION_PLAN_SELECTION = 'organization_plan_selection'
|
|
20
|
+
PROFILE = 'profile'
|
|
21
|
+
end
|
|
22
|
+
|
|
4
23
|
class Client
|
|
5
24
|
include FeatureFlags
|
|
6
25
|
include Permissions
|
|
26
|
+
include Roles
|
|
27
|
+
include Entitlements
|
|
7
28
|
|
|
8
|
-
attr_accessor :kinde_api_client, :auto_refresh_tokens, :
|
|
29
|
+
attr_accessor :kinde_api_client, :auto_refresh_tokens, :token_store, :force_api
|
|
9
30
|
|
|
10
|
-
def initialize(sdk_api_client, tokens_hash, auto_refresh_tokens)
|
|
31
|
+
def initialize(sdk_api_client, tokens_hash, auto_refresh_tokens, force_api = false)
|
|
11
32
|
@kinde_api_client = sdk_api_client
|
|
12
33
|
@auto_refresh_tokens = auto_refresh_tokens
|
|
13
|
-
|
|
34
|
+
@token_store = TokenManager.create_store(tokens_hash)
|
|
35
|
+
@force_api = force_api
|
|
36
|
+
|
|
37
|
+
# refresh the token if it's expired and auto_refresh_tokens is enabled
|
|
38
|
+
refresh_token if auto_refresh_tokens && TokenManager.token_expired?(@token_store)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# Returns the bearer token for backwards compatibility
|
|
42
|
+
# @return [String]
|
|
43
|
+
def bearer_token
|
|
44
|
+
@token_store.bearer_token
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# Returns the tokens hash for backwards compatibility
|
|
48
|
+
# @return [Hash]
|
|
49
|
+
def tokens_hash
|
|
50
|
+
@token_store.tokens
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
# Returns the token expiration time for backwards compatibility
|
|
54
|
+
# @return [Integer]
|
|
55
|
+
def expires_at
|
|
56
|
+
@token_store.expires_at
|
|
14
57
|
end
|
|
15
58
|
|
|
16
59
|
def token_expired?
|
|
17
|
-
|
|
60
|
+
TokenManager.token_expired?(@token_store)
|
|
18
61
|
end
|
|
19
62
|
|
|
20
63
|
def refresh_token
|
|
21
|
-
new_tokens_hash =
|
|
22
|
-
|
|
23
|
-
|
|
64
|
+
new_tokens_hash = TokenManager.refresh_tokens(@token_store, Current.session)
|
|
65
|
+
return nil unless new_tokens_hash
|
|
66
|
+
|
|
67
|
+
@token_store.set_tokens(new_tokens_hash)
|
|
68
|
+
@kinde_api_client = KindeSdk.api_client(@token_store.bearer_token)
|
|
24
69
|
new_tokens_hash
|
|
25
70
|
end
|
|
26
71
|
|
|
@@ -29,7 +74,9 @@ module KindeSdk
|
|
|
29
74
|
# @return [Hash]
|
|
30
75
|
# @example {name: "scp", value: ["openid", "offline"]}
|
|
31
76
|
def get_claim(claim, token_type = :access_token)
|
|
32
|
-
|
|
77
|
+
refresh_token if auto_refresh_tokens && token_expired?
|
|
78
|
+
|
|
79
|
+
token = @token_store.tokens[token_type.to_sym]
|
|
33
80
|
return unless token
|
|
34
81
|
|
|
35
82
|
value = JWT.decode(token, nil, false)[0][claim]
|
|
@@ -38,6 +85,46 @@ module KindeSdk
|
|
|
38
85
|
{ name: claim, value: value }
|
|
39
86
|
end
|
|
40
87
|
|
|
88
|
+
# Generate a URL to the user profile portal
|
|
89
|
+
#
|
|
90
|
+
# @param domain [String] The domain of the Kinde instance
|
|
91
|
+
# @param return_url [String] URL to redirect to after completing the profile flow
|
|
92
|
+
# @param sub_nav [String] Sub-navigation section to display
|
|
93
|
+
# @return [Hash] A hash containing the generated URL
|
|
94
|
+
# @raise [StandardError] If the request fails or returns invalid data
|
|
95
|
+
def generate_portal_url(domain:, return_url:, sub_nav: PortalPage::PROFILE)
|
|
96
|
+
refresh_token if auto_refresh_tokens && token_expired?
|
|
97
|
+
|
|
98
|
+
unless return_url.start_with?('http')
|
|
99
|
+
raise StandardError, 'generatePortalUrl: returnUrl must be an absolute URL'
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
params = {
|
|
103
|
+
'return_url' => return_url,
|
|
104
|
+
'sub_nav' => sub_nav
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
response = Faraday.get("#{domain}/account_api/v1/portal_link", params) do |req|
|
|
108
|
+
req.headers['Authorization'] = "Bearer #{@token_store.bearer_token}"
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
unless response.success?
|
|
112
|
+
raise StandardError, "Failed to fetch profile URL: #{response.status} #{response.reason_phrase}"
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
result = JSON.parse(response.body)
|
|
116
|
+
unless result['url'].is_a?(String)
|
|
117
|
+
raise StandardError, "Invalid URL received from API"
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
begin
|
|
121
|
+
{ url: URI.parse(result['url']) }
|
|
122
|
+
rescue URI::InvalidURIError => e
|
|
123
|
+
Rails.logger.error(e)
|
|
124
|
+
raise StandardError, "Invalid URL format received from API: #{result['url']}"
|
|
125
|
+
end
|
|
126
|
+
end
|
|
127
|
+
|
|
41
128
|
::KindeApi.constants.filter { |klass| klass.to_s.end_with?("Api") }.each do |klass|
|
|
42
129
|
api_klass = Kernel.const_get("KindeApi::#{klass}")
|
|
43
130
|
|
|
@@ -46,19 +133,271 @@ module KindeSdk
|
|
|
46
133
|
end
|
|
47
134
|
end
|
|
48
135
|
|
|
136
|
+
# Custom oauth method that provides backward compatibility
|
|
137
|
+
def oauth
|
|
138
|
+
oauth_api = init_instance_api(KindeApi::OAuthApi)
|
|
139
|
+
|
|
140
|
+
# Add backward compatibility for get_user method
|
|
141
|
+
unless oauth_api.respond_to?(:get_user)
|
|
142
|
+
oauth_api.define_singleton_method(:get_user) do |opts = {}|
|
|
143
|
+
# Call the new method
|
|
144
|
+
user_profile_v2 = get_user_profile_v2(opts)
|
|
145
|
+
|
|
146
|
+
# Convert UserProfileV2 to UserProfile format as a hash
|
|
147
|
+
# This provides backward compatibility without depending on the UserProfile class
|
|
148
|
+
{
|
|
149
|
+
id: user_profile_v2.id || user_profile_v2.sub,
|
|
150
|
+
preferred_email: user_profile_v2.email,
|
|
151
|
+
provided_id: user_profile_v2.provided_id,
|
|
152
|
+
last_name: user_profile_v2.family_name,
|
|
153
|
+
first_name: user_profile_v2.given_name,
|
|
154
|
+
picture: user_profile_v2.picture
|
|
155
|
+
}
|
|
156
|
+
end
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
oauth_api
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
# Frontend API access - Internal use only
|
|
163
|
+
# Uses user access tokens instead of M2M tokens
|
|
164
|
+
def frontend
|
|
165
|
+
@frontend_client ||= KindeSdk::Internal::FrontendClient.new(@token_store, KindeSdk.config.domain)
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
# Public SDK methods that use Frontend API internally
|
|
169
|
+
|
|
170
|
+
# Get entitlements for the authenticated user with pagination support.
|
|
171
|
+
#
|
|
172
|
+
# @param page_size [Integer] Number of results per page (default: 10)
|
|
173
|
+
# @param starting_after [String] The ID to start after for pagination
|
|
174
|
+
# @return [OpenStruct] Response containing entitlements data
|
|
175
|
+
# @raise [KindeSdk::APIError] If the user is not authenticated or API request fails
|
|
176
|
+
def entitlements(page_size: 10, starting_after: nil)
|
|
177
|
+
frontend.get_entitlements(page_size: page_size, starting_after: starting_after)
|
|
178
|
+
rescue StandardError => e
|
|
179
|
+
Rails.logger.error("Failed to fetch entitlements: #{e.message}")
|
|
180
|
+
raise KindeSdk::APIError, "Unable to fetch entitlements: #{e.message}"
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
# Get all entitlements for the authenticated user, handling pagination automatically.
|
|
184
|
+
#
|
|
185
|
+
# @return [Array] All entitlements
|
|
186
|
+
# @raise [KindeSdk::APIError] If the user is not authenticated or API request fails
|
|
187
|
+
def getAllEntitlements
|
|
188
|
+
unless token_store.bearer_token
|
|
189
|
+
raise KindeSdk::APIError, 'User must be authenticated to get entitlements'
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
paginate_all_results('entitlements') { |starting_after| entitlements(page_size: 100, starting_after: starting_after) }
|
|
193
|
+
rescue StandardError => e
|
|
194
|
+
Rails.logger.error("Failed to fetch all entitlements: #{e.message}")
|
|
195
|
+
raise KindeSdk::APIError, "Unable to fetch all entitlements: #{e.message}"
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
# Ruby-style alias for getAllEntitlements
|
|
199
|
+
alias_method :all_entitlements, :getAllEntitlements
|
|
200
|
+
|
|
201
|
+
# Get a specific entitlement by key.
|
|
202
|
+
#
|
|
203
|
+
# @param key [String] The entitlement key to retrieve
|
|
204
|
+
# @return [OpenStruct, nil] The entitlement response or nil if not found
|
|
205
|
+
# @raise [KindeSdk::APIError] If the user is not authenticated or API request fails
|
|
206
|
+
def entitlement(key)
|
|
207
|
+
frontend.get_entitlement(key)
|
|
208
|
+
rescue StandardError => e
|
|
209
|
+
Rails.logger.error("Failed to fetch entitlement for #{key}: #{e.message}")
|
|
210
|
+
raise KindeSdk::APIError, "Unable to fetch entitlement: #{e.message}"
|
|
211
|
+
end
|
|
212
|
+
|
|
213
|
+
# PHP SDK compatible alias for entitlement
|
|
214
|
+
#
|
|
215
|
+
# @param key [String] The entitlement key to retrieve
|
|
216
|
+
# @return [OpenStruct, nil] The entitlement response or nil if not found
|
|
217
|
+
# @raise [KindeSdk::APIError] If the user is not authenticated or API request fails
|
|
218
|
+
def getEntitlement(key)
|
|
219
|
+
# Find the specific entitlement from all entitlements (like PHP SDK does)
|
|
220
|
+
entitlements = getAllEntitlements
|
|
221
|
+
|
|
222
|
+
entitlements.find { |entitlement| entitlement.feature_key == key }
|
|
223
|
+
rescue StandardError => e
|
|
224
|
+
Rails.logger.error("Failed to get entitlement for #{key}: #{e.message}")
|
|
225
|
+
raise KindeSdk::APIError, "Unable to get entitlement: #{e.message}"
|
|
226
|
+
end
|
|
227
|
+
|
|
228
|
+
# Check if the user has a specific entitlement.
|
|
229
|
+
#
|
|
230
|
+
# @param feature_key [String] The entitlement key to check
|
|
231
|
+
# @return [Boolean] True if the user has the entitlement, false otherwise
|
|
232
|
+
def has_entitlement?(feature_key)
|
|
233
|
+
entitlement_response = entitlement(feature_key)
|
|
234
|
+
entitlement_response&.data&.entitlement.present?
|
|
235
|
+
rescue StandardError => e
|
|
236
|
+
Rails.logger.error("Error checking entitlement for #{feature_key}: #{e.message}")
|
|
237
|
+
false
|
|
238
|
+
end
|
|
239
|
+
|
|
240
|
+
# PHP SDK compatible alias for has_entitlement?
|
|
241
|
+
#
|
|
242
|
+
# @param key [String] The entitlement key to check
|
|
243
|
+
# @return [Boolean] True if the user has the entitlement, false otherwise
|
|
244
|
+
def hasEntitlement(key)
|
|
245
|
+
getEntitlement(key) != nil
|
|
246
|
+
rescue StandardError => e
|
|
247
|
+
Rails.logger.error("Error checking entitlement for #{key}: #{e.message}")
|
|
248
|
+
false
|
|
249
|
+
end
|
|
250
|
+
|
|
251
|
+
# Get the maximum limit for a specific entitlement.
|
|
252
|
+
#
|
|
253
|
+
# @param key [String] The entitlement key
|
|
254
|
+
# @return [Integer, nil] The maximum limit or nil if not found
|
|
255
|
+
# @raise [KindeSdk::APIError] If the user is not authenticated or API request fails
|
|
256
|
+
def getEntitlementLimit(key)
|
|
257
|
+
entitlement = getEntitlement(key)
|
|
258
|
+
entitlement ? entitlement.entitlement_limit_max : nil
|
|
259
|
+
rescue StandardError => e
|
|
260
|
+
Rails.logger.error("Error getting entitlement limit for #{key}: #{e.message}")
|
|
261
|
+
nil
|
|
262
|
+
end
|
|
263
|
+
|
|
264
|
+
# Ruby-style alias for getEntitlementLimit
|
|
265
|
+
alias_method :entitlement_limit, :getEntitlementLimit
|
|
266
|
+
|
|
267
|
+
# Get user feature flags with pagination support.
|
|
268
|
+
#
|
|
269
|
+
# @param page_size [Integer] Number of results per page (default: 10)
|
|
270
|
+
# @param starting_after [String] The ID to start after for pagination
|
|
271
|
+
# @return [OpenStruct] Response containing feature flags data
|
|
272
|
+
# @raise [KindeSdk::APIError] If the user is not authenticated or API request fails
|
|
273
|
+
def user_feature_flags(page_size: 10, starting_after: nil)
|
|
274
|
+
frontend.get_feature_flags(page_size: page_size, starting_after: starting_after)
|
|
275
|
+
rescue StandardError => e
|
|
276
|
+
Rails.logger.error("Failed to fetch feature flags: #{e.message}")
|
|
277
|
+
raise KindeSdk::APIError, "Unable to fetch feature flags: #{e.message}"
|
|
278
|
+
end
|
|
279
|
+
|
|
280
|
+
# Get user permissions with pagination support.
|
|
281
|
+
#
|
|
282
|
+
# @param page_size [Integer] Number of results per page (default: 10)
|
|
283
|
+
# @param starting_after [String] The ID to start after for pagination
|
|
284
|
+
# @return [OpenStruct] Response containing permissions data
|
|
285
|
+
# @raise [KindeSdk::APIError] If the user is not authenticated or API request fails
|
|
286
|
+
def user_permissions(page_size: 10, starting_after: nil)
|
|
287
|
+
frontend.get_user_permissions(page_size: page_size, starting_after: starting_after)
|
|
288
|
+
rescue StandardError => e
|
|
289
|
+
Rails.logger.error("Failed to fetch permissions: #{e.message}")
|
|
290
|
+
raise KindeSdk::APIError, "Unable to fetch permissions: #{e.message}"
|
|
291
|
+
end
|
|
292
|
+
|
|
293
|
+
# Get user properties with pagination support.
|
|
294
|
+
#
|
|
295
|
+
# @param page_size [Integer] Number of results per page (default: 10)
|
|
296
|
+
# @param starting_after [String] The ID to start after for pagination
|
|
297
|
+
# @return [OpenStruct] Response containing properties data
|
|
298
|
+
# @raise [KindeSdk::APIError] If the user is not authenticated or API request fails
|
|
299
|
+
def user_properties(page_size: 10, starting_after: nil)
|
|
300
|
+
frontend.get_user_properties(page_size: page_size, starting_after: starting_after)
|
|
301
|
+
rescue StandardError => e
|
|
302
|
+
Rails.logger.error("Failed to fetch properties: #{e.message}")
|
|
303
|
+
raise KindeSdk::APIError, "Unable to fetch properties: #{e.message}"
|
|
304
|
+
end
|
|
305
|
+
|
|
306
|
+
# Get user roles with pagination support.
|
|
307
|
+
#
|
|
308
|
+
# @param page_size [Integer] Number of results per page (default: 10)
|
|
309
|
+
# @param starting_after [String] The ID to start after for pagination
|
|
310
|
+
# @return [OpenStruct] Response containing roles data
|
|
311
|
+
# @raise [KindeSdk::APIError] If the user is not authenticated or API request fails
|
|
312
|
+
def user_roles(page_size: 10, starting_after: nil)
|
|
313
|
+
frontend.get_user_roles(page_size: page_size, starting_after: starting_after)
|
|
314
|
+
rescue StandardError => e
|
|
315
|
+
Rails.logger.error("Failed to fetch roles: #{e.message}")
|
|
316
|
+
raise KindeSdk::APIError, "Unable to fetch roles: #{e.message}"
|
|
317
|
+
end
|
|
318
|
+
|
|
319
|
+
# Generate a URL to the user profile portal.
|
|
320
|
+
#
|
|
321
|
+
# @param return_url [String] URL to redirect to after completing the profile flow
|
|
322
|
+
# @param sub_nav [String] Sub-navigation section to display (defaults to 'profile')
|
|
323
|
+
# @return [Hash] A hash containing the generated URL
|
|
324
|
+
# @raise [KindeSdk::APIError] If the user is not authenticated or API request fails
|
|
325
|
+
def portal_link(return_url:, page: PortalPage::PROFILE)
|
|
326
|
+
frontend.get_portal_link(subnav: page, return_url: return_url)
|
|
327
|
+
rescue StandardError => e
|
|
328
|
+
Rails.logger.error("Failed to get portal link: #{e.message}")
|
|
329
|
+
raise KindeSdk::APIError, "Unable to get portal link: #{e.message}"
|
|
330
|
+
end
|
|
331
|
+
|
|
332
|
+
# PHP SDK compatible portal URL generation method.
|
|
333
|
+
#
|
|
334
|
+
# @param return_url [String] URL to redirect to after completing the profile flow
|
|
335
|
+
# @param sub_nav [String] Sub-navigation section to display (defaults to 'profile')
|
|
336
|
+
# @return [Hash] A hash containing the generated URL
|
|
337
|
+
# @raise [KindeSdk::APIError] If the user is not authenticated or API request fails
|
|
338
|
+
# @raise [ArgumentError] If the return_url is not an absolute URL
|
|
339
|
+
def generatePortalUrl(return_url, sub_nav = PortalPage::PROFILE)
|
|
340
|
+
unless token_store.bearer_token
|
|
341
|
+
raise KindeSdk::APIError, 'generatePortalUrl: Access Token not found'
|
|
342
|
+
end
|
|
343
|
+
|
|
344
|
+
unless return_url.start_with?('http')
|
|
345
|
+
raise ArgumentError, 'generatePortalUrl: returnUrl must be an absolute URL'
|
|
346
|
+
end
|
|
347
|
+
|
|
348
|
+
frontend.get_portal_link(subnav: sub_nav, return_url: return_url)
|
|
349
|
+
rescue StandardError => e
|
|
350
|
+
Rails.logger.error("Failed to generate portal URL: #{e.message}")
|
|
351
|
+
raise KindeSdk::APIError, "Unable to generate portal URL: #{e.message}"
|
|
352
|
+
end
|
|
353
|
+
|
|
354
|
+
# Get enhanced user profile information.
|
|
355
|
+
#
|
|
356
|
+
# @return [OpenStruct] Enhanced user profile data
|
|
357
|
+
# @raise [KindeSdk::APIError] If the user is not authenticated or API request fails
|
|
358
|
+
def enhanced_user_profile
|
|
359
|
+
frontend.get_user_profile_v2
|
|
360
|
+
rescue StandardError => e
|
|
361
|
+
Rails.logger.error("Failed to fetch enhanced profile: #{e.message}")
|
|
362
|
+
raise KindeSdk::APIError, "Unable to fetch enhanced profile: #{e.message}"
|
|
363
|
+
end
|
|
364
|
+
|
|
49
365
|
private
|
|
50
366
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
367
|
+
# Generic pagination helper for all paginated API calls
|
|
368
|
+
#
|
|
369
|
+
# @param data_key [String] The key in the response data containing the array of results
|
|
370
|
+
# @param block [Proc] Block that makes the API call with starting_after parameter
|
|
371
|
+
# @return [Array] All paginated results
|
|
372
|
+
def paginate_all_results(data_key, &block)
|
|
373
|
+
all_results = []
|
|
374
|
+
starting_after = nil
|
|
375
|
+
|
|
376
|
+
loop do
|
|
377
|
+
response = block.call(starting_after)
|
|
378
|
+
current_results = response&.data&.public_send(data_key) || []
|
|
379
|
+
all_results.concat(current_results)
|
|
380
|
+
|
|
381
|
+
metadata = response&.metadata
|
|
382
|
+
has_more = metadata&.has_more
|
|
383
|
+
|
|
384
|
+
break unless has_more && current_results.any?
|
|
385
|
+
|
|
386
|
+
starting_after = metadata&.next_page_starting_after
|
|
387
|
+
break unless starting_after
|
|
388
|
+
end
|
|
389
|
+
|
|
390
|
+
all_results
|
|
55
391
|
end
|
|
56
392
|
|
|
57
|
-
# going from another side: prepending each api_client's public method to check token for expiration
|
|
58
393
|
def init_instance_api(api_klass)
|
|
394
|
+
|
|
59
395
|
instance = api_klass.new(kinde_api_client)
|
|
396
|
+
|
|
397
|
+
|
|
60
398
|
main_client = self
|
|
61
399
|
methods_to_prepend = instance.public_methods(false).reject { |m| m.to_s.start_with?("api_client") }
|
|
400
|
+
|
|
62
401
|
methods_to_prepend.each do |method_name|
|
|
63
402
|
original = instance.method(method_name)
|
|
64
403
|
instance.define_singleton_method(method_name) do |*args, &block|
|
|
@@ -68,5 +407,6 @@ module KindeSdk
|
|
|
68
407
|
end
|
|
69
408
|
instance
|
|
70
409
|
end
|
|
410
|
+
|
|
71
411
|
end
|
|
72
412
|
end
|
|
@@ -10,20 +10,30 @@ module KindeSdk
|
|
|
10
10
|
attr_accessor :authorize_url
|
|
11
11
|
attr_accessor :token_url
|
|
12
12
|
|
|
13
|
+
attr_accessor :jwks_url
|
|
14
|
+
attr_accessor :jwks
|
|
15
|
+
attr_accessor :expected_issuer
|
|
16
|
+
attr_accessor :expected_audience
|
|
17
|
+
|
|
13
18
|
attr_accessor :logger
|
|
14
19
|
attr_accessor :debugging
|
|
15
20
|
attr_accessor :oauth_client
|
|
16
21
|
attr_accessor :pkce_enabled
|
|
17
22
|
attr_accessor :auto_refresh_tokens
|
|
23
|
+
attr_accessor :force_api
|
|
18
24
|
|
|
19
25
|
def initialize
|
|
20
26
|
@authorize_url = '/oauth2/auth'
|
|
21
27
|
@token_url = '/oauth2/token'
|
|
28
|
+
@jwks_url = '/.well-known/jwks.json'
|
|
29
|
+
@expected_audience = nil
|
|
30
|
+
@expected_issuer = nil
|
|
22
31
|
@debugging = false
|
|
23
32
|
@logger = defined?(Rails) ? Rails.logger : Logger.new(STDOUT)
|
|
24
33
|
@scope = 'openid offline email profile'
|
|
25
34
|
@pkce_enabled = true
|
|
26
35
|
@auto_refresh_tokens = true
|
|
36
|
+
@force_api = false
|
|
27
37
|
|
|
28
38
|
yield(self) if block_given?
|
|
29
39
|
end
|
|
@@ -36,7 +46,7 @@ module KindeSdk
|
|
|
36
46
|
yield(self) if block_given?
|
|
37
47
|
end
|
|
38
48
|
|
|
39
|
-
def oauth_client
|
|
49
|
+
def oauth_client(client_id: @client_id, client_secret: @client_secret, domain: @domain, authorize_url: @authorize_url, token_url: @token_url )
|
|
40
50
|
::OAuth2::Client.new(
|
|
41
51
|
client_id,
|
|
42
52
|
client_secret,
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
module KindeSdk
|
|
2
|
+
class Current < ActiveSupport::CurrentAttributes
|
|
3
|
+
attribute :session
|
|
4
|
+
attribute :token_store
|
|
5
|
+
|
|
6
|
+
def self.set_session(session)
|
|
7
|
+
self.session = session
|
|
8
|
+
self.token_store = TokenStore.from_session(session[:kinde_token_store]) if session[:kinde_token_store]
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def self.clear_session
|
|
12
|
+
self.session = nil
|
|
13
|
+
self.token_store = nil
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
require "kinde_sdk/version"
|
|
2
|
+
require "kinde_sdk/configuration"
|
|
3
|
+
require "kinde_sdk/current"
|
|
4
|
+
require "kinde_sdk/middleware"
|
|
5
|
+
|
|
6
|
+
module KindeSdk
|
|
7
|
+
class Engine < ::Rails::Engine
|
|
8
|
+
isolate_namespace KindeSdk # Optional, for mountable engines
|
|
9
|
+
config.app_middleware.use KindeSdk::Middleware
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
require 'httparty'
|
|
2
|
+
require 'json'
|
|
3
|
+
require 'ostruct'
|
|
4
|
+
|
|
5
|
+
module KindeSdk
|
|
6
|
+
module Internal
|
|
7
|
+
class FrontendClient
|
|
8
|
+
include HTTParty
|
|
9
|
+
|
|
10
|
+
def initialize(token_store, domain)
|
|
11
|
+
@token_store = token_store
|
|
12
|
+
@domain = domain
|
|
13
|
+
@base_uri = "#{domain}/account_api/v1"
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def get_entitlements(page_size: 10, starting_after: nil)
|
|
17
|
+
make_request('/entitlements', {
|
|
18
|
+
page_size: page_size,
|
|
19
|
+
starting_after: starting_after
|
|
20
|
+
}.compact)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def get_entitlement(key)
|
|
24
|
+
make_request("/entitlement", { key: key })
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def get_user_permissions(page_size: 10, starting_after: nil)
|
|
28
|
+
make_request('/permissions', {
|
|
29
|
+
page_size: page_size,
|
|
30
|
+
starting_after: starting_after
|
|
31
|
+
}.compact)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def get_user_properties(page_size: 10, starting_after: nil)
|
|
35
|
+
make_request('/properties', {
|
|
36
|
+
page_size: page_size,
|
|
37
|
+
starting_after: starting_after
|
|
38
|
+
}.compact)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def get_user_roles(page_size: 10, starting_after: nil)
|
|
42
|
+
make_request('/roles', {
|
|
43
|
+
page_size: page_size,
|
|
44
|
+
starting_after: starting_after
|
|
45
|
+
}.compact)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def get_feature_flags(page_size: 10, starting_after: nil)
|
|
49
|
+
make_request('/feature_flags', {
|
|
50
|
+
page_size: page_size,
|
|
51
|
+
starting_after: starting_after
|
|
52
|
+
}.compact)
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def get_portal_link(subnav: nil, return_url: nil)
|
|
56
|
+
make_request('/portal_link', {
|
|
57
|
+
subnav: subnav,
|
|
58
|
+
return_url: return_url
|
|
59
|
+
}.compact)
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def get_user_profile_v2
|
|
63
|
+
url = "#{@domain}/oauth2/v2/user_profile"
|
|
64
|
+
|
|
65
|
+
response = HTTParty.get(url, {
|
|
66
|
+
headers: {
|
|
67
|
+
'Authorization' => "Bearer #{@token_store.bearer_token}",
|
|
68
|
+
'Content-Type' => 'application/json'
|
|
69
|
+
}
|
|
70
|
+
})
|
|
71
|
+
|
|
72
|
+
handle_response(response)
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
private
|
|
76
|
+
|
|
77
|
+
def make_request(endpoint, params = {})
|
|
78
|
+
url = "#{@base_uri}#{endpoint}"
|
|
79
|
+
|
|
80
|
+
response = HTTParty.get(url, {
|
|
81
|
+
query: params,
|
|
82
|
+
headers: {
|
|
83
|
+
'Authorization' => "Bearer #{@token_store.bearer_token}",
|
|
84
|
+
'Content-Type' => 'application/json'
|
|
85
|
+
}
|
|
86
|
+
})
|
|
87
|
+
|
|
88
|
+
handle_response(response)
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
def handle_response(response)
|
|
92
|
+
case response.code
|
|
93
|
+
when 200
|
|
94
|
+
# Parse as OpenStruct for easy access while keeping it internal
|
|
95
|
+
JSON.parse(response.body, object_class: OpenStruct)
|
|
96
|
+
when 401
|
|
97
|
+
raise KindeSdk::AuthenticationError, "Invalid or expired token"
|
|
98
|
+
when 403
|
|
99
|
+
raise KindeSdk::AuthorizationError, "Insufficient permissions"
|
|
100
|
+
when 404
|
|
101
|
+
# For entitlements, return nil when not found (matches PHP SDK behavior)
|
|
102
|
+
nil
|
|
103
|
+
when 429
|
|
104
|
+
raise KindeSdk::RateLimitError, "Too many requests"
|
|
105
|
+
else
|
|
106
|
+
raise KindeSdk::APIError, "API request failed with status #{response.code}: #{response.body}"
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
module KindeSdk
|
|
2
|
+
class Middleware
|
|
3
|
+
def initialize(app)
|
|
4
|
+
@app = app
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
def call(env)
|
|
8
|
+
request = ActionDispatch::Request.new(env)
|
|
9
|
+
Current.set_session(request.session)
|
|
10
|
+
|
|
11
|
+
@app.call(env)
|
|
12
|
+
ensure
|
|
13
|
+
Current.clear_session
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|