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,14 +1,14 @@
1
- # frozen_string_literal: true
1
+ =begin
2
+ #Kinde Management API
2
3
 
3
- # #Kinde Management API
4
- #
5
- # Provides endpoints to manage your Kinde Businesses
6
- #
7
- # The version of the OpenAPI document: 1
8
- # Contact: support@kinde.com
9
- # Generated by: https://openapi-generator.tech
10
- # OpenAPI Generator version: 7.0.0-SNAPSHOT
11
- #
4
+ # Provides endpoints to manage your Kinde Businesses. ## Intro ## How to use 1. [Set up and authorize a machine-to-machine (M2M) application](https://docs.kinde.com/developer-tools/kinde-api/connect-to-kinde-api/). 2. [Generate a test access token](https://docs.kinde.com/developer-tools/kinde-api/access-token-for-api/) 3. Test request any endpoint using the test token
5
+
6
+ The version of the OpenAPI document: 1
7
+ Contact: support@kinde.com
8
+ Generated by: https://openapi-generator.tech
9
+ OpenAPI Generator version: 6.4.0
10
+
11
+ =end
12
12
 
13
13
  # load the gem
14
14
  require 'kinde_api'
@@ -55,55 +55,57 @@ RSpec.configure do |config|
55
55
  mocks.verify_partial_doubles = true
56
56
  end
57
57
 
58
- # The settings below are suggested to provide a good initial experience
59
- # with RSpec, but feel free to customize to your heart's content.
60
- # # These two settings work together to allow you to limit a spec run
61
- # # to individual examples or groups you care about by tagging them with
62
- # # `:focus` metadata. When nothing is tagged with `:focus`, all examples
63
- # # get run.
64
- # config.filter_run :focus
65
- # config.run_all_when_everything_filtered = true
66
- #
67
- # # Allows RSpec to persist some state between runs in order to support
68
- # # the `--only-failures` and `--next-failure` CLI options. We recommend
69
- # # you configure your source control system to ignore this file.
70
- # config.example_status_persistence_file_path = "spec/examples.txt"
71
- #
72
- # # Limits the available syntax to the non-monkey patched syntax that is
73
- # # recommended. For more details, see:
74
- # # - http://rspec.info/blog/2012/06/rspecs-new-expectation-syntax/
75
- # # - http://www.teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/
76
- # # - http://rspec.info/blog/2014/05/notable-changes-in-rspec-3/#zero-monkey-patching-mode
77
- # config.disable_monkey_patching!
78
- #
79
- # # This setting enables warnings. It's recommended, but in some cases may
80
- # # be too noisy due to issues in dependencies.
81
- # config.warnings = true
82
- #
83
- # # Many RSpec users commonly either run the entire suite or an individual
84
- # # file, and it's useful to allow more verbose output when running an
85
- # # individual spec file.
86
- # if config.files_to_run.one?
87
- # # Use the documentation formatter for detailed output,
88
- # # unless a formatter has already been configured
89
- # # (e.g. via a command-line flag).
90
- # config.default_formatter = 'doc'
91
- # end
92
- #
93
- # # Print the 10 slowest examples and example groups at the
94
- # # end of the spec run, to help surface which specs are running
95
- # # particularly slow.
96
- # config.profile_examples = 10
97
- #
98
- # # Run specs in random order to surface order dependencies. If you find an
99
- # # order dependency and want to debug it, you can fix the order by providing
100
- # # the seed, which is printed after each run.
101
- # # --seed 1234
102
- # config.order = :random
103
- #
104
- # # Seed global randomization in this process using the `--seed` CLI option.
105
- # # Setting this allows you to use `--seed` to deterministically reproduce
106
- # # test failures related to randomization by passing the same `--seed` value
107
- # # as the one that triggered the failure.
108
- # Kernel.srand config.seed
58
+ # The settings below are suggested to provide a good initial experience
59
+ # with RSpec, but feel free to customize to your heart's content.
60
+ =begin
61
+ # These two settings work together to allow you to limit a spec run
62
+ # to individual examples or groups you care about by tagging them with
63
+ # `:focus` metadata. When nothing is tagged with `:focus`, all examples
64
+ # get run.
65
+ config.filter_run :focus
66
+ config.run_all_when_everything_filtered = true
67
+
68
+ # Allows RSpec to persist some state between runs in order to support
69
+ # the `--only-failures` and `--next-failure` CLI options. We recommend
70
+ # you configure your source control system to ignore this file.
71
+ config.example_status_persistence_file_path = "spec/examples.txt"
72
+
73
+ # Limits the available syntax to the non-monkey patched syntax that is
74
+ # recommended. For more details, see:
75
+ # - http://rspec.info/blog/2012/06/rspecs-new-expectation-syntax/
76
+ # - http://www.teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/
77
+ # - http://rspec.info/blog/2014/05/notable-changes-in-rspec-3/#zero-monkey-patching-mode
78
+ config.disable_monkey_patching!
79
+
80
+ # This setting enables warnings. It's recommended, but in some cases may
81
+ # be too noisy due to issues in dependencies.
82
+ config.warnings = true
83
+
84
+ # Many RSpec users commonly either run the entire suite or an individual
85
+ # file, and it's useful to allow more verbose output when running an
86
+ # individual spec file.
87
+ if config.files_to_run.one?
88
+ # Use the documentation formatter for detailed output,
89
+ # unless a formatter has already been configured
90
+ # (e.g. via a command-line flag).
91
+ config.default_formatter = 'doc'
92
+ end
93
+
94
+ # Print the 10 slowest examples and example groups at the
95
+ # end of the spec run, to help surface which specs are running
96
+ # particularly slow.
97
+ config.profile_examples = 10
98
+
99
+ # Run specs in random order to surface order dependencies. If you find an
100
+ # order dependency and want to debug it, you can fix the order by providing
101
+ # the seed, which is printed after each run.
102
+ # --seed 1234
103
+ config.order = :random
104
+
105
+ # Seed global randomization in this process using the `--seed` CLI option.
106
+ # Setting this allows you to use `--seed` to deterministically reproduce
107
+ # test failures related to randomization by passing the same `--seed` value
108
+ # as the one that triggered the failure.
109
+ Kernel.srand config.seed
110
+ =end
109
111
  end
