auth0 5.2.0 → 5.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (218) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +5 -0
  3. data/CHANGELOG.md +48 -0
  4. data/Gemfile +1 -0
  5. data/README.md +10 -8
  6. data/auth0.gemspec +2 -1
  7. data/lib/auth0/api/authentication_endpoints.rb +40 -16
  8. data/lib/auth0/api/v2/actions.rb +210 -0
  9. data/lib/auth0/api/v2/branding.rb +0 -1
  10. data/lib/auth0/api/v2/grants.rb +49 -0
  11. data/lib/auth0/api/v2/logs.rb +2 -2
  12. data/lib/auth0/api/v2/organizations.rb +19 -3
  13. data/lib/auth0/api/v2/roles.rb +7 -3
  14. data/lib/auth0/api/v2.rb +4 -0
  15. data/lib/auth0/exception.rb +12 -0
  16. data/lib/auth0/mixins/api_token_struct.rb +0 -1
  17. data/lib/auth0/mixins/httpproxy.rb +77 -34
  18. data/lib/auth0/mixins/initializer.rb +2 -3
  19. data/lib/auth0/mixins/token_management.rb +32 -0
  20. data/lib/auth0/mixins/validation.rb +1 -1
  21. data/lib/auth0/mixins.rb +2 -0
  22. data/lib/auth0/version.rb +1 -1
  23. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_change_password/should_trigger_a_password_reset.yml +53 -23
  24. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_login_with_resource_owner/should_fail_with_an_incorrect_email.yml +49 -18
  25. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_login_with_resource_owner/should_fail_with_an_incorrect_password.yml +49 -18
  26. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_login_with_resource_owner/should_fail_with_an_invalid_audience.yml +46 -15
  27. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_login_with_resource_owner/should_login_successfully_with_a_custom_audience.yml +49 -79
  28. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_login_with_resource_owner/should_login_successfully_with_a_default_scope.yml +49 -80
  29. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_saml_metadata/should_retrieve_SAML_metadata.yml +74 -21
  30. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_userinfo/should_fail_as_not_authorized.yml +53 -14
  31. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_userinfo/should_return_the_userinfo.yml +106 -48
  32. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_wsfed_metadata/should_retrieve_WSFED_metadata.yml +62 -19
  33. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/create_test_user.yml +57 -22
  34. data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/delete_test_user.yml +38 -20
  35. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Blacklists/_add_token_to_blacklist/should_add_a_token_to_the_blacklist.yml +37 -19
  36. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Blacklists/_blacklisted_tokens/should_get_the_added_token_from_the_blacklist.yml +38 -23
  37. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/_client_grants/should_return_at_least_1_result.yml +42 -26
  38. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/_client_grants/should_return_the_test_client_grant.yml +42 -26
  39. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/_delete_client_grant/should_delete_the_test_client_grant.yml +38 -20
  40. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/_patch_client_grant/should_update_the_test_client_grant.yml +39 -27
  41. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/create_test_client.yml +44 -82
  42. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/create_test_client_grant.yml +39 -27
  43. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/delete_test_client.yml +38 -20
  44. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/delete_test_client_grant.yml +38 -20
  45. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_client/_filters/should_exclude_and_include_fields_properly.yml +43 -56
  46. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_client/_filters/should_include_the_specified_fields.yml +39 -28
  47. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_client/should_get_the_test_client.yml +43 -57
  48. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_clients/_filters/should_exclude_fields_not_specified.yml +43 -24
  49. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_clients/_filters/should_exclude_the_specified_fields.yml +236 -96
  50. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_clients/_filters/should_include_the_specified_fields.yml +52 -27
  51. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_clients/_filters/should_paginate_results.yml +39 -25
  52. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_clients/should_get_at_least_one_client.yml +235 -96
  53. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_delete_client/should_delete_the_test_client_without_an_error.yml +38 -20
  54. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_patch_client/should_update_the_client_with_the_correct_attributes.yml +43 -57
  55. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/create_test_client.yml +45 -82
  56. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_connection/_filters/should_exclude_the_fields_indicated.yml +15 -16
  57. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_connection/_filters/should_include_the_fields_indicated.yml +15 -16
  58. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_connection/should_find_the_correct_connection.yml +15 -16
  59. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_connections/_filters/should_include_previously-created_connection_when_filtered.yml +14 -15
  60. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_connections/_filters/should_should_exclude_the_fields_indicated_from_filtered_results.yml +14 -15
  61. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_connections/_filters/should_should_include_the_fields_indicated_from_filtered_results.yml +14 -15
  62. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_connections/should_include_the_previously_created_connection.yml +15 -15
  63. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_connections/should_not_be_empty.yml +15 -15
  64. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_delete_connection/should_delete_the_connection.yml +15 -16
  65. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_delete_connection_user/should_delete_the_user_created.yml +29 -27
  66. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_update_connection/should_update_the_connection.yml +15 -16
  67. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/create_test_connection.yml +16 -17
  68. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/create_test_user.yml +40 -32
  69. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_DeviceCredentials/create_test_credential.yml +40 -30
  70. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_DeviceCredentials/create_test_user.yml +40 -32
  71. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_DeviceCredentials/delete_test_user.yml +38 -20
  72. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Emails/_configure_provider/should_configure_a_new_email_provider.yml +37 -28
  73. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Emails/_delete_provider/should_delete_the_existing_email_provider_without_an_error.yml +37 -19
  74. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Emails/_delete_provider/should_throw_an_error_trying_to_get_the_email_provider.yml +34 -16
  75. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Emails/_get_provider/_filters/should_get_the_existing_email_provider_with_specific_fields.yml +36 -27
  76. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Emails/_get_provider/_filters/should_get_the_existing_email_provider_without_specific_fields.yml +36 -28
  77. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Emails/_get_provider/should_get_the_existing_email_provider.yml +36 -28
  78. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Emails/_update_provider/should_update_the_existing_email_provider.yml +36 -28
  79. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Emails/delete_existing_provider.yml +37 -19
  80. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/_export_users_and_get_job/should_create_an_export_users_job_successfully.yml +38 -23
  81. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/_export_users_and_get_job/should_get_the_export_users_job.yml +76 -46
  82. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/_import_users_and_get_job/should_create_an_import_users_job_successfully.yml +46 -25
  83. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/_import_users_and_get_job/should_get_the_import_users_job.yml +84 -48
  84. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/_send_verification_email_and_get_job/should_create_a_new_verification_email_job.yml +77 -47
  85. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/_send_verification_email_and_get_job/should_get_the_completed_verification_email.yml +116 -71
  86. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/_send_verification_email_and_get_job/should_reject_an_invalid_client_id.yml +76 -39
  87. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/delete_imported_user.yml +76 -43
  88. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/search_for_connection_id.yml +43 -23
  89. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/_log/should_match_the_created_log_entry.yml +224 -196
  90. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/_log/should_not_be_empty.yml +224 -196
  91. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/_logs/_filters/should_exclude_fields_not_specified.yml +38 -25
  92. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/_logs/_filters/should_exclude_the_specified_fields.yml +39 -39
  93. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/_logs/_filters/should_have_one_log_entry.yml +41 -40
  94. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/_logs/_filters/should_include_the_specified_fields.yml +38 -26
  95. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/_logs/_from/should_take_one_log_entry.yml +229 -189
  96. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/create_test_user.yml +40 -32
  97. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/delete_test_disabled_rule.yml +38 -20
  98. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/delete_test_enabled_rule.yml +38 -20
  99. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/delete_test_user.yml +38 -20
  100. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ResourceServers/_delete_resource_server/should_delete_the_test_server_without_an_error.yml +38 -20
  101. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ResourceServers/_patch_resource_server/should_update_the_resource_server_with_the_correct_attributes.yml +39 -24
  102. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ResourceServers/_resource_server/should_get_the_test_server.yml +39 -24
  103. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ResourceServers/_resource_servers/should_get_the_test_server.yml +146 -23
  104. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ResourceServers/_resource_servers/should_return_at_least_1_result.yml +146 -23
  105. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ResourceServers/_resource_servers/should_return_the_first_page_of_one_result.yml +131 -24
  106. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ResourceServers/create_test_server.yml +40 -25
  107. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ResourceServers/delete_test_server.yml +38 -20
  108. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_add_role_permissions/should_add_a_Permission_to_the_Role_successfully.yml +39 -32
  109. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_add_role_users/should_add_a_User_to_the_Role_successfully.yml +38 -31
  110. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_delete_role/should_delete_the_Role_successfully.yml +42 -30
  111. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_get_role/should_get_the_Role_successfully.yml +38 -30
  112. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_get_role_permissions/should_get_exactly_1_Permission.yml +37 -30
  113. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_get_role_permissions/should_get_the_added_Permission_from_the_Role_successfully.yml +37 -30
  114. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_get_role_users/should_get_exactly_1_User.yml +37 -30
  115. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_get_role_users/should_get_the_added_User_from_the_Role_successfully.yml +37 -30
  116. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_get_roles/should_get_the_Role_successfully.yml +37 -29
  117. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_remove_role_permissions/should_remove_a_Permission_from_the_Role_successfully.yml +39 -29
  118. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_update_role/should_update_the_Role_successfully.yml +37 -30
  119. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/create_test_api.yml +38 -31
  120. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/create_test_role.yml +39 -31
  121. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/create_test_user.yml +38 -31
  122. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/delete_test_api.yml +36 -26
  123. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/delete_test_user.yml +36 -26
  124. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_delete_rule/should_delete_the_test_disabled_rule_without_an_error.yml +38 -20
  125. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_delete_rule/should_delete_the_test_enabled_rule_without_an_error.yml +38 -20
  126. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rule/_filters/should_exclude_the_fields_not_specified.yml +40 -27
  127. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rule/_filters/should_exclude_the_specified_fields.yml +40 -27
  128. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rule/_filters/should_include_the_specified_fields.yml +39 -26
  129. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rule/should_get_a_specific_rule.yml +40 -27
  130. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rules/_filters/should_exclude_fields_not_specified.yml +80 -24
  131. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rules/_filters/should_include_the_specified_fields.yml +82 -25
  132. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rules/_filters/should_return_at_least_1_disabled_rule.yml +59 -27
  133. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rules/_filters/should_return_at_least_1_enabled_rule.yml +68 -26
  134. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rules/_filters/should_return_paginated_results.yml +78 -49
  135. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rules/should_return_at_least_1_rule.yml +84 -28
  136. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_update_rule/should_update_the_disabled_rule_to_be_enabled.yml +40 -27
  137. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/create_test_disabled_rule.yml +42 -29
  138. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/create_test_enabled_rule.yml +42 -29
  139. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Stats/_active_users/should_have_at_least_one_active_user.yml +38 -23
  140. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Stats/_daily_stats/should_have_at_least_one_stats_entry_for_the_timeframe.yml +38 -27
  141. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tenants/_get_tenant_settings/should_get_the_tenant_settings.yml +72 -59
  142. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tenants/_get_tenant_settings_with_specific_fields/should_exclude_a_field_not_requested.yml +38 -25
  143. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tenants/_get_tenant_settings_with_specific_fields/should_include_the_field_requested.yml +38 -25
  144. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tenants/_update_tenant_settings/should_revert_the_tenant_name.yml +72 -58
  145. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tenants/_update_tenant_settings/should_update_the_tenant_settings_with_a_new_tenant_name.yml +72 -58
  146. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tickets/_post_email_verification/should_create_an_email_verification_ticket.yml +39 -26
  147. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tickets/_post_password_change/should_create_a_password_change_ticket.yml +39 -26
  148. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tickets/create_test_user.yml +40 -32
  149. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tickets/delete_test_user.yml +38 -20
  150. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_add_user_permissions/should_add_a_Permissions_for_a_User_successfully.yml +39 -35
  151. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_add_user_roles/should_add_a_Role_to_a_User_successfully.yml +37 -25
  152. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_delete_user/should_delete_the_User_successfully.yml +36 -24
  153. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_delete_user/should_delete_the_secondary_User_successfully.yml +36 -24
  154. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_delete_user_provider/should_attempt_to_delete_the_MFA_provider_for_the_User.yml +36 -24
  155. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_get_enrollments/should_get_Enrollments_for_a_User_successfully.yml +37 -28
  156. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_get_user_permissions/should_get_exactly_1_Permission_for_a_User_successfully.yml +37 -28
  157. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_get_user_permissions/should_get_the_correct_Permission_for_a_User_successfully.yml +37 -28
  158. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_get_user_roles/should_get_Roles_for_a_User_successfully.yml +38 -28
  159. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_invalidate_browsers/should_invalidate_MFA_browsers_for_the_User_successfully.yml +36 -24
  160. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_link_user_account/should_link_two_Users_successfully.yml +38 -29
  161. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_patch_user/should_patch_the_User_successfully.yml +38 -28
  162. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_remove_user_permissions/should_remove_a_Permission_from_a_User_successfully.yml +39 -27
  163. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_remove_user_roles/should_remove_a_Role_from_a_User_successfully.yml +39 -27
  164. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_unlink_user_account/should_unlink_two_Users_successfully.yml +37 -28
  165. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_user/_filters/should_exclude_fields_not_indicated.yml +37 -28
  166. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_user/_filters/should_exclude_the_fields_indicated.yml +37 -28
  167. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_user/_filters/should_include_the_fields_indicated.yml +37 -28
  168. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_user/should_retrieve_the_created_user.yml +37 -28
  169. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_user_logs/should_get_Logs_for_a_User_successfully.yml +42 -30
  170. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_users/_filters/is_expected_to_find_a_user_with_a_v2_search_engine_query.yml +36 -27
  171. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_users/_filters/is_expected_to_find_a_user_with_a_v3_search_engine_query.yml +36 -27
  172. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_users/_filters/should_exclude_the_indicated_fields_when_paginated.yml +36 -27
  173. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_users/_filters/should_include_the_indicated_fields_when_paginated.yml +36 -27
  174. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_users/_filters/should_not_include_other_fields_when_paginated.yml +36 -27
  175. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_users/_filters/should_return_the_correct_number_of_results_when_paginated.yml +36 -27
  176. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_users/should_have_at_least_one_user.yml +37 -27
  177. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/create_secondary_test_user.yml +38 -29
  178. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/create_test_api.yml +38 -29
  179. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/create_test_role.yml +39 -29
  180. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/create_test_user.yml +38 -29
  181. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/delete_test_api.yml +36 -24
  182. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/delete_test_role.yml +42 -28
  183. data/spec/integration/lib/auth0/api/v2/api_client_grants_spec.rb +0 -9
  184. data/spec/integration/lib/auth0/api/v2/api_connections_spec.rb +3 -3
  185. data/spec/integration/lib/auth0/api/v2/api_email_spec.rb +0 -31
  186. data/spec/integration/lib/auth0/api/v2/api_jobs_spec.rb +4 -4
  187. data/spec/integration/lib/auth0/api/v2/api_logs_spec.rb +5 -5
  188. data/spec/integration/lib/auth0/api/v2/api_roles_spec.rb +3 -3
  189. data/spec/integration/lib/auth0/api/v2/api_tickets_spec.rb +4 -4
  190. data/spec/integration/lib/auth0/api/v2/api_user_blocks_spec.rb +8 -5
  191. data/spec/integration/lib/auth0/api/v2/api_users_spec.rb +6 -33
  192. data/spec/lib/auth0/api/v2/actions_spec.rb +312 -0
  193. data/spec/lib/auth0/api/v2/grants_spec.rb +91 -0
  194. data/spec/lib/auth0/api/v2/organizations_spec.rb +31 -6
  195. data/spec/lib/auth0/api/v2/roles_spec.rb +5 -1
  196. data/spec/lib/auth0/client_spec.rb +3 -3
  197. data/spec/lib/auth0/mixins/httpproxy_spec.rb +320 -25
  198. data/spec/lib/auth0/mixins/initializer_spec.rb +87 -0
  199. data/spec/lib/auth0/mixins/token_management_spec.rb +125 -0
  200. data/spec/spec_helper.rb +1 -1
  201. data/spec/support/dummy_class_for_proxy.rb +2 -2
  202. data/spec/support/dummy_class_for_tokens.rb +17 -0
  203. metadata +30 -30
  204. data/.yardoc/checksums +0 -22
  205. data/.yardoc/complete +0 -0
  206. data/.yardoc/object_types +0 -0
  207. data/.yardoc/objects/root.dat +0 -0
  208. data/.yardoc/proxy_types +0 -0
  209. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Anomaly/_check_if_ip_is_blocked/should_return_200_response_code.yml +0 -65
  210. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Anomaly/_remove_ip_block/should_remove_an_IP_successfully.yml +0 -60
  211. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/_client_grants/should_return_the_first_page_of_one_result.yml +0 -66
  212. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_DeviceCredentials/_delete_device_credential/should_delete_the_test_credential_without_an_error.yml +0 -54
  213. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_DeviceCredentials/_device_credentials/_filter_by_type/should_exclude_the_test_credential.yml +0 -59
  214. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_DeviceCredentials/_device_credentials/should_have_at_least_1_entry.yml +0 -62
  215. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_DeviceCredentials/_device_credentials/should_include_the_test_credential.yml +0 -62
  216. data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_DeviceCredentials/delete_test_credential.yml +0 -54
  217. data/spec/integration/lib/auth0/api/v2/api_anomaly_spec.rb +0 -17
  218. data/spec/integration/lib/auth0/api/v2/api_device_credentials_spec.rb +0 -128
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b3563e4bf62c09fff26ea8b276131cbec25df91f0d25b85182490df7e71a6eea
4
- data.tar.gz: 89cd204c4a5a0ef27ceec06f7bcb4af91328850013d0e6f8fa22b4cc718281af
3
+ metadata.gz: dd91396b4162ecec7d480c49ad4ab50568a7a116a0bd8be32edd188621d11793
4
+ data.tar.gz: d2584f0f09793611513c23334216237a8adbb923a08f1025683aa6a525e427b7
5
5
  SHA512:
