auth0 5.17.0 → 5.19.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 (343) hide show
  1. checksums.yaml +4 -4
  2. data/.version +1 -1
  3. data/CHANGELOG.md +31 -0
  4. data/README.md +13 -1
  5. data/auth0.gemspec +2 -4
  6. data/lib/auth0/api/v2/refresh_tokens.rb +34 -0
  7. data/lib/auth0/api/v2/sessions.rb +43 -0
  8. data/lib/auth0/api/v2/users.rb +37 -5
  9. data/lib/auth0/api/v2.rb +4 -0
  10. data/lib/auth0/mixins/httpproxy.rb +47 -33
  11. data/lib/auth0/mixins/token_management.rb +17 -14
  12. data/lib/auth0/version.rb +1 -1
  13. metadata +10 -338
  14. data/.bundle/config +0 -4
  15. data/.devcontainer/Dockerfile +0 -19
  16. data/.devcontainer/devcontainer.json +0 -37
  17. data/.env.example +0 -2
  18. data/.github/CODEOWNERS +0 -1
  19. data/.github/ISSUE_TEMPLATE/Bug Report.yml +0 -67
  20. data/.github/ISSUE_TEMPLATE/Feature Request.yml +0 -53
  21. data/.github/ISSUE_TEMPLATE/config.yml +0 -8
  22. data/.github/PULL_REQUEST_TEMPLATE.md +0 -35
  23. data/.github/actions/get-prerelease/action.yml +0 -30
  24. data/.github/actions/get-release-notes/action.yml +0 -42
  25. data/.github/actions/get-version/action.yml +0 -21
  26. data/.github/actions/release-create/action.yml +0 -47
  27. data/.github/actions/rubygems-publish/action.yml +0 -30
  28. data/.github/actions/setup/action.yml +0 -32
  29. data/.github/actions/tag-exists/action.yml +0 -36
  30. data/.github/dependabot.yml +0 -13
  31. data/.github/stale.yml +0 -20
  32. data/.github/workflows/codeql.yml +0 -53
  33. data/.github/workflows/matrix.json +0 -3
  34. data/.github/workflows/release.yml +0 -22
  35. data/.github/workflows/ruby-release.yml +0 -72
  36. data/.github/workflows/semgrep.yml +0 -49
  37. data/.github/workflows/snyk.yml +0 -49
  38. data/.github/workflows/test.yml +0 -69
  39. data/.gitignore +0 -18
  40. data/.rspec +0 -3
  41. data/.rubocop.yml +0 -10
  42. data/.rubocop_todo.yml +0 -5
  43. data/.semgrepignore +0 -6
  44. data/.shiprc +0 -8
  45. data/.snyk +0 -11
  46. data/CODE_OF_CONDUCT.md +0 -3
  47. data/DEPLOYMENT.md +0 -61
  48. data/DEVELOPMENT.md +0 -35
  49. data/Dockerfile +0 -5
  50. data/EXAMPLES.md +0 -222
  51. data/Gemfile +0 -20
  52. data/Gemfile.lock +0 -279
  53. data/Guardfile +0 -37
  54. data/RUBYGEM.md +0 -9
  55. data/Rakefile +0 -31
  56. data/codecov.yml +0 -22
  57. data/examples/ruby-api/.env.example +0 -2
  58. data/examples/ruby-api/.gitignore +0 -80
  59. data/examples/ruby-api/Gemfile +0 -9
  60. data/examples/ruby-api/Gemfile.lock +0 -33
  61. data/examples/ruby-api/README.md +0 -24
  62. data/examples/ruby-api/config.ru +0 -2
  63. data/examples/ruby-api/main.rb +0 -33
  64. data/examples/ruby-on-rails-api/.env.example +0 -2
  65. data/examples/ruby-on-rails-api/.gitignore +0 -18
  66. data/examples/ruby-on-rails-api/Gemfile +0 -48
  67. data/examples/ruby-on-rails-api/README.md +0 -25
  68. data/examples/ruby-on-rails-api/Rakefile +0 -6
  69. data/examples/ruby-on-rails-api/app/assets/images/.keep +0 -0
  70. data/examples/ruby-on-rails-api/app/assets/javascripts/application.js +0 -16
  71. data/examples/ruby-on-rails-api/app/assets/stylesheets/application.css +0 -15
  72. data/examples/ruby-on-rails-api/app/controllers/application_controller.rb +0 -8
  73. data/examples/ruby-on-rails-api/app/controllers/concerns/.keep +0 -0
  74. data/examples/ruby-on-rails-api/app/controllers/ping_controller.rb +0 -6
  75. data/examples/ruby-on-rails-api/app/controllers/secured_ping_controller.rb +0 -11
  76. data/examples/ruby-on-rails-api/app/helpers/application_helper.rb +0 -3
  77. data/examples/ruby-on-rails-api/app/mailers/.keep +0 -0
  78. data/examples/ruby-on-rails-api/app/models/.keep +0 -0
  79. data/examples/ruby-on-rails-api/app/models/User.rb +0 -5
  80. data/examples/ruby-on-rails-api/app/models/concerns/.keep +0 -0
  81. data/examples/ruby-on-rails-api/app/views/layouts/application.html.erb +0 -14
  82. data/examples/ruby-on-rails-api/bin/bundle +0 -3
  83. data/examples/ruby-on-rails-api/bin/rails +0 -4
  84. data/examples/ruby-on-rails-api/bin/rake +0 -4
  85. data/examples/ruby-on-rails-api/bin/setup +0 -29
  86. data/examples/ruby-on-rails-api/config/application.rb +0 -23
  87. data/examples/ruby-on-rails-api/config/boot.rb +0 -4
  88. data/examples/ruby-on-rails-api/config/database.yml +0 -27
  89. data/examples/ruby-on-rails-api/config/environment.rb +0 -5
  90. data/examples/ruby-on-rails-api/config/environments/development.rb +0 -37
  91. data/examples/ruby-on-rails-api/config/environments/production.rb +0 -83
  92. data/examples/ruby-on-rails-api/config/environments/test.rb +0 -41
  93. data/examples/ruby-on-rails-api/config/initializers/backtrace_silencers.rb +0 -7
  94. data/examples/ruby-on-rails-api/config/initializers/cookies_serializer.rb +0 -3
  95. data/examples/ruby-on-rails-api/config/initializers/dotenv.rb +0 -4
  96. data/examples/ruby-on-rails-api/config/initializers/filter_parameter_logging.rb +0 -4
  97. data/examples/ruby-on-rails-api/config/initializers/inflections.rb +0 -16
  98. data/examples/ruby-on-rails-api/config/initializers/knock.rb +0 -35
  99. data/examples/ruby-on-rails-api/config/initializers/mime_types.rb +0 -4
  100. data/examples/ruby-on-rails-api/config/initializers/session_store.rb +0 -3
  101. data/examples/ruby-on-rails-api/config/initializers/wrap_parameters.rb +0 -14
  102. data/examples/ruby-on-rails-api/config/locales/en.yml +0 -23
  103. data/examples/ruby-on-rails-api/config/routes.rb +0 -58
  104. data/examples/ruby-on-rails-api/config/secrets.yml +0 -28
  105. data/examples/ruby-on-rails-api/config.ru +0 -4
  106. data/examples/ruby-on-rails-api/db/schema.rb +0 -15
  107. data/examples/ruby-on-rails-api/db/seeds.rb +0 -7
  108. data/examples/ruby-on-rails-api/lib/assets/.keep +0 -0
  109. data/examples/ruby-on-rails-api/lib/tasks/.keep +0 -0
  110. data/examples/ruby-on-rails-api/log/.keep +0 -0
  111. data/examples/ruby-on-rails-api/public/404.html +0 -67
  112. data/examples/ruby-on-rails-api/public/422.html +0 -67
  113. data/examples/ruby-on-rails-api/public/500.html +0 -66
  114. data/examples/ruby-on-rails-api/public/favicon.ico +0 -0
  115. data/examples/ruby-on-rails-api/public/robots.txt +0 -5
  116. data/examples/ruby-on-rails-api/test/controllers/.keep +0 -0
  117. data/examples/ruby-on-rails-api/test/fixtures/.keep +0 -0
  118. data/examples/ruby-on-rails-api/test/helpers/.keep +0 -0
  119. data/examples/ruby-on-rails-api/test/integration/.keep +0 -0
  120. data/examples/ruby-on-rails-api/test/mailers/.keep +0 -0
  121. data/examples/ruby-on-rails-api/test/models/.keep +0 -0
  122. data/examples/ruby-on-rails-api/test/ping_controller_test.rb +0 -8
  123. data/examples/ruby-on-rails-api/test/secured_ping_controller_test.rb +0 -26
  124. data/examples/ruby-on-rails-api/test/test_helper.rb +0 -16
  125. data/opslevel.yml +0 -5
  126. data/publish_rubygem.sh +0 -10
  127. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_change_password/should_trigger_a_password_reset.yml +0 -93
  128. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_login_with_resource_owner/should_fail_with_an_incorrect_email.yml +0 -85
  129. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_login_with_resource_owner/should_fail_with_an_incorrect_password.yml +0 -85
  130. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_login_with_resource_owner/should_fail_with_an_invalid_audience.yml +0 -86
  131. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_login_with_resource_owner/should_login_successfully_with_a_custom_audience.yml +0 -87
  132. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_login_with_resource_owner/should_login_successfully_with_a_default_scope.yml +0 -88
  133. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_saml_metadata/should_retrieve_SAML_metadata.yml +0 -110
  134. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_userinfo/should_fail_as_not_authorized.yml +0 -94
  135. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_userinfo/should_return_the_userinfo.yml +0 -176
  136. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_wsfed_metadata/should_retrieve_WSFED_metadata.yml +0 -98
  137. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/create_test_user.yml +0 -93
  138. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/delete_test_user.yml +0 -72
  139. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Blacklists/_add_token_to_blacklist/should_add_a_token_to_the_blacklist.yml +0 -74
  140. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Blacklists/_blacklisted_tokens/should_get_the_added_token_from_the_blacklist.yml +0 -74
  141. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/_client_grants/should_return_at_least_1_result.yml +0 -78
  142. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/_client_grants/should_return_the_test_client_grant.yml +0 -78
  143. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/_delete_client_grant/should_delete_the_test_client_grant.yml +0 -72
  144. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/_patch_client_grant/should_update_the_test_client_grant.yml +0 -76
  145. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/create_test_client.yml +0 -80
  146. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/create_test_client_grant.yml +0 -76
  147. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/delete_test_client.yml +0 -72
  148. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/delete_test_client_grant.yml +0 -72
  149. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_client/_filters/should_exclude_and_include_fields_properly.yml +0 -78
  150. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_client/_filters/should_include_the_specified_fields.yml +0 -74
  151. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_client/should_get_the_test_client.yml +0 -78
  152. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_clients/_filters/should_exclude_fields_not_specified.yml +0 -79
  153. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_clients/_filters/should_exclude_the_specified_fields.yml +0 -272
  154. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_clients/_filters/should_include_the_specified_fields.yml +0 -88
  155. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_clients/_filters/should_paginate_results.yml +0 -79
  156. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_clients/should_get_at_least_one_client.yml +0 -271
  157. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_delete_client/should_delete_the_test_client_without_an_error.yml +0 -72
  158. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_patch_client/should_update_the_client_with_the_correct_attributes.yml +0 -81
  159. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/create_test_client.yml +0 -81
  160. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_connection/_filters/should_exclude_the_fields_indicated.yml +0 -74
  161. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_connection/_filters/should_include_the_fields_indicated.yml +0 -74
  162. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_connection/should_find_the_correct_connection.yml +0 -74
  163. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_connections/_filters/should_include_previously-created_connection_when_filtered.yml +0 -78
  164. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_connections/_filters/should_should_exclude_the_fields_indicated_from_filtered_results.yml +0 -78
  165. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_connections/_filters/should_should_include_the_fields_indicated_from_filtered_results.yml +0 -78
  166. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_connections/should_include_the_previously_created_connection.yml +0 -79
  167. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_connections/should_not_be_empty.yml +0 -79
  168. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_delete_connection/should_delete_the_connection.yml +0 -74
  169. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_delete_connection_user/should_delete_the_user_created.yml +0 -148
  170. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_update_connection/should_update_the_connection.yml +0 -76
  171. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/create_test_connection.yml +0 -76
  172. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/create_test_user.yml +0 -76
  173. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_DeviceCredentials/create_test_credential.yml +0 -72
  174. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_DeviceCredentials/create_test_user.yml +0 -76
  175. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_DeviceCredentials/delete_test_user.yml +0 -72
  176. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Emails/_configure_provider/should_configure_a_new_email_provider.yml +0 -72
  177. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Emails/_delete_provider/should_delete_the_existing_email_provider_without_an_error.yml +0 -72
  178. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Emails/_delete_provider/should_throw_an_error_trying_to_get_the_email_provider.yml +0 -69
  179. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Emails/_get_provider/_filters/should_get_the_existing_email_provider_with_specific_fields.yml +0 -69
  180. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Emails/_get_provider/_filters/should_get_the_existing_email_provider_without_specific_fields.yml +0 -69
  181. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Emails/_get_provider/should_get_the_existing_email_provider.yml +0 -69
  182. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Emails/_update_provider/should_update_the_existing_email_provider.yml +0 -71
  183. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Emails/delete_existing_provider.yml +0 -72
  184. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/_export_users_and_get_job/should_create_an_export_users_job_successfully.yml +0 -76
  185. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/_export_users_and_get_job/should_get_the_export_users_job.yml +0 -147
  186. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/_import_users_and_get_job/should_create_an_import_users_job_successfully.yml +0 -81
  187. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/_import_users_and_get_job/should_get_the_import_users_job.yml +0 -152
  188. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/_send_verification_email_and_get_job/should_create_a_new_verification_email_job.yml +0 -149
  189. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/_send_verification_email_and_get_job/should_get_the_completed_verification_email.yml +0 -220
  190. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/_send_verification_email_and_get_job/should_reject_an_invalid_client_id.yml +0 -146
  191. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/delete_imported_user.yml +0 -143
  192. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/search_for_connection_id.yml +0 -79
  193. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/_log/should_match_the_created_log_entry.yml +0 -293
  194. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/_log/should_not_be_empty.yml +0 -293
  195. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/_logs/_filters/should_exclude_fields_not_specified.yml +0 -74
  196. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/_logs/_filters/should_exclude_the_specified_fields.yml +0 -75
  197. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/_logs/_filters/should_have_one_log_entry.yml +0 -77
  198. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/_logs/_filters/should_include_the_specified_fields.yml +0 -74
  199. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/_logs/_from/should_take_one_log_entry.yml +0 -298
  200. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/create_test_user.yml +0 -76
  201. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/delete_test_disabled_rule.yml +0 -72
  202. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/delete_test_enabled_rule.yml +0 -72
  203. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/delete_test_user.yml +0 -72
  204. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ResourceServers/_delete_resource_server/should_delete_the_test_server_without_an_error.yml +0 -72
  205. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ResourceServers/_patch_resource_server/should_update_the_resource_server_with_the_correct_attributes.yml +0 -76
  206. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ResourceServers/_resource_server/should_get_the_test_server.yml +0 -74
  207. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ResourceServers/_resource_servers/should_get_the_test_server.yml +0 -182
  208. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ResourceServers/_resource_servers/should_return_at_least_1_result.yml +0 -182
  209. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ResourceServers/_resource_servers/should_return_the_first_page_of_one_result.yml +0 -171
  210. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ResourceServers/create_test_server.yml +0 -76
  211. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ResourceServers/delete_test_server.yml +0 -72
  212. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_add_role_permissions/should_add_a_Permission_to_the_Role_successfully.yml +0 -76
  213. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_add_role_users/should_add_a_User_to_the_Role_successfully.yml +0 -76
  214. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_delete_role/should_delete_the_Role_successfully.yml +0 -74
  215. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_get_role/should_get_the_Role_successfully.yml +0 -75
  216. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_get_role_permissions/should_get_exactly_1_Permission.yml +0 -74
  217. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_get_role_permissions/should_get_the_added_Permission_from_the_Role_successfully.yml +0 -74
  218. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_get_role_users/should_get_exactly_1_User.yml +0 -74
  219. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_get_role_users/should_get_the_added_User_from_the_Role_successfully.yml +0 -74
  220. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_get_roles/should_get_the_Role_successfully.yml +0 -75
  221. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_remove_role_permissions/should_remove_a_Permission_from_the_Role_successfully.yml +0 -74
  222. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_update_role/should_update_the_Role_successfully.yml +0 -76
  223. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/create_test_api.yml +0 -76
  224. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/create_test_role.yml +0 -77
  225. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/create_test_user.yml +0 -76
  226. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/delete_test_api.yml +0 -72
  227. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/delete_test_user.yml +0 -72
  228. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_delete_rule/should_delete_the_test_disabled_rule_without_an_error.yml +0 -72
  229. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_delete_rule/should_delete_the_test_enabled_rule_without_an_error.yml +0 -72
  230. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rule/_filters/should_exclude_the_fields_not_specified.yml +0 -75
  231. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rule/_filters/should_exclude_the_specified_fields.yml +0 -75
  232. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rule/_filters/should_include_the_specified_fields.yml +0 -74
  233. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rule/should_get_a_specific_rule.yml +0 -75
  234. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rules/_filters/should_exclude_fields_not_specified.yml +0 -116
  235. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rules/_filters/should_include_the_specified_fields.yml +0 -118
  236. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rules/_filters/should_return_at_least_1_disabled_rule.yml +0 -95
  237. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rules/_filters/should_return_at_least_1_enabled_rule.yml +0 -104
  238. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rules/_filters/should_return_paginated_results.yml +0 -157
  239. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rules/should_return_at_least_1_rule.yml +0 -120
  240. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_update_rule/should_update_the_disabled_rule_to_be_enabled.yml +0 -77
  241. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/create_test_disabled_rule.yml +0 -78
  242. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/create_test_enabled_rule.yml +0 -78
  243. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Stats/_active_users/should_have_at_least_one_active_user.yml +0 -74
  244. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Stats/_daily_stats/should_have_at_least_one_stats_entry_for_the_timeframe.yml +0 -74
  245. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tenants/_get_tenant_settings/should_get_the_tenant_settings.yml +0 -108
  246. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tenants/_get_tenant_settings_with_specific_fields/should_exclude_a_field_not_requested.yml +0 -74
  247. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tenants/_get_tenant_settings_with_specific_fields/should_include_the_field_requested.yml +0 -74
  248. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tenants/_update_tenant_settings/should_revert_the_tenant_name.yml +0 -110
  249. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tenants/_update_tenant_settings/should_update_the_tenant_settings_with_a_new_tenant_name.yml +0 -110
  250. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tickets/_post_email_verification/should_create_an_email_verification_ticket.yml +0 -76
  251. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tickets/_post_password_change/should_create_a_password_change_ticket.yml +0 -76
  252. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tickets/create_test_user.yml +0 -76
  253. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tickets/delete_test_user.yml +0 -72
  254. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_add_user_permissions/should_add_a_Permissions_for_a_User_successfully.yml +0 -71
  255. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_add_user_roles/should_add_a_Role_to_a_User_successfully.yml +0 -74
  256. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_delete_user/should_delete_the_User_successfully.yml +0 -72
  257. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_delete_user/should_delete_the_secondary_User_successfully.yml +0 -72
  258. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_delete_user_provider/should_attempt_to_delete_the_MFA_provider_for_the_User.yml +0 -72
  259. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_get_enrollments/should_get_Enrollments_for_a_User_successfully.yml +0 -74
  260. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_get_user_permissions/should_get_exactly_1_Permission_for_a_User_successfully.yml +0 -74
  261. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_get_user_permissions/should_get_the_correct_Permission_for_a_User_successfully.yml +0 -74
  262. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_get_user_roles/should_get_Roles_for_a_User_successfully.yml +0 -75
  263. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_invalidate_browsers/should_invalidate_MFA_browsers_for_the_User_successfully.yml +0 -74
  264. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_link_user_account/should_link_two_Users_successfully.yml +0 -76
  265. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_patch_user/should_patch_the_User_successfully.yml +0 -78
  266. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_remove_user_permissions/should_remove_a_Permission_from_a_User_successfully.yml +0 -74
  267. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_remove_user_roles/should_remove_a_Role_from_a_User_successfully.yml +0 -74
  268. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_unlink_user_account/should_unlink_two_Users_successfully.yml +0 -74
  269. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_user/_filters/should_exclude_fields_not_indicated.yml +0 -74
  270. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_user/_filters/should_exclude_the_fields_indicated.yml +0 -74
  271. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_user/_filters/should_include_the_fields_indicated.yml +0 -74
  272. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_user/should_retrieve_the_created_user.yml +0 -74
  273. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_user_logs/should_get_Logs_for_a_User_successfully.yml +0 -81
  274. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_users/_filters/is_expected_to_find_a_user_with_a_v2_search_engine_query.yml +0 -74
  275. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_users/_filters/is_expected_to_find_a_user_with_a_v3_search_engine_query.yml +0 -74
  276. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_users/_filters/should_exclude_the_indicated_fields_when_paginated.yml +0 -74
  277. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_users/_filters/should_include_the_indicated_fields_when_paginated.yml +0 -74
  278. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_users/_filters/should_not_include_other_fields_when_paginated.yml +0 -74
  279. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_users/_filters/should_return_the_correct_number_of_results_when_paginated.yml +0 -74
  280. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_users/should_have_at_least_one_user.yml +0 -75
  281. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/create_secondary_test_user.yml +0 -76
  282. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/create_test_api.yml +0 -76
  283. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/create_test_role.yml +0 -77
  284. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/create_test_user.yml +0 -76
  285. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/delete_test_api.yml +0 -72
  286. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/delete_test_role.yml +0 -74
  287. data/spec/integration/lib/auth0/api/api_authentication_spec.rb +0 -120
  288. data/spec/integration/lib/auth0/api/v2/api_blacklist_spec.rb +0 -27
  289. data/spec/integration/lib/auth0/api/v2/api_client_grants_spec.rb +0 -66
  290. data/spec/integration/lib/auth0/api/v2/api_clients_spec.rb +0 -166
  291. data/spec/integration/lib/auth0/api/v2/api_connections_spec.rb +0 -159
  292. data/spec/integration/lib/auth0/api/v2/api_email_spec.rb +0 -86
  293. data/spec/integration/lib/auth0/api/v2/api_jobs_spec.rb +0 -124
  294. data/spec/integration/lib/auth0/api/v2/api_logs_spec.rb +0 -91
  295. data/spec/integration/lib/auth0/api/v2/api_resource_servers_spec.rb +0 -130
  296. data/spec/integration/lib/auth0/api/v2/api_roles_spec.rb +0 -145
  297. data/spec/integration/lib/auth0/api/v2/api_rules_spec.rb +0 -177
  298. data/spec/integration/lib/auth0/api/v2/api_stats_spec.rb +0 -22
  299. data/spec/integration/lib/auth0/api/v2/api_tenants_spec.rb +0 -59
  300. data/spec/integration/lib/auth0/api/v2/api_tickets_spec.rb +0 -59
  301. data/spec/integration/lib/auth0/api/v2/api_user_blocks_spec.rb +0 -76
  302. data/spec/integration/lib/auth0/api/v2/api_users_spec.rb +0 -273
  303. data/spec/integration/lib/auth0/auth0_client_spec.rb +0 -90
  304. data/spec/lib/auth0/api/authentication_endpoints_spec.rb +0 -750
  305. data/spec/lib/auth0/api/v2/actions_spec.rb +0 -322
  306. data/spec/lib/auth0/api/v2/anomaly_spec.rb +0 -26
  307. data/spec/lib/auth0/api/v2/attack_protection_spec.rb +0 -132
  308. data/spec/lib/auth0/api/v2/blacklists_spec.rb +0 -25
  309. data/spec/lib/auth0/api/v2/branding_spec.rb +0 -71
  310. data/spec/lib/auth0/api/v2/client_grants_spec.rb +0 -106
  311. data/spec/lib/auth0/api/v2/clients_spec.rb +0 -155
  312. data/spec/lib/auth0/api/v2/connections_spec.rb +0 -164
  313. data/spec/lib/auth0/api/v2/device_credentials_spec.rb +0 -102
  314. data/spec/lib/auth0/api/v2/emails_spec.rb +0 -47
  315. data/spec/lib/auth0/api/v2/grants_spec.rb +0 -91
  316. data/spec/lib/auth0/api/v2/guardian_spec.rb +0 -154
  317. data/spec/lib/auth0/api/v2/jobs_spec.rb +0 -158
  318. data/spec/lib/auth0/api/v2/log_streams_spec.rb +0 -84
  319. data/spec/lib/auth0/api/v2/logs_spec.rb +0 -48
  320. data/spec/lib/auth0/api/v2/organizations_spec.rb +0 -708
  321. data/spec/lib/auth0/api/v2/prompts_spec.rb +0 -88
  322. data/spec/lib/auth0/api/v2/resource_servers_spec.rb +0 -86
  323. data/spec/lib/auth0/api/v2/roles_spec.rb +0 -366
  324. data/spec/lib/auth0/api/v2/rules_spec.rb +0 -95
  325. data/spec/lib/auth0/api/v2/stats_spec.rb +0 -22
  326. data/spec/lib/auth0/api/v2/tenants_spec.rb +0 -26
  327. data/spec/lib/auth0/api/v2/tickets_spec.rb +0 -118
  328. data/spec/lib/auth0/api/v2/user_blocks_spec.rb +0 -52
  329. data/spec/lib/auth0/api/v2/users_by_email_spec.rb +0 -21
  330. data/spec/lib/auth0/api/v2/users_spec.rb +0 -849
  331. data/spec/lib/auth0/client_spec.rb +0 -223
  332. data/spec/lib/auth0/mixins/httpproxy_spec.rb +0 -596
  333. data/spec/lib/auth0/mixins/initializer_spec.rb +0 -172
  334. data/spec/lib/auth0/mixins/token_management_spec.rb +0 -136
  335. data/spec/lib/auth0/mixins/validation_spec.rb +0 -562
  336. data/spec/spec_helper.rb +0 -71
  337. data/spec/support/credentials.rb +0 -11
  338. data/spec/support/dummy_class.rb +0 -18
  339. data/spec/support/dummy_class_for_proxy.rb +0 -5
  340. data/spec/support/dummy_class_for_restclient.rb +0 -2
  341. data/spec/support/dummy_class_for_tokens.rb +0 -20
  342. data/spec/support/import_users.json +0 -13
  343. data/spec/support/stub_response.rb +0 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 001f09f32948583c13fb7a3bf421d34a469ba5cd4b0b8ce080a5febaf2e8369b