@@ -0,0 +1,86 @@
1
+ module KindeSdk
2
+ class Client
3
+ module Entitlements
4
+ # Get all entitlements for the authenticated user
5
+ # Matches the JavaScript SDK API: getEntitlements(options?)
6
+ #
7
+ # @param options [Hash] Options for retrieving entitlements
8
+ # @option options [Boolean] :force_api (false) If true, calls the API to get fresh entitlements,
9
+ # otherwise uses existing getAllEntitlements method
10
+ # @return [Array] Array of entitlement objects
11
+ def get_entitlements(options = {})
12
+ # Entitlements are always fetched from API (they don't exist in tokens)
13
+ # The options parameter is kept for consistency with other methods
14
+ getAllEntitlements
15
+ end
16
+
17
+ # Check if user has billing entitlements
18
+ # Matches the JavaScript SDK API: hasBillingEntitlements(params)
19
+ #
20
+ # @param billing_entitlements [Array<String>] Array of billing entitlement price names to check
21
+ # @param options [Hash] Options for retrieving entitlements
22
+ # @return [Boolean] True if user has all specified billing entitlements, false otherwise
23
+ def has_billing_entitlements?(billing_entitlements, options = {})
24
+ return true if billing_entitlements.nil? || billing_entitlements.empty?
25
+
26
+ begin
27
+ entitlements = get_entitlements(options)
28
+ billing_entitlements_array = Array(billing_entitlements)
29
+
30
+ # Extract price names from entitlements (billing entitlements use price_name)
31
+ entitlement_price_names = entitlements.map do |ent|
32
+ ent.respond_to?(:price_name) ? ent.price_name : ent['price_name']
33
+ end.compact
34
+
35
+ billing_entitlements_array.all? { |price_name| entitlement_price_names.include?(price_name) }
36
+ rescue StandardError => e
37
+ log_error("Error checking billing entitlements: #{e.message}")
38
+ false
39
+ end
40
+ end
41
+
42
+ # Check if user has feature entitlements
43
+ #
44
+ # @param entitlement_keys [Array<String>] Array of entitlement feature keys to check
45
+ # @param options [Hash] Options for retrieving entitlements
46
+ # @return [Boolean] True if user has all specified entitlements, false otherwise
47
+ def has_entitlements?(entitlement_keys, options = {})
48
+ return true if entitlement_keys.nil? || entitlement_keys.empty?
49
+
50
+ begin
51
+ entitlements = get_entitlements(options)
52
+ entitlement_keys_array = Array(entitlement_keys)
53
+
54
+ # Extract feature keys from entitlements
55
+ entitlement_feature_keys = entitlements.map do |ent|
56
+ ent.respond_to?(:feature_key) ? ent.feature_key : ent['feature_key']
57
+ end.compact
58
+
59
+ entitlement_keys_array.all? { |key| entitlement_feature_keys.include?(key) }
60
+ rescue StandardError => e
61
+ log_error("Error checking entitlements: #{e.message}")
62
+ false
63
+ end
64
+ end
65
+
66
+ # JavaScript SDK compatible aliases
67
+ alias_method :hasBillingEntitlements, :has_billing_entitlements?
68
+ alias_method :hasEntitlements, :has_entitlements?
69
+
70
+ private
71
+
72
+ # Configurable logging that works with or without Rails
73
+ def log_error(message)
74
+ if defined?(Rails) && Rails.logger
75
+ Rails.logger.error(message)
76
+ elsif @logger
77
+ @logger.error(message)
78
+ elsif respond_to?(:logger) && logger
79
+ logger.error(message)
80
+ else
81
+ $stderr.puts "[KindeSdk] ERROR: #{message}"
82
+ end
83
+ end
84
+ end
85
+ end
86
+ end
@@ -1,7 +1,168 @@
1
1
  module KindeSdk