6
- metadata.gz: b99d7e3483904fce1d4e657c5b309ade0c94b8031e00b86afe65a4d7decb5fbdc034d08179d393b7427005f3295a8e496d6f027b8bbb9e3d432e3e9f419bdac4
7
- data.tar.gz: 26dd85e196c16c135a6b78f933e7ddb30958f74c28bfc18f798ce0a3529e50b06bcd970df9439d704f665744365e80db00cfad37d22812a0e086afe6c2fdff71
6
+ metadata.gz: 30fac0340e6481da011ab2d99a1c87f9d4e66557357412d1a67d2dc34f4c1b18172af80ff5a04cfcf03ca2497470e7de51f8e5b3ba292ca44b17fbbcd0ab3e0f
7
+ data.tar.gz: f47a705a3223ba68fb4cd9857cb30817ff0c81981e97a9efd250e92f05b62bba37976a7ab7dd2ab666dd354822e032eb6873221f9e7d35ffaf3b59020518202c
data/.gitignore CHANGED
@@ -12,3 +12,8 @@ coverage
12
12
  spec/auth0.yml
13
13
  .env
14
14
  /Gemfile.lock
15
+ /.yardoc/checksums
16
+ /.yardoc/complete
17
+ /.yardoc/object_types
18
+ /.yardoc/objects/root.dat
19
+ /.yardoc/proxy_types
data/CHANGELOG.md CHANGED
@@ -1,5 +1,53 @@
1
1
  # Change Log