4
- data.tar.gz: 671271047cdaa71aa6cbf6595d35623b9cfdc79e59aa2a5f9f6e8af59e1d6e52
3
+ metadata.gz: b8ae1bb70a0b39ac31708c2fdf869efddacfff7f068db020ea65c4a5039b4ff8
4
+ data.tar.gz: ca7b78cb1d13e258c4881575a672b5ed2ea9d41d66c408839deedb7ae993c632
5
5
  SHA512:
6
- metadata.gz: 5d95a176bd531635ac2502eb147384da9ac0417020dc17e6e0592ba508ece19c70cd1e7037718ffcfdb4b1bcedb3dd6c2866746923328fe5777c075e542aabb0
7
- data.tar.gz: 9e693a863adeabb6940f06832ecfd67c30fbcfb6106108f228c3e3959b1bb0892601cca649a5d3a009ec645b24750f5a467a3942be4202c9c30d353102fb4722
6
+ metadata.gz: f7f19b4eef6c03108c991ed6db9bdfe6c8c1237685ff2d3651e594c9fde0ac499785fc1b2db2e702c3dfc0b49d386966b482d42f69e7179ab04eb5914fcbd877
7
+ data.tar.gz: f6b3d618c83c9a0fed4edc11b5046a9170921ad2762bb4c5479558540f20f64367e3fa62bb8a3cd2769da7f22be338cddbfff29c57f9b94862b9c096acef5e65
data/.version CHANGED
@@ -1 +1 @@
1
- v5.17.0
1
+ v5.19.0
data/CHANGELOG.md CHANGED
@@ -1,5 +1,36 @@
1
1
  # Change Log