2
2
  class Client
3
3
  module FeatureFlags
4
- def get_flag(name, opts = {}, flag_type = nil)
4
+ # Get all feature flags for the authenticated user
5
+ # Matches the JavaScript SDK API: getFlags(options?)
6
+ #
7
+ # @param options [Hash] Options for retrieving feature flags
8
+ # @option options [Boolean] :force_api (false) If true, calls the API to get fresh flags,
9
+ # otherwise extracts from token claims. Useful for ensuring latest flags but may incur additional API calls
10
+ # @option options [Symbol] :token_type (:access_token) The token type to use for soft check (:access_token or :id_token)
11
+ # @return [Array] Array of flag objects with key, value, and type
12
+ # @example
13
+ # # Soft check (from token)
14
+ # client.get_flags
15
+ # # => [{ key: "feature_a", value: true, type: "boolean" }]
16
+ #
17
+ # # Hard check (from API)
18
+ # client.get_flags(force_api: true)
19
+ # # => [{ key: "feature_a", value: true, type: "boolean" }]
20
+ def get_flags(options = {})
21
+ # Handle legacy positional argument for backward compatibility
22
+ if options.is_a?(Symbol)
23
+ options = { token_type: options }
24
+ end
25
+
26
+ # Extract options with defaults - use member variable if not overridden
27
+ force_api = options[:force_api] || @force_api || false
28
+ token_type = options[:token_type] || :access_token
29
+
30
+ if force_api
31
+ # Hard check - call API for fresh flags
32
+ get_flags_from_api
33
+ else
34
+ # Soft check - extract from token claims
35
+ get_flags_from_token(token_type)
36
+ end
37
+ end
38
+
39
+ # Get a specific feature flag
40
+ # Supports both new API-style calls and legacy 3-parameter calls
41
+ #
42
+ # @param name [String] The flag name/key to retrieve
43
+ # @param options_or_opts [Hash] Options for retrieving flags OR legacy opts hash
44
+ # @param flag_type [String, nil] Legacy flag type parameter (for 3-param calls)
45
+ # @return [Hash, nil] Flag object or nil if not found
46
+ def get_flag(name, options_or_opts = {}, flag_type = nil)
47
+ # Handle legacy 3-parameter signature: get_flag(name, opts, flag_type)
48
+ if flag_type || (options_or_opts.is_a?(Hash) && options_or_opts.key?(:default_value) && !options_or_opts.key?(:force_api))
49
+ return get_flag_legacy(name, options_or_opts, flag_type)
50
+ end
51
+
52
+ get_flag_new_api(name, options_or_opts)
53
+ end
54
+
55
+ # Check if user has specific feature flags
56
+ #
57
+ # @param flag_conditions [Array] Array of flag keys or flag condition objects
58
+ # @param options [Hash] Options for retrieving flags (same as get_flags)
59
+ # @return [Boolean] True if user has all specified flags, false otherwise
60
+ def has_feature_flags?(flag_conditions, options = {})
61
+ return true if flag_conditions.nil? || flag_conditions.empty?
62
+
63
+ flags = get_flags(options)
64
+ flag_conditions_array = Array(flag_conditions)
65
+
66
+ flag_conditions_array.all? { |condition| check_flag_condition(condition, flags) }
67
+ end
68
+
69
+ # Legacy methods for backward compatibility
70
+ def get_boolean_flag(name, default_value = nil)
71
+ flag_getter_wrapper(name, "b", default_value)
72
+ end
73
+
74
+ def get_string_flag(name, default_value = nil)
75
+ flag_getter_wrapper(name, "s", default_value)
76
+ end
77
+
78
+ def get_integer_flag(name, default_value = nil)
79
+ flag_getter_wrapper(name, "i", default_value)
80
+ end
81
+
82
+ # PHP SDK compatible alias
83
+ def getFlags
84
+ # Use client's force_api setting, default to true for PHP SDK compatibility
85
+ force_api_setting = @force_api.nil? ? true : @force_api
86
+ get_flags(force_api: force_api_setting)
87
+ end
88
+
89
+ # JavaScript SDK compatible alias
90
+ alias_method :hasFeatureFlags, :has_feature_flags?
91
+
92
+ private
93
+
94
+ # New API-style get_flag implementation
95
+ # Handles the modern get_flag(name, options) signature
96
+ #
97
+ # @param name [String] The flag name/key to retrieve
98
+ # @param options [Hash] Options for retrieving flags
99
+ # @return [Hash, nil] Flag object or nil if not found
100
+ def get_flag_new_api(name, options)
101
+ flags = get_flags(options)
102
+ flag = find_flag_by_key(flags, name)
103
+
104
+ return nil unless flag
105
+
106
+ {
107
+ code: get_flag_key(flag),
108
+ type: get_flag_type(flag),
109
+ value: get_flag_value(flag),
110
+ is_default: false
111
+ }
112
+ end
113
+
114
+ # Check a single flag condition against available flags
115
+ #
116
+ # @param condition [Hash, String] Flag condition to check
117
+ # @param flags [Array] Available flags to check against
118
+ # @return [Boolean] True if condition is met, false otherwise
119
+ def check_flag_condition(condition, flags)
120
+ if condition.is_a?(Hash) && condition.key?(:flag) && condition.key?(:value)
121
+ # Custom condition with specific value
122
+ flag = find_flag_by_key(flags, condition[:flag])
123
+ flag && get_flag_value(flag) == condition[:value]
124
+ else
125
+ # Simple existence check
126
+ !!find_flag_by_key(flags, condition.to_s)
127
+ end
128
+ end
129
+
130
+ # Find a flag by its key in the flags array
131
+ #
132
+ # @param flags [Array] Array of flag objects
133
+ # @param key [String] The key to search for
134
+ # @return [Hash, nil] Flag object if found, nil otherwise
135
+ def find_flag_by_key(flags, key)
136
+ flags.find { |f| get_flag_key(f) == key.to_s }
137
+ end
138
+
139
+ # Extract the key from a flag object (handles both symbol and string keys)
140
+ #
141
+ # @param flag [Hash] Flag object
142
+ # @return [String] The flag key
143
+ def get_flag_key(flag)
144
+ flag[:key] || flag['key']
145
+ end
146
+
147
+ # Extract the value from a flag object (handles both symbol and string keys)
148
+ #
149
+ # @param flag [Hash] Flag object
150
+ # @return [Object] The flag value
151
+ def get_flag_value(flag)
152
+ flag[:value] || flag['value']
153
+ end
154
+
155
+ # Extract the type from a flag object (handles both symbol and string keys)
156
+ #
157
+ # @param flag [Hash] Flag object
158
+ # @return [String] The flag type
159
+ def get_flag_type(flag)
160
+ flag[:type] || flag['type']
161
+ end
162
+
163
+ # Legacy get_flag implementation for backward compatibility
164
+ # Handles the 3-parameter signature: get_flag(name, opts, flag_type)
165
+ def get_flag_legacy(name, opts = {}, flag_type = nil)
5
166
  res = get_claim("feature_flags")&.dig(:value, name)