2
2
 
3
+ ## [v5.6.0](https://github.com/auth0/ruby-auth0/tree/v5.6.0) (2021-09-14)
4
+
5
+ [Full Changelog](https://github.com/auth0/ruby-auth0/compare/v5.5.0..v5.6.0)
6
+
7
+ **Added**
8
+
9
+ - New Actions endpoints CH: Added review:medium. [\#293](https://github.com/auth0/ruby-auth0/pull/293) ([davidpatrick](https://github.com/davidpatrick))
10
+
11
+ - Updates rest-client to 2.1. [\#296](https://github.com/auth0/ruby-auth0/pull/296) ([davidpatrick](https://github.com/davidpatrick))
12
+
13
+ - Add New Grants. [\#295](https://github.com/auth0/ruby-auth0/pull/295) ([Norio4](https://github.com/Norio4))
14
+
15
+ - Add token cache and renew functionality for API requests [\#301](https://github.com/auth0/ruby-auth0/pull/295) ([stevehobbsdev](https://github.com/stevehobbsdev))
16
+
17
+ - Optional `client_id` parameter for `reset_password` [\#299](https://github.com/auth0/ruby-auth0/pull/295) ([DJRH](https://github.com/DJRH))
18
+
19
+ **Deprecated**
20
+
21
+ - Deprecate change_password in favor of reset_password. [\#297](https://github.com/auth0/ruby-auth0/pull/297) ([davidpatrick](https://github.com/davidpatrick))
22
+
23
+ ## [v5.5.0](https://github.com/auth0/ruby-auth0/tree/v5.5.0) (2021-08-06)
24
+
25
+ [Full Changelog](https://github.com/auth0/ruby-auth0/compare/v5.4.0..v5.5.0)
26
+
27
+ **Added**
28
+
29
+ - Automatically retry requests when API returns a 429 rate-limit status header. [\#290](https://github.com/auth0/ruby-auth0/pull/290) ([davidpatrick](https://github.com/davidpatrick))
30
+
31
+ ## [v5.4.0](https://github.com/auth0/ruby-auth0/tree/v5.4.0) (2021-07-23)
32
+
33
+ [Full Changelog](https://github.com/auth0/ruby-auth0/compare/v5.3.0..v5.4.0)
34
+
35
+ **Fixed**
36
+
37
+ - Fixing yard issues with documentation [\#288](https://github.com/auth0/ruby-auth0/pull/288) ([davidpatrick](https://github.com/davidpatrick))
38
+
39
+ **Changed**
40
+
41
+ - Change strategy when normalizing path [\#287](https://github.com/auth0/ruby-auth0/pull/287) ([davidpatrick](https://github.com/davidpatrick))
42
+
43
+ ## [v5.3.0](https://github.com/auth0/ruby-auth0/tree/v5.3.0) (2021-07-23)
44
+
45
+ [Full Changelog](https://github.com/auth0/ruby-auth0/compare/v5.2.0..v5.3.0)
46
+
47
+ **Added**
48
+
49
+ - Checkpoint Pagination [\#284](https://github.com/auth0/ruby-auth0/pull/284) ([davidpatrick](https://github.com/davidpatrick))
50
+
3
51
  ## [v5.2.0](https://github.com/auth0/ruby-auth0/tree/v5.2.0) (2021-07-20)
4
52
 
5
53
  [Full Changelog](https://github.com/auth0/ruby-auth0/compare/v5.1.2..v5.2.0)
data/Gemfile CHANGED
@@ -15,4 +15,5 @@ group :test do
15
15
  gem 'vcr', require: false
16
16
  gem 'codecov', require: false
17
17
  gem 'simplecov'
18
+ gem 'timecop', require: false
18
19
  end
data/README.md CHANGED
@@ -77,6 +77,10 @@ class AllUsersController < ApplicationController
77
77
  # Otherwise, you can pass in a Management API token directly for testing or temporary
78
78
  # access using the key below.
79
79
  # token: ENV['AUTH0_RUBY_API_TOKEN'],
80
+ #
81
+ # When passing a token, you can also specify when the token expires in seconds from epoch. Otherwise, expiry is set
82
+ # by default to an hour from now.
83
+ # token_expires_at: Time.now.to_i + 86400,
80
84
  domain: ENV['AUTH0_RUBY_DOMAIN'],
81
85
  api_version: 2,
82
86
  timeout: 15 # optional, defaults to 10
@@ -98,6 +102,12 @@ Finally, we'll add a view to display the results:
98
102
 
99
103
  This should show the parameters passed to the `users` method and a list of users that matched the query (or an empty array if none).
100
104
 
105
+ ### Token management
106
+
107
+ If `token` is omitted, the SDK will attempt to fetch a new token using the `client_credentials` grant, provided that `client_id` and `client_secret` are provided in the configuration. Once the token is about to expire (or has already expired), a new token will be fetched and cached for future calls.
108
+
109
+ For this to work, ensure your application can make a Client Credentials grant (Application settings in Auth0 > Advanced > Grant Types tab) and that the application is authorized for the Management API: https://auth0.com/docs/api-auth/config/using-the-auth0-dashboard
110
+
101
111
  ## Authentication
102
112
 
103
113
  In addition to the Management API, this SDK also provides access to [Authentication API](https://auth0.com/docs/api/authentication) endpoints with the `Auth0::API::AuthenticationEndpoints` module. For basic login capability, we suggest using our OmniAuth stategy [detailed here](https://auth0.com/docs/quickstart/webapp/rails/01-login). Other authentication tasks currently supported are:
@@ -117,14 +127,6 @@ Please note that this module implements endpoints that might be deprecated for n
117
127
 
118
128
  [Organizations](https://auth0.com/docs/organizations) is a set of features that provide better support for developers who build and maintain SaaS and Business-to-Business (B2B) applications.
119
129
 
120
- Using Organizations, you can:
121
-
122
- - Represent teams, business customers, partner companies, or any logical grouping of users that should have different ways of accessing your applications, as organizations.
123
- - Manage their membership in a variety of ways, including user invitation.
124
- - Configure branded, federated login flows for each organization.
125
- - Implement role-based access control, such that users can have different roles when authenticating in the context of different organizations.
126
- - Build administration capabilities into your products, using Organizations APIs, so that those businesses can manage their own organizations.
127
-
128
130
  Note that Organizations is currently only available to customers on our Enterprise and Startup subscription plans.
129
131
 
130
132
  #### Logging in with an Organization
data/auth0.gemspec CHANGED
@@ -16,10 +16,11 @@ Gem::Specification.new do |s|
16
16
  s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
17
17
  s.require_paths = ['lib']
18
18
 
19
- s.add_runtime_dependency 'rest-client', '~> 2.0.2' #2.1.0 has breaking changes
19
+ s.add_runtime_dependency 'rest-client', '~> 2.1'
20
20
  s.add_runtime_dependency 'jwt', '~> 2.2'
21
21
  s.add_runtime_dependency 'zache', '~> 0.12'
22
22
  s.add_runtime_dependency 'addressable', '~> 2.8'
23
+ s.add_runtime_dependency 'retryable', '~> 3.0'
23
24
 
24
25
  s.add_development_dependency 'bundler'
25
26
  s.add_development_dependency 'rake', '~> 13.0'
@@ -22,16 +22,14 @@ module Auth0
22
22
  organization: @organization,
23
23
  audience: nil
24
24
  )
25
-
26
25
  request_params = {
27
26
  grant_type: 'client_credentials',
28
27
  client_id: client_id,
29
28
  client_secret: client_secret,
30
- audience: audience,
31
- organization: organization
29
+ audience: audience
32
30
  }
33
31
 
34
- response = post('/oauth/token', request_params)
32
+ response = request_with_retry(:post, '/oauth/token', request_params)
35
33
  ::Auth0::ApiToken.new(response['access_token'], response['scope'], response['expires_in'])
36
34
  end
37
35
 
@@ -58,7 +56,7 @@ module Auth0
58
56
  code: code,
59
57
  redirect_uri: redirect_uri
60
58
  }
61
- ::Auth0::AccessToken.from_response post('/oauth/token', request_params)
59
+ ::Auth0::AccessToken.from_response request_with_retry(:post, '/oauth/token', request_params)
62
60
  end
63
61
 
64
62
  # Get access and ID tokens using a refresh token.
@@ -83,7 +81,7 @@ module Auth0
83
81
  client_secret: client_secret,
84
82
  refresh_token: refresh_token
85
83
  }
86
- ::Auth0::AccessToken.from_response post('/oauth/token', request_params)
84
+ ::Auth0::AccessToken.from_response request_with_retry(:post, '/oauth/token', request_params)
87
85
  end
88
86
 
89
87
  # rubocop:disable Metrics/ParameterLists
@@ -123,7 +121,7 @@ module Auth0
123
121
  audience: audience,
124
122
  grant_type: realm ? 'http://auth0.com/oauth/grant-type/password-realm' : 'password'
125
123
  }
126
- ::Auth0::AccessToken.from_response post('/oauth/token', request_params)
124
+ ::Auth0::AccessToken.from_response request_with_retry(:post, '/oauth/token', request_params)
127
125
  end
128
126
  # rubocop:enable Metrics/ParameterLists
129
127
 
@@ -143,16 +141,18 @@ module Auth0
143
141
  connection: connection_name,
144
142
  client_id: @client_id
145
143
  }
146
- post('/dbconnections/signup', request_params)
144
+
145
+ request_with_retry(:post, '/dbconnections/signup', request_params)
147
146
  end
148
147
 
149
148
  # Change a user's password or trigger a password reset email.
150
149
  # @see https://auth0.com/docs/api/authentication#change-password
151
150
  # @see https://auth0.com/docs/connections/database/password-change
152
151
  # @param email [string] User's current email
153
- # @param password [string] User's new password; empty to trigger a
154
- # password reset email
152
+ # @param password [string] User's new password. This is only available
153
+ # on legacy tenants with change password v1 flow enabled
155
154
  # @param connection_name [string] Database connection name
155
+ # @deprecated Use {#password_reset} instead.
156
156
  def change_password(email, password, connection_name = UP_AUTH)
157
157
  raise Auth0::InvalidParameter, 'Must supply a valid email' if email.to_s.empty?
158
158
 
@@ -162,7 +162,29 @@ module Auth0
162
162
  connection: connection_name,
163
163
  client_id: @client_id
164
164
  }
165
- post('/dbconnections/change_password', request_params)
165
+
166
+ request_with_retry(:post, '/dbconnections/change_password', request_params)
167
+ end
168
+
169
+ # Trigger a password reset email.
170
+ # @see https://auth0.com/docs/api/authentication#change-password
171
+ # @see https://auth0.com/docs/connections/database/password-change
172
+ # @param email [string] User's current email
173
+ # @param password [string] User's new password; empty to trigger a
174
+ # password reset email
175
+ # @param connection_name [string] Database connection name
176
+ # @param client_id [string] Client ID override (to allow forwarding
177
+ # to a different application's login URI on password reset success page)
178
+ def reset_password(email, connection_name = UP_AUTH, client_id = @client_id)
179
+ raise Auth0::InvalidParameter, 'Must supply a valid email' if email.to_s.empty?
180
+
181
+ request_params = {
182
+ email: email,
183
+ connection: connection_name,
184
+ client_id: client_id
185
+ }
186
+
187
+ request_with_retry(:post, '/dbconnections/change_password', request_params)
166
188
  end
167
189
 
168
190
  # Start Passwordless email login flow.
@@ -182,7 +204,8 @@ module Auth0
182
204
  client_id: @client_id,
183
205
  client_secret: @client_secret
184
206
  }
185
- post('/passwordless/start', request_params)
207
+
208
+ request_with_retry(:post, '/passwordless/start', request_params)
186
209
  end
187
210
 
188
211
  # Start Passwordless SMS login flow.
@@ -198,28 +221,29 @@ module Auth0
198
221
  client_id: @client_id,
199
222
  client_secret: @client_secret
200
223
  }
201
- post('/passwordless/start', request_params)
224
+
225
+ request_with_retry(:post, '/passwordless/start', request_params)
202
226
  end
203
227
 
204
228
  # Retrive SAML 2.0 metadata XML for an Application.
205
229
  # @see https://auth0.com/docs/api/authentication#get-metadata
206
230
  # @return [xml] SAML 2.0 metadata
207
231
  def saml_metadata
208
- get("/samlp/metadata/#{@client_id}")
232
+ request_with_retry(:get, "/samlp/metadata/#{@client_id}")
209
233
  end
210
234
 
211
235
  # Retrieve WS-Federation metadata XML for a tenant.
212
236
  # @see https://auth0.com/docs/api/authentication#get-metadata36
213
237
  # @return [xml] WS-Federation metadata
214
238
  def wsfed_metadata
215
- get('/wsfed/FederationMetadata/2007-06/FederationMetadata.xml')
239
+ request_with_retry(:get, '/wsfed/FederationMetadata/2007-06/FederationMetadata.xml')
216
240
  end
217
241
 
218
242
  # Return the user information based on the Auth0 access token.
219
243
  # @see https://auth0.com/docs/api/authentication#get-user-info
220
244
  # @return [json] User information based on the Auth0 access token
221
245
  def userinfo(access_token)
222
- get('/userinfo', {}, 'Authorization' => "Bearer #{access_token}")
246
+ request_with_retry(:get, '/userinfo', {}, 'Authorization' => "Bearer #{access_token}")
223
247
  end
224
248
 
225
249
  # Return an authorization URL.
@@ -0,0 +1,210 @@
1
+ module Auth0
2
+ module Api
3
+ module V2
4
+ # Methods to use the actions endpoints
5
+ module Actions
6
+ include Auth0::Mixins::Validation
7
+
8
+ attr_reader :actions_path
9
+
10
+ # Get all actions.
11
+ # @see https://auth0.com/docs/api/management/v2#!/Actions/get_actions
12
+ # @param trigger_id [string] An actions extensibility point.
13
+ # @param action_name [string] The name of the action to retrieve.
14
+ # @param deployed [boolean] filter to only retrieve actions that are deployed.
15
+ # @param per_page [integer] The amount of entries per page. Default: 50. Max value: 100.
16
+ # @param page [integer] The page number. Zero based.
17
+ # @param installed [boolean] When true, return only installed actions. When false, return only custom actions. Returns all actions by default.
18
+ # @return [json] Actions and pagination info
19
+ def actions(trigger_id, action_name, deployed: nil, per_page: nil, page: nil, installed: nil)
20
+ raise Auth0::MissingTriggerId, 'Must supply a valid trigger_id' if trigger_id.to_s.empty?
21
+ raise Auth0::MissingActionName, 'Must supply a valid action_name' if action_name.to_s.empty?
22
+
23
+ request_params = {
24
+ trigger_id: trigger_id,
25
+ action_name: action_name,
26
+ deployed: deployed,
27
+ per_page: per_page,
28
+ page: page,
29
+ installed: installed
30
+ }
31
+ path = "#{actions_path}/actions"
32
+ get(path, request_params)
33
+ end
34
+ alias get_actions actions
35
+
36
+ # Create a new action.
37
+ # @see https://auth0.com/docs/api/management/v2/#!/actions/post_action
38
+ # @param body [hash] See https://auth0.com/docs/api/management/v2/#!/actions/post_action for available options
39
+ # @return [json] Returns the created action.
40
+ def create_action(body = {})
41
+ post(actions_path, body)
42
+ end
43
+
44
+ # Retrieve the set of triggers currently available within actions. A trigger is an extensibility point to which actions can be bound.
45
+ # @see https://auth0.com/docs/api/management/v2/#!/actions/get_triggers
46
+ #
47
+ # @return [json] Returns triggers of the action
48
+ def actions_triggers
49
+ path = "#{actions_path}/triggers"
50
+ get(path)
51
+ end
52
+
53
+ # Get an action by id.
54
+ # @see https://auth0.com/docs/api/management/v2/#!/actions/get_action
55
+ # @param action_id [string] The action_id of the user to retrieve.
56
+ #
57
+ # @return [json] Returns the action with the given action_id if it exists.
58
+ def action(action_id)
59
+ raise Auth0::MissingActionId, 'Must supply a valid action_id' if action_id.to_s.empty?
60
+ path = "#{actions_path}/actions/#{action_id}"
61
+ get(path)
62
+ end
63
+ alias get_action action
64
+
65
+
66
+ # Deletes a single action given its id
67
+ # @see https://auth0.com/docs/api/management/v2/#!/actions/delete_action
68
+ # @param action_id [string] The action ID
69
+ # @param force [boolean] Force action deletion detaching bindings (defaults to false)
70
+ def delete_action(action_id, force=false)
71
+ raise Auth0::MissingActionId, 'Must supply a valid action_id' if action_id.to_s.empty?
72
+ path = "#{actions_path}/actions/#{action_id}"
73
+ delete(path, { force: force })
74
+ end
75
+
76
+ # Update an existing action.
77
+ # @see https://auth0.com/docs/api/management/v2/#!/Actions/patch_action
78
+ # @param action_id [string] The action ID
79
+ # @param body [hash] The optional parameters to update.
80
+ #
81
+ # @return [json] Returns the updated user.
82
+ def patch_action(action_id, body)
83
+ raise Auth0::MissingActionId, 'Must supply a valid action_id' if action_id.to_s.empty?
84
+ raise Auth0::InvalidParameter, 'Must supply a valid body' if body.to_s.empty? || body.empty?
85
+ path = "#{actions_path}/actions/#{action_id}"
86
+ patch(path, body)
87
+ end
88
+ alias update_action patch_action
89
+
90
+ # Retrieve information about a specific execution of a trigger.
91
+ # @see https://auth0.com/docs/api/management/v2/#!/actions/get_action
92
+ # @param execution_id [string] The ID of the exeution to retrieve.
93
+ #
94
+ # @return [json] Returns the action with the given execution_id if it exists.
95
+ def execution(execution_id)
96
+ raise Auth0::MissingExecutionId, 'Must supply a valid execution_id' if execution_id.to_s.empty?
97
+ path = "#{actions_path}/executions/#{execution_id}"
98
+ get(path)
99
+ end
100
+ alias get_execution execution
101
+
102
+ # Retrieve all of an action's versions.
103
+ # @see https://auth0.com/docs/api/management/v2/#!/actions/versions
104
+ # @param action_id [string] The ID of the action.
105
+ # @param per_page [integer] The amount of entries per page. Default: 50. Max value: 100.
106
+ # @param page [integer] The page number. Zero based
107
+ #
108
+ # @return [json] Returns the action with the given execution_id if it exists.
109
+ def actions_versions(action_id, page: nil, per_page: nil)
110
+ raise Auth0::MissingActionId, 'Must supply a valid action_id' if action_id.to_s.empty?
111
+ path = "#{actions_path}/actions/#{action_id}/versions"
112
+ request_params = {
113
+ per_page: per_page,
114
+ page: page
115
+ }
116
+
117
+ get(path, request_params)
118
+ end
119
+ alias get_actions_versions actions_versions
120
+
121
+ # Retrieve the actions that are bound to a trigger.
122
+ # @see https://auth0.com/docs/api/management/v2/#!/actions/get_bindings
123
+ # @param trigger_id [string] An actions extensibility point.
124
+ # @param per_page [integer] The amount of entries per page. Default: 50. Max value: 100.
125
+ # @param page [integer] The page number. Zero based
126
+ #
127
+ # @return [json] Returns the action with the given trigger_id if it exists.
128
+ def trigger_bindings(trigger_id, page: nil, per_page: nil)
129
+ raise Auth0::MissingTriggerId, 'Must supply a valid trigger_id' if trigger_id.to_s.empty?
130
+ path = "#{actions_path}/triggers/#{trigger_id}/bindings"
131
+ request_params = {
132
+ per_page: per_page,
133
+ page: page
134
+ }
135
+
136
+ get(path, request_params)
137
+ end
138
+ alias get_trigger_bindings trigger_bindings
139
+
140
+ # Update the actions that are bound (i.e. attached) to a trigger.
141
+ # @see https://auth0.com/docs/api/management/v2/#!/actions/patch_bindings
142
+ # @param trigger_id [string] An actions extensibility point.
143
+ # @param body [hash] The optional parameters to update.
144
+ #
145
+ # @return [json] Returns the bindings that were updated.
146
+ def patch_trigger_bindings(trigger_id, body = nil)
147
+ raise Auth0::MissingTriggerId, 'Must supply a valid trigger_id' if trigger_id.to_s.empty?
148
+ raise Auth0::InvalidParameter, 'Must supply a valid body' if body.to_s.empty? || body.empty?
149
+ path = "#{actions_path}/triggers/#{trigger_id}/bindings"
150
+ patch(path, body)
151
+ end
152
+ alias update_trigger_bindings patch_trigger_bindings
153
+
154
+ # Retrieve a specific version of an action
155
+ # @see https://auth0.com/docs/api/management/v2/#!/actions/get_action_version
156
+ # @param action_id [string] The ID of the action.
157
+ # @param version_id [string] The ID of the action version.
158
+ #
159
+ # @return [json] Returns the action.
160
+ def action_by_version(action_id, version_id)
161
+ raise Auth0::MissingActionId, 'Must supply a valid action_id' if action_id.to_s.empty?
162
+ raise Auth0::MissingVersionId, 'Must supply a valid version_id' if version_id.to_s.empty?
163
+ path = "#{actions_path}/actions/#{action_id}/versions/#{version_id}"
164
+ get(path)
165
+ end
166
+ alias get_action_by_version action_by_version
167
+
168
+ # Deploy an action.
169
+ # @see https://auth0.com/docs/api/management/v2/#!/actions/post_deploy_action
170
+ # @param action_id [string] The ID of the action.
171
+ # @return [json] Returns the created action.
172
+ def deploy_action(action_id)
173
+ raise Auth0::MissingActionId, 'Must supply a valid action_id' if action_id.to_s.empty?
174
+ path = "#{actions_path}/actions/#{action_id}/deploy"
175
+ post(path)
176
+ end
177
+
178
+ # Test an action.
179
+ # @see https://auth0.com/docs/api/management/v2/#!/actions/post_test_action
180
+ # @param action_id [string] The ID of the action.
181
+ # @param body [hash] See https://auth0.com/docs/api/management/v2/#!/actions/post_test_action for available options
182
+ # @return [json] Returns the created action.
183
+ def test_action(action_id, body = {})
184
+ raise Auth0::MissingActionId, 'Must supply a valid action_id' if action_id.to_s.empty?
185
+ raise Auth0::InvalidParameter, 'Must supply a valid body' if body.to_s.empty? || body.empty?
186
+ path = "#{actions_path}/actions/#{action_id}/test"
187
+ post(path, body)
188
+ end
189
+
190
+ # Performs the equivalent of a roll-back of an action to an earlier, specified version.
191
+ # @see https://auth0.com/docs/api/management/v2/#!/actions/post_deploy_draft_version
192
+ # @param action_id [string] The ID of the action.
193
+ # @param version_id [string] The ID of the action version.
194
+ # @return [json] Returns the created action.
195
+ def rollback_action(action_id, version_id)
196
+ raise Auth0::MissingActionId, 'Must supply a valid action_id' if action_id.to_s.empty?
197
+ raise Auth0::MissingVersionId, 'Must supply a valid version_id' if version_id.to_s.empty?
198
+ path = "#{actions_path}/actions/#{action_id}/versions/#{version_id}/deploy"
199
+ post(path)
200
+ end
201
+
202
+ private
203
+ # actions API path
204
+ def actions_path
205
+ @actions_path ||= '/api/v2/actions'
206
+ end
207
+ end
208
+ end
209
+ end
210
+ end
@@ -35,7 +35,6 @@ module Auth0
35
35
 
36
36
  # Delete template for New Universal Login Experience
37
37
  # @see https://auth0.com/docs/api/management/v2/#!/Branding/delete_universal_login
38
- # @param rule_id [string] The id of the rule to delete.
39
38
  def delete_branding_templates_for_universal_login
40
39
  delete(templates_path)
41
40
  end
@@ -0,0 +1,49 @@
1
+ module Auth0
2
+ module Api
3
+ module V2
4
+ module Grants
5
+ attr_reader :grants_path
6
+
7
+ # Retrieve the grants associated with your account.
8
+ # @see https://auth0.com/docs/api/management/v2#!/Grants/get_grants
9
+ # @param client_id [string] The client_id of the grants to retrieve.
10
+ # @param user_id [string] The user_id of the grants to retrieve.
11
+ # @param audience [string] The audience of the grants to retrieve.
12
+ # @param page [int] The page index of the results to return. First page is 0.
13
+ # @param per_page [int] The number of results per page. Paging is disabled if parameter not sent.
14
+ # @param include_totals [boolean] Return results inside an object that contains the total result count (true) or as a direct array of results (false, default).
15
+ # @return [json] Returns the grants.
16
+ def grants(client_id: nil, user_id: nil, audience: nil, page: nil, per_page: nil, include_totals: nil)
17
+ request_params = {
18
+ client_id: client_id,
19
+ user_id: user_id,
20
+ audience: audience,
21
+ page: page,
22
+ per_page: per_page,
23
+ include_totals: include_totals
24
+ }
25
+ get(grants_path, request_params)
26
+ end
27
+ alias get_all_grants grants
28
+
29
+ # Delete a grant associated with your account.
30
+ # @see https://auth0.com/docs/api/management/v2#!/Grants/delete_grants_by_id
31
+ # @param id [string] The id of the grant to delete.
32
+ # @param user_id [string] The user_id of the grant to delete.
33
+ def delete_grant(id, user_id)
34
+ raise Auth0::InvalidParameter, 'Must specify a grant id as id' if id.to_s.empty?
35
+ raise Auth0::InvalidParameter, 'Must specify a user id' if user_id.to_s.empty?
36
+ path = "#{grants_path}/#{id}?user_id=#{user_id}"
37
+ delete(path)
38
+ end
39
+
40
+ private
41
+
42
+ # Grants API path
43
+ def grants_path
44
+ @grants_path ||= '/api/v2/grants'
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
@@ -16,8 +16,8 @@ module Auth0
16
16
  # * :fields [string] A comma separated list of fields to include or exclude from the result.
17
17
  # * :include_fields [boolean] True if the fields specified are to be included in the result, false otherwise.
18
18
  # * :include_totals [string] True if a query summary must be included in the result, false otherwise.
19
- # * :from [string] Log Event Id to start retrieving logs. You can limit the amount of logs using the take parameter.
20
- # * :take [integer] The total amount of entries to retrieve when using the from parameter.
19
+ # * :from [string] For checkpoint pagination, the ID from which to start selection from.
20
+ # * :take [integer] For checkpoint pagination, the number of entries to retrieve. Default is 50.
21
21
  # Default: 50. Max value: 100.
22
22
  #
23
23
  # @return [json] Returns the list of existing log entries.
@@ -12,12 +12,16 @@ module Auth0
12
12
  # @param options [hash] The Hash options used to define the paging of rersults
13
13
  # * :per_page [integer] The amount of entries per page. Default: 50. Max value: 100.
14
14
  # * :page [integer] The page number. Zero based.
15
+ # * :from [string] For checkpoint pagination, the ID from which to start selection from.
16
+ # * :take [integer] For checkpoint pagination, the number of entries to retrieve. Default is 50.
15
17
  # * :include_totals [boolean] True to include query summary in the result, false or nil otherwise.
16
18
  # @return [json] All Organizations
17
19
  def organizations(options = {})
18
20
  request_params = {
19
21
  per_page: options.fetch(:per_page, nil),
20
22
  page: options.fetch(:page, nil),
23
+ from: options.fetch(:from, nil),
24
+ take: options.fetch(:take, nil),
21
25
  include_totals: options.fetch(:include_totals, nil)
22
26
  }
23
27
  get(organizations_path, request_params)
@@ -212,13 +216,25 @@ module Auth0
212
216
  # Get Members in a Organization
213
217
  # @see https://auth0.com/docs/api/management/v2/#!/Organizations/get_members
214
218
  # @param organization_id [string] The Organization ID
215
- # @param user_id [string] The User ID
219
+ # @param options [hash] The Hash options used to define the paging of rersults
220
+ # * :per_page [integer] The amount of entries per page. Default: 50. Max value: 100.
221
+ # * :page [integer] The page number. Zero based.
222
+ # * :from [string] For checkpoint pagination, the ID from which to start selection from.
223
+ # * :take [integer] For checkpoint pagination, the number of entries to retrieve. Default is 50.
224
+ # * :include_totals [boolean] True to include query summary in the result, false or nil otherwise.
216
225
  #
217
226
  # @return [json] Returns the members for the given organization
218
- def get_organizations_members(organization_id)
227
+ def get_organizations_members(organization_id, options = {})
219
228
  raise Auth0::MissingOrganizationId, 'Must supply a valid organization_id' if organization_id.to_s.empty?
229
+ request_params = {
230
+ per_page: options.fetch(:per_page, nil),
231
+ page: options.fetch(:page, nil),
232
+ from: options.fetch(:from, nil),
233
+ take: options.fetch(:take, nil),
234
+ include_totals: options.fetch(:include_totals, nil)
235
+ }
220
236
  path = "#{organizations_members_path(organization_id)}"
221
- get(path)
237
+ get(path, request_params)
222
238
  end
223
239
 
224
240
  # Add members in an organization
@@ -87,13 +87,17 @@ module Auth0
87
87
  # @param options [hash] A hash of options for getting Roles
88
88
  # - per_page: Number of Roles to return.
89
89
  # - page: Page number to return, zero-based.
90
- # - include_totals: True to include query summary in the result, false or nil otherwise.
90
+ # * :from [string] For checkpoint pagination, the ID from which to start selection from.
91
+ # * :take [integer] For checkpoint pagination, the number of entries to retrieve. Default is 50.
92
+ # * :include_totals [boolean] True to include query summary in the result, false or nil otherwise.
91
93
  def get_role_users(role_id, options = {})
92
94
  raise Auth0::MissingParameter, 'Must supply a valid role_id' if role_id.to_s.empty?
93
95
 
94
96
  request_params = {
95
- per_page: options.fetch(:per_page, nil),
96
- page: options.fetch(:page, nil),
97
+ per_page: options.fetch(:per_page, nil),
98
+ page: options.fetch(:page, nil),
99
+ from: options.fetch(:from, nil),
100
+ take: options.fetch(:take, nil),
97
101
  include_totals: options.fetch(:include_totals, nil)
98
102
  }
99
103
  get "#{roles_path}/#{role_id}/users", request_params
data/lib/auth0/api/v2.rb CHANGED
@@ -1,3 +1,5 @@
1
+ require 'auth0/api/v2/grants'
2
+ require 'auth0/api/v2/actions'
1
3
  require 'auth0/api/v2/anomaly'
2
4
  require 'auth0/api/v2/blacklists'
3
5
  require 'auth0/api/v2/branding'
@@ -26,6 +28,8 @@ module Auth0
26
28
  module Api
27
29
  # https://auth0.com/docs/apiv2
28
30
  module V2
31
+ include Auth0::Api::V2::Grants
32
+ include Auth0::Api::V2::Actions
29
33
  include Auth0::Api::V2::Anomaly
30
34
  include Auth0::Api::V2::Blacklists
31
35
  include Auth0::Api::V2::Branding