2
2
 
3
+ ## [v5.19.0](https://github.com/auth0/ruby-auth0/tree/v5.19.0) (2026-05-08)
4
+ [Full Changelog](https://github.com/auth0/ruby-auth0/compare/v5.18.1...v5.19.0)
5
+
6
+ **Added**
7
+ - Make Auth0::Client#get_token public [\#725](https://github.com/auth0/ruby-auth0/pull/725) ([ttstarck](https://github.com/ttstarck))
8
+
9
+ **Fixed**
10
+ - Ship only runtime files in packaged gem to eliminate scanner false positives [\#721](https://github.com/auth0/ruby-auth0/pull/721) ([tmertens](https://github.com/tmertens))
11
+
12
+ ## [v5.18.1](https://github.com/auth0/ruby-auth0/tree/v5.18.1) (2026-03-13)
13
+ [Full Changelog](https://github.com/auth0/ruby-auth0/compare/v5.18.0...v5.18.1)
14
+
15
+ **Changed**
16
+ - chore(deps): bump zache from 0.15.0 to 0.15.2 [\#691](https://github.com/auth0/ruby-auth0/pull/691) ([dependabot[bot]](https://github.com/apps/dependabot))
17
+ - chore(deps): bump jwt from 2.9.3 to 2.10.2 [\#682](https://github.com/auth0/ruby-auth0/pull/682) ([dependabot[bot]](https://github.com/apps/dependabot))
18
+ - chore(deps): bump addressable from 2.8.7 to 2.8.8 [\#686](https://github.com/auth0/ruby-auth0/pull/686) ([dependabot[bot]](https://github.com/apps/dependabot))
19
+ - chore(deps): bump zache from 0.13.2 to 0.15.0 [\#649](https://github.com/auth0/ruby-auth0/pull/649) ([dependabot[bot]](https://github.com/apps/dependabot))
20
+
21
+ **Fixed**
22
+ - fix deleting array content when passing an array as payload [\#697](https://github.com/auth0/ruby-auth0/pull/697) ([carlastabile](https://github.com/carlastabile))
23
+
24
+ **Security**
25
+ - fix(deps): upgrade dev dependencies to resolve Snyk security vulnerab… [\#704](https://github.com/auth0/ruby-auth0/pull/704) ([arpit-jn](https://github.com/arpit-jn))
26
+
27
+ ## [v5.18.0](https://github.com/auth0/ruby-auth0/tree/v5.18.0) (2024-11-25)
28
+ [Full Changelog](https://github.com/auth0/ruby-auth0/compare/v5.17.0...v5.18.0)
29
+
30
+ **Added**
31
+ - Add Refresh Token endpoints for the Auth0 Management API #614 [\#623](https://github.com/auth0/ruby-auth0/pull/623) ([arpit-jn](https://github.com/arpit-jn))
32
+ - Add Management API calls for session API endpoints #613 [\#616](https://github.com/auth0/ruby-auth0/pull/616) ([arpit-jn](https://github.com/arpit-jn))
33
+
3
34
  ## [v5.17.0](https://github.com/auth0/ruby-auth0/tree/v5.17.0) (2024-05-24)
4
35
  [Full Changelog](https://github.com/auth0/ruby-auth0/compare/v5.16.0...v5.17.0)
5
36
 
data/README.md CHANGED
@@ -7,11 +7,23 @@ Ruby API client for the [Auth0](https://auth0.com) platform.
7
7
  [![codecov](https://codecov.io/gh/auth0/ruby-auth0/branch/master/graph/badge.svg)](https://codecov.io/gh/auth0/ruby-auth0)
8
8
  [![Yard Docs](http://img.shields.io/badge/yard-docs-blue.svg)](http://www.rubydoc.info/github/auth0/ruby-auth0/master/frames)
9
9
  [![MIT licensed](https://img.shields.io/dub/l/vibe-d.svg?style=flat)](https://github.com/auth0/ruby-auth0/blob/master/LICENSE)
10
+ [![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/auth0/ruby-auth0)
10
11
 
11
12
  <div>
12
13
  📚 <a href="#documentation">Documentation</a> - 🚀 <a href="#getting-started">Getting started</a> - 💻 <a href="#api-reference">API reference</a> - 💬 <a href="#feedback">Feedback</a>
13
14
  </div>
14
15
 
16
+ > [!NOTE]
17
+ > **[v6.0.0.beta.0](https://github.com/auth0/ruby-auth0/releases/tag/v6.0.0.beta.0) is now available!** This release features a completely rewritten Management API client, auto-generated from the Auth0 OpenAPI spec using [Fern](https://buildwithfern.com/), with strongly-typed responses, built-in pagination, and automatic token management.
18
+ >
19
+ > ```bash
20
+ > gem install auth0 --pre
21
+ > ```
22
+ >
23
+ > We'd love your feedback - please [open an issue](https://github.com/auth0/ruby-auth0/issues/new) if you encounter any problems.
24
+ >
25
+ > 📖 [Migration Guide](https://github.com/auth0/ruby-auth0/blob/v6/v6_MIGRATION_GUIDE.md) ・ [Changelog](https://github.com/auth0/ruby-auth0/blob/v6/CHANGELOG.md) ・ [API Reference](https://github.com/auth0/ruby-auth0/blob/v6/reference.md)
26
+
15
27
  ## Documentation
16
28
 
17
29
  - [API documentation](https://www.rubydoc.info/gems/auth0) - documentation auto-generated from the code comments that explains all the available features
@@ -127,4 +139,4 @@ Please do not report security vulnerabilities on the public GitHub issue tracker
127
139
  </p>
128
140
  <p align="center">
129
141
  This project is licensed under the MIT license. See the <a href="https://github.com/auth0/ruby-auth0/blob/master/LICENSE"> LICENSE</a> file for more info.
130
- </p>
142
+ </p>
data/auth0.gemspec CHANGED
@@ -11,9 +11,7 @@ Gem::Specification.new do |s|
11
11
  s.summary = 'Auth0 API Client'
12
12
  s.description = 'Ruby toolkit for Auth0 API https://auth0.com.'
13
13
 
14
- s.files = `git ls-files`.split("\n")
15
- s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
16
- s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
14
+ s.files = Dir['lib/**/*.rb'] + %w[LICENSE README.md CHANGELOG.md auth0.gemspec .version]
17
15
  s.require_paths = ['lib']
18
16
 
19
17
  s.add_runtime_dependency 'rest-client', '~> 2.1'
@@ -26,7 +24,7 @@ Gem::Specification.new do |s|
26
24
  s.add_development_dependency 'rake', '~> 13.0'
27
25
  s.add_development_dependency 'fuubar', '~> 2.0'
28
26
  s.add_development_dependency 'guard-rspec', '~> 4.5' unless ENV['CIRCLECI']
29
- s.add_development_dependency 'dotenv-rails', '~> 2.0'
27
+ s.add_development_dependency 'dotenv', '~> 3.0'
30
28
  s.add_development_dependency 'rspec', '~> 3.11'
31
29
  s.add_development_dependency 'simplecov', '~> 0.9'
32
30
  s.add_development_dependency 'faker', '~> 2.0'
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Auth0
4
+ module Api
5
+ module V2
6
+ # Methods to use the Refresh Token endpoints
7
+ module RefreshTokens
8
+ # Retrieve refresh token information.
9
+ # @see https://auth0.com/docs/api/management/v2/refresh-tokens/get-refresh-token
10
+ # @param id [string] The id of the refresh token to retrieve
11
+ def refresh_token(id)
12
+ raise Auth0::InvalidParameter, 'Must supply a valid id' if id.to_s.empty?
13
+
14
+ get "#{resource_path}/#{id}"
15
+ end
16
+
17
+ # Delete a refresh token by its ID.
18
+ # @see https://auth0.com/docs/api/management/v2/refresh-tokens/delete-refresh-token
19
+ # @param id [string] The id of the refresh token to delete
20
+ def delete_refresh_token(id)
21
+ raise Auth0::InvalidParameter, 'Must supply a valid id' if id.to_s.empty?
22
+
23
+ delete "#{resource_path}/#{id}"
24
+ end
25
+
26
+ private
27
+
28
+ def resource_path
29
+ @resource_path ||= '/api/v2/refresh-tokens'
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Auth0
4
+ module Api
5
+ module V2
6
+ # Methods to use the Session endpoints
7
+ module Sessions
8
+ # Retrieve session information by id
9
+ # @see https://auth0.com/docs/api/management/v2/sessions/get-session
10
+ # @param id [string] The id of the session to retrieve.
11
+ def session(session_id)
12
+ raise Auth0::InvalidParameter, 'Must supply a valid session_id' if session_id.to_s.empty?
13
+
14
+ get "#{sessions_path}/#{session_id}"
15
+ end
16
+
17
+ # Deletes a session by id
18
+ # @see https://auth0.com/docs/api/management/v2/sessions/delete-session
19
+ # @param id [string] The id of the session to delete.
20
+ def delete_session(session_id)
21
+ raise Auth0::InvalidParameter, 'Must supply a valid session_id' if session_id.to_s.empty?
22
+
23
+ delete "#{sessions_path}/#{session_id}"
24
+ end
25
+
26
+ # Revokes a session by ID and all associated refresh tokens
27
+ # @see https://auth0.com/docs/api/management/v2/sessions/revoke-session
28
+ # @param id [string] The ID of the session to revoke
29
+ def revoke_session(session_id)
30
+ raise Auth0::InvalidParameter, 'Must supply a valid session_id' if session_id.to_s.empty?
31
+
32
+ post "#{sessions_path}/#{session_id}/revoke"
33
+ end
34
+
35
+ private
36
+
37
+ def sessions_path
38
+ @sessions_path ||= '/api/v2/sessions'
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
@@ -1,7 +1,7 @@
1
1
  module Auth0
2
2
  module Api
3
3
  module V2
4
- # Methods to use the users endpoints
4
+ # Methods to use the users' endpoints
5
5
  module Users
6
6
  include Auth0::Mixins::Validation
7
7
 
@@ -94,10 +94,10 @@ module Auth0
94
94
  # Some considerations:
95
95
  # The properties of the new object will replace the old ones.
96
96
  # The metadata fields are an exception to this rule (user_metadata and app_metadata). These properties are
97
- # merged instead of being replaced but be careful, the merge only occurs on the first level.
97
+ # merged instead of being replaced, but be careful, the merge only occurs on the first level.
98
98
  # If you are updating email_verified, phone_verified, username or password you need to specify the connection
99
99
  # property too.
100
- # If your are updating email or phone_number you need to specify the connection and the client_id properties.
100
+ # If you are updating email or phone_number you need to specify the connection and the client_id properties.
101
101
  # @see https://auth0.com/docs/api/v2#!/Users/patch_users_by_id
102
102
  # @param user_id [string] The user_id of the user to update.
103
103
  # @param body [hash] The optional parameters to update.
@@ -137,7 +137,7 @@ module Auth0
137
137
  # update:current_user_identities scope. In this case only the link_with param is required in the body,
138
138
  # containing the JWT obtained upon the secondary account's authentication.
139
139
  # 2. With an API V2 generated token with update:users scope. In this case you need to send provider and user_id
140
- # in the body. Optionally you can also send the connection_id param which is suitable for identifying a
140
+ # in the body. Optionally, you can also send the connection_id param, which is suitable for identifying a
141
141
  # particular database connection for the 'auth0' provider.
142
142
  # @see https://auth0.com/docs/api/v2#!/Users/post_identities
143
143
  # @param user_id [string] The user_id of the primary identity where you are linking the secondary account to.
@@ -465,13 +465,45 @@ module Auth0
465
465
  get "#{users_path}/#{user_id}/sessions"
466
466
  end
467
467
 
468
+ # Retrieve details for a user's refresh tokens.
469
+ # @see https://auth0.com/docs/api/management/v2/users/get-refresh-tokens-for-user
470
+ #
471
+ # @param use_id [String] The user ID
472
+ # @param options [hash] A hash of options for getting permissions
473
+ # * :take [Integer] Number of results per page. Defaults to 50.
474
+ # * :from [String] Optional token ID from which to start selection (exclusive).
475
+ # * :include_totals [boolean] Return results inside an object that contains the total result count (true)
476
+ # or as a direct array of results (false, default)
477
+ #
478
+ # @return [json] Returns refresh tokens for the given user_id.
479
+ def user_refresh_tokens(user_id, options = {})
480
+ raise Auth0::MissingUserId, 'Must supply a valid user_id' if user_id.to_s.empty?
481
+
482
+ request_params = {
483
+ take: options.fetch(:take, nil),
484
+ from: options.fetch(:from, nil),
485
+ include_totals: options.fetch(:include_totals, nil)
486
+ }
487
+
488
+ get "#{users_path}/#{user_id}/refresh-tokens", request_params
489
+ end
490
+
491
+ # Delete all refresh tokens for a user.
492
+ #
493
+ # @param user_id [String] ID of the user to get remove refresh tokens for
494
+ # @see https://auth0.com/docs/api/management/v2/users/delete-refresh-tokens-for-user
495
+ def delete_user_refresh_tokens(user_id)
496
+ raise Auth0::MissingUserId, 'Must supply a valid user_id' if user_id.to_s.empty?
497
+
498
+ delete "#{users_path}/#{user_id}/refresh-tokens"
499
+ end
500
+
468
501
  private
469
502
 
470
503
  # Users API path
471
504
  def users_path
472
505
  @users_path ||= '/api/v2/users'
473
506
  end
474
-
475
507
  end
476
508
  end
477
509
  end
data/lib/auth0/api/v2.rb CHANGED
@@ -11,6 +11,7 @@ require 'auth0/api/v2/emails'
11
11
  require 'auth0/api/v2/jobs'
12
12
  require 'auth0/api/v2/prompts'
13
13
  require 'auth0/api/v2/organizations'
14
+ require 'auth0/api/v2/refresh_tokens'
14
15
  require 'auth0/api/v2/rules'
15
16
  require 'auth0/api/v2/roles'
16
17
  require 'auth0/api/v2/stats'
@@ -24,6 +25,7 @@ require 'auth0/api/v2/log_streams'
24
25
  require 'auth0/api/v2/resource_servers'
25
26
  require 'auth0/api/v2/guardian'
26
27
  require 'auth0/api/v2/attack_protection'
28
+ require 'auth0/api/v2/sessions'
27
29
 
28
30
  module Auth0
29
31
  module Api
@@ -45,6 +47,7 @@ module Auth0
45
47
  include Auth0::Api::V2::LogStreams
46
48
  include Auth0::Api::V2::Prompts
47
49
  include Auth0::Api::V2::Organizations
50
+ include Auth0::Api::V2::RefreshTokens
48
51
  include Auth0::Api::V2::Rules
49
52
  include Auth0::Api::V2::Roles
50
53
  include Auth0::Api::V2::Stats
@@ -55,6 +58,7 @@ module Auth0
55
58
  include Auth0::Api::V2::Tenants
56
59
  include Auth0::Api::V2::Tickets
57
60
  include Auth0::Api::V2::AttackProtection
61
+ include Auth0::Api::V2::Sessions
58
62
  end
59
63
  end
60
64
  end
@@ -1,6 +1,8 @@
1
- require "addressable/uri"
2
- require "retryable"
3
- require_relative "../exception.rb"
1
+ # frozen_string_literal: true
2
+
3
+ require 'addressable/uri'
4
+ require 'retryable'
5
+ require_relative '../exception'
4
6
 
5
7
  module Auth0
6
8
  module Mixins
@@ -8,6 +10,7 @@ module Auth0
8
10
  # for now, if you want to feel free to use your own http client
9
11
  module HTTPProxy
10
12
  attr_accessor :headers, :base_uri, :timeout, :retry_count
13
+
11
14
  DEFAULT_RETRIES = 3
12
15
  MAX_ALLOWED_RETRIES = 10
13
16
  MAX_REQUEST_RETRY_JITTER = 250
@@ -16,10 +19,10 @@ module Auth0
16
19
  BASE_DELAY = 100
17
20
 
18
21
  # proxying requests from instance methods to HTTP class methods
19
- %i(get post post_file post_form put patch delete delete_with_body).each do |method|
22
+ %i[get post post_file post_form put patch delete delete_with_body].each do |method|
20
23
  define_method(method) do |uri, body = {}, extra_headers = {}|
21
- body = body.delete_if { |_, v| v.nil? }
22
- token = get_token()
24
+ body = safe_merge_body(body, extra_headers)
25
+ token = get_token
23
26
  authorization_header(token) unless token.nil?
24
27
  request_with_retry(method, uri, body, extra_headers)
25
28
  end
@@ -27,8 +30,8 @@ module Auth0
27
30
 
28
31
  def retry_options
29
32
  sleep_timer = lambda do |attempt|
30
- wait = BASE_DELAY * (2**attempt-1) # Exponential delay with each subsequent request attempt.
31
- wait += rand(wait+1..wait+MAX_REQUEST_RETRY_JITTER) # Add jitter to the delay window.
33
+ wait = BASE_DELAY * (2**attempt - 1) # Exponential delay with each subsequent request attempt.
34
+ wait += rand(wait + 1..wait + MAX_REQUEST_RETRY_JITTER) # Add jitter to the delay window.
32
35
  wait = [MAX_REQUEST_RETRY_DELAY, wait].min # Cap delay at MAX_REQUEST_RETRY_DELAY.
33
36
  wait = [MIN_REQUEST_RETRY_DELAY, wait].max # Ensure delay is no less than MIN_REQUEST_RETRY_DELAY.
34
37
  wait / 1000.to_f.round(2) # convert ms to seconds
@@ -55,6 +58,7 @@ module Auth0
55
58
 
56
59
  def add_headers(h = {})
57
60
  raise ArgumentError, 'Headers must be an object which responds to #to_hash' unless h.respond_to?(:to_hash)
61
+
58
62
  @headers ||= {}
59
63
  @headers.merge!(h.to_hash)
60
64
  end
@@ -72,28 +76,29 @@ module Auth0
72
76
  end
73
77
 
74
78
  def request(method, uri, body = {}, extra_headers = {})
75
- result = if method == :get
76
- @headers ||= {}
77
- get_headers = @headers.merge({params: body}).merge(extra_headers)
78
- call(:get, encode_uri(uri), timeout, get_headers)
79
- elsif method == :delete
80
- @headers ||= {}
81
- delete_headers = @headers.merge({ params: body })
82
- call(:delete, encode_uri(uri), timeout, delete_headers)
83
- elsif method == :delete_with_body
84
- call(:delete, encode_uri(uri), timeout, headers, body.to_json)
85
- elsif method == :post_file
86
- body.merge!(multipart: true)
87
- # Ignore the default Content-Type headers and let the HTTP client define them
88
- post_file_headers = headers.except('Content-Type') if headers != nil
89
- # Actual call with the altered headers
90
- call(:post, encode_uri(uri), timeout, post_file_headers, body)
91
- elsif method == :post_form
92
- form_post_headers = headers.except('Content-Type') if headers != nil
93
- call(:post, encode_uri(uri), timeout, form_post_headers, body.compact)
94
- else
95
- call(method, encode_uri(uri), timeout, headers, body.to_json)
96
- end
79
+ result = case method
80
+ when :get
81
+ @headers ||= {}
82
+ get_headers = @headers.merge({ params: body }).merge(extra_headers)
83
+ call(:get, encode_uri(uri), timeout, get_headers)
84
+ when :delete
85
+ @headers ||= {}
86
+ delete_headers = @headers.merge({ params: body })
87
+ call(:delete, encode_uri(uri), timeout, delete_headers)
88
+ when :delete_with_body
89
+ call(:delete, encode_uri(uri), timeout, headers, body.to_json)
90
+ when :post_file
91
+ body.merge!(multipart: true)
92
+ # Ignore the default Content-Type headers and let the HTTP client define them
93
+ post_file_headers = headers.except('Content-Type') unless headers.nil?
94
+ # Actual call with the altered headers
95
+ call(:post, encode_uri(uri), timeout, post_file_headers, body)
96
+ when :post_form
97
+ form_post_headers = headers.except('Content-Type') unless headers.nil?
98
+ call(:post, encode_uri(uri), timeout, form_post_headers, body.compact)
99
+ else
100
+ call(method, encode_uri(uri), timeout, headers, body.to_json)
101
+ end
97
102
 
98
103
  case result.code
99
104
  when 200...226 then safe_parse_json(result.body)
@@ -101,7 +106,8 @@ module Auth0
101
106
  when 401 then raise Auth0::Unauthorized.new(result.body, code: result.code, headers: result.headers)
102
107
  when 403 then raise Auth0::AccessDenied.new(result.body, code: result.code, headers: result.headers)
103
108
  when 404 then raise Auth0::NotFound.new(result.body, code: result.code, headers: result.headers)
104
- when 429 then raise Auth0::RateLimitEncountered.new(result.body, code: result.code, headers: result.headers)
109
+ when 429 then raise Auth0::RateLimitEncountered.new(result.body, code: result.code,
110
+ headers: result.headers)
105
111
  when 500 then raise Auth0::ServerError.new(result.body, code: result.code, headers: result.headers)
106
112
  else raise Auth0::Unsupported.new(result.body, code: result.code, headers: result.headers)
107
113
  end
@@ -118,11 +124,19 @@ module Auth0
118
124
  rescue RestClient::Exception => e
119
125
  case e
120
126
  when RestClient::RequestTimeout
121
- raise Auth0::RequestTimeout.new(e.message)
127
+ raise Auth0::RequestTimeout, e.message
122
128
  else
123
- return e.response
129
+ e.response
124
130
  end
125
131
  end
132
+
133
+ private
134
+
135
+ def safe_merge_body(body, extra = {})
136
+ return body unless body.is_a?(Hash)
137
+ merged = extra.any? ? body.merge(extra) : body
138
+ merged.compact
139
+ end
126
140
  end
127
141
  end
128
142
  end
@@ -1,22 +1,14 @@
1
1
  module Auth0
2
2
  module Mixins
3
3
  module TokenManagement
4
-
5
- private
6
-
7
- def initialize_token(options)
8
- @token = options[:access_token] || options[:token]
9
- # default expiry to an hour if a token was given but no expires_at
10
- @token_expires_at = @token ? options[:token_expires_at] || Time.now.to_i + 3600 : nil
11
-
12
- @audience = options[:api_identifier] || "https://#{@domain}/api/v2/"
13
- get_token() if @token.nil?
14
- end
15
4
 
5
+ # Get the Client's api token (or generate a new one if it has expired).
6
+ #
7
+ # @note This method may perform a network request to refresh an expired token. It is not thread-safe.
8
+ # @return [String] the api token
16
9
  def get_token
17
- # pp @token_expires_at
18
10
  has_expired = @token && @token_expires_at ? @token_expires_at < (Time.now.to_i + 10) : false
19
-
11
+
20
12
  if (@token.nil? || has_expired) && @client_id && (@client_secret || @client_assertion_signing_key)
21
13
  response = api_token(audience: @audience)
22
14
  @token = response.token
@@ -27,6 +19,17 @@ module Auth0
27
19
  @token
28
20
  end
29
21
  end
22
+
23
+ private
24
+
25
+ def initialize_token(options)
26
+ @token = options[:access_token] || options[:token]
27
+ # default expiry to an hour if a token was given but no expires_at
28
+ @token_expires_at = @token ? options[:token_expires_at] || Time.now.to_i + 3600 : nil
29
+
30
+ @audience = options[:api_identifier] || "https://#{@domain}/api/v2/"
31
+ get_token() if @token.nil?
32
+ end
30
33
  end
31
34
  end
32
- end
35
+ end
data/lib/auth0/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  # current version of gem
2
2
  module Auth0
3
- VERSION = '5.17.0'.freeze
3
+ VERSION = '5.19.0'.freeze
4
4
  end