6
167
  return try_default_flag(flag_type, name, opts) unless res
7
168
 
@@ -20,22 +181,84 @@ module KindeSdk
20
181
  }
21
182
  end
22
183
 
23
- def get_boolean_flag(name, default_value = nil)
24
- flag_getter_wrapper(name, "b", default_value)
25
- end
184
+ # Get feature flags from token claims (soft check)
185
+ # Matches JavaScript logic: token.feature_flags || token["x-hasura-feature-flags"] || null
186
+ #
187
+ # @param token_type [Symbol] The token type to use
188
+ # @return [Array] Array of flag objects
189
+ def get_flags_from_token(token_type = :access_token)
190
+ # First try standard feature_flags claim
191
+ flags = get_claim("feature_flags", token_type)&.dig(:value)
192
+
193
+ # Fallback to Hasura-specific flags (matches JS SDK)
194
+ if flags.nil? || flags.empty?
195
+ flags = get_claim("x-hasura-feature-flags", token_type)&.dig(:value)
196
+ end
197
+
198
+ return [] if flags.nil? || flags.empty?
26
199
 
27
- def get_string_flag(name, default_value = nil)
28
- flag_getter_wrapper(name, "s", default_value)
200
+ # Convert from token format to consistent array format
201
+ if flags.is_a?(Hash)
202
+ flags.map do |key, value|
203
+ {
204
+ key: key.to_s,
205
+ value: value.is_a?(Hash) ? value['v'] : value,
206
+ type: value.is_a?(Hash) ? map_flag_type(value['t']) : 'string'
207
+ }
208
+ end
209
+ else
210
+ []
211
+ end
29
212
  end
