kinde_sdk 1.2.1 → 1.2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (241) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +128 -0
  3. data/README.md +12 -434
  4. data/kinde_api/README.md +98 -27
  5. data/kinde_api/docs/APIsApi.md +356 -0
  6. data/kinde_api/docs/AddAPIsRequest.md +20 -0
  7. data/kinde_api/docs/Api.md +28 -0
  8. data/kinde_api/docs/ApiApplicationsInner.md +24 -0
  9. data/kinde_api/docs/Apis.md +24 -0
  10. data/kinde_api/docs/Applications.md +22 -0
  11. data/kinde_api/docs/ApplicationsApi.md +368 -0
  12. data/kinde_api/docs/BusinessApi.md +183 -0
  13. data/kinde_api/docs/CallbacksApi.md +385 -25
  14. data/kinde_api/docs/CreateApplicationRequest.md +20 -0
  15. data/kinde_api/docs/CreateApplicationResponse.md +22 -0
  16. data/kinde_api/docs/CreateApplicationResponseApplication.md +22 -0
  17. data/kinde_api/docs/CreateFeatureFlagRequest.md +28 -0
  18. data/kinde_api/docs/CreateOrganizationRequest.md +3 -1
  19. data/kinde_api/docs/CreateOrganizationUserPermissionRequest.md +18 -0
  20. data/kinde_api/docs/EnvironmentsApi.md +23 -23
  21. data/kinde_api/docs/FeatureFlagsApi.md +19 -29
  22. data/kinde_api/docs/GetApplicationResponse.md +22 -0
  23. data/kinde_api/docs/GetApplicationResponseApplication.md +26 -0
  24. data/kinde_api/docs/GetApplicationsResponse.md +2 -2
  25. data/kinde_api/docs/{GetOrganizationsUsersResponse.md → GetOrganizationUsersResponse.md} +2 -2
  26. data/kinde_api/docs/GetOrganizationsUserPermissionsResponse.md +22 -0
  27. data/kinde_api/docs/GetPermissionsResponse.md +24 -0
  28. data/kinde_api/docs/GetRolesResponse.md +24 -0
  29. data/kinde_api/docs/GetSubscriberResponse.md +22 -0
  30. data/kinde_api/docs/GetSubscribersResponse.md +24 -0
  31. data/kinde_api/docs/IndustriesApi.md +81 -0
  32. data/kinde_api/docs/LogoutRedirectUrls.md +18 -0
  33. data/kinde_api/docs/OAuthApi.md +153 -4
  34. data/kinde_api/docs/Organization.md +3 -1
  35. data/kinde_api/docs/OrganizationUserPermission.md +26 -0
  36. data/kinde_api/docs/OrganizationUserPermissionRolesInner.md +20 -0
  37. data/kinde_api/docs/OrganizationUserRolePermissions.md +22 -0
  38. data/kinde_api/docs/OrganizationUserRolePermissionsPermissions.md +18 -0
  39. data/kinde_api/docs/OrganizationsApi.md +328 -32
  40. data/kinde_api/docs/PermissionsApi.md +84 -14
  41. data/kinde_api/docs/ReplaceLogoutRedirectURLsRequest.md +18 -0
  42. data/kinde_api/docs/ReplaceRedirectCallbackURLsRequest.md +18 -0
  43. data/kinde_api/docs/Role.md +24 -0
  44. data/kinde_api/docs/Roles.md +2 -0
  45. data/kinde_api/docs/RolesApi.md +309 -17
  46. data/kinde_api/docs/RolesPermissionResponseInner.md +24 -0
  47. data/kinde_api/docs/Subscriber.md +24 -0
  48. data/kinde_api/docs/SubscribersApi.md +12 -14
  49. data/kinde_api/docs/SubscribersSubscriber.md +26 -0
  50. data/kinde_api/docs/TimezonesApi.md +81 -0
  51. data/kinde_api/docs/TokenErrorResponse.md +20 -0
  52. data/kinde_api/docs/TokenIntrospect.md +26 -0
  53. data/kinde_api/docs/UpdateAPIApplicationsRequest.md +18 -0
  54. data/kinde_api/docs/UpdateAPIApplicationsRequestApplicationsInner.md +20 -0
  55. data/kinde_api/docs/UpdateApplicationRequest.md +24 -0
  56. data/kinde_api/docs/UpdateEnvironementFeatureFlagOverrideRequest.md +18 -0
  57. data/kinde_api/docs/UpdateOrganizationRequest.md +3 -1
  58. data/kinde_api/docs/UpdateOrganizationUsersRequest.md +1 -1
  59. data/kinde_api/docs/UpdateRolePermissionsRequest.md +18 -0
  60. data/kinde_api/docs/UpdateRolePermissionsRequestPermissionsInner.md +20 -0
  61. data/kinde_api/docs/UpdateRolePermissionsResponse.md +24 -0
  62. data/kinde_api/docs/UpdateRolesRequest.md +24 -0
  63. data/kinde_api/docs/UpdateUserResponse.md +30 -0
  64. data/kinde_api/docs/User.md +7 -7
  65. data/kinde_api/docs/UserIdentitiesInner.md +20 -0
  66. data/kinde_api/docs/UsersApi.md +93 -15
  67. data/kinde_api/docs/UsersResponse.md +1 -1
  68. data/kinde_api/docs/UsersResponseUsersInner.md +42 -0
  69. data/kinde_api/lib/kinde_api/api/apis_api.rb +347 -0
  70. data/kinde_api/lib/kinde_api/api/applications_api.rb +352 -0
  71. data/kinde_api/lib/kinde_api/api/business_api.rb +210 -0
  72. data/kinde_api/lib/kinde_api/api/callbacks_api.rb +394 -31
  73. data/kinde_api/lib/kinde_api/api/environments_api.rb +22 -18
  74. data/kinde_api/lib/kinde_api/api/feature_flags_api.rb +20 -61
  75. data/kinde_api/lib/kinde_api/api/industries_api.rb +85 -0
  76. data/kinde_api/lib/kinde_api/api/o_auth_api.rb +141 -2
  77. data/kinde_api/lib/kinde_api/api/organizations_api.rb +318 -25
  78. data/kinde_api/lib/kinde_api/api/permissions_api.rb +75 -12
  79. data/kinde_api/lib/kinde_api/api/roles_api.rb +297 -15
  80. data/kinde_api/lib/kinde_api/api/subscribers_api.rb +8 -11
  81. data/kinde_api/lib/kinde_api/api/timezones_api.rb +85 -0
  82. data/kinde_api/lib/kinde_api/api/users_api.rb +87 -11
  83. data/kinde_api/lib/kinde_api/api_client.rb +14 -7
  84. data/kinde_api/lib/kinde_api/configuration.rb +81 -5
  85. data/kinde_api/lib/kinde_api/models/add_apis_request.rb +238 -0
  86. data/kinde_api/lib/kinde_api/models/add_organization_users_request.rb +2 -0
  87. data/kinde_api/lib/kinde_api/models/add_organization_users_request_users_inner.rb +2 -0
  88. data/kinde_api/lib/kinde_api/models/add_organization_users_response.rb +2 -0
  89. data/kinde_api/lib/kinde_api/models/api.rb +271 -0
  90. data/kinde_api/lib/kinde_api/models/api_applications_inner.rb +246 -0
  91. data/kinde_api/lib/kinde_api/models/api_result.rb +2 -0
  92. data/kinde_api/lib/kinde_api/models/apis.rb +250 -0
  93. data/kinde_api/lib/kinde_api/models/applications.rb +237 -0
  94. data/kinde_api/lib/kinde_api/models/connected_apps_access_token.rb +2 -0
  95. data/kinde_api/lib/kinde_api/models/connected_apps_auth_url.rb +2 -0
  96. data/kinde_api/lib/kinde_api/models/create_application_request.rb +264 -0
  97. data/kinde_api/lib/kinde_api/models/create_application_response.rb +239 -0
  98. data/kinde_api/lib/kinde_api/models/create_application_response_application.rb +240 -0
  99. data/kinde_api/lib/kinde_api/models/create_feature_flag_request.rb +336 -0
  100. data/kinde_api/lib/kinde_api/models/create_organization_request.rb +16 -4
  101. data/kinde_api/lib/kinde_api/models/create_organization_response.rb +2 -0
  102. data/kinde_api/lib/kinde_api/models/create_organization_response_organization.rb +2 -0
  103. data/kinde_api/lib/kinde_api/models/{application.rb → create_organization_user_permission_request.rb} +13 -19
  104. data/kinde_api/lib/kinde_api/models/create_organization_user_role_request.rb +2 -0
  105. data/kinde_api/lib/kinde_api/models/create_permission_request.rb +2 -0
  106. data/kinde_api/lib/kinde_api/models/create_role_request.rb +2 -0
  107. data/kinde_api/lib/kinde_api/models/create_subscriber_success_response.rb +2 -0
  108. data/kinde_api/lib/kinde_api/models/create_subscriber_success_response_subscriber.rb +2 -0
  109. data/kinde_api/lib/kinde_api/models/create_user_request.rb +2 -0
  110. data/kinde_api/lib/kinde_api/models/create_user_request_identities_inner.rb +2 -0
  111. data/kinde_api/lib/kinde_api/models/create_user_request_identities_inner_details.rb +2 -0
  112. data/kinde_api/lib/kinde_api/models/create_user_request_profile.rb +2 -0
  113. data/kinde_api/lib/kinde_api/models/create_user_response.rb +2 -0
  114. data/kinde_api/lib/kinde_api/models/error.rb +2 -0
  115. data/kinde_api/lib/kinde_api/models/error_response.rb +2 -0
  116. data/kinde_api/lib/kinde_api/models/get_application_response.rb +239 -0
  117. data/kinde_api/lib/kinde_api/models/get_application_response_application.rb +260 -0
  118. data/kinde_api/lib/kinde_api/models/get_applications_response.rb +10 -8
  119. data/kinde_api/lib/kinde_api/models/get_environment_feature_flags_response.rb +2 -0
  120. data/kinde_api/lib/kinde_api/models/get_organization_feature_flags_response.rb +2 -0
  121. data/kinde_api/lib/kinde_api/models/get_organization_feature_flags_response_feature_flags_value.rb +2 -0
  122. data/kinde_api/lib/kinde_api/models/{get_organizations_users_response.rb → get_organization_users_response.rb} +5 -3
  123. data/kinde_api/lib/kinde_api/models/get_organizations_response.rb +2 -0
  124. data/kinde_api/lib/kinde_api/models/get_organizations_user_permissions_response.rb +241 -0
  125. data/kinde_api/lib/kinde_api/models/get_organizations_user_roles_response.rb +2 -0
  126. data/kinde_api/lib/kinde_api/models/get_permissions_response.rb +251 -0
  127. data/kinde_api/lib/kinde_api/models/get_redirect_callback_urls_response.rb +2 -0
  128. data/kinde_api/lib/kinde_api/models/get_roles_response.rb +251 -0
  129. data/kinde_api/lib/kinde_api/models/get_subscriber_response.rb +241 -0
  130. data/kinde_api/lib/kinde_api/models/get_subscribers_response.rb +251 -0
  131. data/kinde_api/lib/kinde_api/models/logout_redirect_urls.rb +222 -0
  132. data/kinde_api/lib/kinde_api/models/organization.rb +15 -4
  133. data/kinde_api/lib/kinde_api/models/organization_user.rb +2 -0
  134. data/kinde_api/lib/kinde_api/models/organization_user_permission.rb +257 -0
  135. data/kinde_api/lib/kinde_api/models/organization_user_permission_roles_inner.rb +228 -0
  136. data/kinde_api/lib/kinde_api/models/organization_user_role.rb +2 -0
  137. data/kinde_api/lib/kinde_api/models/organization_user_role_permissions.rb +237 -0
  138. data/kinde_api/lib/kinde_api/models/organization_user_role_permissions_permissions.rb +219 -0
  139. data/kinde_api/lib/kinde_api/models/permissions.rb +2 -0
  140. data/kinde_api/lib/kinde_api/models/redirect_callback_urls.rb +2 -0
  141. data/kinde_api/lib/kinde_api/models/replace_logout_redirect_urls_request.rb +222 -0
  142. data/kinde_api/lib/kinde_api/models/replace_redirect_callback_urls_request.rb +222 -0
  143. data/kinde_api/lib/kinde_api/models/role.rb +246 -0
  144. data/kinde_api/lib/kinde_api/models/roles.rb +13 -1
  145. data/kinde_api/lib/kinde_api/models/roles_permission_response_inner.rb +246 -0
  146. data/kinde_api/lib/kinde_api/models/subscriber.rb +246 -0
  147. data/kinde_api/lib/kinde_api/models/subscribers_subscriber.rb +255 -0
  148. data/kinde_api/lib/kinde_api/models/success_response.rb +2 -0
  149. data/kinde_api/lib/kinde_api/models/token_error_response.rb +230 -0
  150. data/kinde_api/lib/kinde_api/models/token_introspect.rb +262 -0
  151. data/kinde_api/lib/kinde_api/models/update_api_applications_request.rb +226 -0
  152. data/kinde_api/lib/kinde_api/models/update_api_applications_request_applications_inner.rb +235 -0
  153. data/kinde_api/lib/kinde_api/models/update_application_request.rb +254 -0
  154. data/kinde_api/lib/kinde_api/models/update_environement_feature_flag_override_request.rb +225 -0
  155. data/kinde_api/lib/kinde_api/models/update_organization_request.rb +16 -4
  156. data/kinde_api/lib/kinde_api/models/update_organization_users_request.rb +3 -1
  157. data/kinde_api/lib/kinde_api/models/update_organization_users_request_users_inner.rb +2 -0
  158. data/kinde_api/lib/kinde_api/models/update_organization_users_response.rb +2 -0
  159. data/kinde_api/lib/kinde_api/models/update_role_permissions_request.rb +222 -0
  160. data/kinde_api/lib/kinde_api/models/update_role_permissions_request_permissions_inner.rb +230 -0
  161. data/kinde_api/lib/kinde_api/models/update_role_permissions_response.rb +250 -0
  162. data/kinde_api/lib/kinde_api/models/update_roles_request.rb +260 -0
  163. data/kinde_api/lib/kinde_api/models/update_user_request.rb +2 -0
  164. data/kinde_api/lib/kinde_api/models/update_user_response.rb +280 -0
  165. data/kinde_api/lib/kinde_api/models/user.rb +37 -32
  166. data/kinde_api/lib/kinde_api/models/user_identities_inner.rb +228 -0
  167. data/kinde_api/lib/kinde_api/models/user_identity.rb +2 -0
  168. data/kinde_api/lib/kinde_api/models/user_identity_result.rb +2 -0
  169. data/kinde_api/lib/kinde_api/models/user_profile.rb +2 -0
  170. data/kinde_api/lib/kinde_api/models/user_profile_v2.rb +2 -0
  171. data/kinde_api/lib/kinde_api/models/users_response.rb +3 -1
  172. data/kinde_api/lib/kinde_api/models/users_response_users_inner.rb +348 -0
  173. data/kinde_api/lib/kinde_api.rb +47 -2
  174. data/kinde_api/spec/api/apis_api_spec.rb +95 -0
  175. data/kinde_api/spec/api/applications_api_spec.rb +98 -0
  176. data/kinde_api/spec/api/business_api_spec.rb +75 -0
  177. data/kinde_api/spec/api/callbacks_api_spec.rb +69 -5
  178. data/kinde_api/spec/api/environments_api_spec.rb +5 -5
  179. data/kinde_api/spec/api/feature_flags_api_spec.rb +4 -9
  180. data/kinde_api/spec/api/industries_api_spec.rb +48 -0
  181. data/kinde_api/spec/api/o_auth_api_spec.rb +28 -1
  182. data/kinde_api/spec/api/organizations_api_spec.rb +63 -8
  183. data/kinde_api/spec/api/permissions_api_spec.rb +16 -4
  184. data/kinde_api/spec/api/roles_api_spec.rb +57 -4
  185. data/kinde_api/spec/api/subscribers_api_spec.rb +3 -4
  186. data/kinde_api/spec/api/timezones_api_spec.rb +48 -0
  187. data/kinde_api/spec/api/users_api_spec.rb +17 -2
  188. data/kinde_api/spec/api_client_spec.rb +13 -2
  189. data/kinde_api/spec/models/{application_spec.rb → add_apis_request_spec.rb} +8 -8
  190. data/kinde_api/spec/models/api_applications_inner_spec.rb +52 -0
  191. data/kinde_api/spec/models/api_spec.rb +64 -0
  192. data/kinde_api/spec/models/apis_spec.rb +52 -0
  193. data/kinde_api/spec/models/applications_spec.rb +46 -0
  194. data/kinde_api/spec/models/create_application_request_spec.rb +44 -0
  195. data/kinde_api/spec/models/create_application_response_application_spec.rb +46 -0
  196. data/kinde_api/spec/models/create_application_response_spec.rb +46 -0
  197. data/kinde_api/spec/models/create_feature_flag_request_spec.rb +72 -0
  198. data/kinde_api/spec/models/create_organization_request_spec.rb +6 -0
  199. data/kinde_api/spec/models/create_organization_user_permission_request_spec.rb +34 -0
  200. data/kinde_api/spec/models/get_application_response_application_spec.rb +58 -0
  201. data/kinde_api/spec/models/get_application_response_spec.rb +46 -0
  202. data/kinde_api/spec/models/get_applications_response_spec.rb +1 -1
  203. data/kinde_api/spec/models/{get_organizations_users_response_spec.rb → get_organization_users_response_spec.rb} +6 -6
  204. data/kinde_api/spec/models/get_organizations_user_permissions_response_spec.rb +46 -0
  205. data/kinde_api/spec/models/get_permissions_response_spec.rb +52 -0
  206. data/kinde_api/spec/models/get_roles_response_spec.rb +52 -0
  207. data/kinde_api/spec/models/get_subscriber_response_spec.rb +46 -0
  208. data/kinde_api/spec/models/get_subscribers_response_spec.rb +52 -0
  209. data/kinde_api/spec/models/logout_redirect_urls_spec.rb +34 -0
  210. data/kinde_api/spec/models/organization_spec.rb +6 -0
  211. data/kinde_api/spec/models/organization_user_permission_roles_inner_spec.rb +40 -0
  212. data/kinde_api/spec/models/organization_user_permission_spec.rb +58 -0
  213. data/kinde_api/spec/models/organization_user_role_permissions_permissions_spec.rb +34 -0
  214. data/kinde_api/spec/models/organization_user_role_permissions_spec.rb +46 -0
  215. data/kinde_api/spec/models/replace_logout_redirect_urls_request_spec.rb +34 -0
  216. data/kinde_api/spec/models/replace_redirect_callback_urls_request_spec.rb +34 -0
  217. data/kinde_api/spec/models/role_spec.rb +52 -0
  218. data/kinde_api/spec/models/roles_permission_response_inner_spec.rb +52 -0
  219. data/kinde_api/spec/models/roles_spec.rb +6 -0
  220. data/kinde_api/spec/models/subscriber_spec.rb +52 -0
  221. data/kinde_api/spec/models/subscribers_subscriber_spec.rb +58 -0
  222. data/kinde_api/spec/models/token_error_response_spec.rb +40 -0
  223. data/kinde_api/spec/models/token_introspect_spec.rb +58 -0
  224. data/kinde_api/spec/models/update_api_applications_request_applications_inner_spec.rb +40 -0
  225. data/kinde_api/spec/models/update_api_applications_request_spec.rb +34 -0
  226. data/kinde_api/spec/models/update_application_request_spec.rb +52 -0
  227. data/kinde_api/spec/models/update_environement_feature_flag_override_request_spec.rb +34 -0
  228. data/kinde_api/spec/models/update_organization_request_spec.rb +6 -0
  229. data/kinde_api/spec/models/update_role_permissions_request_permissions_inner_spec.rb +40 -0
  230. data/kinde_api/spec/models/update_role_permissions_request_spec.rb +34 -0
  231. data/kinde_api/spec/models/update_role_permissions_response_spec.rb +52 -0
  232. data/kinde_api/spec/models/update_roles_request_spec.rb +52 -0
  233. data/kinde_api/spec/models/update_user_response_spec.rb +70 -0
  234. data/kinde_api/spec/models/user_identities_inner_spec.rb +40 -0
  235. data/kinde_api/spec/models/user_spec.rb +9 -9
  236. data/kinde_api/spec/models/users_response_users_inner_spec.rb +106 -0
  237. data/kinde_sdk.gemspec +1 -1
  238. data/lib/kinde_sdk/version.rb +1 -1
  239. data/spec/kinde_sdk_spec.rb +0 -46
  240. metadata +193 -12
  241. data/kinde_api/docs/Application.md +0 -20
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4813caa0071e90cbe5821db9c0f8c553d2affbd62a1d64071e241957591bb7cb
4
- data.tar.gz: 1802d0a2c465d51d358dcbdb497288eeedb2181ffe9ebf8e22877b332830b57d
3
+ metadata.gz: 0a84ffe92552e8ab43146d5fd7445edefc924495388368adae348ae48ba6d621
4
+ data.tar.gz: 779838b43100f0d9e78fe54199f7e9f26b9818f6fe18904529664b7de631f6d5
5
5
  SHA512:
6
- metadata.gz: fc3e8f2567082887624aabc0b407622f6296ac2495afe43befbc4608de1387ce050c67befe82044b9c8f802e8368a744613d324712b10906e6f99e1072592a29
7
- data.tar.gz: f6e9e510340d215d26877d20ac1e25ac2d34496738a7dbd711882b64c91ad57c90f0afb952abcb7112253fa9b34b9a4f67fbc32e931ca42a46940f374008faab
6
+ metadata.gz: 9469af65325f71dab96c2c901fc2ffa70258ed92f65841d5009f1dd67536d704ef917000638ff1e00eb17a3fb7edc6095fa1fecae66574d3c1837d72ba1491e4
7
+ data.tar.gz: a3cc75b2c027b5ff0d166f7bd54e942f7c7efa467586a175fb1f83412d3d7829d2ddb58cd4bf3eb7b1594019f85c6417bce0c3435b67c6ef4552ecf7793cbdb0
data/Gemfile.lock ADDED
@@ -0,0 +1,128 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ kinde_sdk (1.2.1)
5
+ faraday-follow_redirects
6
+ oauth2 (~> 2.0)
7
+ pkce_challenge
8
+ typhoeus (~> 1.0, >= 1.0.1)
9
+
10
+ GEM
11
+ remote: https://rubygems.org/
12
+ specs:
13
+ addressable (2.8.5)
14
+ public_suffix (>= 2.0.2, < 6.0)
15
+ ast (2.4.2)
16
+ base64 (0.1.1)
17
+ byebug (11.1.3)
18
+ coderay (1.1.3)
19
+ crack (0.4.5)
20
+ rexml
21
+ diff-lcs (1.5.0)
22
+ ethon (0.16.0)
23
+ ffi (>= 1.15.0)
24
+ faraday (2.7.11)
25
+ base64
26
+ faraday-net_http (>= 2.0, < 3.1)
27
+ ruby2_keywords (>= 0.0.4)
28
+ faraday-follow_redirects (0.3.0)
29
+ faraday (>= 1, < 3)
30
+ faraday-net_http (3.0.2)
31
+ ffi (1.16.3)
32
+ hashdiff (1.0.1)
33
+ hashie (5.0.0)
34
+ json (2.6.3)
35
+ jwt (2.7.1)
36
+ language_server-protocol (3.17.0.3)
37
+ method_source (1.0.0)
38
+ multi_xml (0.6.0)
39
+ oauth2 (2.0.9)
40
+ faraday (>= 0.17.3, < 3.0)
41
+ jwt (>= 1.0, < 3.0)
42
+ multi_xml (~> 0.5)
43
+ rack (>= 1.2, < 4)
44
+ snaky_hash (~> 2.0)
45
+ version_gem (~> 1.1)
46
+ parallel (1.23.0)
47
+ parser (3.2.2.4)
48
+ ast (~> 2.4.1)
49
+ racc
50
+ pkce_challenge (1.0.0)
51
+ pry (0.14.2)
52
+ coderay (~> 1.1)
53
+ method_source (~> 1.0)
54
+ pry-byebug (3.10.1)
55
+ byebug (~> 11.0)
56
+ pry (>= 0.13, < 0.15)
57
+ public_suffix (5.0.3)
58
+ racc (1.7.2)
59
+ rack (3.0.8)
60
+ rainbow (3.1.1)
61
+ rake (13.0.6)
62
+ regexp_parser (2.8.2)
63
+ rexml (3.2.6)
64
+ rspec (3.12.0)
65
+ rspec-core (~> 3.12.0)
66
+ rspec-expectations (~> 3.12.0)
67
+ rspec-mocks (~> 3.12.0)
68
+ rspec-core (3.12.2)
69
+ rspec-support (~> 3.12.0)
70
+ rspec-expectations (3.12.3)
71
+ diff-lcs (>= 1.2.0, < 2.0)
72
+ rspec-support (~> 3.12.0)
73
+ rspec-mocks (3.12.6)
74
+ diff-lcs (>= 1.2.0, < 2.0)
75
+ rspec-support (~> 3.12.0)
76
+ rspec-support (3.12.1)
77
+ rubocop (1.57.2)
78
+ json (~> 2.3)
79
+ language_server-protocol (>= 3.17.0)
80
+ parallel (~> 1.10)
81
+ parser (>= 3.2.2.4)
82
+ rainbow (>= 2.2.2, < 4.0)
83
+ regexp_parser (>= 1.8, < 3.0)
84
+ rexml (>= 3.2.5, < 4.0)
85
+ rubocop-ast (>= 1.28.1, < 2.0)
86
+ ruby-progressbar (~> 1.7)
87
+ unicode-display_width (>= 2.4.0, < 3.0)
88
+ rubocop-ast (1.30.0)
89
+ parser (>= 3.2.1.0)
90
+ rubocop-capybara (2.19.0)
91
+ rubocop (~> 1.41)
92
+ rubocop-factory_bot (2.24.0)
93
+ rubocop (~> 1.33)
94
+ rubocop-rake (0.6.0)
95
+ rubocop (~> 1.0)
96
+ rubocop-rspec (2.25.0)
97
+ rubocop (~> 1.40)
98
+ rubocop-capybara (~> 2.17)
99
+ rubocop-factory_bot (~> 2.22)
100
+ ruby-progressbar (1.13.0)
101
+ ruby2_keywords (0.0.5)
102
+ snaky_hash (2.0.1)
103
+ hashie
104
+ version_gem (~> 1.1, >= 1.1.1)
105
+ typhoeus (1.4.0)
106
+ ethon (>= 0.9.0)
107
+ unicode-display_width (2.5.0)
108
+ version_gem (1.1.3)
109
+ webmock (3.19.1)
110
+ addressable (>= 2.8.0)
111
+ crack (>= 0.3.2)
112
+ hashdiff (>= 0.4.0, < 2.0.0)
113
+
114
+ PLATFORMS
115
+ arm64-darwin-22
116
+
117
+ DEPENDENCIES
118
+ kinde_sdk!
119
+ pry-byebug
120
+ rake (~> 13.0.1)
121
+ rspec (~> 3.6, >= 3.6.0)
122
+ rubocop
123
+ rubocop-rake
124
+ rubocop-rspec
125
+ webmock
126
+
127
+ BUNDLED WITH
128
+ 2.4.21
data/README.md CHANGED
@@ -1,445 +1,23 @@
1
- # Kinde Ruby SDK
1
+ # Kinde Ruby SDK
2
2
 
