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.
Files changed (638) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/stylesheets/kinde/ruby/sdk/application.css +15 -0
  3. data/app/controllers/kinde_sdk/auth_controller.rb +301 -0
  4. data/app/helpers/auth_helper.rb +88 -0
  5. data/config/routes.rb +9 -0
  6. data/kinde_api/Gemfile +9 -0
  7. data/kinde_api/README.md +316 -47
  8. data/kinde_api/Rakefile +10 -0
  9. data/kinde_api/docs/APIsApi.md +569 -60
  10. data/kinde_api/docs/AddAPIScopeRequest.md +20 -0
  11. data/kinde_api/docs/AddAPIsRequest.md +4 -4
  12. data/kinde_api/docs/AddOrganizationUsersRequestUsersInner.md +1 -1
  13. data/kinde_api/docs/AddRoleScopeRequest.md +18 -0
  14. data/kinde_api/docs/AddRoleScopeResponse.md +20 -0
  15. data/kinde_api/docs/ApplicationsApi.md +465 -38
  16. data/kinde_api/docs/AuthorizeAppApiResponse.md +24 -0
  17. data/kinde_api/docs/BillingAgreementsApi.md +157 -0
  18. data/kinde_api/docs/BillingEntitlementsApi.md +89 -0
  19. data/kinde_api/docs/BillingMeterUsageApi.md +77 -0
  20. data/kinde_api/docs/BusinessApi.md +27 -66
  21. data/kinde_api/docs/CallbacksApi.md +25 -25
  22. data/kinde_api/docs/Category.md +20 -0
  23. data/kinde_api/docs/ConnectedAppsApi.md +8 -8
  24. data/kinde_api/docs/Connection.md +22 -0
  25. data/kinde_api/docs/ConnectionConnection.md +24 -0
  26. data/kinde_api/docs/ConnectionsApi.md +439 -0
  27. data/kinde_api/docs/CreateApiScopesResponse.md +22 -0
  28. data/kinde_api/docs/CreateApiScopesResponseScope.md +18 -0
  29. data/kinde_api/docs/CreateApisResponse.md +22 -0
  30. data/kinde_api/docs/CreateApisResponseApi.md +18 -0
  31. data/kinde_api/docs/CreateApplicationRequest.md +3 -3
  32. data/kinde_api/docs/CreateApplicationResponseApplication.md +4 -4
  33. data/kinde_api/docs/CreateBillingAgreementRequest.md +24 -0
  34. data/kinde_api/docs/CreateCategoryRequest.md +20 -0
  35. data/kinde_api/docs/CreateCategoryResponse.md +22 -0
  36. data/kinde_api/docs/CreateCategoryResponseCategory.md +18 -0
  37. data/kinde_api/docs/CreateConnectionRequest.md +28 -0
  38. data/kinde_api/docs/CreateConnectionRequestOptions.md +51 -0
  39. data/kinde_api/docs/CreateConnectionRequestOptionsOneOf.md +22 -0
  40. data/kinde_api/docs/CreateConnectionRequestOptionsOneOf1.md +34 -0
  41. data/kinde_api/docs/CreateConnectionRequestOptionsOneOf2.md +44 -0
  42. data/kinde_api/docs/CreateConnectionResponse.md +22 -0
  43. data/kinde_api/docs/CreateConnectionResponseConnection.md +18 -0
  44. data/kinde_api/docs/CreateEnvironmentVariableRequest.md +22 -0
  45. data/kinde_api/docs/CreateEnvironmentVariableResponse.md +22 -0
  46. data/kinde_api/docs/CreateEnvironmentVariableResponseEnvironmentVariable.md +18 -0
  47. data/kinde_api/docs/CreateIdentityResponse.md +22 -0
  48. data/kinde_api/docs/CreateIdentityResponseIdentity.md +18 -0
  49. data/kinde_api/docs/CreateMeterUsageRecordRequest.md +26 -0
  50. data/kinde_api/docs/CreateMeterUsageRecordResponse.md +20 -0
  51. data/kinde_api/docs/CreateOrganizationRequest.md +17 -7
  52. data/kinde_api/docs/CreateOrganizationResponse.md +4 -4
  53. data/kinde_api/docs/CreateOrganizationResponseOrganization.md +4 -2
  54. data/kinde_api/docs/CreatePropertyRequest.md +30 -0
  55. data/kinde_api/docs/CreatePropertyResponse.md +22 -0
  56. data/kinde_api/docs/CreatePropertyResponseProperty.md +18 -0
  57. data/kinde_api/docs/CreateRolesResponse.md +22 -0
  58. data/kinde_api/docs/CreateRolesResponseRole.md +18 -0
  59. data/kinde_api/docs/CreateUserIdentityRequest.md +24 -0
  60. data/kinde_api/docs/CreateUserRequest.md +3 -1
  61. data/kinde_api/docs/CreateUserRequestIdentitiesInner.md +3 -1
  62. data/kinde_api/docs/CreateUserRequestIdentitiesInnerDetails.md +7 -1
  63. data/kinde_api/docs/CreateUserRequestProfile.md +3 -1
  64. data/kinde_api/docs/CreateUserResponse.md +1 -1
  65. data/kinde_api/docs/CreateWebHookRequest.md +24 -0
  66. data/kinde_api/docs/CreateWebhookResponse.md +22 -0
  67. data/kinde_api/docs/CreateWebhookResponseWebhook.md +20 -0
  68. data/kinde_api/docs/DeleteApiResponse.md +20 -0
  69. data/kinde_api/docs/DeleteEnvironmentVariableResponse.md +20 -0
  70. data/kinde_api/docs/DeleteRoleScopeResponse.md +20 -0
  71. data/kinde_api/docs/DeleteWebhookResponse.md +20 -0
  72. data/kinde_api/docs/EnvironmentVariable.md +26 -0
  73. data/kinde_api/docs/EnvironmentVariablesApi.md +356 -0
  74. data/kinde_api/docs/EnvironmentsApi.md +281 -5
  75. data/kinde_api/docs/EventType.md +26 -0
  76. data/kinde_api/docs/FeatureFlagsApi.md +4 -4
  77. data/kinde_api/docs/GetApiResponse.md +22 -0
  78. data/kinde_api/docs/GetApiResponseApi.md +28 -0
  79. data/kinde_api/docs/GetApiResponseApiApplicationsInner.md +24 -0
  80. data/kinde_api/docs/GetApiResponseApiScopesInner.md +20 -0
  81. data/kinde_api/docs/GetApiScopeResponse.md +22 -0
  82. data/kinde_api/docs/GetApiScopesResponse.md +22 -0
  83. data/kinde_api/docs/GetApiScopesResponseScopesInner.md +22 -0
  84. data/kinde_api/docs/GetApisResponse.md +24 -0
  85. data/kinde_api/docs/GetApisResponseApisInner.md +26 -0
  86. data/kinde_api/docs/GetApisResponseApisInnerScopesInner.md +20 -0
  87. data/kinde_api/docs/GetApplicationResponseApplication.md +11 -5
  88. data/kinde_api/docs/GetBillingAgreementsResponse.md +24 -0
  89. data/kinde_api/docs/GetBillingAgreementsResponseAgreementsInner.md +26 -0
  90. data/kinde_api/docs/GetBillingAgreementsResponseAgreementsInnerEntitlementsInner.md +20 -0
  91. data/kinde_api/docs/GetBillingEntitlementsResponse.md +26 -0
  92. data/kinde_api/docs/GetBillingEntitlementsResponseEntitlementsInner.md +32 -0
  93. data/kinde_api/docs/GetBillingEntitlementsResponsePlansInner.md +20 -0
  94. data/kinde_api/docs/GetBusinessResponse.md +22 -0
  95. data/kinde_api/docs/GetBusinessResponseBusiness.md +38 -0
  96. data/kinde_api/docs/GetCategoriesResponse.md +24 -0
  97. data/kinde_api/docs/GetConnectionsResponse.md +24 -0
  98. data/kinde_api/docs/GetEnvironmentResponse.md +22 -0
  99. data/kinde_api/docs/GetEnvironmentResponseEnvironment.md +68 -0
  100. data/kinde_api/docs/GetEnvironmentResponseEnvironmentBackgroundColor.md +22 -0
  101. data/kinde_api/docs/GetEnvironmentResponseEnvironmentLinkColor.md +22 -0
  102. data/kinde_api/docs/GetEnvironmentVariableResponse.md +22 -0
  103. data/kinde_api/docs/GetEnvironmentVariablesResponse.md +24 -0
  104. data/kinde_api/docs/GetEventResponse.md +22 -0
  105. data/kinde_api/docs/GetEventResponseEvent.md +26 -0
  106. data/kinde_api/docs/GetEventTypesResponse.md +22 -0
  107. data/kinde_api/docs/GetIdentitiesResponse.md +24 -0
  108. data/kinde_api/docs/GetIndustriesResponse.md +22 -0
  109. data/kinde_api/docs/GetIndustriesResponseIndustriesInner.md +20 -0
  110. data/kinde_api/docs/GetOrganizationResponse.md +72 -0
  111. data/kinde_api/docs/GetOrganizationResponseBilling.md +20 -0
  112. data/kinde_api/docs/GetOrganizationResponseBillingAgreementsInner.md +20 -0
  113. data/kinde_api/docs/GetOrganizationUsersResponse.md +2 -2
  114. data/kinde_api/docs/GetOrganizationsResponse.md +4 -4
  115. data/kinde_api/docs/GetPropertiesResponse.md +24 -0
  116. data/kinde_api/docs/GetPropertyValuesResponse.md +24 -0
  117. data/kinde_api/docs/GetRoleResponse.md +22 -0
  118. data/kinde_api/docs/GetRoleResponseRole.md +26 -0
  119. data/kinde_api/docs/GetTimezonesResponse.md +22 -0
  120. data/kinde_api/docs/GetTimezonesResponseTimezonesInner.md +20 -0
  121. data/kinde_api/docs/GetUserMfaResponse.md +22 -0
  122. data/kinde_api/docs/GetUserMfaResponseMfa.md +30 -0
  123. data/kinde_api/docs/GetUserSessionsResponse.md +24 -0
  124. data/kinde_api/docs/GetUserSessionsResponseSessionsInner.md +40 -0
  125. data/kinde_api/docs/GetWebhooksResponse.md +22 -0
  126. data/kinde_api/docs/IdentitiesApi.md +219 -0
  127. data/kinde_api/docs/Identity.md +34 -0
  128. data/kinde_api/docs/IndustriesApi.md +14 -21
  129. data/kinde_api/docs/LogoutRedirectUrls.md +6 -2
  130. data/kinde_api/docs/MFAApi.md +77 -0
  131. data/kinde_api/docs/NotFoundResponse.md +18 -0
  132. data/kinde_api/docs/NotFoundResponseErrors.md +20 -0
  133. data/kinde_api/docs/OAuthApi.md +32 -97
  134. data/kinde_api/docs/OrganizationItemSchema.md +28 -0
  135. data/kinde_api/docs/OrganizationUser.md +17 -11
  136. data/kinde_api/docs/OrganizationsApi.md +1440 -210
  137. data/kinde_api/docs/Permissions.md +1 -1
  138. data/kinde_api/docs/PermissionsApi.md +7 -7
  139. data/kinde_api/docs/PropertiesApi.md +297 -0
  140. data/kinde_api/docs/Property.md +28 -0
  141. data/kinde_api/docs/PropertyCategoriesApi.md +227 -0
  142. data/kinde_api/docs/PropertyValue.md +26 -0
  143. data/kinde_api/docs/ReadEnvLogoResponse.md +22 -0
  144. data/kinde_api/docs/ReadEnvLogoResponseLogosInner.md +20 -0
  145. data/kinde_api/docs/ReadLogoResponse.md +22 -0
  146. data/kinde_api/docs/ReadLogoResponseLogosInner.md +22 -0
  147. data/kinde_api/docs/ReplaceConnectionRequest.md +24 -0
  148. data/kinde_api/docs/ReplaceConnectionRequestOptions.md +51 -0
  149. data/kinde_api/docs/ReplaceConnectionRequestOptionsOneOf.md +32 -0
  150. data/kinde_api/docs/ReplaceConnectionRequestOptionsOneOf1.md +40 -0
  151. data/kinde_api/docs/ReplaceMFARequest.md +20 -0
  152. data/kinde_api/docs/ReplaceOrganizationMFARequest.md +18 -0
  153. data/kinde_api/docs/RolePermissionsResponse.md +24 -0
  154. data/kinde_api/docs/RoleScopesResponse.md +22 -0
  155. data/kinde_api/docs/Roles.md +4 -2
  156. data/kinde_api/docs/RolesApi.md +338 -54
  157. data/kinde_api/docs/Scopes.md +24 -0
  158. data/kinde_api/docs/SearchApi.md +89 -0
  159. data/kinde_api/docs/SearchUsersResponse.md +22 -0
  160. data/kinde_api/docs/SearchUsersResponseResultsInner.md +46 -0
  161. data/kinde_api/docs/SetUserPasswordRequest.md +26 -0
  162. data/kinde_api/docs/SubscribersApi.md +4 -4
  163. data/kinde_api/docs/SuccessResponse.md +2 -2
  164. data/kinde_api/docs/TimezonesApi.md +14 -21
  165. data/kinde_api/docs/TokenIntrospect.md +5 -5
  166. data/kinde_api/docs/UpdateAPIApplicationsRequestApplicationsInner.md +4 -4
  167. data/kinde_api/docs/UpdateAPIScopeRequest.md +18 -0
  168. data/kinde_api/docs/UpdateApplicationRequest.md +5 -1
  169. data/kinde_api/docs/UpdateApplicationTokensRequest.md +26 -0
  170. data/kinde_api/docs/UpdateApplicationsPropertyRequest.md +18 -0
  171. data/kinde_api/docs/UpdateApplicationsPropertyRequestValue.md +49 -0
  172. data/kinde_api/docs/UpdateBusinessRequest.md +36 -0
  173. data/kinde_api/docs/UpdateCategoryRequest.md +18 -0
  174. data/kinde_api/docs/UpdateConnectionRequest.md +24 -0
  175. data/kinde_api/docs/UpdateEnvironmentVariableRequest.md +22 -0
  176. data/kinde_api/docs/UpdateEnvironmentVariableResponse.md +20 -0
  177. data/kinde_api/docs/UpdateIdentityRequest.md +18 -0
  178. data/kinde_api/docs/UpdateOrganizationPropertiesRequest.md +18 -0
  179. data/kinde_api/docs/UpdateOrganizationRequest.md +27 -15
  180. data/kinde_api/docs/UpdateOrganizationSessionsRequest.md +24 -0
  181. data/kinde_api/docs/UpdateOrganizationUsersRequestUsersInner.md +2 -2
  182. data/kinde_api/docs/UpdateOrganizationUsersResponse.md +3 -1
  183. data/kinde_api/docs/UpdatePropertyRequest.md +24 -0
  184. data/kinde_api/docs/UpdateUserRequest.md +5 -1
  185. data/kinde_api/docs/UpdateUserResponse.md +1 -1
  186. data/kinde_api/docs/UpdateWebHookRequest.md +22 -0
  187. data/kinde_api/docs/UpdateWebhookResponse.md +22 -0
  188. data/kinde_api/docs/UpdateWebhookResponseWebhook.md +18 -0
  189. data/kinde_api/docs/User.md +6 -2
  190. data/kinde_api/docs/UserProfileV2.md +17 -13
  191. data/kinde_api/docs/UsersApi.md +893 -99
  192. data/kinde_api/docs/UsersResponseUsersInner.md +6 -2
  193. data/kinde_api/docs/Webhook.md +28 -0
  194. data/kinde_api/docs/WebhooksApi.md +423 -0
  195. data/kinde_api/git_push.sh +57 -0
  196. data/kinde_api/kinde_api.gemspec +38 -0
  197. data/kinde_api/lib/kinde_api/api/apis_api.rb +640 -127
  198. data/kinde_api/lib/kinde_api/api/applications_api.rb +524 -112
  199. data/kinde_api/lib/kinde_api/api/billing_agreements_api.rb +166 -0
  200. data/kinde_api/lib/kinde_api/api/billing_entitlements_api.rb +105 -0
  201. data/kinde_api/lib/kinde_api/api/billing_meter_usage_api.rb +90 -0
  202. data/kinde_api/lib/kinde_api/api/business_api.rb +61 -126
  203. data/kinde_api/lib/kinde_api/api/callbacks_api.rb +152 -172
  204. data/kinde_api/lib/kinde_api/api/connected_apps_api.rb +57 -67
  205. data/kinde_api/lib/kinde_api/api/connections_api.rb +433 -0
  206. data/kinde_api/lib/kinde_api/api/environment_variables_api.rb +347 -0
  207. data/kinde_api/lib/kinde_api/api/environments_api.rb +327 -78
  208. data/kinde_api/lib/kinde_api/api/feature_flags_api.rb +68 -88
  209. data/kinde_api/lib/kinde_api/api/frontend/billing_api.rb +148 -0
  210. data/kinde_api/lib/kinde_api/api/frontend/feature_flags_api.rb +85 -0
  211. data/kinde_api/lib/kinde_api/api/frontend/o_auth_api.rb +241 -0
  212. data/kinde_api/lib/kinde_api/api/frontend/permissions_api.rb +85 -0
  213. data/kinde_api/lib/kinde_api/api/frontend/properties_api.rb +85 -0
  214. data/kinde_api/lib/kinde_api/api/frontend/roles_api.rb +85 -0
  215. data/kinde_api/lib/kinde_api/api/frontend/self_serve_portal_api.rb +89 -0
  216. data/kinde_api/lib/kinde_api/api/identities_api.rb +222 -0
  217. data/kinde_api/lib/kinde_api/api/industries_api.rb +29 -34
  218. data/kinde_api/lib/kinde_api/api/mfa_api.rb +90 -0
  219. data/kinde_api/lib/kinde_api/api/o_auth_api.rb +104 -129
  220. data/kinde_api/lib/kinde_api/api/organizations_api.rb +1689 -544
  221. data/kinde_api/lib/kinde_api/api/permissions_api.rb +76 -80
  222. data/kinde_api/lib/kinde_api/api/properties_api.rb +300 -0
  223. data/kinde_api/lib/kinde_api/api/property_categories_api.rb +237 -0
  224. data/kinde_api/lib/kinde_api/api/roles_api.rb +432 -166
  225. data/kinde_api/lib/kinde_api/api/search_api.rb +97 -0
  226. data/kinde_api/lib/kinde_api/api/subscribers_api.rb +59 -60
  227. data/kinde_api/lib/kinde_api/api/timezones_api.rb +29 -34
  228. data/kinde_api/lib/kinde_api/api/users_api.rb +900 -150
  229. data/kinde_api/lib/kinde_api/api/webhooks_api.rb +404 -0
  230. data/kinde_api/lib/kinde_api/api_client.rb +79 -68
  231. data/kinde_api/lib/kinde_api/api_error.rb +16 -16
  232. data/kinde_api/lib/kinde_api/configuration.rb +101 -24
  233. data/kinde_api/lib/kinde_api/models/add_api_scope_request.rb +235 -0
  234. data/kinde_api/lib/kinde_api/models/add_apis_request.rb +54 -49
  235. data/kinde_api/lib/kinde_api/models/add_organization_users_request.rb +40 -42
  236. data/kinde_api/lib/kinde_api/models/add_organization_users_request_users_inner.rb +53 -51
  237. data/kinde_api/lib/kinde_api/models/add_organization_users_response.rb +52 -50
  238. data/kinde_api/lib/kinde_api/models/add_role_scope_request.rb +225 -0
  239. data/kinde_api/lib/kinde_api/models/add_role_scope_response.rb +230 -0
  240. data/kinde_api/lib/kinde_api/models/api_result.rb +38 -40
  241. data/kinde_api/lib/kinde_api/models/applications.rb +55 -50
  242. data/kinde_api/lib/kinde_api/models/authorize_app_api_response.rb +250 -0
  243. data/kinde_api/lib/kinde_api/models/category.rb +228 -0
  244. data/kinde_api/lib/kinde_api/models/connected_apps_access_token.rb +44 -45
  245. data/kinde_api/lib/kinde_api/models/connected_apps_auth_url.rb +44 -45
  246. data/kinde_api/lib/kinde_api/models/connection.rb +239 -0
  247. data/kinde_api/lib/kinde_api/models/connection_connection.rb +246 -0
  248. data/kinde_api/lib/kinde_api/models/create_api_scopes_response.rb +239 -0
  249. data/kinde_api/lib/kinde_api/models/create_api_scopes_response_scope.rb +220 -0
  250. data/kinde_api/lib/kinde_api/models/create_apis_response.rb +239 -0
  251. data/kinde_api/lib/kinde_api/models/create_apis_response_api.rb +220 -0
  252. data/kinde_api/lib/kinde_api/models/create_application_request.rb +60 -52
  253. data/kinde_api/lib/kinde_api/models/create_application_response.rb +50 -49
  254. data/kinde_api/lib/kinde_api/models/create_application_response_application.rb +51 -50
  255. data/kinde_api/lib/kinde_api/models/create_billing_agreement_request.rb +260 -0
  256. data/kinde_api/lib/kinde_api/models/create_category_request.rb +274 -0
  257. data/kinde_api/lib/kinde_api/models/create_category_response.rb +237 -0
  258. data/kinde_api/lib/kinde_api/models/create_category_response_category.rb +220 -0
  259. data/kinde_api/lib/kinde_api/models/create_connection_request.rb +306 -0
  260. data/kinde_api/lib/kinde_api/models/create_connection_request_options.rb +106 -0
  261. data/kinde_api/lib/kinde_api/models/create_connection_request_options_one_of.rb +241 -0
  262. data/kinde_api/lib/kinde_api/models/create_connection_request_options_one_of1.rb +303 -0
  263. data/kinde_api/lib/kinde_api/models/create_connection_request_options_one_of2.rb +333 -0
  264. data/kinde_api/lib/kinde_api/models/create_connection_response.rb +237 -0
  265. data/kinde_api/lib/kinde_api/models/create_connection_response_connection.rb +220 -0
  266. data/kinde_api/lib/kinde_api/models/create_environment_variable_request.rb +250 -0
  267. data/kinde_api/lib/kinde_api/models/create_environment_variable_response.rb +239 -0
  268. data/kinde_api/lib/kinde_api/models/create_environment_variable_response_environment_variable.rb +220 -0
  269. data/kinde_api/lib/kinde_api/models/create_feature_flag_request.rb +87 -77
  270. data/kinde_api/lib/kinde_api/models/create_identity_response.rb +237 -0
  271. data/kinde_api/lib/kinde_api/models/create_identity_response_identity.rb +220 -0
  272. data/kinde_api/lib/kinde_api/models/create_meter_usage_record_request.rb +309 -0
  273. data/kinde_api/lib/kinde_api/models/create_meter_usage_record_response.rb +230 -0
  274. data/kinde_api/lib/kinde_api/models/create_organization_request.rb +175 -100
  275. data/kinde_api/lib/kinde_api/models/create_organization_response.rb +57 -50
  276. data/kinde_api/lib/kinde_api/models/create_organization_response_organization.rb +49 -42
  277. data/kinde_api/lib/kinde_api/models/create_organization_user_permission_request.rb +38 -41
  278. data/kinde_api/lib/kinde_api/models/create_organization_user_role_request.rb +38 -41
  279. data/kinde_api/lib/kinde_api/models/create_permission_request.rb +50 -49
  280. data/kinde_api/lib/kinde_api/models/create_property_request.rb +356 -0
  281. data/kinde_api/lib/kinde_api/models/create_property_response.rb +237 -0
  282. data/kinde_api/lib/kinde_api/models/create_property_response_property.rb +220 -0
  283. data/kinde_api/lib/kinde_api/models/create_role_request.rb +56 -53
  284. data/kinde_api/lib/kinde_api/models/create_roles_response.rb +239 -0
  285. data/kinde_api/lib/kinde_api/models/create_roles_response_role.rb +220 -0
  286. data/kinde_api/lib/kinde_api/models/create_subscriber_success_response.rb +38 -41
  287. data/kinde_api/lib/kinde_api/models/create_subscriber_success_response_subscriber.rb +38 -41
  288. data/kinde_api/lib/kinde_api/models/create_user_identity_request.rb +284 -0
  289. data/kinde_api/lib/kinde_api/models/create_user_request.rb +62 -50
  290. data/kinde_api/lib/kinde_api/models/create_user_request_identities_inner.rb +60 -52
  291. data/kinde_api/lib/kinde_api/models/create_user_request_identities_inner_details.rb +67 -40
  292. data/kinde_api/lib/kinde_api/models/create_user_request_profile.rb +54 -45
  293. data/kinde_api/lib/kinde_api/models/create_user_response.rb +53 -51
  294. data/kinde_api/lib/kinde_api/models/create_web_hook_request.rb +268 -0
  295. data/kinde_api/lib/kinde_api/models/create_webhook_response.rb +239 -0
  296. data/kinde_api/lib/kinde_api/models/create_webhook_response_webhook.rb +228 -0
  297. data/kinde_api/lib/kinde_api/models/delete_api_response.rb +228 -0
  298. data/kinde_api/lib/kinde_api/models/delete_environment_variable_response.rb +230 -0
  299. data/kinde_api/lib/kinde_api/models/delete_role_scope_response.rb +230 -0
  300. data/kinde_api/lib/kinde_api/models/delete_webhook_response.rb +230 -0
  301. data/kinde_api/lib/kinde_api/models/environment_variable.rb +261 -0
  302. data/kinde_api/lib/kinde_api/models/error.rb +44 -44
  303. data/kinde_api/lib/kinde_api/models/error_response.rb +40 -42
  304. data/kinde_api/lib/kinde_api/models/event_type.rb +255 -0
  305. data/kinde_api/lib/kinde_api/models/frontend/error.rb +230 -0
  306. data/kinde_api/lib/kinde_api/models/frontend/error_response.rb +221 -0
  307. data/kinde_api/lib/kinde_api/models/frontend/get_entitlement_response.rb +228 -0
  308. data/kinde_api/lib/kinde_api/models/frontend/get_entitlement_response_data.rb +229 -0
  309. data/kinde_api/lib/kinde_api/models/frontend/get_entitlement_response_data_entitlement.rb +295 -0
  310. data/kinde_api/lib/kinde_api/models/frontend/get_entitlements_response.rb +228 -0
  311. data/kinde_api/lib/kinde_api/models/frontend/get_entitlements_response_data.rb +244 -0
  312. data/kinde_api/lib/kinde_api/models/frontend/get_entitlements_response_data_entitlements_inner.rb +294 -0
  313. data/kinde_api/lib/kinde_api/models/frontend/get_entitlements_response_data_plans_inner.rb +240 -0
  314. data/kinde_api/lib/kinde_api/models/frontend/get_entitlements_response_metadata.rb +230 -0
  315. data/kinde_api/lib/kinde_api/models/frontend/get_feature_flags_response.rb +219 -0
  316. data/kinde_api/lib/kinde_api/models/frontend/get_feature_flags_response_data.rb +222 -0
  317. data/kinde_api/lib/kinde_api/models/frontend/get_feature_flags_response_data_feature_flags_inner.rb +259 -0
  318. data/kinde_api/lib/kinde_api/models/frontend/get_feature_flags_response_data_feature_flags_inner_value.rb +108 -0
  319. data/kinde_api/lib/kinde_api/models/frontend/get_user_permissions_response.rb +228 -0
  320. data/kinde_api/lib/kinde_api/models/frontend/get_user_permissions_response_data.rb +232 -0
  321. data/kinde_api/lib/kinde_api/models/frontend/get_user_permissions_response_data_permissions_inner.rb +240 -0
  322. data/kinde_api/lib/kinde_api/models/frontend/get_user_permissions_response_metadata.rb +230 -0
  323. data/kinde_api/lib/kinde_api/models/frontend/get_user_properties_response.rb +228 -0
  324. data/kinde_api/lib/kinde_api/models/frontend/get_user_properties_response_data.rb +222 -0
  325. data/kinde_api/lib/kinde_api/models/frontend/get_user_properties_response_data_properties_inner.rb +249 -0
  326. data/kinde_api/lib/kinde_api/models/frontend/get_user_properties_response_data_properties_inner_value.rb +107 -0
  327. data/kinde_api/lib/kinde_api/models/frontend/get_user_properties_response_metadata.rb +230 -0
  328. data/kinde_api/lib/kinde_api/models/frontend/get_user_roles_response.rb +228 -0
  329. data/kinde_api/lib/kinde_api/models/frontend/get_user_roles_response_data.rb +232 -0
  330. data/kinde_api/lib/kinde_api/models/frontend/get_user_roles_response_data_roles_inner.rb +240 -0
  331. data/kinde_api/lib/kinde_api/models/frontend/get_user_roles_response_metadata.rb +230 -0
  332. data/kinde_api/lib/kinde_api/models/frontend/portal_link.rb +220 -0
  333. data/kinde_api/lib/kinde_api/models/frontend/token_error_response.rb +230 -0
  334. data/kinde_api/lib/kinde_api/models/frontend/token_introspect.rb +262 -0
  335. data/kinde_api/lib/kinde_api/models/frontend/user_profile_v2.rb +323 -0
  336. data/kinde_api/lib/kinde_api/models/get_api_response.rb +239 -0
  337. data/kinde_api/lib/kinde_api/models/get_api_response_api.rb +272 -0
  338. data/kinde_api/lib/kinde_api/models/get_api_response_api_applications_inner.rb +285 -0
  339. data/kinde_api/lib/kinde_api/models/get_api_response_api_scopes_inner.rb +230 -0
  340. data/kinde_api/lib/kinde_api/models/get_api_scope_response.rb +239 -0
  341. data/kinde_api/lib/kinde_api/models/get_api_scopes_response.rb +241 -0
  342. data/kinde_api/lib/kinde_api/models/get_api_scopes_response_scopes_inner.rb +240 -0
  343. data/kinde_api/lib/kinde_api/models/get_apis_response.rb +251 -0
  344. data/kinde_api/lib/kinde_api/models/get_apis_response_apis_inner.rb +261 -0
  345. data/kinde_api/lib/kinde_api/models/get_apis_response_apis_inner_scopes_inner.rb +228 -0
  346. data/kinde_api/lib/kinde_api/models/get_application_response.rb +50 -49
  347. data/kinde_api/lib/kinde_api/models/get_application_response_application.rb +126 -57
  348. data/kinde_api/lib/kinde_api/models/get_applications_response.rb +57 -54
  349. data/kinde_api/lib/kinde_api/models/get_billing_agreements_response.rb +252 -0
  350. data/kinde_api/lib/kinde_api/models/get_billing_agreements_response_agreements_inner.rb +262 -0
  351. data/kinde_api/lib/kinde_api/models/get_billing_agreements_response_agreements_inner_entitlements_inner.rb +230 -0
  352. data/kinde_api/lib/kinde_api/models/get_billing_entitlements_response.rb +264 -0
  353. data/kinde_api/lib/kinde_api/models/get_billing_entitlements_response_entitlements_inner.rb +290 -0
  354. data/kinde_api/lib/kinde_api/models/get_billing_entitlements_response_plans_inner.rb +229 -0
  355. data/kinde_api/lib/kinde_api/models/get_business_response.rb +239 -0
  356. data/kinde_api/lib/kinde_api/models/get_business_response_business.rb +326 -0
  357. data/kinde_api/lib/kinde_api/models/get_categories_response.rb +251 -0
  358. data/kinde_api/lib/kinde_api/models/get_connections_response.rb +251 -0
  359. data/kinde_api/lib/kinde_api/models/get_environment_feature_flags_response.rb +57 -54
  360. data/kinde_api/lib/kinde_api/models/get_environment_response.rb +239 -0
  361. data/kinde_api/lib/kinde_api/models/get_environment_response_environment.rb +526 -0
  362. data/kinde_api/lib/kinde_api/models/get_environment_response_environment_background_color.rb +237 -0
  363. data/kinde_api/lib/kinde_api/models/get_environment_response_environment_link_color.rb +237 -0
  364. data/kinde_api/lib/kinde_api/models/get_environment_variable_response.rb +239 -0
  365. data/kinde_api/lib/kinde_api/models/get_environment_variables_response.rb +251 -0
  366. data/kinde_api/lib/kinde_api/models/get_event_response.rb +239 -0
  367. data/kinde_api/lib/kinde_api/models/get_event_response_event.rb +257 -0
  368. data/kinde_api/lib/kinde_api/models/get_event_types_response.rb +241 -0
  369. data/kinde_api/lib/kinde_api/models/get_identities_response.rb +251 -0
  370. data/kinde_api/lib/kinde_api/models/get_industries_response.rb +241 -0
  371. data/kinde_api/lib/kinde_api/models/get_industries_response_industries_inner.rb +230 -0
  372. data/kinde_api/lib/kinde_api/models/get_organization_feature_flags_response.rb +52 -50
  373. data/kinde_api/lib/kinde_api/models/get_organization_feature_flags_response_feature_flags_value.rb +52 -52
  374. data/kinde_api/lib/kinde_api/models/get_organization_response.rb +547 -0
  375. data/kinde_api/lib/kinde_api/models/get_organization_response_billing.rb +232 -0
  376. data/kinde_api/lib/kinde_api/models/get_organization_response_billing_agreements_inner.rb +230 -0
  377. data/kinde_api/lib/kinde_api/models/get_organization_users_response.rb +57 -54
  378. data/kinde_api/lib/kinde_api/models/get_organizations_response.rb +57 -54
  379. data/kinde_api/lib/kinde_api/models/get_organizations_user_permissions_response.rb +52 -50
  380. data/kinde_api/lib/kinde_api/models/get_organizations_user_roles_response.rb +57 -54
  381. data/kinde_api/lib/kinde_api/models/get_permissions_response.rb +57 -54
  382. data/kinde_api/lib/kinde_api/models/get_properties_response.rb +251 -0
  383. data/kinde_api/lib/kinde_api/models/get_property_values_response.rb +251 -0
  384. data/kinde_api/lib/kinde_api/models/get_redirect_callback_urls_response.rb +40 -42
  385. data/kinde_api/lib/kinde_api/models/get_role_response.rb +239 -0
  386. data/kinde_api/lib/kinde_api/models/get_role_response_role.rb +260 -0
  387. data/kinde_api/lib/kinde_api/models/get_roles_response.rb +57 -54
  388. data/kinde_api/lib/kinde_api/models/get_subscriber_response.rb +52 -50
  389. data/kinde_api/lib/kinde_api/models/get_subscribers_response.rb +57 -54
  390. data/kinde_api/lib/kinde_api/models/get_timezones_response.rb +241 -0
  391. data/kinde_api/lib/kinde_api/models/get_timezones_response_timezones_inner.rb +230 -0
  392. data/kinde_api/lib/kinde_api/models/get_user_mfa_response.rb +237 -0
  393. data/kinde_api/lib/kinde_api/models/get_user_mfa_response_mfa.rb +280 -0
  394. data/kinde_api/lib/kinde_api/models/get_user_sessions_response.rb +248 -0
  395. data/kinde_api/lib/kinde_api/models/get_user_sessions_response_sessions_inner.rb +331 -0
  396. data/kinde_api/lib/kinde_api/models/get_webhooks_response.rb +241 -0
  397. data/kinde_api/lib/kinde_api/models/identity.rb +300 -0
  398. data/kinde_api/lib/kinde_api/models/logout_redirect_urls.rb +60 -42
  399. data/kinde_api/lib/kinde_api/models/not_found_response.rb +219 -0
  400. data/kinde_api/lib/kinde_api/models/not_found_response_errors.rb +228 -0
  401. data/kinde_api/lib/kinde_api/models/organization_item_schema.rb +272 -0
  402. data/kinde_api/lib/kinde_api/models/organization_user.rb +122 -62
  403. data/kinde_api/lib/kinde_api/models/organization_user_permission.rb +73 -59
  404. data/kinde_api/lib/kinde_api/models/organization_user_permission_roles_inner.rb +47 -46
  405. data/kinde_api/lib/kinde_api/models/organization_user_role.rb +55 -50
  406. data/kinde_api/lib/kinde_api/models/organization_user_role_permissions.rb +55 -50
  407. data/kinde_api/lib/kinde_api/models/organization_user_role_permissions_permissions.rb +38 -41
  408. data/kinde_api/lib/kinde_api/models/permissions.rb +57 -54
  409. data/kinde_api/lib/kinde_api/models/property.rb +264 -0
  410. data/kinde_api/lib/kinde_api/models/property_value.rb +257 -0
  411. data/kinde_api/lib/kinde_api/models/read_env_logo_response.rb +242 -0
  412. data/kinde_api/lib/kinde_api/models/read_env_logo_response_logos_inner.rb +230 -0
  413. data/kinde_api/lib/kinde_api/models/read_logo_response.rb +242 -0
  414. data/kinde_api/lib/kinde_api/models/read_logo_response_logos_inner.rb +240 -0
  415. data/kinde_api/lib/kinde_api/models/redirect_callback_urls.rb +40 -42
  416. data/kinde_api/lib/kinde_api/models/replace_connection_request.rb +251 -0
  417. data/kinde_api/lib/kinde_api/models/replace_connection_request_options.rb +106 -0
  418. data/kinde_api/lib/kinde_api/models/replace_connection_request_options_one_of.rb +293 -0
  419. data/kinde_api/lib/kinde_api/models/replace_connection_request_options_one_of1.rb +313 -0
  420. data/kinde_api/lib/kinde_api/models/replace_logout_redirect_urls_request.rb +40 -42
  421. data/kinde_api/lib/kinde_api/models/replace_mfa_request.rb +276 -0
  422. data/kinde_api/lib/kinde_api/models/replace_organization_mfa_request.rb +249 -0
  423. data/kinde_api/lib/kinde_api/models/replace_redirect_callback_urls_request.rb +40 -42
  424. data/kinde_api/lib/kinde_api/models/role.rb +63 -53
  425. data/kinde_api/lib/kinde_api/models/role_permissions_response.rb +251 -0
  426. data/kinde_api/lib/kinde_api/models/role_scopes_response.rb +241 -0
  427. data/kinde_api/lib/kinde_api/models/roles.rb +68 -53
  428. data/kinde_api/lib/kinde_api/models/scopes.rb +250 -0
  429. data/kinde_api/lib/kinde_api/models/search_users_response.rb +241 -0
  430. data/kinde_api/lib/kinde_api/models/search_users_response_results_inner.rb +374 -0
  431. data/kinde_api/lib/kinde_api/models/set_user_password_request.rb +311 -0
  432. data/kinde_api/lib/kinde_api/models/subscriber.rb +63 -54
  433. data/kinde_api/lib/kinde_api/models/subscribers_subscriber.rb +71 -58
  434. data/kinde_api/lib/kinde_api/models/success_response.rb +47 -46
  435. data/kinde_api/lib/kinde_api/models/token_error_response.rb +44 -45
  436. data/kinde_api/lib/kinde_api/models/token_introspect.rb +63 -58
  437. data/kinde_api/lib/kinde_api/models/update_api_applications_request.rb +42 -44
  438. data/kinde_api/lib/kinde_api/models/update_api_applications_request_applications_inner.rb +48 -49
  439. data/kinde_api/lib/kinde_api/models/update_api_scope_request.rb +220 -0
  440. data/kinde_api/lib/kinde_api/models/update_application_request.rb +78 -54
  441. data/kinde_api/lib/kinde_api/models/update_application_tokens_request.rb +260 -0
  442. data/kinde_api/lib/kinde_api/models/update_applications_property_request.rb +224 -0
  443. data/kinde_api/lib/kinde_api/models/update_applications_property_request_value.rb +106 -0
  444. data/kinde_api/lib/kinde_api/models/update_business_request.rb +320 -0
  445. data/kinde_api/lib/kinde_api/models/update_category_request.rb +220 -0
  446. data/kinde_api/lib/kinde_api/models/update_connection_request.rb +251 -0
  447. data/kinde_api/lib/kinde_api/models/update_environement_feature_flag_override_request.rb +40 -43
  448. data/kinde_api/lib/kinde_api/models/update_environment_variable_request.rb +240 -0
  449. data/kinde_api/lib/kinde_api/models/update_environment_variable_response.rb +230 -0
  450. data/kinde_api/lib/kinde_api/models/update_identity_request.rb +220 -0
  451. data/kinde_api/lib/kinde_api/models/update_organization_properties_request.rb +225 -0
  452. data/kinde_api/lib/kinde_api/models/update_organization_request.rb +209 -91
  453. data/kinde_api/lib/kinde_api/models/update_organization_sessions_request.rb +284 -0
  454. data/kinde_api/lib/kinde_api/models/update_organization_users_request.rb +40 -42
  455. data/kinde_api/lib/kinde_api/models/update_organization_users_request_users_inner.rb +59 -55
  456. data/kinde_api/lib/kinde_api/models/update_organization_users_response.rb +76 -57
  457. data/kinde_api/lib/kinde_api/models/update_property_request.rb +265 -0
  458. data/kinde_api/lib/kinde_api/models/update_role_permissions_request.rb +40 -42
  459. data/kinde_api/lib/kinde_api/models/update_role_permissions_request_permissions_inner.rb +44 -45
  460. data/kinde_api/lib/kinde_api/models/update_role_permissions_response.rb +66 -56
  461. data/kinde_api/lib/kinde_api/models/update_roles_request.rb +61 -56
  462. data/kinde_api/lib/kinde_api/models/update_user_request.rb +75 -52
  463. data/kinde_api/lib/kinde_api/models/update_user_response.rb +75 -67
  464. data/kinde_api/lib/kinde_api/models/update_web_hook_request.rb +243 -0
  465. data/kinde_api/lib/kinde_api/models/update_webhook_response.rb +237 -0
  466. data/kinde_api/lib/kinde_api/models/update_webhook_response_webhook.rb +219 -0
  467. data/kinde_api/lib/kinde_api/models/user.rb +138 -97
  468. data/kinde_api/lib/kinde_api/models/user_identities_inner.rb +47 -46
  469. data/kinde_api/lib/kinde_api/models/user_identity.rb +44 -45
  470. data/kinde_api/lib/kinde_api/models/user_identity_result.rb +38 -41
  471. data/kinde_api/lib/kinde_api/models/user_profile_v2.rb +113 -79
  472. data/kinde_api/lib/kinde_api/models/users_response.rb +57 -54
  473. data/kinde_api/lib/kinde_api/models/users_response_users_inner.rb +138 -98
  474. data/kinde_api/lib/kinde_api/models/webhook.rb +267 -0
  475. data/kinde_api/lib/kinde_api/version.rb +12 -12
  476. data/kinde_api/lib/kinde_api.rb +188 -36
  477. data/kinde_api/spec/api/billing_agreements_api_spec.rb +62 -0
  478. data/kinde_api/spec/api/billing_entitlements_api_spec.rb +52 -0
  479. data/kinde_api/spec/api/billing_meter_usage_api_spec.rb +47 -0
  480. data/kinde_api/spec/api/connections_api_spec.rb +112 -0
  481. data/kinde_api/spec/api/environment_variables_api_spec.rb +95 -0
  482. data/kinde_api/spec/api/identities_api_spec.rb +72 -0
  483. data/kinde_api/spec/api/mfa_api_spec.rb +47 -0
  484. data/kinde_api/spec/api/properties_api_spec.rb +87 -0
  485. data/kinde_api/spec/api/property_categories_api_spec.rb +75 -0
  486. data/kinde_api/spec/api/search_api_spec.rb +52 -0
  487. data/kinde_api/spec/api/webhooks_api_spec.rb +106 -0
  488. data/kinde_api/spec/api_client_spec.rb +27 -21
  489. data/kinde_api/spec/configuration_spec.rb +14 -14
  490. data/kinde_api/spec/models/add_api_scope_request_spec.rb +40 -0
  491. data/kinde_api/spec/models/add_role_scope_request_spec.rb +34 -0
  492. data/kinde_api/spec/models/add_role_scope_response_spec.rb +40 -0
  493. data/kinde_api/spec/models/authorize_app_api_response_spec.rb +52 -0
  494. data/kinde_api/spec/models/category_spec.rb +40 -0
  495. data/kinde_api/spec/models/connection_connection_spec.rb +52 -0
  496. data/kinde_api/spec/models/connection_spec.rb +46 -0
  497. data/kinde_api/spec/models/create_api_scopes_response_scope_spec.rb +34 -0
  498. data/kinde_api/spec/models/create_api_scopes_response_spec.rb +46 -0
  499. data/kinde_api/spec/models/create_apis_response_api_spec.rb +34 -0
  500. data/kinde_api/spec/models/create_apis_response_spec.rb +46 -0
  501. data/kinde_api/spec/models/create_billing_agreement_request_spec.rb +52 -0
  502. data/kinde_api/spec/models/create_category_request_spec.rb +44 -0
  503. data/kinde_api/spec/models/create_category_response_category_spec.rb +34 -0
  504. data/kinde_api/spec/models/create_category_response_spec.rb +46 -0
  505. data/kinde_api/spec/models/create_connection_request_options_one_of1_spec.rb +82 -0
  506. data/kinde_api/spec/models/create_connection_request_options_one_of2_spec.rb +100 -0
  507. data/kinde_api/spec/models/create_connection_request_options_one_of_spec.rb +46 -0
  508. data/kinde_api/spec/models/create_connection_request_options_spec.rb +31 -0
  509. data/kinde_api/spec/models/create_connection_request_spec.rb +68 -0
  510. data/kinde_api/spec/models/create_connection_response_connection_spec.rb +34 -0
  511. data/kinde_api/spec/models/create_connection_response_spec.rb +46 -0
  512. data/kinde_api/spec/models/create_environment_variable_request_spec.rb +46 -0
  513. data/kinde_api/spec/models/create_environment_variable_response_environment_variable_spec.rb +34 -0
  514. data/kinde_api/spec/models/create_environment_variable_response_spec.rb +46 -0
  515. data/kinde_api/spec/models/create_identity_response_identity_spec.rb +34 -0
  516. data/kinde_api/spec/models/create_identity_response_spec.rb +46 -0
  517. data/kinde_api/spec/models/create_meter_usage_record_request_spec.rb +62 -0
  518. data/kinde_api/spec/models/create_meter_usage_record_response_spec.rb +40 -0
  519. data/kinde_api/spec/models/create_property_request_spec.rb +78 -0
  520. data/kinde_api/spec/models/create_property_response_property_spec.rb +34 -0
  521. data/kinde_api/spec/models/create_property_response_spec.rb +46 -0
  522. data/kinde_api/spec/models/create_roles_response_role_spec.rb +34 -0
  523. data/kinde_api/spec/models/create_roles_response_spec.rb +46 -0
  524. data/kinde_api/spec/models/create_user_identity_request_spec.rb +56 -0
  525. data/kinde_api/spec/models/create_web_hook_request_spec.rb +52 -0
  526. data/kinde_api/spec/models/create_webhook_response_spec.rb +46 -0
  527. data/kinde_api/spec/models/create_webhook_response_webhook_spec.rb +40 -0
  528. data/kinde_api/spec/models/delete_api_response_spec.rb +40 -0
  529. data/kinde_api/spec/models/delete_environment_variable_response_spec.rb +40 -0
  530. data/kinde_api/spec/models/delete_role_scope_response_spec.rb +40 -0
  531. data/kinde_api/spec/models/delete_webhook_response_spec.rb +40 -0
  532. data/kinde_api/spec/models/environment_variable_spec.rb +58 -0
  533. data/kinde_api/spec/models/event_type_spec.rb +58 -0
  534. data/kinde_api/spec/models/get_api_response_api_applications_inner_spec.rb +56 -0
  535. data/kinde_api/spec/models/get_api_response_api_scopes_inner_spec.rb +40 -0
  536. data/kinde_api/spec/models/get_api_response_api_spec.rb +64 -0
  537. data/kinde_api/spec/models/get_api_response_spec.rb +46 -0
  538. data/kinde_api/spec/models/get_api_scope_response_spec.rb +46 -0
  539. data/kinde_api/spec/models/get_api_scopes_response_scopes_inner_spec.rb +46 -0
  540. data/kinde_api/spec/models/get_api_scopes_response_spec.rb +46 -0
  541. data/kinde_api/spec/models/get_apis_response_apis_inner_scopes_inner_spec.rb +40 -0
  542. data/kinde_api/spec/models/get_apis_response_apis_inner_spec.rb +58 -0
  543. data/kinde_api/spec/models/get_apis_response_spec.rb +52 -0
  544. data/kinde_api/spec/models/get_billing_agreements_response_agreements_inner_entitlements_inner_spec.rb +40 -0
  545. data/kinde_api/spec/models/get_billing_agreements_response_agreements_inner_spec.rb +58 -0
  546. data/kinde_api/spec/models/get_billing_agreements_response_spec.rb +52 -0
  547. data/kinde_api/spec/models/get_billing_entitlements_response_entitlements_inner_spec.rb +76 -0
  548. data/kinde_api/spec/models/get_billing_entitlements_response_plans_inner_spec.rb +40 -0
  549. data/kinde_api/spec/models/get_billing_entitlements_response_spec.rb +58 -0
  550. data/kinde_api/spec/models/get_business_response_business_spec.rb +94 -0
  551. data/kinde_api/spec/models/get_business_response_spec.rb +46 -0
  552. data/kinde_api/spec/models/get_categories_response_spec.rb +52 -0
  553. data/kinde_api/spec/models/get_connections_response_spec.rb +52 -0
  554. data/kinde_api/spec/models/get_environment_response_environment_background_color_spec.rb +46 -0
  555. data/kinde_api/spec/models/get_environment_response_environment_link_color_spec.rb +46 -0
  556. data/kinde_api/spec/models/get_environment_response_environment_spec.rb +192 -0
  557. data/kinde_api/spec/models/get_environment_response_spec.rb +46 -0
  558. data/kinde_api/spec/models/get_environment_variable_response_spec.rb +46 -0
  559. data/kinde_api/spec/models/get_environment_variables_response_spec.rb +52 -0
  560. data/kinde_api/spec/models/get_event_response_event_spec.rb +58 -0
  561. data/kinde_api/spec/models/get_event_response_spec.rb +46 -0
  562. data/kinde_api/spec/models/get_event_types_response_spec.rb +46 -0
  563. data/kinde_api/spec/models/get_identities_response_spec.rb +52 -0
  564. data/kinde_api/spec/models/get_industries_response_industries_inner_spec.rb +40 -0
  565. data/kinde_api/spec/models/get_industries_response_spec.rb +46 -0
  566. data/kinde_api/spec/models/get_organization_response_billing_agreements_inner_spec.rb +40 -0
  567. data/kinde_api/spec/models/get_organization_response_billing_spec.rb +40 -0
  568. data/kinde_api/spec/models/get_organization_response_spec.rb +204 -0
  569. data/kinde_api/spec/models/get_properties_response_spec.rb +52 -0
  570. data/kinde_api/spec/models/get_property_values_response_spec.rb +52 -0
  571. data/kinde_api/spec/models/get_role_response_role_spec.rb +58 -0
  572. data/kinde_api/spec/models/get_role_response_spec.rb +46 -0
  573. data/kinde_api/spec/models/get_timezones_response_spec.rb +46 -0
  574. data/kinde_api/spec/models/get_timezones_response_timezones_inner_spec.rb +40 -0
  575. data/kinde_api/spec/models/get_user_mfa_response_mfa_spec.rb +70 -0
  576. data/kinde_api/spec/models/get_user_mfa_response_spec.rb +46 -0
  577. data/kinde_api/spec/models/get_user_sessions_response_sessions_inner_spec.rb +100 -0
  578. data/kinde_api/spec/models/get_user_sessions_response_spec.rb +52 -0
  579. data/kinde_api/spec/models/get_webhooks_response_spec.rb +46 -0
  580. data/kinde_api/spec/models/identity_spec.rb +82 -0
  581. data/kinde_api/spec/models/not_found_response_errors_spec.rb +40 -0
  582. data/kinde_api/spec/models/not_found_response_spec.rb +34 -0
  583. data/kinde_api/spec/models/organization_item_schema_spec.rb +64 -0
  584. data/kinde_api/spec/models/property_spec.rb +64 -0
  585. data/kinde_api/spec/models/property_value_spec.rb +58 -0
  586. data/kinde_api/spec/models/read_env_logo_response_logos_inner_spec.rb +40 -0
  587. data/kinde_api/spec/models/read_env_logo_response_spec.rb +46 -0
  588. data/kinde_api/spec/models/read_logo_response_logos_inner_spec.rb +46 -0
  589. data/kinde_api/spec/models/read_logo_response_spec.rb +46 -0
  590. data/kinde_api/spec/models/replace_connection_request_options_one_of1_spec.rb +88 -0
  591. data/kinde_api/spec/models/replace_connection_request_options_one_of_spec.rb +76 -0
  592. data/kinde_api/spec/models/replace_connection_request_options_spec.rb +31 -0
  593. data/kinde_api/spec/models/replace_connection_request_spec.rb +52 -0
  594. data/kinde_api/spec/models/replace_mfa_request_spec.rb +48 -0
  595. data/kinde_api/spec/models/replace_organization_mfa_request_spec.rb +38 -0
  596. data/kinde_api/spec/models/role_permissions_response_spec.rb +52 -0
  597. data/kinde_api/spec/models/role_scopes_response_spec.rb +46 -0
  598. data/kinde_api/spec/models/scopes_spec.rb +52 -0
  599. data/kinde_api/spec/models/search_users_response_results_inner_spec.rb +118 -0
  600. data/kinde_api/spec/models/search_users_response_spec.rb +46 -0
  601. data/kinde_api/spec/models/set_user_password_request_spec.rb +66 -0
  602. data/kinde_api/spec/models/update_api_scope_request_spec.rb +34 -0
  603. data/kinde_api/spec/models/update_application_tokens_request_spec.rb +58 -0
  604. data/kinde_api/spec/models/update_applications_property_request_spec.rb +34 -0
  605. data/kinde_api/spec/models/update_applications_property_request_value_spec.rb +31 -0
  606. data/kinde_api/spec/models/update_business_request_spec.rb +88 -0
  607. data/kinde_api/spec/models/update_category_request_spec.rb +34 -0
  608. data/kinde_api/spec/models/update_connection_request_spec.rb +52 -0
  609. data/kinde_api/spec/models/update_environment_variable_request_spec.rb +46 -0
  610. data/kinde_api/spec/models/update_environment_variable_response_spec.rb +40 -0
  611. data/kinde_api/spec/models/update_identity_request_spec.rb +34 -0
  612. data/kinde_api/spec/models/update_organization_properties_request_spec.rb +34 -0
  613. data/kinde_api/spec/models/update_organization_sessions_request_spec.rb +56 -0
  614. data/kinde_api/spec/models/update_property_request_spec.rb +52 -0
  615. data/kinde_api/spec/models/update_web_hook_request_spec.rb +46 -0
  616. data/kinde_api/spec/models/update_webhook_response_spec.rb +46 -0
  617. data/kinde_api/spec/models/update_webhook_response_webhook_spec.rb +34 -0
  618. data/kinde_api/spec/models/webhook_spec.rb +64 -0
  619. data/kinde_api/spec/spec_helper.rb +63 -61
  620. data/lib/kinde_sdk/client/entitlements.rb +86 -0
  621. data/lib/kinde_sdk/client/feature_flags.rb +246 -10
  622. data/lib/kinde_sdk/client/permissions.rb +197 -6
  623. data/lib/kinde_sdk/client/roles.rb +218 -0
  624. data/lib/kinde_sdk/client.rb +354 -14
  625. data/lib/kinde_sdk/configuration.rb +11 -1
  626. data/lib/kinde_sdk/current.rb +16 -0
  627. data/lib/kinde_sdk/engine.rb +11 -0
  628. data/lib/kinde_sdk/errors.rb +7 -0
  629. data/lib/kinde_sdk/internal/frontend_client.rb +111 -0
  630. data/lib/kinde_sdk/middleware.rb +16 -0
  631. data/lib/kinde_sdk/token_manager.rb +85 -0
  632. data/lib/kinde_sdk/token_store.rb +29 -0
  633. data/lib/kinde_sdk/version.rb +1 -1
  634. data/lib/kinde_sdk.rb +160 -25
  635. data/spec/examples.txt +29 -0
  636. data/spec/kinde_sdk_spec.rb +317 -98
  637. data/spec/spec_helper.rb +7 -4
  638. metadata +666 -10
@@ -1,26 +1,71 @@
1
- require "kinde_api"
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, :bearer_token, :tokens_hash, :expires_at
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
- set_hash_related_data(tokens_hash)
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
- expires_at.to_i > 0 && (expires_at <= Time.now.to_i)
60
+ TokenManager.token_expired?(@token_store)
18
61
  end
19
62
 
20
63
  def refresh_token
21
- new_tokens_hash = KindeSdk.refresh_token(tokens_hash)
22
- set_hash_related_data(new_tokens_hash)
23
- @kinde_api_client = KindeSdk.api_client(tokens_hash["access_token"])
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
- token = tokens_hash[token_type]
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
- def set_hash_related_data(tokens_hash)
52
- @tokens_hash = tokens_hash.transform_keys(&:to_sym)
53
- @bearer_token = @tokens_hash[:access_token]
54
- @expires_at = @tokens_hash[:expires_at]
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,7 @@
1
+ module KindeSdk
2
+ class Error < StandardError; end
3
+ class APIError < Error; end
4
+ class AuthenticationError < APIError; end
5
+ class AuthorizationError < APIError; end
6
+ class RateLimitError < APIError; end
7
+ 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