30
213
 
31
- def get_integer_flag(name, default_value = nil)
32
- flag_getter_wrapper(name, "i", default_value)
214
+ # Get feature flags from API (hard check)
215
+ # Matches JavaScript API endpoint and data extraction exactly
216
+ #
217
+ # @return [Array] Array of flag objects
218
+ def get_flags_from_api
219
+ unless token_store.bearer_token
220
+ return []
221
+ end
222
+
223
+ begin
224
+ # Use the same pagination pattern as getAllEntitlements
225
+ all_flags = paginate_all_results('feature_flags') do |starting_after|
226
+ user_feature_flags(page_size: 100, starting_after: starting_after)
227
+ end
228
+
229
+ # Extract flag data (matches JS: feature_flags?.map((flag) => ({ key, value, type })))
230
+ all_flags.map do |flag|
231
+ {
232
+ key: flag.respond_to?(:key) ? flag.key : flag['key'],
233
+ value: flag.respond_to?(:value) ? flag.value : flag['value'],
234
+ type: flag.respond_to?(:type) ? flag.type : flag['type']
235
+ }
236
+ end.compact
237
+ rescue KindeSdk::APIError => e
238
+ log_error("API Error getting feature flags: #{e.message}")
239
+ # Graceful fallback to token-based flags (matches JS behavior)
240
+ get_flags_from_token
241
+ rescue StandardError => e
242
+ log_error("Unexpected error getting feature flags from API: #{e.message}")
243
+ # Graceful fallback to token-based flags
244
+ get_flags_from_token
245
+ end
33
246
  end
34
247
 
35
- private
248
+ # Map token flag type codes to full names
249
+ def map_flag_type(type_code)
250
+ case type_code
251
+ when "b" then "boolean"
252
+ when "s" then "string"
253
+ when "i" then "integer"
254
+ when "o" then "object"
255
+ else "string"
256
+ end
257
+ end
36
258
 
259
+ # Legacy helper methods
37
260
  def flag_getter_wrapper(name, type, default_value = nil)
38
- v = get_flag(name, { default_value: default_value }, type)[:value]
261
+ v = get_flag_legacy(name, { default_value: default_value }, type)[:value]
39
262
  raise ArgumentError, "Flag #{name} value type is different from requested type" unless check_type(v, type)
40
263
 
41
264
  v
@@ -59,6 +282,19 @@ module KindeSdk
59
282
  def check_type(value, type)
60
283
  type == "s" && value.is_a?(String) || type == "b" && (value == false || value == true) || type == "i" && value.is_a?(Integer)
61
284
  end
285
+
286
+ # Configurable logging that works with or without Rails
287
+ def log_error(message)
288
+ if defined?(Rails) && Rails.logger
289
+ Rails.logger.error(message)
290
+ elsif @logger
291
+ @logger.error(message)
292
+ elsif respond_to?(:logger) && logger
293
+ logger.error(message)
294
+ else
295
+ $stderr.puts "[KindeSdk] ERROR: #{message}"
296
+ end
297
+ end
62
298
  end
63
299
  end
64
300
  end