3
- The Kinde Ruby SDK gem allows developers to integrate Kinde API into any ruby-based applications, Rails or non-Rails.
4
- The gem contains all the related oauth2 authorization, so you need only to integrate it properly.
5
- The gem contains 3 pre-built OAuth flows: **client credentials**, **authorization code** and **authorization code with PKCE code verifier**.
3
+ The Kinde SDK for Ruby.
6
4
 
7
- ## Register for Kinde
5
+ You can also use the Ruby starter kit [here](https://github.com/kinde-starter-kits/ruby-starter-kit).
8
6
 
9
- If you haven’t already got a Kinde account, register for free [here](http://app.kinde.com/register) (no credit card required).
7
+ [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](https://makeapullrequest.com) [![Kinde Docs](https://img.shields.io/badge/Kinde-Docs-eee?style=flat-square)](https://kinde.com/docs/developer-tools) [![Kinde Community](https://img.shields.io/badge/Kinde-Community-eee?style=flat-square)](https://thekindecommunity.slack.com)
10
8
 
11
- You need a Kinde domain to get started, e.g. yourapp.kinde.com.
9
+ ## Documentation
12
10
 
13
- ## Installation
11
+ For details on integrating this SDK into your project, head over to the [Kinde docs](https://kinde.com/docs/) and see the [Ruby SDK](https://kinde.com/docs/developer-tools/ruby-sdk) doc 👍🏼.
14
12
 
15
- Add this line into your Gemfile and run bundler:
16
- ```
17
- gem 'kinde_sdk', git: 'https://github.com/kinde-oss/kinde-ruby-sdk.git', branch: 'main'
18
- ```
19
- or install manually through gem command.
13
+ ## Publishing
20
14
 
21
- ## Getting started
15
+ The core team handles publishing.
22
16
 
23
- ### Kinde configuration
17
+ ## Contributing
24
18
 
25
- On the Kinde web app navigate to `Settings` in the left menu, then select `App keys` and find the `Callbacks` input field.
19
+ Please refer to Kinde’s [contributing guidelines](https://github.com/kinde-oss/.github/blob/489e2ca9c3307c2b2e098a885e22f2239116394a/CONTRIBUTING.md).
26
20
 
27
- Here you want to put in the callback URLs for your application, which should look something like this:
21
+ ## License
28
22
 
29
- - **Allowed callback URLs** - `http://localhost:3000/api/auth/kinde_callback`
30
- - **Allowed logout redirect URLs** - `http://localhost:3000`
31
-
32
- Make sure you press the Save button at the bottom of the page!
33
-
34
- _Note_: The `http://localhost:3000` is used as an example of local address, don't forget to add all the required addresses that you are going to use in any environments.
35
-
36
- ### Environments
37
-
38
- If you would like to use our Environments feature as part of your development process. You will need to create them first within your Kinde account, see the guide here.
39
- In this case you would use the Environment subdomain in the code block above.
40
-
41
- ### Configuring your app
42
-
43
- In a basic scenario it requires several steps to be made:
44
- 1. proper configuring of client credentials and domain
45
- 2. external service authorization
46
- 3. callback processing
47
- 4. bearer token receiving
48
- 5. Usage
49
-
50
- #### Integration
51
- The gem contains simple configurator which you can use whenever you want. For example, in a typical Rails-app it can be
52
- configured through initializer file:
53
-
54
- ```ruby
55
- # domain, client_id/secret and callback defined somewhere in your settings
56
-
57
- KindeSdk.configure do |c|
58
- c.domain = domain
59
- c.client_id = client_id
60
- c.client_secret = client_secret
61
- c.callback_url = callback_url
62
- c.logout_url = logout_url
63
- # c.scope = 'openid offline email profile' # default value
64
- # c.pkce_enabled = true # default value
65
- # c.authorize_url = '/oauth2/auth' # default value
66
- # c.token_url = '/oauth2/token' # default value
67
- # c.debugging = false # default value
68
- # c.auto_refresh_tokens = true # default value
69
- c.logger = Rails.logger
70
- end
71
- ```
72
- Snippet above contains all the possible configuration values.
73
- Here is detailed explanation on them:
74
-
75
- - `Domain` refers to your organization - for example, `your-biz.kinde.com`.
76
- - `Client id` and `Client secret` can be fetched from your Kinde application credentials in a setting section.
77
- - `Callback url` refers to your callback processing controller action. Remember that
78
- the url must be defined in allowed callback urls of your kinde organization's [application config](#Kinde-configuration).
79
- Callback url is an optional parameter, you can set the desired url in runtime, see examples below.
80
- - `Logout url` will be triggered after successful logout on kinde. Same as callback url, it should be
81
- defined in allowed logout urls of your kinde organization's application config
82
- - `Scope` is an oauth special parameter which is used to limit some rights. Probably, you don't need to change in.
83
- - `PKCE enabled` is a flag that can turn off PKCE auth flow. By default it is activated to improve your security.
84
- - `Authorize url` and `Token url` are paths to oauth2 methods in kinde. You don't need to change it.
85
- - `Debugging` set to true start writing verbose request logs. Might be useful while developing your application.
86
- - `Logger` might be set to any kind of loggers you are using. By default it is set to `Rails.logger` if gem is used in
87
- rails application or `Logger.new(STDOUT)` if it is not a rails app.
88
- - `auto_refresh_tokens` defines default behaviour on api instance method calls. If the config set to false, there will not be any auto refreshes during method calling,
89
- otherwise each time client will try to refresh expired tokens if `expires_at` are present (see [token expiration and refreshing](#token-expiration-and-refreshing) section).
90
-
91
- These variables can be handled with any system you want: .env files, settings.yml or any type of config files.
92
- For example, .env file (you can name variables by yourself):
93
- ```
94
- KINDE_DOMAIN=https://example.kinde.com
95
- KINDE_CLIENT_ID=qwe
96
- KINDE_CLIENT_SECRET=wert
97
- KINDE_CALLBACK_URL=http://localhost:3000/callback
98
- KINDE_LOGOUT_URL=http://localhost:3000/logout_callback
99
- ```
100
-
101
- can be used as:
102
- ```ruby
103
- KindeSdk.configure do |c|
104
- c.domain = ENV['KINDE_DOMAIN']
105
- c.client_id = ENV['KINDE_CLIENT_ID']
106
- # ....
107
- end
108
- ```
109
-
110
- #### Login / Register
111
- The next step is to authorize you in the Kinde.
112
- For this, you need to acquire auth url by calling:
113
- ```ruby
114
- KindeSdk.auth_url
115
- # =>
116
- {
117
- url: "https://<domain>/oauth2/auth?client_id=<client_id>&code_challenge=<generated code>&code_challenge_method=S256&redirect_uri=<redirect_uri>&response_type=code&scope=openid+offline+email+profile&state=<random string>",
118
- code_verifier: "<challenge verifier>"
119
- }
120
- ```
121
- By default, gem uses PKCE verification flow - this means that in your auth url will be added special `code challenge`
122
- param and the method returns verification string for the code, which should be used later in token acquiring request.
123
- You are free to disable PKCE by setting `pkce_enabled` to false in your configuration.
124
- In this case, `KindeSdk.auth_url` will return only url itself:
125
- ```ruby
126
- KindeSdk.auth_url
127
- # => {url: ......}
128
- ```
129
- If you are about to use PCKE, our recommendation to save code verifier output somewhere near your later tokens output.
130
-
131
- The `#auth_url` method can have another redirect url just in runtime. Use it with the argument:
132
- ```ruby
133
- KindeSdk.auth_url(redirect_uri: "your-another-desired-callback")
134
- ```
135
-
136
- You can put the link right in your web-application page or you can use it under the hood through redirection.
137
- After visiting the link you'll be redirected to Kinde's sign in/sign up form.
138
- And after authorizing in Kinde, you'll be redirected to callback url.
139
-
140
- #### Handle redirect
141
- Next step is to extract code from the callback redirection. Your callback endpoint should contain logic to call exchange method.
142
- Callback will be triggered with body, where will be code present. You are free to use the whole `params` object or to extract code from `params["code"]`.
143
-
144
- Next, it needs to be exchanged for the access and refresh tokens.
145
- `code` is the parameter which received in the callback endpoint, `code_verifier` (if PKCE enabled) should be used from previous step:
146
- ```ruby
147
- KindeSdk.fetch_tokens(code, code_verifier: code_verifier)
148
- # =>
149
- {"access_token"=>"eyJhbGciOiJSUzI1NiIsIm...",
150
- "expires_in"=>86399,
151
- "id_token"=>"eyJhbGciOiJSUz",
152
- "refresh_token"=>"eyJhbGciOiJSUz",
153
- "scope"=>"openid offline email profile",
154
- "token_type"=>"bearer"}
155
- ```
156
-
157
- This is your tokens - save the whole hash in your session, redis or any other storage and use it to build your client:
158
- ```ruby
159
- # In case of preventing cookie overflow, you need to limit what exactly your are saving.
160
- # Here is the required minimum of params. But in general you are able save it wherever you want to.
161
- # For example, in database, without any limiting.
162
- session[:kinde_auth] = KindeSdk.fetch_tokens(code).slice(:access_token, :id_token, :refresh_token, :expires_at)
163
- # ...
164
- client = KindeSdk.client(session[:kinde_auth]) # => #<KindeSdk::Client:0x00007faf31e5ecb8>
165
- ```
166
-
167
- The `#fetch_tokens` method can have another callback url (just lake the `#auth_url` method), just use it in a same way:
168
- ```ruby
169
- KindeSdk.fetch_tokens(code, redirect_uri: "your-another-desired-callback")
170
- ```
171
-
172
- #### Token expiration and refreshing
173
- For proper refreshing you'll need to use `access_token`, `refresh_token` and probably `expires_in` if you want to know is your access token still actual.
174
- Use these two methods to work with refreshing:
175
- ```ruby
176
- KindeSdk.token_expired?(session[:kinde_auth]) # => false
177
- KindeSdk.refresh_token(session[:kinde_auth]) # => {"access_token" => "qwe...", "refresh_token" => "fqw...", "expires_at"=>1685474405}
178
- ```
179
- or from your client instance:
180
- ```ruby
181
- client.token_expired? # => false
182
- client.refresh_token # => {"access_token" => "qwe...", ...., "expires_at"=>1685474405}
183
- ```
184
- If you are calling `#refresh_token` on a client instance, the instance token data will be automatically updated.
185
- If you are calling `KindeSdk#refresh_token`, you'll need to store new token data in your configured storage (redis/session/etc).
186
-
187
- **Warning!**
188
- Each instance_api method checking tokens for expiration if expires_at present in a hash.
189
- So, if in your backend code you are using some storage, be sure you are saving `client.tokens_hash` after each instance
190
- method calling, otherwise you will keep in your storage (session/redis/etc.) old data and unable to fetch new tokens.
191
-
192
- If you don't want auto refreshing behavior, set `auto_refresh_tokens` config to false.
193
-
194
- #### Audience
195
- An `audience` is the intended recipient of an access token - for example the API for your application.
196
- The audience argument can be passed to the Kinde `#auth_url` method to request an audience be added to the provided token:
197
- ```ruby
198
- KindeSdk.auth_url(audience: "https://your-app.kinde.com/api")
199
- ```
200
- For details on how to connect, see [Register an API](https://kinde.com/docs/developer-tools/register-an-api/)
201
-
202
- #### Overriding scope
203
- By default `KindeSdk` requests the following scopes:
204
-
205
- - profile
206
- - email
207
- - offline
208
- - openid
209
-
210
- You are able to change it - by configuring as mentioned at [Integration](#integration) or by direct param passing into `auth_url` method:
211
- ```ruby
212
- KindeSdk.auth_url(scope: "openid offline")
213
- ```
214
-
215
- #### Getting claims
216
- We have provided a helper to grab any claim from your id or access tokens. The helper defaults to access tokens:
217
- ```ruby
218
- client = KindeSdk.client(session[:kinde_auth])
219
- client.get_claim("aud") #=> {name: "aud", value: ['api.yourapp.com']}
220
- client.get_claim("scp") #=> {name: "scp", value: ["openid", "offline"]}
221
- ```
222
- By default claim data fetched from access_token, but you can also do it with id_token as well:
223
- ```ruby
224
- client.get_claim("some-claim", :id_token) # => {name: "some-claim", value: "some-data"}
225
- ```
226
-
227
- #### User permissions
228
- After a user signs in and they are verified, the token return includes permissions for that user.
229
- [User permissions](https://kinde.com/docs/user-management/user-permissions) are set in Kinde,
230
- but you must also configure your application to unlock these functions.
231
- ```
232
- permissions" => [
233
- "create:todos",
234
- "update:todos",
235
- "read:todos",
236
- "delete:todos",
237
- "create:tasks",
238
- "update:tasks",
239
- "read:tasks",
240
- "delete:tasks",
241
- ]
242
- ```
243
- We provide helper functions to more easily access permissions:
244
- ```ruby
245
- client = KindeSdk.client(session[:kinde_auth])
246
- client.get_permission("create:todos") # => {org_code: "org_1234", is_granted: true}
247
- client.permission_granted?("create:todos") # => true
248
- client.permission_granted?("create:orders") # => false
249
- ```
250
-
251
- #### Feature flags
252
- Kinde itself provides feature flag functionality - more [here](https://kinde.com/feature-flags/).
253
- So, the SDK provides methods to work with them.
254
- For example, you have data like below:
255
- ```json
256
- {
257
- "asd": { "t": "b", "v": true },
258
- "eeeeee": { "t": "i", "v": 111 },
259
- "qqq": { "t": "s", "v": "aa" }
260
- }
261
- ```
262
- where `t` refers to type (`b` - boolean, `i` - integer, `s` - string) and `v` refers to value.
263
- You can fetch these flags with methods below:
264
- ```ruby
265
- client.get_flag("asd") # => { code: "asd", is_default: false, type: "boolean", value: true }
266
- client.get_flag("eeeeee") # => { code: "eeeeee", is_default: false, type: "integer", value: 111 }
267
- client.get_flag("qqq") # => { code: "qqq", is_default: false, type: "string", value: "aa" }
268
- ```
269
- Note that trying to call undefined flag leads to exception.
270
-
271
- In addition to fetch existing flags, you can use fallbacks. For example:
272
- ```ruby
273
- client.get_flag("undefined", { default_value: true }) # => { code: "undefined", is_default: true, value: true }
274
- ```
275
-
276
- and with setting the type explicitly (output omitted except value):
277
- ```ruby
278
- client.get_flag("undefined_bool", { default_value: true }, "b") # => value = true
279
- client.get_flag("undefined_string", { default_value: "true" }, "s") # => value = "true"
280
- client.get_flag("undefined_int", { default_value: 111 }, "i") # => value = 111
281
- ```
282
- In the example above if you try to set default_value of different type (for example: `get_flag("flag", {default_value: 1}, "s")`), you'll get an exception.
283
-
284
- Also you have wrapper methods, for example:
285
- ```ruby
286
- client.get_boolean_flag("eeeeee") # => leads to exception "Flag eeeeee value type is different from requested type"
287
- client.get_boolean_flag("asd") # => true
288
- client.get_boolean_flag("undefined", false) # => false
289
-
290
- client.get_integer_flag("asd") # => exception "Flag asd value type is different from requested type"
291
- client.get_integer_flag("undefined", "true") # => exception "Flag undefined value type is different from requested type"
292
- client.get_integer_flag("eeeeee") # => 111
293
- client.get_integer_flag("undefined", 123) # => 123
294
-
295
- client.get_string_flag("qqq") # => "aa"
296
- client.get_string_flag("undefined", "111") # => "111"
297
- ```
298
-
299
- #### Client usage
300
- API part is mounted in the `KindeSdk::Client` instance, so the short usage is just simple as:
301
- ```ruby
302
- client.oauth.get_user
303
- client.users.create_user(args)
304
- client.organizations.get_organizations
305
- ```
306
- The method name will be the same as API module from sdk without `-Api` part in the end.
307
- Alternatively, you can initialize each API module by yourself:
308
- ```ruby
309
- # use initialized and configured api client
310
- api_client = KindeSdk.api_client(access_token)
311
- instance_client = KindeApi::UsersApi.new(api_client)
312
- instance_client.create_user(args)
313
- ```
314
-
315
- #### Logout
316
- For logout you need to call (in case of rails app) in your controller:
317
- ```ruby
318
- redirect_to KindeSdk.logout_url, allow_other_host: true
319
- ```
320
- Your app should handle logout callback url (which was configured separately).
321
- After calling redirect to logout_url (if set), Kinde redirect it back to logout callback path, where you need to clear your session:
322
- ```ruby
323
- # .......
324
- def logout_callback
325
- Rails.logger.info("logout callback successfully received")
326
- reset_session
327
- redirect_to root_path
328
- end
329
- # ......
330
- ```
331
- If you configured logout redirect url correct (e.g. added in the admin panel allowed logout redirect), you can receive
332
- a logout callback. Otherwise Kinde logout message will be shown.
333
-
334
- ### Organizations
335
- #### Create an organization
336
- To have a new organization created within your application, you will need to run something like:
337
- ```ruby
338
- client.organizations.create_organization(create_organization_request: {name: "new_org"})
339
- # or `client.organizations.create_organization` without name
340
- ```
341
-
342
- ### Sign up and sign in to organizations
343
- Kinde has a unique code for every organization.
344
- If you want a user to sign into a particular organization, call the `#auth_url` method with `org_code` param passing:
345
- ```ruby
346
- KindeSdk.auth_url(org_code: "org_1234", start_page: "registration") # to enforce new user creation form
347
- KindeSdk.auth_url(org_code: "org_1234") # to login by default
348
- ```
349
-
350
- Following authentication, Kinde provides a json web token (jwt) to your application.
351
- Along with the standard information we also include the `org_code` and the permissions for that organization (this is important as a user can belong to multiple organizations and have different permissions for each).
352
-
353
- Example of a returned token:
354
- ```ruby
355
- [
356
- {
357
- "aud" => [],
358
- "exp" => 1658475930,
359
- "iat" => 1658472329,
360
- "iss" => "https://your_subdomain.kinde.com",
361
- "jti" => "123457890",
362
- "org_code" => "org_1234",
363
- "permissions" => ["read:todos", "create:todos"],
364
- "scp" => [
365
- "openid",
366
- "profile",
367
- "email",
368
- "offline"
369
- ],
370
- "sub" => "kp:123457890",
371
- "feature_flags" => {
372
- "asd" => { "t" => "b", "v" => true },
373
- "eeeeee" => { "t" => "i", "v" => 111 },
374
- "qqq" => { "t" => "s", "v" => "aa" }
375
- }
376
- }
377
- ]
378
- ```
379
- The `id_token` will also contain an array of organizations that a user belongs to - this is useful if you wanted to build out an organization switcher for example:
380
- ```ruby
381
- client.get_claim("org_codes", :id_token) # => {name: "org_codes", value: ["org_1234", "org_5462"]}
382
- ```
383
-
384
- ### API reference
385
- Detailed API reference described in [KindeSDK README](kinde-sdk/README.md) and underlying description docs.
386
- Here are some selected examples of usage.
387
-
388
- #### Getting user info
389
-
390
- ```ruby
391
- KindeSdk.client(session[:kinde_auth]).oauth.get_user
392
- # => {id: ..., preferred_email: ..., provided_id: ..., last_name: ..., first_name: ...}
393
- ```
394
-
395
- #### Management API
396
- These sections below are part of management API. It should be configured first at your Kinde account
397
- [Here is detailed note about it](https://kinde.notion.site/Management-API-via-client_credentials-240e6fa548c144828d4981ddbaa0f6b2),
398
- you need to add `Machine to Machine` (M2M) application and use another grant type for authorization:
399
- ```ruby
400
- result = KindeSdk.client_credentials_access(
401
- client_id: ENV["KINDE_MANAGEMENT_CLIENT_ID"],
402
- client_secret: ENV["KINDE_MANAGEMENT_CLIENT_SECRET"]
403
- )
404
- # as an example of usage redis to save access token:
405
- $redis.set("kinde_m2m_token", result["access_token"], ex: result["expires_in"].to_i)
406
- ```
407
-
408
- ##### Organizations handling
409
- ```ruby
410
- client = KindeSdk.client({"access_token" => $redis.get("kinde_m2m_token")})
411
- # get organizations list:
412
- client.organizations.get_organizations
413
- # => {"code": "OK", "message": "Success", "next_token": "qweqweqwe", "organizations": [{"code": "org_casda123c", "name": "Default Organization", "is_default": true}]}
414
-
415
- # create new organization:
416
- client.organizations.create_organization(create_organization_request: {name: "new_org"})
417
- # this variant for more strict input params validation:
418
- # client.organizations.create_organization(create_organization_request: KindeApi::CreateOrganizationRequest.new(name: new_org_name))
419
- ```
420
-
421
- #### Create new user
422
- ```ruby
423
- client.users.create_user(
424
- create_user_request: {
425
- profile: {given_name: "AAAname", family_name: "AAAsurname"},
426
- identities: [{type: "email", details: {email: "aaexample@asd.com"}}]
427
- }
428
- )
429
- ```
430
- Alternatively, using model instances:
431
- ```ruby
432
- request = KindeApi::CreateUserRequest.new(
433
- profile: KindeApi::CreateUserRequestProfile.new(given_name: "AAAfirstname1", family_name: "AAAlastname1"),
434
- identities: [
435
- KindeApi::CreateUserRequestIdentitiesInner.new(type: "email", details: KindeApi::CreateUserRequestIdentitiesInnerDetails.new(email: "aaaaexample@example.com"))
436
- ]
437
- )
438
- client.users.create_user(create_user_request: request)
439
- ```
440
-
441
- #### Add organization users
442
-
443
- ```ruby
444
- client.organizations.add_organization_users(code: "org_1111", users: ["kp:12311...."])
445
- ```
23
+ By contributing to Kinde, you agree that your contributions will be licensed under its MIT License.