diff --git a/MIGRATION_GUIDE.md b/MIGRATION_GUIDE.md index 10a8da13c..f0ecbd678 100644 --- a/MIGRATION_GUIDE.md +++ b/MIGRATION_GUIDE.md @@ -1,5 +1,88 @@ # Migration Guide +## Upgrading from v0.49.0 → v0.50.0 + +There are deprecations in this update. Please ensure you read this guide thoroughly and prepare your potential +automated workflows before upgrading. + +### Deprecations + +- [Auth0 Pages](#auth0-pages) + +#### Auth0 Pages + +The `custom_login_page` on the `auth0_global_client` and the `change_password`, `guardian_mfa_page` and `error_page` +fields on the `auth0_tenant` have been deprecated in favour of managing them on a brand new `auth0_pages` resource. +To ensure a smooth transition when we eventually remove the capability to manage the custom +Auth0 pages through the `auth0_global_client` and `auth0_tenant` resources, we recommend proactively migrating to the +newly introduced `auth0_pages` resource. This will help you stay prepared for future changes. + + + + + + + + + + +
Before (v0.49.0)After (v0.50.0)
+ +```terraform +resource "auth0_global_client" "global" { + custom_login_page_on = true + custom_login_page = "My Custom Login Page" +} + +resource "auth0_tenant" "my_tenant" { + change_password { + enabled = true + html = "My Custom Reset Password Page" + } + + guardian_mfa_page { + enabled = true + html = "My Custom MFA Page" + } + + error_page { + html = "My Custom Error Page" + show_log_link = true + url = "https://example.com/errors" + } +} +``` + + + +```terraform +resource "auth0_pages" "my_pages" { + login { + enabled = true + html = "My Custom Login Page" + } + + change_password { + enabled = true + html = "My Custom Reset Password Page" + } + + guardian_mfa { + enabled = true + html = "My Custom MFA Page" + } + + error { + show_log_link = true + html = "My Custom Error Page" + url = "https://example.com" + } +} +``` + +
+ + ## Upgrading from v0.48.0 → v0.49.0 There are deprecations in this update. Please ensure you read this guide thoroughly and prepare your potential diff --git a/docs/data-sources/tenant.md b/docs/data-sources/tenant.md index 97d7238e8..fbde37b3d 100644 --- a/docs/data-sources/tenant.md +++ b/docs/data-sources/tenant.md @@ -20,16 +20,16 @@ data "auth0_tenant" "my_tenant" {} ### Read-Only - `allowed_logout_urls` (List of String) URLs that Auth0 may redirect to after logout. -- `change_password` (List of Object) Configuration settings for change password page. (see [below for nested schema](#nestedatt--change_password)) +- `change_password` (List of Object) Configuration settings for change password page. This attribute has been deprecated in favour of the newly introduced `auth0_pages` resource and it will be removed in a future version. Check the [MIGRATION_GUIDE](https://github.com/auth0/terraform-provider-auth0/blob/main/MIGRATION_GUIDE.md) for more info. (see [below for nested schema](#nestedatt--change_password)) - `default_audience` (String) API Audience to use by default for API Authorization flows. This setting is equivalent to appending the audience to every authorization request made to the tenant for every application. - `default_directory` (String) Name of the connection to be used for Password Grant exchanges. Options include `auth0-adldap`, `ad`, `auth0`, `email`, `sms`, `waad`, and `adfs`. - `default_redirection_uri` (String) The default absolute redirection URI. Must be HTTPS or an empty string. - `domain` (String) Your Auth0 domain name. - `enabled_locales` (List of String) Supported locales for the user interface. The first locale in the list will be used to set the default locale. -- `error_page` (List of Object) Configuration settings for error pages. (see [below for nested schema](#nestedatt--error_page)) +- `error_page` (List of Object) Configuration settings for error pages. This attribute has been deprecated in favour of the newly introduced `auth0_pages` resource and it will be removed in a future version. Check the [MIGRATION_GUIDE](https://github.com/auth0/terraform-provider-auth0/blob/main/MIGRATION_GUIDE.md) for more info. (see [below for nested schema](#nestedatt--error_page)) - `flags` (List of Object) Configuration settings for tenant flags. (see [below for nested schema](#nestedatt--flags)) - `friendly_name` (String) Friendly name for the tenant. -- `guardian_mfa_page` (List of Object) Configuration settings for the Guardian MFA page. (see [below for nested schema](#nestedatt--guardian_mfa_page)) +- `guardian_mfa_page` (List of Object) Configuration settings for the Guardian MFA page. This attribute has been deprecated in favour of the newly introduced `auth0_pages` resource and it will be removed in a future version. Check the [MIGRATION_GUIDE](https://github.com/auth0/terraform-provider-auth0/blob/main/MIGRATION_GUIDE.md) for more info. (see [below for nested schema](#nestedatt--guardian_mfa_page)) - `id` (String) The ID of this resource. - `idle_session_lifetime` (Number) Number of hours during which a session can be inactive before the user must log in again. - `management_api_identifier` (String) The identifier value of the built-in Management API resource server, which can be used as an audience when configuring client grants. diff --git a/docs/resources/pages.md b/docs/resources/pages.md new file mode 100644 index 000000000..117e9c0b5 --- /dev/null +++ b/docs/resources/pages.md @@ -0,0 +1,103 @@ +--- +page_title: "Resource: auth0_pages" +description: |- + With this resource you can manage custom HTML for the Login, Reset Password, Multi-Factor Authentication and Error pages. +--- + +# Resource: auth0_pages + +With this resource you can manage custom HTML for the Login, Reset Password, Multi-Factor Authentication and Error pages. + +## Example Usage + +```terraform +resource "auth0_pages" "my_pages" { + login { + enabled = true + html = "My Custom Login Page" + } + + change_password { + enabled = true + html = "My Custom Reset Password Page" + } + + guardian_mfa { + enabled = true + html = "My Custom MFA Page" + } + + error { + show_log_link = true + html = "My Custom Error Page" + url = "https://example.com" + } +} +``` + + +## Schema + +### Optional + +- `change_password` (Block List, Max: 1) Configuration settings for customizing the Password Reset page. (see [below for nested schema](#nestedblock--change_password)) +- `error` (Block List, Max: 1) Configuration settings for the Error pages. (see [below for nested schema](#nestedblock--error)) +- `guardian_mfa` (Block List, Max: 1) Configuration settings for customizing the Guardian Multi-Factor Authentication page. (see [below for nested schema](#nestedblock--guardian_mfa)) +- `login` (Block List, Max: 1) Configuration settings for customizing the Login page. (see [below for nested schema](#nestedblock--login)) + +### Read-Only + +- `id` (String) The ID of this resource. + + +### Nested Schema for `change_password` + +Required: + +- `enabled` (Boolean) Indicates whether to use the custom Reset Password HTML (`true`) or the default Auth0 page (`false`). Defaults to `false`. +- `html` (String) Customized content for the Reset Password page. HTML format with supported [Liquid syntax](https://github.com/Shopify/liquid/wiki/Liquid-for-Designers). + + + +### Nested Schema for `error` + +Required: + +- `html` (String) Customized content for the Error page. HTML format with supported [Liquid syntax](https://github.com/Shopify/liquid/wiki/Liquid-for-Designers). +- `show_log_link` (Boolean) Indicates whether to show the link to logs as part of the default error page. Defaults to `true`. + +Optional: + +- `url` (String) URL to redirect to when an error occurs, instead of showing the default error page. + + + +### Nested Schema for `guardian_mfa` + +Required: + +- `enabled` (Boolean) Indicates whether to use the custom Guardian MFA HTML (`true`) or the default Auth0 page (`false`). Defaults to `false`. +- `html` (String) Customized content for the Guardian MFA page. HTML format with supported [Liquid syntax](https://github.com/Shopify/liquid/wiki/Liquid-for-Designers). + + + +### Nested Schema for `login` + +Required: + +- `enabled` (Boolean) Indicates whether to use the custom Login page HTML (`true`) or the default Auth0 page (`false`). Defaults to `false`. +- `html` (String) Customized content for the Login page. HTML format with supported [Liquid syntax](https://github.com/Shopify/liquid/wiki/Liquid-for-Designers). + +## Import + +Import is supported using the following syntax: + +```shell +# As this is not a resource identifiable by an ID within the Auth0 Management API, +# pages can be imported using a random string. +# +# We recommend [Version 4 UUID](https://www.uuidgenerator.net/version4) +# +# Example: +terraform import auth0_pages.my_pages 22f4f21b-017a-319d-92e7-2291c1ca36c4 +``` diff --git a/docs/resources/tenant.md b/docs/resources/tenant.md index 480e6252e..5a72fa21e 100644 --- a/docs/resources/tenant.md +++ b/docs/resources/tenant.md @@ -70,15 +70,15 @@ resource "auth0_tenant" "my_tenant" { ### Optional - `allowed_logout_urls` (List of String) URLs that Auth0 may redirect to after logout. -- `change_password` (Block List, Max: 1) Configuration settings for change password page. (see [below for nested schema](#nestedblock--change_password)) +- `change_password` (Block List, Max: 1, Deprecated) Configuration settings for change password page. This attribute has been deprecated in favour of the newly introduced `auth0_pages` resource and it will be removed in a future version. Check the [MIGRATION_GUIDE](https://github.com/auth0/terraform-provider-auth0/blob/main/MIGRATION_GUIDE.md) for more info. (see [below for nested schema](#nestedblock--change_password)) - `default_audience` (String) API Audience to use by default for API Authorization flows. This setting is equivalent to appending the audience to every authorization request made to the tenant for every application. - `default_directory` (String) Name of the connection to be used for Password Grant exchanges. Options include `auth0-adldap`, `ad`, `auth0`, `email`, `sms`, `waad`, and `adfs`. - `default_redirection_uri` (String) The default absolute redirection URI. Must be HTTPS or an empty string. - `enabled_locales` (List of String) Supported locales for the user interface. The first locale in the list will be used to set the default locale. -- `error_page` (Block List, Max: 1) Configuration settings for error pages. (see [below for nested schema](#nestedblock--error_page)) +- `error_page` (Block List, Max: 1, Deprecated) Configuration settings for error pages. This attribute has been deprecated in favour of the newly introduced `auth0_pages` resource and it will be removed in a future version. Check the [MIGRATION_GUIDE](https://github.com/auth0/terraform-provider-auth0/blob/main/MIGRATION_GUIDE.md) for more info. (see [below for nested schema](#nestedblock--error_page)) - `flags` (Block List, Max: 1) Configuration settings for tenant flags. (see [below for nested schema](#nestedblock--flags)) - `friendly_name` (String) Friendly name for the tenant. -- `guardian_mfa_page` (Block List, Max: 1) Configuration settings for the Guardian MFA page. (see [below for nested schema](#nestedblock--guardian_mfa_page)) +- `guardian_mfa_page` (Block List, Max: 1, Deprecated) Configuration settings for the Guardian MFA page. This attribute has been deprecated in favour of the newly introduced `auth0_pages` resource and it will be removed in a future version. Check the [MIGRATION_GUIDE](https://github.com/auth0/terraform-provider-auth0/blob/main/MIGRATION_GUIDE.md) for more info. (see [below for nested schema](#nestedblock--guardian_mfa_page)) - `idle_session_lifetime` (Number) Number of hours during which a session can be inactive before the user must log in again. - `picture_url` (String) URL of logo to be shown for the tenant. Recommended size is 150px x 150px. If no URL is provided, the Auth0 logo will be used. - `sandbox_version` (String) Selected sandbox version for the extensibility environment, which allows you to use custom scripts to extend parts of Auth0's functionality. diff --git a/examples/resources/auth0_pages/import.sh b/examples/resources/auth0_pages/import.sh new file mode 100644 index 000000000..84d0e7f46 --- /dev/null +++ b/examples/resources/auth0_pages/import.sh @@ -0,0 +1,7 @@ +# As this is not a resource identifiable by an ID within the Auth0 Management API, +# pages can be imported using a random string. +# +# We recommend [Version 4 UUID](https://www.uuidgenerator.net/version4) +# +# Example: +terraform import auth0_pages.my_pages 22f4f21b-017a-319d-92e7-2291c1ca36c4 diff --git a/examples/resources/auth0_pages/resource.tf b/examples/resources/auth0_pages/resource.tf new file mode 100644 index 000000000..784573227 --- /dev/null +++ b/examples/resources/auth0_pages/resource.tf @@ -0,0 +1,22 @@ +resource "auth0_pages" "my_pages" { + login { + enabled = true + html = "My Custom Login Page" + } + + change_password { + enabled = true + html = "My Custom Reset Password Page" + } + + guardian_mfa { + enabled = true + html = "My Custom MFA Page" + } + + error { + show_log_link = true + html = "My Custom Error Page" + url = "https://example.com" + } +} diff --git a/internal/auth0/client/global_data_source.go b/internal/auth0/client/global_data_source.go index 13aedf904..aa0a05c3a 100644 --- a/internal/auth0/client/global_data_source.go +++ b/internal/auth0/client/global_data_source.go @@ -15,6 +15,9 @@ func NewGlobalDataSource() *schema.Resource { ReadContext: readDataGlobalClient, Schema: globalDataSourceSchema(), Description: "Retrieve a tenant's global Auth0 application client.", + DeprecationMessage: "This resource has been deprecated in favour of the newly introduced `auth0_pages` " + + "resource and it will be removed in a future version." + + "Check the [MIGRATION_GUIDE](https://github.com/auth0/terraform-provider-auth0/blob/main/MIGRATION_GUIDE.md) for more info.", } } diff --git a/internal/auth0/client/global_resource.go b/internal/auth0/client/global_resource.go index add7be425..1ee1cd629 100644 --- a/internal/auth0/client/global_resource.go +++ b/internal/auth0/client/global_resource.go @@ -16,6 +16,9 @@ func NewGlobalResource() *schema.Resource { client.Description = "Use a tenant's global Auth0 Application client." client.CreateContext = createGlobalClient client.DeleteContext = deleteGlobalClient + client.DeprecationMessage = "This resource has been deprecated in favour of the newly introduced `auth0_pages` " + + "resource and it will be removed in a future version." + + "Check the [MIGRATION_GUIDE](https://github.com/auth0/terraform-provider-auth0/blob/main/MIGRATION_GUIDE.md) for more info." exclude := []string{"client_secret_rotation_trigger"} diff --git a/internal/auth0/page/expand.go b/internal/auth0/page/expand.go new file mode 100644 index 000000000..92891d8b6 --- /dev/null +++ b/internal/auth0/page/expand.go @@ -0,0 +1,43 @@ +package page + +import ( + "github.com/auth0/go-auth0/management" + "github.com/hashicorp/go-cty/cty" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + + "github.com/auth0/terraform-provider-auth0/internal/auth0/tenant" + "github.com/auth0/terraform-provider-auth0/internal/value" +) + +func expandLoginPage(data *schema.ResourceData) *management.Client { + if !data.HasChange("login") { + return nil + } + + var clientWithLoginPage *management.Client + + data.GetRawConfig().GetAttr("login").ForEachElement(func(_ cty.Value, cfg cty.Value) (stop bool) { + clientWithLoginPage = &management.Client{ + CustomLoginPageOn: value.Bool(cfg.GetAttr("enabled")), + CustomLoginPage: value.String(cfg.GetAttr("html")), + } + + return stop + }) + + return clientWithLoginPage +} + +func expandTenantPages(cfg cty.Value) *management.Tenant { + tenantPages := &management.Tenant{ + ChangePassword: tenant.ExpandTenantChangePassword(cfg.GetAttr("change_password")), + GuardianMFAPage: tenant.ExpandTenantGuardianMFAPage(cfg.GetAttr("guardian_mfa")), + ErrorPage: tenant.ExpandTenantErrorPage(cfg.GetAttr("error")), + } + + if tenantPages.String() == "{}" { + return nil + } + + return tenantPages +} diff --git a/internal/auth0/page/flatten.go b/internal/auth0/page/flatten.go new file mode 100644 index 000000000..1c67e4c33 --- /dev/null +++ b/internal/auth0/page/flatten.go @@ -0,0 +1,14 @@ +package page + +import ( + "github.com/auth0/go-auth0/management" +) + +func flattenLoginPage(clientWithLoginPage *management.Client) []interface{} { + return []interface{}{ + map[string]interface{}{ + "enabled": clientWithLoginPage.GetCustomLoginPageOn(), + "html": clientWithLoginPage.GetCustomLoginPage(), + }, + } +} diff --git a/internal/auth0/page/resource.go b/internal/auth0/page/resource.go new file mode 100644 index 000000000..607798500 --- /dev/null +++ b/internal/auth0/page/resource.go @@ -0,0 +1,232 @@ +package page + +import ( + "context" + "fmt" + + "github.com/auth0/go-auth0" + "github.com/auth0/go-auth0/management" + "github.com/hashicorp/go-multierror" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/id" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + + "github.com/auth0/terraform-provider-auth0/internal/auth0/tenant" + "github.com/auth0/terraform-provider-auth0/internal/config" + internalValidation "github.com/auth0/terraform-provider-auth0/internal/validation" +) + +// NewResource will return a new auth0_pages resource. +func NewResource() *schema.Resource { + return &schema.Resource{ + Description: "With this resource you can manage custom HTML for the " + + "Login, Reset Password, Multi-Factor Authentication and Error pages.", + CreateContext: createPages, + ReadContext: readPages, + UpdateContext: updatePages, + DeleteContext: deletePages, + Importer: &schema.ResourceImporter{ + StateContext: schema.ImportStatePassthroughContext, + }, + Schema: map[string]*schema.Schema{ + "login": { + Type: schema.TypeList, + Optional: true, + Computed: true, + MaxItems: 1, + Description: "Configuration settings for customizing the Login page.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "enabled": { + Type: schema.TypeBool, + Required: true, + Description: "Indicates whether to use the custom Login page HTML (`true`) or the default Auth0 page (`false`). Defaults to `false`.", + }, + "html": { + Type: schema.TypeString, + Required: true, + Description: "Customized content for the Login page. " + + "HTML format with supported [Liquid syntax](https://github.com/Shopify/liquid/wiki/Liquid-for-Designers).", + }, + }, + }, + }, + "change_password": { + Type: schema.TypeList, + Optional: true, + Computed: true, + MaxItems: 1, + Description: "Configuration settings for customizing the Password Reset page.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "enabled": { + Type: schema.TypeBool, + Required: true, + Description: "Indicates whether to use the custom Reset Password HTML (`true`) or the default Auth0 page (`false`). Defaults to `false`.", + }, + "html": { + Type: schema.TypeString, + Required: true, + Description: "Customized content for the Reset Password page. " + + "HTML format with supported [Liquid syntax](https://github.com/Shopify/liquid/wiki/Liquid-for-Designers).", + }, + }, + }, + }, + "guardian_mfa": { + Type: schema.TypeList, + Optional: true, + Computed: true, + MaxItems: 1, + Description: "Configuration settings for customizing the Guardian Multi-Factor Authentication page.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "enabled": { + Type: schema.TypeBool, + Required: true, + Description: "Indicates whether to use the custom Guardian MFA HTML (`true`) or the default Auth0 page (`false`). Defaults to `false`.", + }, + "html": { + Type: schema.TypeString, + Required: true, + Description: "Customized content for the Guardian MFA page. " + + "HTML format with supported [Liquid syntax](https://github.com/Shopify/liquid/wiki/Liquid-for-Designers).", + }, + }, + }, + }, + "error": { + Type: schema.TypeList, + Optional: true, + Computed: true, + MaxItems: 1, + Description: "Configuration settings for the Error pages.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "html": { + Type: schema.TypeString, + Required: true, + Description: "Customized content for the Error page. " + + "HTML format with supported [Liquid syntax](https://github.com/Shopify/liquid/wiki/Liquid-for-Designers).", + }, + "show_log_link": { + Type: schema.TypeBool, + Required: true, + Description: "Indicates whether to show the link to logs as part of the default error page. Defaults to `true`.", + }, + "url": { + Type: schema.TypeString, + Optional: true, + ValidateFunc: internalValidation.IsURLWithHTTPSorEmptyString, + Description: "URL to redirect to when an error occurs, instead of showing the default error page.", + }, + }, + }, + }, + }, + } +} + +func createPages(ctx context.Context, data *schema.ResourceData, meta interface{}) diag.Diagnostics { + data.SetId(id.UniqueId()) + return updatePages(ctx, data, meta) +} + +func readPages(_ context.Context, data *schema.ResourceData, meta interface{}) diag.Diagnostics { + api := meta.(*config.Config).GetAPI() + + globalClientID, err := fetchGlobalClientID(api) + if err != nil { + return diag.FromErr(err) + } + + clientWithLoginPage, err := api.Client.Read(globalClientID) + if err != nil { + return diag.FromErr(err) + } + + tenantPages, err := api.Tenant.Read() + if err != nil { + return diag.FromErr(err) + } + + result := multierror.Append( + data.Set("login", flattenLoginPage(clientWithLoginPage)), + data.Set("change_password", tenant.FlattenTenantChangePassword(tenantPages.GetChangePassword())), + data.Set("guardian_mfa", tenant.FlattenTenantGuardianMFAPage(tenantPages.GetGuardianMFAPage())), + data.Set("error", tenant.FlattenTenantErrorPage(tenantPages.GetErrorPage())), + ) + + return diag.FromErr(result.ErrorOrNil()) +} + +func updatePages(ctx context.Context, data *schema.ResourceData, meta interface{}) diag.Diagnostics { + api := meta.(*config.Config).GetAPI() + + if clientWithLoginPage := expandLoginPage(data); clientWithLoginPage != nil { + globalClientID, err := fetchGlobalClientID(api) + if err != nil { + return diag.FromErr(err) + } + + if err := api.Client.Update(globalClientID, clientWithLoginPage); err != nil { + return diag.FromErr(err) + } + } + + if tenantPages := expandTenantPages(data.GetRawConfig()); tenantPages != nil { + if err := api.Tenant.Update(tenantPages); err != nil { + return diag.FromErr(err) + } + } + + return readPages(ctx, data, meta) +} + +func deletePages(_ context.Context, _ *schema.ResourceData, meta interface{}) diag.Diagnostics { + api := meta.(*config.Config).GetAPI() + + globalClientID, err := fetchGlobalClientID(api) + if err != nil { + return diag.FromErr(err) + } + + if err := api.Client.Update(globalClientID, &management.Client{ + CustomLoginPageOn: auth0.Bool(false), + }); err != nil { + return diag.FromErr(err) + } + + if err := api.Tenant.Update(&management.Tenant{ + ChangePassword: &management.TenantChangePassword{ + Enabled: auth0.Bool(false), + }, + ErrorPage: &management.TenantErrorPage{ + ShowLogLink: auth0.Bool(false), + URL: auth0.String(""), + }, + GuardianMFAPage: &management.TenantGuardianMFAPage{ + Enabled: auth0.Bool(false), + }, + }); err != nil { + return diag.FromErr(err) + } + + return nil +} + +func fetchGlobalClientID(api *management.Management) (string, error) { + clientList, err := api.Client.List( + management.Parameter("is_global", "true"), + management.IncludeFields("client_id"), + ) + if err != nil { + return "", err + } + + if len(clientList.Clients) == 0 { + return "", fmt.Errorf("no global client found") + } + + return clientList.Clients[0].GetClientID(), nil +} diff --git a/internal/auth0/page/resource_test.go b/internal/auth0/page/resource_test.go new file mode 100644 index 000000000..cf59a7834 --- /dev/null +++ b/internal/auth0/page/resource_test.go @@ -0,0 +1,127 @@ +package page_test + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + + "github.com/auth0/terraform-provider-auth0/internal/acctest" +) + +const testAccPagesCreate = ` +resource "auth0_pages" "my_pages" { + login { + enabled = true + html = "My Custom Login Page" + } + + change_password { + enabled = true + html = "My Custom Reset Password Page" + } + + guardian_mfa { + enabled = true + html = "My Custom MFA Page" + } + + error { + show_log_link = true + html = "My Custom Error Page" + url = "https://example.com" + } +} +` + +const testAccPagesSetHTMLToEmptyAndDisabled = ` +resource "auth0_pages" "my_pages" { + login { + enabled = false + html = "" + } + + change_password { + enabled = false + html = "" + } + + guardian_mfa { + enabled = false + html = "" + } + + error { + show_log_link = false + html = "" + url = "" + } +} +` + +const testAccPagesWithNoOptionalBlocksWillNotModifyPreExistingChanges = ` +resource "auth0_pages" "my_pages" { } +` + +func TestAccPages(t *testing.T) { + acctest.Test(t, resource.TestCase{ + Steps: []resource.TestStep{ + { + Config: acctest.ParseTestName(testAccPagesCreate, t.Name()), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttr("auth0_pages.my_pages", "login.#", "1"), + resource.TestCheckResourceAttr("auth0_pages.my_pages", "login.0.enabled", "true"), + resource.TestCheckResourceAttr("auth0_pages.my_pages", "login.0.html", "My Custom Login Page"), + resource.TestCheckResourceAttr("auth0_pages.my_pages", "change_password.#", "1"), + resource.TestCheckResourceAttr("auth0_pages.my_pages", "change_password.0.enabled", "true"), + resource.TestCheckResourceAttr("auth0_pages.my_pages", "change_password.0.html", "My Custom Reset Password Page"), + resource.TestCheckResourceAttr("auth0_pages.my_pages", "guardian_mfa.#", "1"), + resource.TestCheckResourceAttr("auth0_pages.my_pages", "guardian_mfa.0.enabled", "true"), + resource.TestCheckResourceAttr("auth0_pages.my_pages", "guardian_mfa.0.html", "My Custom MFA Page"), + resource.TestCheckResourceAttr("auth0_pages.my_pages", "error.#", "1"), + resource.TestCheckResourceAttr("auth0_pages.my_pages", "error.0.show_log_link", "true"), + resource.TestCheckResourceAttr("auth0_pages.my_pages", "error.0.html", "My Custom Error Page"), + resource.TestCheckResourceAttr("auth0_pages.my_pages", "error.0.url", "https://example.com"), + ), + }, + { + Config: acctest.ParseTestName(testAccPagesSetHTMLToEmptyAndDisabled, t.Name()), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttr("auth0_pages.my_pages", "login.#", "1"), + resource.TestCheckResourceAttr("auth0_pages.my_pages", "login.0.enabled", "false"), + resource.TestCheckResourceAttr("auth0_pages.my_pages", "login.0.html", ""), + resource.TestCheckResourceAttr("auth0_pages.my_pages", "change_password.#", "1"), + resource.TestCheckResourceAttr("auth0_pages.my_pages", "change_password.0.enabled", "false"), + resource.TestCheckResourceAttr("auth0_pages.my_pages", "change_password.0.html", ""), + resource.TestCheckResourceAttr("auth0_pages.my_pages", "guardian_mfa.#", "1"), + resource.TestCheckResourceAttr("auth0_pages.my_pages", "guardian_mfa.0.enabled", "false"), + resource.TestCheckResourceAttr("auth0_pages.my_pages", "guardian_mfa.0.html", ""), + resource.TestCheckResourceAttr("auth0_pages.my_pages", "error.#", "1"), + resource.TestCheckResourceAttr("auth0_pages.my_pages", "error.0.show_log_link", "false"), + resource.TestCheckResourceAttr("auth0_pages.my_pages", "error.0.html", ""), + resource.TestCheckResourceAttr("auth0_pages.my_pages", "error.0.url", ""), + ), + }, + { + Config: acctest.ParseTestName(testAccPagesCreate, t.Name()), + }, + { + Config: acctest.ParseTestName(testAccPagesWithNoOptionalBlocksWillNotModifyPreExistingChanges, t.Name()), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttr("auth0_pages.my_pages", "login.#", "1"), + resource.TestCheckResourceAttr("auth0_pages.my_pages", "login.0.enabled", "true"), + resource.TestCheckResourceAttr("auth0_pages.my_pages", "login.0.html", "My Custom Login Page"), + resource.TestCheckResourceAttr("auth0_pages.my_pages", "change_password.#", "1"), + resource.TestCheckResourceAttr("auth0_pages.my_pages", "change_password.0.enabled", "true"), + resource.TestCheckResourceAttr("auth0_pages.my_pages", "change_password.0.html", "My Custom Reset Password Page"), + resource.TestCheckResourceAttr("auth0_pages.my_pages", "guardian_mfa.#", "1"), + resource.TestCheckResourceAttr("auth0_pages.my_pages", "guardian_mfa.0.enabled", "true"), + resource.TestCheckResourceAttr("auth0_pages.my_pages", "guardian_mfa.0.html", "My Custom MFA Page"), + resource.TestCheckResourceAttr("auth0_pages.my_pages", "error.#", "1"), + resource.TestCheckResourceAttr("auth0_pages.my_pages", "error.0.show_log_link", "true"), + resource.TestCheckResourceAttr("auth0_pages.my_pages", "error.0.html", "My Custom Error Page"), + resource.TestCheckResourceAttr("auth0_pages.my_pages", "error.0.url", "https://example.com"), + ), + }, + }, + }) +} diff --git a/internal/auth0/tenant/expand.go b/internal/auth0/tenant/expand.go index b59b36e01..af323350b 100644 --- a/internal/auth0/tenant/expand.go +++ b/internal/auth0/tenant/expand.go @@ -26,9 +26,9 @@ func expandTenant(d *schema.ResourceData) *management.Tenant { SessionLifetime: &sessionLifetime, SandboxVersion: value.String(config.GetAttr("sandbox_version")), EnabledLocales: value.Strings(config.GetAttr("enabled_locales")), - ChangePassword: expandTenantChangePassword(config.GetAttr("change_password")), - GuardianMFAPage: expandTenantGuardianMFAPage(config.GetAttr("guardian_mfa_page")), - ErrorPage: expandTenantErrorPage(config.GetAttr("error_page")), + ChangePassword: ExpandTenantChangePassword(config.GetAttr("change_password")), + GuardianMFAPage: ExpandTenantGuardianMFAPage(config.GetAttr("guardian_mfa_page")), + ErrorPage: ExpandTenantErrorPage(config.GetAttr("error_page")), Flags: expandTenantFlags(config.GetAttr("flags")), UniversalLogin: expandTenantUniversalLogin(config.GetAttr("universal_login")), SessionCookie: expandTenantSessionCookie(config.GetAttr("session_cookie")), @@ -41,7 +41,8 @@ func expandTenant(d *schema.ResourceData) *management.Tenant { return tenant } -func expandTenantChangePassword(config cty.Value) *management.TenantChangePassword { +// ExpandTenantChangePassword expands the change password page config. +func ExpandTenantChangePassword(config cty.Value) *management.TenantChangePassword { var changePassword management.TenantChangePassword config.ForEachElement(func(_ cty.Value, d cty.Value) (stop bool) { @@ -57,7 +58,8 @@ func expandTenantChangePassword(config cty.Value) *management.TenantChangePasswo return &changePassword } -func expandTenantGuardianMFAPage(config cty.Value) *management.TenantGuardianMFAPage { +// ExpandTenantGuardianMFAPage expands the guardian mfa page config. +func ExpandTenantGuardianMFAPage(config cty.Value) *management.TenantGuardianMFAPage { var mfa management.TenantGuardianMFAPage config.ForEachElement(func(_ cty.Value, d cty.Value) (stop bool) { @@ -73,7 +75,8 @@ func expandTenantGuardianMFAPage(config cty.Value) *management.TenantGuardianMFA return &mfa } -func expandTenantErrorPage(config cty.Value) *management.TenantErrorPage { +// ExpandTenantErrorPage expands the error page config. +func ExpandTenantErrorPage(config cty.Value) *management.TenantErrorPage { var errorPage management.TenantErrorPage config.ForEachElement(func(_ cty.Value, d cty.Value) (stop bool) { diff --git a/internal/auth0/tenant/flatten.go b/internal/auth0/tenant/flatten.go index ff3e0b99a..fcc8222ee 100644 --- a/internal/auth0/tenant/flatten.go +++ b/internal/auth0/tenant/flatten.go @@ -4,7 +4,8 @@ import ( "github.com/auth0/go-auth0/management" ) -func flattenTenantChangePassword(changePassword *management.TenantChangePassword) []interface{} { +// FlattenTenantChangePassword flattens the change password page data. +func FlattenTenantChangePassword(changePassword *management.TenantChangePassword) []interface{} { if changePassword == nil { return nil } @@ -16,7 +17,8 @@ func flattenTenantChangePassword(changePassword *management.TenantChangePassword return []interface{}{m} } -func flattenTenantGuardianMFAPage(mfa *management.TenantGuardianMFAPage) []interface{} { +// FlattenTenantGuardianMFAPage flattens the guardian mfa page data. +func FlattenTenantGuardianMFAPage(mfa *management.TenantGuardianMFAPage) []interface{} { if mfa == nil { return nil } @@ -28,7 +30,8 @@ func flattenTenantGuardianMFAPage(mfa *management.TenantGuardianMFAPage) []inter return []interface{}{m} } -func flattenTenantErrorPage(errorPage *management.TenantErrorPage) []interface{} { +// FlattenTenantErrorPage flattens the error page data. +func FlattenTenantErrorPage(errorPage *management.TenantErrorPage) []interface{} { if errorPage == nil { return nil } diff --git a/internal/auth0/tenant/resource.go b/internal/auth0/tenant/resource.go index 48a524985..c18caec80 100644 --- a/internal/auth0/tenant/resource.go +++ b/internal/auth0/tenant/resource.go @@ -29,11 +29,16 @@ func NewResource() *schema.Resource { "information, setting error pages, and configuring default tenant behaviors.", Schema: map[string]*schema.Schema{ "change_password": { - Type: schema.TypeList, - Optional: true, - MaxItems: 1, - Computed: true, - Description: "Configuration settings for change password page.", + Type: schema.TypeList, + Optional: true, + MaxItems: 1, + Computed: true, + Description: "Configuration settings for change password page. This attribute has been deprecated " + + "in favour of the newly introduced `auth0_pages` resource and it will be removed in a future " + + "version. Check the [MIGRATION_GUIDE](https://github.com/auth0/terraform-provider-auth0/blob/main/MIGRATION_GUIDE.md) for more info.", + Deprecated: "This attribute has been deprecated in favour of the newly introduced `auth0_pages` " + + "resource and it will be removed in a future version." + + "Check the [MIGRATION_GUIDE](https://github.com/auth0/terraform-provider-auth0/blob/main/MIGRATION_GUIDE.md) for more info.", Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "enabled": { @@ -51,11 +56,16 @@ func NewResource() *schema.Resource { }, }, "guardian_mfa_page": { - Type: schema.TypeList, - Optional: true, - MaxItems: 1, - Computed: true, - Description: "Configuration settings for the Guardian MFA page.", + Type: schema.TypeList, + Optional: true, + MaxItems: 1, + Computed: true, + Description: "Configuration settings for the Guardian MFA page. This attribute has been deprecated " + + "in favour of the newly introduced `auth0_pages` resource and it will be removed in a future " + + "version. Check the [MIGRATION_GUIDE](https://github.com/auth0/terraform-provider-auth0/blob/main/MIGRATION_GUIDE.md) for more info.", + Deprecated: "This attribute has been deprecated in favour of the newly introduced `auth0_pages` " + + "resource and it will be removed in a future version." + + "Check the [MIGRATION_GUIDE](https://github.com/auth0/terraform-provider-auth0/blob/main/MIGRATION_GUIDE.md) for more info.", Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "enabled": { @@ -88,11 +98,16 @@ func NewResource() *schema.Resource { "Options include `auth0-adldap`, `ad`, `auth0`, `email`, `sms`, `waad`, and `adfs`.", }, "error_page": { - Type: schema.TypeList, - Optional: true, - Computed: true, - MaxItems: 1, - Description: "Configuration settings for error pages.", + Type: schema.TypeList, + Optional: true, + Computed: true, + MaxItems: 1, + Description: "Configuration settings for error pages. This attribute has been deprecated in favour " + + "of the newly introduced `auth0_pages` resource and it will be removed in a future version. " + + "Check the [MIGRATION_GUIDE](https://github.com/auth0/terraform-provider-auth0/blob/main/MIGRATION_GUIDE.md) for more info.", + Deprecated: "This attribute has been deprecated in favour of the newly introduced `auth0_pages` " + + "resource and it will be removed in a future version." + + "Check the [MIGRATION_GUIDE](https://github.com/auth0/terraform-provider-auth0/blob/main/MIGRATION_GUIDE.md) for more info.", Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "html": { @@ -392,7 +407,7 @@ func NewResource() *schema.Resource { func createTenant(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { d.SetId(id.UniqueId()) - return updateTenant(ctx, d, m) + return readTenant(ctx, d, m) } func readTenant(_ context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { @@ -409,8 +424,8 @@ func readTenant(_ context.Context, d *schema.ResourceData, m interface{}) diag.D } result := multierror.Append( - d.Set("change_password", flattenTenantChangePassword(tenant.GetChangePassword())), - d.Set("guardian_mfa_page", flattenTenantGuardianMFAPage(tenant.GetGuardianMFAPage())), + d.Set("change_password", FlattenTenantChangePassword(tenant.GetChangePassword())), + d.Set("guardian_mfa_page", FlattenTenantGuardianMFAPage(tenant.GetGuardianMFAPage())), d.Set("default_audience", tenant.GetDefaultAudience()), d.Set("default_directory", tenant.GetDefaultDirectory()), d.Set("default_redirection_uri", tenant.GetDefaultRedirectionURI()), @@ -423,7 +438,7 @@ func readTenant(_ context.Context, d *schema.ResourceData, m interface{}) diag.D d.Set("idle_session_lifetime", tenant.GetIdleSessionLifetime()), d.Set("sandbox_version", tenant.GetSandboxVersion()), d.Set("enabled_locales", tenant.GetEnabledLocales()), - d.Set("error_page", flattenTenantErrorPage(tenant.GetErrorPage())), + d.Set("error_page", FlattenTenantErrorPage(tenant.GetErrorPage())), d.Set("flags", flattenTenantFlags(tenant.GetFlags())), d.Set("universal_login", flattenTenantUniversalLogin(tenant.GetUniversalLogin())), d.Set("session_cookie", flattenTenantSessionCookie(tenant.GetSessionCookie())), diff --git a/internal/provider/provider.go b/internal/provider/provider.go index 5195ddf4a..bed3fcdfa 100644 --- a/internal/provider/provider.go +++ b/internal/provider/provider.go @@ -16,6 +16,7 @@ import ( "github.com/auth0/terraform-provider-auth0/internal/auth0/hook" "github.com/auth0/terraform-provider-auth0/internal/auth0/logstream" "github.com/auth0/terraform-provider-auth0/internal/auth0/organization" + "github.com/auth0/terraform-provider-auth0/internal/auth0/page" "github.com/auth0/terraform-provider-auth0/internal/auth0/prompt" "github.com/auth0/terraform-provider-auth0/internal/auth0/resourceserver" "github.com/auth0/terraform-provider-auth0/internal/auth0/role" @@ -114,6 +115,7 @@ func New() *schema.Provider { "auth0_organization_member_role": organization.NewMemberRoleResource(), "auth0_organization_member_roles": organization.NewMemberRolesResource(), "auth0_organization_members": organization.NewMembersResource(), + "auth0_pages": page.NewResource(), "auth0_prompt": prompt.NewResource(), "auth0_prompt_custom_text": prompt.NewCustomTextResource(), "auth0_resource_server": resourceserver.NewResource(), diff --git a/test/data/recordings/TestAccPages.yaml b/test/data/recordings/TestAccPages.yaml new file mode 100644 index 000000000..1fae3bb19 --- /dev/null +++ b/test/data/recordings/TestAccPages.yaml @@ -0,0 +1,1515 @@ +--- +version: 2 +interactions: + - id: 0 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 5 + transfer_encoding: [] + trailer: {} + host: terraform-provider-auth0-dev.eu.auth0.com + remote_addr: "" + request_uri: "" + body: | + null + form: {} + headers: + Content-Type: + - application/json + User-Agent: + - Go-Auth0-SDK/0.17.2 + url: https://terraform-provider-auth0-dev.eu.auth0.com/api/v2/clients?fields=client_id&include_fields=true&include_totals=true&is_global=true&per_page=50 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: -1 + uncompressed: true + body: '{"total":1,"start":0,"limit":50,"clients":[{"tenant":"terraform-provider-auth0-dev","client_id":"o9HBfRCcqYIQmDQpaRIZAAQHCaTKdb1a"}]}' + headers: + Content-Type: + - application/json; charset=utf-8 + status: 200 OK + code: 200 + duration: 105.670833ms + - id: 1 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 139 + transfer_encoding: [] + trailer: {} + host: terraform-provider-auth0-dev.eu.auth0.com + remote_addr: "" + request_uri: "" + body: | + {"custom_login_page_on":true,"custom_login_page":"\u003chtml\u003e\u003cbody\u003eMy Custom Login Page\u003c/body\u003e\u003c/html\u003e"} + form: {} + headers: + Content-Type: + - application/json + User-Agent: + - Go-Auth0-SDK/0.17.2 + url: https://terraform-provider-auth0-dev.eu.auth0.com/api/v2/clients/o9HBfRCcqYIQmDQpaRIZAAQHCaTKdb1a + method: PATCH + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: -1 + uncompressed: true + body: '{"name":"All Applications","client_id":"o9HBfRCcqYIQmDQpaRIZAAQHCaTKdb1a","client_secret":"[REDACTED]","is_first_party":true,"callbacks":[],"signing_keys":[{"cert":"[REDACTED]"}],"custom_login_page_on":true,"custom_login_page":"\u003chtml\u003e\u003cbody\u003eMy Custom Login Page\u003c/body\u003e\u003c/html\u003e","refresh_token":{"rotation_type":"non-rotating","expiration_type":"non-expiring","leeway":0,"token_lifetime":2592000,"infinite_token_lifetime":true,"infinite_idle_token_lifetime":true,"idle_token_lifetime":1296000}}' + headers: + Content-Type: + - application/json; charset=utf-8 + status: 200 OK + code: 200 + duration: 117.20625ms + - id: 2 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 433 + transfer_encoding: [] + trailer: {} + host: terraform-provider-auth0-dev.eu.auth0.com + remote_addr: "" + request_uri: "" + body: | + {"change_password":{"enabled":true,"html":"\u003chtml\u003e\u003cbody\u003eMy Custom Reset Password Page\u003c/body\u003e\u003c/html\u003e"},"guardian_mfa_page":{"enabled":true,"html":"\u003chtml\u003e\u003cbody\u003eMy Custom MFA Page\u003c/body\u003e\u003c/html\u003e"},"error_page":{"html":"\u003chtml\u003e\u003cbody\u003eMy Custom Error Page\u003c/body\u003e\u003c/html\u003e","show_log_link":true,"url":"https://example.com"}} + form: {} + headers: + Content-Type: + - application/json + User-Agent: + - Go-Auth0-SDK/0.17.2 + url: https://terraform-provider-auth0-dev.eu.auth0.com/api/v2/tenants/settings + method: PATCH + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: -1 + uncompressed: true + body: '{"allowed_logout_urls":[],"change_password":{"enabled":true,"html":"My Custom Reset Password Page"},"default_audience":"","default_directory":"","enabled_locales":["de","fr"],"error_page":{"html":"My Custom Error Page","show_log_link":true,"url":"https://example.com"},"flags":{"allow_changing_enable_sso":false,"cannot_change_enforce_client_authentication_on_passwordless_start":true,"disable_impersonation":true,"disable_management_api_sms_obfuscation":true,"enable_public_signup_user_exists_error":true,"enable_sso":true,"enforce_client_authentication_on_passwordless_start":true,"new_universal_login_experience_enabled":true,"universal_login":true,"use_scope_descriptions_for_consent":false,"no_disclose_enterprise_connections":false,"revoke_refresh_token_grant":false,"disable_fields_map_fix":true,"require_signed_request_object":false,"dashboard_new_onboarding":false,"mfa_show_factor_list_on_enrollment":true,"disable_clickjack_protection_headers":false},"friendly_name":"My Test Tenant","guardian_mfa_page":{"enabled":true,"html":"My Custom MFA Page"},"idle_session_lifetime":72,"picture_url":"https://mycompany.org/logo.png","sandbox_version":"16","session_lifetime":168,"support_email":"support@mycompany.org","support_url":"https://mycompany.org/support","universal_login":{"colors":{"primary":"#0059d6","page_background":"#000000"},"is_custom_theme_set":false,"is_custom_template_set":false},"session_cookie":{"mode":"persistent"}}' + headers: + Content-Type: + - application/json; charset=utf-8 + status: 200 OK + code: 200 + duration: 189.188542ms + - id: 3 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 5 + transfer_encoding: [] + trailer: {} + host: terraform-provider-auth0-dev.eu.auth0.com + remote_addr: "" + request_uri: "" + body: | + null + form: {} + headers: + Content-Type: + - application/json + User-Agent: + - Go-Auth0-SDK/0.17.2 + url: https://terraform-provider-auth0-dev.eu.auth0.com/api/v2/clients?fields=client_id&include_fields=true&include_totals=true&is_global=true&per_page=50 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: -1 + uncompressed: true + body: '{"total":1,"start":0,"limit":50,"clients":[{"tenant":"terraform-provider-auth0-dev","client_id":"o9HBfRCcqYIQmDQpaRIZAAQHCaTKdb1a"}]}' + headers: + Content-Type: + - application/json; charset=utf-8 + status: 200 OK + code: 200 + duration: 93.876833ms + - id: 4 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 5 + transfer_encoding: [] + trailer: {} + host: terraform-provider-auth0-dev.eu.auth0.com + remote_addr: "" + request_uri: "" + body: | + null + form: {} + headers: + Content-Type: + - application/json + User-Agent: + - Go-Auth0-SDK/0.17.2 + url: https://terraform-provider-auth0-dev.eu.auth0.com/api/v2/clients/o9HBfRCcqYIQmDQpaRIZAAQHCaTKdb1a + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: -1 + uncompressed: true + body: '{"name":"All Applications","client_id":"o9HBfRCcqYIQmDQpaRIZAAQHCaTKdb1a","client_secret":"[REDACTED]","is_first_party":true,"callbacks":[],"signing_keys":[{"cert":"[REDACTED]"}],"custom_login_page_on":true,"custom_login_page":"\u003chtml\u003e\u003cbody\u003eMy Custom Login Page\u003c/body\u003e\u003c/html\u003e","refresh_token":{"rotation_type":"non-rotating","expiration_type":"non-expiring","leeway":0,"token_lifetime":2592000,"infinite_token_lifetime":true,"infinite_idle_token_lifetime":true,"idle_token_lifetime":1296000}}' + headers: + Content-Type: + - application/json; charset=utf-8 + status: 200 OK + code: 200 + duration: 96.130208ms + - id: 5 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 5 + transfer_encoding: [] + trailer: {} + host: terraform-provider-auth0-dev.eu.auth0.com + remote_addr: "" + request_uri: "" + body: | + null + form: {} + headers: + Content-Type: + - application/json + User-Agent: + - Go-Auth0-SDK/0.17.2 + url: https://terraform-provider-auth0-dev.eu.auth0.com/api/v2/tenants/settings + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: -1 + uncompressed: true + body: '{"allowed_logout_urls":[],"change_password":{"enabled":true,"html":"My Custom Reset Password Page"},"default_audience":"","default_directory":"","enabled_locales":["de","fr"],"error_page":{"html":"My Custom Error Page","show_log_link":true,"url":"https://example.com"},"flags":{"allow_changing_enable_sso":false,"disable_impersonation":true,"disable_management_api_sms_obfuscation":true,"enable_public_signup_user_exists_error":true,"enable_sso":true,"new_universal_login_experience_enabled":true,"universal_login":true,"use_scope_descriptions_for_consent":false,"no_disclose_enterprise_connections":false,"revoke_refresh_token_grant":false,"disable_fields_map_fix":true,"require_signed_request_object":false,"dashboard_new_onboarding":false,"mfa_show_factor_list_on_enrollment":true,"disable_clickjack_protection_headers":false},"friendly_name":"My Test Tenant","guardian_mfa_page":{"enabled":true,"html":"My Custom MFA Page"},"idle_session_lifetime":72,"picture_url":"https://mycompany.org/logo.png","sandbox_version":"16","session_lifetime":168,"support_email":"support@mycompany.org","support_url":"https://mycompany.org/support","universal_login":{"colors":{"primary":"#0059d6","page_background":"#000000"}},"session_cookie":{"mode":"persistent"},"sandbox_versions_available":["16"]}' + headers: + Content-Type: + - application/json; charset=utf-8 + status: 200 OK + code: 200 + duration: 87.582625ms + - id: 6 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 5 + transfer_encoding: [] + trailer: {} + host: terraform-provider-auth0-dev.eu.auth0.com + remote_addr: "" + request_uri: "" + body: | + null + form: {} + headers: + Content-Type: + - application/json + User-Agent: + - Go-Auth0-SDK/0.17.2 + url: https://terraform-provider-auth0-dev.eu.auth0.com/api/v2/clients?fields=client_id&include_fields=true&include_totals=true&is_global=true&per_page=50 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: -1 + uncompressed: true + body: '{"total":1,"start":0,"limit":50,"clients":[{"tenant":"terraform-provider-auth0-dev","client_id":"o9HBfRCcqYIQmDQpaRIZAAQHCaTKdb1a"}]}' + headers: + Content-Type: + - application/json; charset=utf-8 + status: 200 OK + code: 200 + duration: 113.287541ms + - id: 7 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 5 + transfer_encoding: [] + trailer: {} + host: terraform-provider-auth0-dev.eu.auth0.com + remote_addr: "" + request_uri: "" + body: | + null + form: {} + headers: + Content-Type: + - application/json + User-Agent: + - Go-Auth0-SDK/0.17.2 + url: https://terraform-provider-auth0-dev.eu.auth0.com/api/v2/clients/o9HBfRCcqYIQmDQpaRIZAAQHCaTKdb1a + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: -1 + uncompressed: true + body: '{"name":"All Applications","client_id":"o9HBfRCcqYIQmDQpaRIZAAQHCaTKdb1a","client_secret":"[REDACTED]","is_first_party":true,"callbacks":[],"signing_keys":[{"cert":"[REDACTED]"}],"custom_login_page_on":true,"custom_login_page":"\u003chtml\u003e\u003cbody\u003eMy Custom Login Page\u003c/body\u003e\u003c/html\u003e","refresh_token":{"rotation_type":"non-rotating","expiration_type":"non-expiring","leeway":0,"token_lifetime":2592000,"infinite_token_lifetime":true,"infinite_idle_token_lifetime":true,"idle_token_lifetime":1296000}}' + headers: + Content-Type: + - application/json; charset=utf-8 + status: 200 OK + code: 200 + duration: 104.766083ms + - id: 8 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 5 + transfer_encoding: [] + trailer: {} + host: terraform-provider-auth0-dev.eu.auth0.com + remote_addr: "" + request_uri: "" + body: | + null + form: {} + headers: + Content-Type: + - application/json + User-Agent: + - Go-Auth0-SDK/0.17.2 + url: https://terraform-provider-auth0-dev.eu.auth0.com/api/v2/tenants/settings + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: -1 + uncompressed: true + body: '{"allowed_logout_urls":[],"change_password":{"enabled":true,"html":"My Custom Reset Password Page"},"default_audience":"","default_directory":"","enabled_locales":["de","fr"],"error_page":{"html":"My Custom Error Page","show_log_link":true,"url":"https://example.com"},"flags":{"allow_changing_enable_sso":false,"disable_impersonation":true,"disable_management_api_sms_obfuscation":true,"enable_public_signup_user_exists_error":true,"enable_sso":true,"new_universal_login_experience_enabled":true,"universal_login":true,"use_scope_descriptions_for_consent":false,"no_disclose_enterprise_connections":false,"revoke_refresh_token_grant":false,"disable_fields_map_fix":true,"require_signed_request_object":false,"dashboard_new_onboarding":false,"mfa_show_factor_list_on_enrollment":true,"disable_clickjack_protection_headers":false},"friendly_name":"My Test Tenant","guardian_mfa_page":{"enabled":true,"html":"My Custom MFA Page"},"idle_session_lifetime":72,"picture_url":"https://mycompany.org/logo.png","sandbox_version":"16","session_lifetime":168,"support_email":"support@mycompany.org","support_url":"https://mycompany.org/support","universal_login":{"colors":{"primary":"#0059d6","page_background":"#000000"}},"session_cookie":{"mode":"persistent"},"sandbox_versions_available":["16"]}' + headers: + Content-Type: + - application/json; charset=utf-8 + status: 200 OK + code: 200 + duration: 93.3485ms + - id: 9 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 5 + transfer_encoding: [] + trailer: {} + host: terraform-provider-auth0-dev.eu.auth0.com + remote_addr: "" + request_uri: "" + body: | + null + form: {} + headers: + Content-Type: + - application/json + User-Agent: + - Go-Auth0-SDK/0.17.2 + url: https://terraform-provider-auth0-dev.eu.auth0.com/api/v2/clients?fields=client_id&include_fields=true&include_totals=true&is_global=true&per_page=50 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: -1 + uncompressed: true + body: '{"total":1,"start":0,"limit":50,"clients":[{"tenant":"terraform-provider-auth0-dev","client_id":"o9HBfRCcqYIQmDQpaRIZAAQHCaTKdb1a"}]}' + headers: + Content-Type: + - application/json; charset=utf-8 + status: 200 OK + code: 200 + duration: 102.384959ms + - id: 10 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 5 + transfer_encoding: [] + trailer: {} + host: terraform-provider-auth0-dev.eu.auth0.com + remote_addr: "" + request_uri: "" + body: | + null + form: {} + headers: + Content-Type: + - application/json + User-Agent: + - Go-Auth0-SDK/0.17.2 + url: https://terraform-provider-auth0-dev.eu.auth0.com/api/v2/clients/o9HBfRCcqYIQmDQpaRIZAAQHCaTKdb1a + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: -1 + uncompressed: true + body: '{"name":"All Applications","client_id":"o9HBfRCcqYIQmDQpaRIZAAQHCaTKdb1a","client_secret":"[REDACTED]","is_first_party":true,"callbacks":[],"signing_keys":[{"cert":"[REDACTED]"}],"custom_login_page_on":true,"custom_login_page":"\u003chtml\u003e\u003cbody\u003eMy Custom Login Page\u003c/body\u003e\u003c/html\u003e","refresh_token":{"rotation_type":"non-rotating","expiration_type":"non-expiring","leeway":0,"token_lifetime":2592000,"infinite_token_lifetime":true,"infinite_idle_token_lifetime":true,"idle_token_lifetime":1296000}}' + headers: + Content-Type: + - application/json; charset=utf-8 + status: 200 OK + code: 200 + duration: 106.64675ms + - id: 11 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 5 + transfer_encoding: [] + trailer: {} + host: terraform-provider-auth0-dev.eu.auth0.com + remote_addr: "" + request_uri: "" + body: | + null + form: {} + headers: + Content-Type: + - application/json + User-Agent: + - Go-Auth0-SDK/0.17.2 + url: https://terraform-provider-auth0-dev.eu.auth0.com/api/v2/tenants/settings + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: -1 + uncompressed: true + body: '{"allowed_logout_urls":[],"change_password":{"enabled":true,"html":"My Custom Reset Password Page"},"default_audience":"","default_directory":"","enabled_locales":["de","fr"],"error_page":{"html":"My Custom Error Page","show_log_link":true,"url":"https://example.com"},"flags":{"allow_changing_enable_sso":false,"disable_impersonation":true,"disable_management_api_sms_obfuscation":true,"enable_public_signup_user_exists_error":true,"enable_sso":true,"new_universal_login_experience_enabled":true,"universal_login":true,"use_scope_descriptions_for_consent":false,"no_disclose_enterprise_connections":false,"revoke_refresh_token_grant":false,"disable_fields_map_fix":true,"require_signed_request_object":false,"dashboard_new_onboarding":false,"mfa_show_factor_list_on_enrollment":true,"disable_clickjack_protection_headers":false},"friendly_name":"My Test Tenant","guardian_mfa_page":{"enabled":true,"html":"My Custom MFA Page"},"idle_session_lifetime":72,"picture_url":"https://mycompany.org/logo.png","sandbox_version":"16","session_lifetime":168,"support_email":"support@mycompany.org","support_url":"https://mycompany.org/support","universal_login":{"colors":{"primary":"#0059d6","page_background":"#000000"}},"session_cookie":{"mode":"persistent"},"sandbox_versions_available":["16"]}' + headers: + Content-Type: + - application/json; charset=utf-8 + status: 200 OK + code: 200 + duration: 98.867084ms + - id: 12 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 5 + transfer_encoding: [] + trailer: {} + host: terraform-provider-auth0-dev.eu.auth0.com + remote_addr: "" + request_uri: "" + body: | + null + form: {} + headers: + Content-Type: + - application/json + User-Agent: + - Go-Auth0-SDK/0.17.2 + url: https://terraform-provider-auth0-dev.eu.auth0.com/api/v2/clients?fields=client_id&include_fields=true&include_totals=true&is_global=true&per_page=50 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: -1 + uncompressed: true + body: '{"total":1,"start":0,"limit":50,"clients":[{"tenant":"terraform-provider-auth0-dev","client_id":"o9HBfRCcqYIQmDQpaRIZAAQHCaTKdb1a"}]}' + headers: + Content-Type: + - application/json; charset=utf-8 + status: 200 OK + code: 200 + duration: 105.9835ms + - id: 13 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 54 + transfer_encoding: [] + trailer: {} + host: terraform-provider-auth0-dev.eu.auth0.com + remote_addr: "" + request_uri: "" + body: | + {"custom_login_page_on":false,"custom_login_page":""} + form: {} + headers: + Content-Type: + - application/json + User-Agent: + - Go-Auth0-SDK/0.17.2 + url: https://terraform-provider-auth0-dev.eu.auth0.com/api/v2/clients/o9HBfRCcqYIQmDQpaRIZAAQHCaTKdb1a + method: PATCH + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: -1 + uncompressed: true + body: '{"name":"All Applications","client_id":"o9HBfRCcqYIQmDQpaRIZAAQHCaTKdb1a","client_secret":"[REDACTED]","is_first_party":true,"callbacks":[],"signing_keys":[{"cert":"[REDACTED]"}],"custom_login_page_on":false,"custom_login_page":"","refresh_token":{"rotation_type":"non-rotating","expiration_type":"non-expiring","leeway":0,"token_lifetime":2592000,"infinite_token_lifetime":true,"infinite_idle_token_lifetime":true,"idle_token_lifetime":1296000}}' + headers: + Content-Type: + - application/json; charset=utf-8 + status: 200 OK + code: 200 + duration: 104.118875ms + - id: 14 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 152 + transfer_encoding: [] + trailer: {} + host: terraform-provider-auth0-dev.eu.auth0.com + remote_addr: "" + request_uri: "" + body: | + {"change_password":{"enabled":false,"html":""},"guardian_mfa_page":{"enabled":false,"html":""},"error_page":{"html":"","show_log_link":false,"url":""}} + form: {} + headers: + Content-Type: + - application/json + User-Agent: + - Go-Auth0-SDK/0.17.2 + url: https://terraform-provider-auth0-dev.eu.auth0.com/api/v2/tenants/settings + method: PATCH + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: -1 + uncompressed: true + body: '{"allowed_logout_urls":[],"change_password":{"enabled":false,"html":""},"default_audience":"","default_directory":"","enabled_locales":["de","fr"],"error_page":{"html":"","show_log_link":false,"url":""},"flags":{"allow_changing_enable_sso":false,"cannot_change_enforce_client_authentication_on_passwordless_start":true,"disable_impersonation":true,"disable_management_api_sms_obfuscation":true,"enable_public_signup_user_exists_error":true,"enable_sso":true,"enforce_client_authentication_on_passwordless_start":true,"new_universal_login_experience_enabled":true,"universal_login":true,"use_scope_descriptions_for_consent":false,"no_disclose_enterprise_connections":false,"revoke_refresh_token_grant":false,"disable_fields_map_fix":true,"require_signed_request_object":false,"dashboard_new_onboarding":false,"mfa_show_factor_list_on_enrollment":true,"disable_clickjack_protection_headers":false},"friendly_name":"My Test Tenant","guardian_mfa_page":{"enabled":false,"html":""},"idle_session_lifetime":72,"picture_url":"https://mycompany.org/logo.png","sandbox_version":"16","session_lifetime":168,"support_email":"support@mycompany.org","support_url":"https://mycompany.org/support","universal_login":{"colors":{"primary":"#0059d6","page_background":"#000000"},"is_custom_theme_set":false,"is_custom_template_set":false},"session_cookie":{"mode":"persistent"}}' + headers: + Content-Type: + - application/json; charset=utf-8 + status: 200 OK + code: 200 + duration: 189.735583ms + - id: 15 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 5 + transfer_encoding: [] + trailer: {} + host: terraform-provider-auth0-dev.eu.auth0.com + remote_addr: "" + request_uri: "" + body: | + null + form: {} + headers: + Content-Type: + - application/json + User-Agent: + - Go-Auth0-SDK/0.17.2 + url: https://terraform-provider-auth0-dev.eu.auth0.com/api/v2/clients?fields=client_id&include_fields=true&include_totals=true&is_global=true&per_page=50 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: -1 + uncompressed: true + body: '{"total":1,"start":0,"limit":50,"clients":[{"tenant":"terraform-provider-auth0-dev","client_id":"o9HBfRCcqYIQmDQpaRIZAAQHCaTKdb1a"}]}' + headers: + Content-Type: + - application/json; charset=utf-8 + status: 200 OK + code: 200 + duration: 104.8685ms + - id: 16 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 5 + transfer_encoding: [] + trailer: {} + host: terraform-provider-auth0-dev.eu.auth0.com + remote_addr: "" + request_uri: "" + body: | + null + form: {} + headers: + Content-Type: + - application/json + User-Agent: + - Go-Auth0-SDK/0.17.2 + url: https://terraform-provider-auth0-dev.eu.auth0.com/api/v2/clients/o9HBfRCcqYIQmDQpaRIZAAQHCaTKdb1a + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: -1 + uncompressed: true + body: '{"name":"All Applications","client_id":"o9HBfRCcqYIQmDQpaRIZAAQHCaTKdb1a","client_secret":"[REDACTED]","is_first_party":true,"callbacks":[],"signing_keys":[{"cert":"[REDACTED]"}],"custom_login_page_on":false,"custom_login_page":"","refresh_token":{"rotation_type":"non-rotating","expiration_type":"non-expiring","leeway":0,"token_lifetime":2592000,"infinite_token_lifetime":true,"infinite_idle_token_lifetime":true,"idle_token_lifetime":1296000}}' + headers: + Content-Type: + - application/json; charset=utf-8 + status: 200 OK + code: 200 + duration: 102.724042ms + - id: 17 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 5 + transfer_encoding: [] + trailer: {} + host: terraform-provider-auth0-dev.eu.auth0.com + remote_addr: "" + request_uri: "" + body: | + null + form: {} + headers: + Content-Type: + - application/json + User-Agent: + - Go-Auth0-SDK/0.17.2 + url: https://terraform-provider-auth0-dev.eu.auth0.com/api/v2/tenants/settings + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: -1 + uncompressed: true + body: '{"allowed_logout_urls":[],"change_password":{"enabled":false,"html":""},"default_audience":"","default_directory":"","enabled_locales":["de","fr"],"error_page":{"html":"","show_log_link":false,"url":""},"flags":{"allow_changing_enable_sso":false,"disable_impersonation":true,"disable_management_api_sms_obfuscation":true,"enable_public_signup_user_exists_error":true,"enable_sso":true,"new_universal_login_experience_enabled":true,"universal_login":true,"use_scope_descriptions_for_consent":false,"no_disclose_enterprise_connections":false,"revoke_refresh_token_grant":false,"disable_fields_map_fix":true,"require_signed_request_object":false,"dashboard_new_onboarding":false,"mfa_show_factor_list_on_enrollment":true,"disable_clickjack_protection_headers":false},"friendly_name":"My Test Tenant","guardian_mfa_page":{"enabled":false,"html":""},"idle_session_lifetime":72,"picture_url":"https://mycompany.org/logo.png","sandbox_version":"16","session_lifetime":168,"support_email":"support@mycompany.org","support_url":"https://mycompany.org/support","universal_login":{"colors":{"primary":"#0059d6","page_background":"#000000"}},"session_cookie":{"mode":"persistent"},"sandbox_versions_available":["16"]}' + headers: + Content-Type: + - application/json; charset=utf-8 + status: 200 OK + code: 200 + duration: 88.490667ms + - id: 18 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 5 + transfer_encoding: [] + trailer: {} + host: terraform-provider-auth0-dev.eu.auth0.com + remote_addr: "" + request_uri: "" + body: | + null + form: {} + headers: + Content-Type: + - application/json + User-Agent: + - Go-Auth0-SDK/0.17.2 + url: https://terraform-provider-auth0-dev.eu.auth0.com/api/v2/clients?fields=client_id&include_fields=true&include_totals=true&is_global=true&per_page=50 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: -1 + uncompressed: true + body: '{"total":1,"start":0,"limit":50,"clients":[{"tenant":"terraform-provider-auth0-dev","client_id":"o9HBfRCcqYIQmDQpaRIZAAQHCaTKdb1a"}]}' + headers: + Content-Type: + - application/json; charset=utf-8 + status: 200 OK + code: 200 + duration: 145.8695ms + - id: 19 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 5 + transfer_encoding: [] + trailer: {} + host: terraform-provider-auth0-dev.eu.auth0.com + remote_addr: "" + request_uri: "" + body: | + null + form: {} + headers: + Content-Type: + - application/json + User-Agent: + - Go-Auth0-SDK/0.17.2 + url: https://terraform-provider-auth0-dev.eu.auth0.com/api/v2/clients/o9HBfRCcqYIQmDQpaRIZAAQHCaTKdb1a + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: -1 + uncompressed: true + body: '{"name":"All Applications","client_id":"o9HBfRCcqYIQmDQpaRIZAAQHCaTKdb1a","client_secret":"[REDACTED]","is_first_party":true,"callbacks":[],"signing_keys":[{"cert":"[REDACTED]"}],"custom_login_page_on":false,"custom_login_page":"","refresh_token":{"rotation_type":"non-rotating","expiration_type":"non-expiring","leeway":0,"token_lifetime":2592000,"infinite_token_lifetime":true,"infinite_idle_token_lifetime":true,"idle_token_lifetime":1296000}}' + headers: + Content-Type: + - application/json; charset=utf-8 + status: 200 OK + code: 200 + duration: 111.559875ms + - id: 20 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 5 + transfer_encoding: [] + trailer: {} + host: terraform-provider-auth0-dev.eu.auth0.com + remote_addr: "" + request_uri: "" + body: | + null + form: {} + headers: + Content-Type: + - application/json + User-Agent: + - Go-Auth0-SDK/0.17.2 + url: https://terraform-provider-auth0-dev.eu.auth0.com/api/v2/tenants/settings + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: -1 + uncompressed: true + body: '{"allowed_logout_urls":[],"change_password":{"enabled":false,"html":""},"default_audience":"","default_directory":"","enabled_locales":["de","fr"],"error_page":{"html":"","show_log_link":false,"url":""},"flags":{"allow_changing_enable_sso":false,"disable_impersonation":true,"disable_management_api_sms_obfuscation":true,"enable_public_signup_user_exists_error":true,"enable_sso":true,"new_universal_login_experience_enabled":true,"universal_login":true,"use_scope_descriptions_for_consent":false,"no_disclose_enterprise_connections":false,"revoke_refresh_token_grant":false,"disable_fields_map_fix":true,"require_signed_request_object":false,"dashboard_new_onboarding":false,"mfa_show_factor_list_on_enrollment":true,"disable_clickjack_protection_headers":false},"friendly_name":"My Test Tenant","guardian_mfa_page":{"enabled":false,"html":""},"idle_session_lifetime":72,"picture_url":"https://mycompany.org/logo.png","sandbox_version":"16","session_lifetime":168,"support_email":"support@mycompany.org","support_url":"https://mycompany.org/support","universal_login":{"colors":{"primary":"#0059d6","page_background":"#000000"}},"session_cookie":{"mode":"persistent"},"sandbox_versions_available":["16"]}' + headers: + Content-Type: + - application/json; charset=utf-8 + status: 200 OK + code: 200 + duration: 92.369834ms + - id: 21 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 5 + transfer_encoding: [] + trailer: {} + host: terraform-provider-auth0-dev.eu.auth0.com + remote_addr: "" + request_uri: "" + body: | + null + form: {} + headers: + Content-Type: + - application/json + User-Agent: + - Go-Auth0-SDK/0.17.2 + url: https://terraform-provider-auth0-dev.eu.auth0.com/api/v2/clients?fields=client_id&include_fields=true&include_totals=true&is_global=true&per_page=50 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: -1 + uncompressed: true + body: '{"total":1,"start":0,"limit":50,"clients":[{"tenant":"terraform-provider-auth0-dev","client_id":"o9HBfRCcqYIQmDQpaRIZAAQHCaTKdb1a"}]}' + headers: + Content-Type: + - application/json; charset=utf-8 + status: 200 OK + code: 200 + duration: 117.070292ms + - id: 22 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 5 + transfer_encoding: [] + trailer: {} + host: terraform-provider-auth0-dev.eu.auth0.com + remote_addr: "" + request_uri: "" + body: | + null + form: {} + headers: + Content-Type: + - application/json + User-Agent: + - Go-Auth0-SDK/0.17.2 + url: https://terraform-provider-auth0-dev.eu.auth0.com/api/v2/clients/o9HBfRCcqYIQmDQpaRIZAAQHCaTKdb1a + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: -1 + uncompressed: true + body: '{"name":"All Applications","client_id":"o9HBfRCcqYIQmDQpaRIZAAQHCaTKdb1a","client_secret":"[REDACTED]","is_first_party":true,"callbacks":[],"signing_keys":[{"cert":"[REDACTED]"}],"custom_login_page_on":false,"custom_login_page":"","refresh_token":{"rotation_type":"non-rotating","expiration_type":"non-expiring","leeway":0,"token_lifetime":2592000,"infinite_token_lifetime":true,"infinite_idle_token_lifetime":true,"idle_token_lifetime":1296000}}' + headers: + Content-Type: + - application/json; charset=utf-8 + status: 200 OK + code: 200 + duration: 97.241417ms + - id: 23 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 5 + transfer_encoding: [] + trailer: {} + host: terraform-provider-auth0-dev.eu.auth0.com + remote_addr: "" + request_uri: "" + body: | + null + form: {} + headers: + Content-Type: + - application/json + User-Agent: + - Go-Auth0-SDK/0.17.2 + url: https://terraform-provider-auth0-dev.eu.auth0.com/api/v2/tenants/settings + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: -1 + uncompressed: true + body: '{"allowed_logout_urls":[],"change_password":{"enabled":false,"html":""},"default_audience":"","default_directory":"","enabled_locales":["de","fr"],"error_page":{"html":"","show_log_link":false,"url":""},"flags":{"allow_changing_enable_sso":false,"disable_impersonation":true,"disable_management_api_sms_obfuscation":true,"enable_public_signup_user_exists_error":true,"enable_sso":true,"new_universal_login_experience_enabled":true,"universal_login":true,"use_scope_descriptions_for_consent":false,"no_disclose_enterprise_connections":false,"revoke_refresh_token_grant":false,"disable_fields_map_fix":true,"require_signed_request_object":false,"dashboard_new_onboarding":false,"mfa_show_factor_list_on_enrollment":true,"disable_clickjack_protection_headers":false},"friendly_name":"My Test Tenant","guardian_mfa_page":{"enabled":false,"html":""},"idle_session_lifetime":72,"picture_url":"https://mycompany.org/logo.png","sandbox_version":"16","session_lifetime":168,"support_email":"support@mycompany.org","support_url":"https://mycompany.org/support","universal_login":{"colors":{"primary":"#0059d6","page_background":"#000000"}},"session_cookie":{"mode":"persistent"},"sandbox_versions_available":["16"]}' + headers: + Content-Type: + - application/json; charset=utf-8 + status: 200 OK + code: 200 + duration: 93.052625ms + - id: 24 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 5 + transfer_encoding: [] + trailer: {} + host: terraform-provider-auth0-dev.eu.auth0.com + remote_addr: "" + request_uri: "" + body: | + null + form: {} + headers: + Content-Type: + - application/json + User-Agent: + - Go-Auth0-SDK/0.17.2 + url: https://terraform-provider-auth0-dev.eu.auth0.com/api/v2/clients?fields=client_id&include_fields=true&include_totals=true&is_global=true&per_page=50 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: -1 + uncompressed: true + body: '{"total":1,"start":0,"limit":50,"clients":[{"tenant":"terraform-provider-auth0-dev","client_id":"o9HBfRCcqYIQmDQpaRIZAAQHCaTKdb1a"}]}' + headers: + Content-Type: + - application/json; charset=utf-8 + status: 200 OK + code: 200 + duration: 104.038084ms + - id: 25 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 139 + transfer_encoding: [] + trailer: {} + host: terraform-provider-auth0-dev.eu.auth0.com + remote_addr: "" + request_uri: "" + body: | + {"custom_login_page_on":true,"custom_login_page":"\u003chtml\u003e\u003cbody\u003eMy Custom Login Page\u003c/body\u003e\u003c/html\u003e"} + form: {} + headers: + Content-Type: + - application/json + User-Agent: + - Go-Auth0-SDK/0.17.2 + url: https://terraform-provider-auth0-dev.eu.auth0.com/api/v2/clients/o9HBfRCcqYIQmDQpaRIZAAQHCaTKdb1a + method: PATCH + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: -1 + uncompressed: true + body: '{"name":"All Applications","client_id":"o9HBfRCcqYIQmDQpaRIZAAQHCaTKdb1a","client_secret":"[REDACTED]","is_first_party":true,"callbacks":[],"signing_keys":[{"cert":"[REDACTED]"}],"custom_login_page_on":true,"custom_login_page":"\u003chtml\u003e\u003cbody\u003eMy Custom Login Page\u003c/body\u003e\u003c/html\u003e","refresh_token":{"rotation_type":"non-rotating","expiration_type":"non-expiring","leeway":0,"token_lifetime":2592000,"infinite_token_lifetime":true,"infinite_idle_token_lifetime":true,"idle_token_lifetime":1296000}}' + headers: + Content-Type: + - application/json; charset=utf-8 + status: 200 OK + code: 200 + duration: 110.697833ms + - id: 26 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 433 + transfer_encoding: [] + trailer: {} + host: terraform-provider-auth0-dev.eu.auth0.com + remote_addr: "" + request_uri: "" + body: | + {"change_password":{"enabled":true,"html":"\u003chtml\u003e\u003cbody\u003eMy Custom Reset Password Page\u003c/body\u003e\u003c/html\u003e"},"guardian_mfa_page":{"enabled":true,"html":"\u003chtml\u003e\u003cbody\u003eMy Custom MFA Page\u003c/body\u003e\u003c/html\u003e"},"error_page":{"html":"\u003chtml\u003e\u003cbody\u003eMy Custom Error Page\u003c/body\u003e\u003c/html\u003e","show_log_link":true,"url":"https://example.com"}} + form: {} + headers: + Content-Type: + - application/json + User-Agent: + - Go-Auth0-SDK/0.17.2 + url: https://terraform-provider-auth0-dev.eu.auth0.com/api/v2/tenants/settings + method: PATCH + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: -1 + uncompressed: true + body: '{"allowed_logout_urls":[],"change_password":{"enabled":true,"html":"My Custom Reset Password Page"},"default_audience":"","default_directory":"","enabled_locales":["de","fr"],"error_page":{"html":"My Custom Error Page","show_log_link":true,"url":"https://example.com"},"flags":{"allow_changing_enable_sso":false,"cannot_change_enforce_client_authentication_on_passwordless_start":true,"disable_impersonation":true,"disable_management_api_sms_obfuscation":true,"enable_public_signup_user_exists_error":true,"enable_sso":true,"enforce_client_authentication_on_passwordless_start":true,"new_universal_login_experience_enabled":true,"universal_login":true,"use_scope_descriptions_for_consent":false,"no_disclose_enterprise_connections":false,"revoke_refresh_token_grant":false,"disable_fields_map_fix":true,"require_signed_request_object":false,"dashboard_new_onboarding":false,"mfa_show_factor_list_on_enrollment":true,"disable_clickjack_protection_headers":false},"friendly_name":"My Test Tenant","guardian_mfa_page":{"enabled":true,"html":"My Custom MFA Page"},"idle_session_lifetime":72,"picture_url":"https://mycompany.org/logo.png","sandbox_version":"16","session_lifetime":168,"support_email":"support@mycompany.org","support_url":"https://mycompany.org/support","universal_login":{"colors":{"primary":"#0059d6","page_background":"#000000"},"is_custom_theme_set":false,"is_custom_template_set":false},"session_cookie":{"mode":"persistent"}}' + headers: + Content-Type: + - application/json; charset=utf-8 + status: 200 OK + code: 200 + duration: 195.24275ms + - id: 27 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 5 + transfer_encoding: [] + trailer: {} + host: terraform-provider-auth0-dev.eu.auth0.com + remote_addr: "" + request_uri: "" + body: | + null + form: {} + headers: + Content-Type: + - application/json + User-Agent: + - Go-Auth0-SDK/0.17.2 + url: https://terraform-provider-auth0-dev.eu.auth0.com/api/v2/clients?fields=client_id&include_fields=true&include_totals=true&is_global=true&per_page=50 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: -1 + uncompressed: true + body: '{"total":1,"start":0,"limit":50,"clients":[{"tenant":"terraform-provider-auth0-dev","client_id":"o9HBfRCcqYIQmDQpaRIZAAQHCaTKdb1a"}]}' + headers: + Content-Type: + - application/json; charset=utf-8 + status: 200 OK + code: 200 + duration: 89.336333ms + - id: 28 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 5 + transfer_encoding: [] + trailer: {} + host: terraform-provider-auth0-dev.eu.auth0.com + remote_addr: "" + request_uri: "" + body: | + null + form: {} + headers: + Content-Type: + - application/json + User-Agent: + - Go-Auth0-SDK/0.17.2 + url: https://terraform-provider-auth0-dev.eu.auth0.com/api/v2/clients/o9HBfRCcqYIQmDQpaRIZAAQHCaTKdb1a + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: -1 + uncompressed: true + body: '{"name":"All Applications","client_id":"o9HBfRCcqYIQmDQpaRIZAAQHCaTKdb1a","client_secret":"[REDACTED]","is_first_party":true,"callbacks":[],"signing_keys":[{"cert":"[REDACTED]"}],"custom_login_page_on":true,"custom_login_page":"\u003chtml\u003e\u003cbody\u003eMy Custom Login Page\u003c/body\u003e\u003c/html\u003e","refresh_token":{"rotation_type":"non-rotating","expiration_type":"non-expiring","leeway":0,"token_lifetime":2592000,"infinite_token_lifetime":true,"infinite_idle_token_lifetime":true,"idle_token_lifetime":1296000}}' + headers: + Content-Type: + - application/json; charset=utf-8 + status: 200 OK + code: 200 + duration: 101.484791ms + - id: 29 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 5 + transfer_encoding: [] + trailer: {} + host: terraform-provider-auth0-dev.eu.auth0.com + remote_addr: "" + request_uri: "" + body: | + null + form: {} + headers: + Content-Type: + - application/json + User-Agent: + - Go-Auth0-SDK/0.17.2 + url: https://terraform-provider-auth0-dev.eu.auth0.com/api/v2/tenants/settings + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: -1 + uncompressed: true + body: '{"allowed_logout_urls":[],"change_password":{"enabled":true,"html":"My Custom Reset Password Page"},"default_audience":"","default_directory":"","enabled_locales":["de","fr"],"error_page":{"html":"My Custom Error Page","show_log_link":true,"url":"https://example.com"},"flags":{"allow_changing_enable_sso":false,"disable_impersonation":true,"disable_management_api_sms_obfuscation":true,"enable_public_signup_user_exists_error":true,"enable_sso":true,"new_universal_login_experience_enabled":true,"universal_login":true,"use_scope_descriptions_for_consent":false,"no_disclose_enterprise_connections":false,"revoke_refresh_token_grant":false,"disable_fields_map_fix":true,"require_signed_request_object":false,"dashboard_new_onboarding":false,"mfa_show_factor_list_on_enrollment":true,"disable_clickjack_protection_headers":false},"friendly_name":"My Test Tenant","guardian_mfa_page":{"enabled":true,"html":"My Custom MFA Page"},"idle_session_lifetime":72,"picture_url":"https://mycompany.org/logo.png","sandbox_version":"16","session_lifetime":168,"support_email":"support@mycompany.org","support_url":"https://mycompany.org/support","universal_login":{"colors":{"primary":"#0059d6","page_background":"#000000"}},"session_cookie":{"mode":"persistent"},"sandbox_versions_available":["16"]}' + headers: + Content-Type: + - application/json; charset=utf-8 + status: 200 OK + code: 200 + duration: 104.552708ms + - id: 30 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 5 + transfer_encoding: [] + trailer: {} + host: terraform-provider-auth0-dev.eu.auth0.com + remote_addr: "" + request_uri: "" + body: | + null + form: {} + headers: + Content-Type: + - application/json + User-Agent: + - Go-Auth0-SDK/0.17.2 + url: https://terraform-provider-auth0-dev.eu.auth0.com/api/v2/clients?fields=client_id&include_fields=true&include_totals=true&is_global=true&per_page=50 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: -1 + uncompressed: true + body: '{"total":1,"start":0,"limit":50,"clients":[{"tenant":"terraform-provider-auth0-dev","client_id":"o9HBfRCcqYIQmDQpaRIZAAQHCaTKdb1a"}]}' + headers: + Content-Type: + - application/json; charset=utf-8 + status: 200 OK + code: 200 + duration: 90.547375ms + - id: 31 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 5 + transfer_encoding: [] + trailer: {} + host: terraform-provider-auth0-dev.eu.auth0.com + remote_addr: "" + request_uri: "" + body: | + null + form: {} + headers: + Content-Type: + - application/json + User-Agent: + - Go-Auth0-SDK/0.17.2 + url: https://terraform-provider-auth0-dev.eu.auth0.com/api/v2/clients/o9HBfRCcqYIQmDQpaRIZAAQHCaTKdb1a + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: -1 + uncompressed: true + body: '{"name":"All Applications","client_id":"o9HBfRCcqYIQmDQpaRIZAAQHCaTKdb1a","client_secret":"[REDACTED]","is_first_party":true,"callbacks":[],"signing_keys":[{"cert":"[REDACTED]"}],"custom_login_page_on":true,"custom_login_page":"\u003chtml\u003e\u003cbody\u003eMy Custom Login Page\u003c/body\u003e\u003c/html\u003e","refresh_token":{"rotation_type":"non-rotating","expiration_type":"non-expiring","leeway":0,"token_lifetime":2592000,"infinite_token_lifetime":true,"infinite_idle_token_lifetime":true,"idle_token_lifetime":1296000}}' + headers: + Content-Type: + - application/json; charset=utf-8 + status: 200 OK + code: 200 + duration: 107.723125ms + - id: 32 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 5 + transfer_encoding: [] + trailer: {} + host: terraform-provider-auth0-dev.eu.auth0.com + remote_addr: "" + request_uri: "" + body: | + null + form: {} + headers: + Content-Type: + - application/json + User-Agent: + - Go-Auth0-SDK/0.17.2 + url: https://terraform-provider-auth0-dev.eu.auth0.com/api/v2/tenants/settings + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: -1 + uncompressed: true + body: '{"allowed_logout_urls":[],"change_password":{"enabled":true,"html":"My Custom Reset Password Page"},"default_audience":"","default_directory":"","enabled_locales":["de","fr"],"error_page":{"html":"My Custom Error Page","show_log_link":true,"url":"https://example.com"},"flags":{"allow_changing_enable_sso":false,"disable_impersonation":true,"disable_management_api_sms_obfuscation":true,"enable_public_signup_user_exists_error":true,"enable_sso":true,"new_universal_login_experience_enabled":true,"universal_login":true,"use_scope_descriptions_for_consent":false,"no_disclose_enterprise_connections":false,"revoke_refresh_token_grant":false,"disable_fields_map_fix":true,"require_signed_request_object":false,"dashboard_new_onboarding":false,"mfa_show_factor_list_on_enrollment":true,"disable_clickjack_protection_headers":false},"friendly_name":"My Test Tenant","guardian_mfa_page":{"enabled":true,"html":"My Custom MFA Page"},"idle_session_lifetime":72,"picture_url":"https://mycompany.org/logo.png","sandbox_version":"16","session_lifetime":168,"support_email":"support@mycompany.org","support_url":"https://mycompany.org/support","universal_login":{"colors":{"primary":"#0059d6","page_background":"#000000"}},"session_cookie":{"mode":"persistent"},"sandbox_versions_available":["16"]}' + headers: + Content-Type: + - application/json; charset=utf-8 + status: 200 OK + code: 200 + duration: 93.761042ms + - id: 33 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 5 + transfer_encoding: [] + trailer: {} + host: terraform-provider-auth0-dev.eu.auth0.com + remote_addr: "" + request_uri: "" + body: | + null + form: {} + headers: + Content-Type: + - application/json + User-Agent: + - Go-Auth0-SDK/0.17.2 + url: https://terraform-provider-auth0-dev.eu.auth0.com/api/v2/clients?fields=client_id&include_fields=true&include_totals=true&is_global=true&per_page=50 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: -1 + uncompressed: true + body: '{"total":1,"start":0,"limit":50,"clients":[{"tenant":"terraform-provider-auth0-dev","client_id":"o9HBfRCcqYIQmDQpaRIZAAQHCaTKdb1a"}]}' + headers: + Content-Type: + - application/json; charset=utf-8 + status: 200 OK + code: 200 + duration: 115.473542ms + - id: 34 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 5 + transfer_encoding: [] + trailer: {} + host: terraform-provider-auth0-dev.eu.auth0.com + remote_addr: "" + request_uri: "" + body: | + null + form: {} + headers: + Content-Type: + - application/json + User-Agent: + - Go-Auth0-SDK/0.17.2 + url: https://terraform-provider-auth0-dev.eu.auth0.com/api/v2/clients/o9HBfRCcqYIQmDQpaRIZAAQHCaTKdb1a + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: -1 + uncompressed: true + body: '{"name":"All Applications","client_id":"o9HBfRCcqYIQmDQpaRIZAAQHCaTKdb1a","client_secret":"[REDACTED]","is_first_party":true,"callbacks":[],"signing_keys":[{"cert":"[REDACTED]"}],"custom_login_page_on":true,"custom_login_page":"\u003chtml\u003e\u003cbody\u003eMy Custom Login Page\u003c/body\u003e\u003c/html\u003e","refresh_token":{"rotation_type":"non-rotating","expiration_type":"non-expiring","leeway":0,"token_lifetime":2592000,"infinite_token_lifetime":true,"infinite_idle_token_lifetime":true,"idle_token_lifetime":1296000}}' + headers: + Content-Type: + - application/json; charset=utf-8 + status: 200 OK + code: 200 + duration: 95.636584ms + - id: 35 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 5 + transfer_encoding: [] + trailer: {} + host: terraform-provider-auth0-dev.eu.auth0.com + remote_addr: "" + request_uri: "" + body: | + null + form: {} + headers: + Content-Type: + - application/json + User-Agent: + - Go-Auth0-SDK/0.17.2 + url: https://terraform-provider-auth0-dev.eu.auth0.com/api/v2/tenants/settings + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: -1 + uncompressed: true + body: '{"allowed_logout_urls":[],"change_password":{"enabled":true,"html":"My Custom Reset Password Page"},"default_audience":"","default_directory":"","enabled_locales":["de","fr"],"error_page":{"html":"My Custom Error Page","show_log_link":true,"url":"https://example.com"},"flags":{"allow_changing_enable_sso":false,"disable_impersonation":true,"disable_management_api_sms_obfuscation":true,"enable_public_signup_user_exists_error":true,"enable_sso":true,"new_universal_login_experience_enabled":true,"universal_login":true,"use_scope_descriptions_for_consent":false,"no_disclose_enterprise_connections":false,"revoke_refresh_token_grant":false,"disable_fields_map_fix":true,"require_signed_request_object":false,"dashboard_new_onboarding":false,"mfa_show_factor_list_on_enrollment":true,"disable_clickjack_protection_headers":false},"friendly_name":"My Test Tenant","guardian_mfa_page":{"enabled":true,"html":"My Custom MFA Page"},"idle_session_lifetime":72,"picture_url":"https://mycompany.org/logo.png","sandbox_version":"16","session_lifetime":168,"support_email":"support@mycompany.org","support_url":"https://mycompany.org/support","universal_login":{"colors":{"primary":"#0059d6","page_background":"#000000"}},"session_cookie":{"mode":"persistent"},"sandbox_versions_available":["16"]}' + headers: + Content-Type: + - application/json; charset=utf-8 + status: 200 OK + code: 200 + duration: 109.990334ms + - id: 36 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 5 + transfer_encoding: [] + trailer: {} + host: terraform-provider-auth0-dev.eu.auth0.com + remote_addr: "" + request_uri: "" + body: | + null + form: {} + headers: + Content-Type: + - application/json + User-Agent: + - Go-Auth0-SDK/0.17.2 + url: https://terraform-provider-auth0-dev.eu.auth0.com/api/v2/clients?fields=client_id&include_fields=true&include_totals=true&is_global=true&per_page=50 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: -1 + uncompressed: true + body: '{"total":1,"start":0,"limit":50,"clients":[{"tenant":"terraform-provider-auth0-dev","client_id":"o9HBfRCcqYIQmDQpaRIZAAQHCaTKdb1a"}]}' + headers: + Content-Type: + - application/json; charset=utf-8 + status: 200 OK + code: 200 + duration: 99.484458ms + - id: 37 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 5 + transfer_encoding: [] + trailer: {} + host: terraform-provider-auth0-dev.eu.auth0.com + remote_addr: "" + request_uri: "" + body: | + null + form: {} + headers: + Content-Type: + - application/json + User-Agent: + - Go-Auth0-SDK/0.17.2 + url: https://terraform-provider-auth0-dev.eu.auth0.com/api/v2/clients/o9HBfRCcqYIQmDQpaRIZAAQHCaTKdb1a + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: -1 + uncompressed: true + body: '{"name":"All Applications","client_id":"o9HBfRCcqYIQmDQpaRIZAAQHCaTKdb1a","client_secret":"[REDACTED]","is_first_party":true,"callbacks":[],"signing_keys":[{"cert":"[REDACTED]"}],"custom_login_page_on":true,"custom_login_page":"\u003chtml\u003e\u003cbody\u003eMy Custom Login Page\u003c/body\u003e\u003c/html\u003e","refresh_token":{"rotation_type":"non-rotating","expiration_type":"non-expiring","leeway":0,"token_lifetime":2592000,"infinite_token_lifetime":true,"infinite_idle_token_lifetime":true,"idle_token_lifetime":1296000}}' + headers: + Content-Type: + - application/json; charset=utf-8 + status: 200 OK + code: 200 + duration: 112.538458ms + - id: 38 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 5 + transfer_encoding: [] + trailer: {} + host: terraform-provider-auth0-dev.eu.auth0.com + remote_addr: "" + request_uri: "" + body: | + null + form: {} + headers: + Content-Type: + - application/json + User-Agent: + - Go-Auth0-SDK/0.17.2 + url: https://terraform-provider-auth0-dev.eu.auth0.com/api/v2/tenants/settings + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: -1 + uncompressed: true + body: '{"allowed_logout_urls":[],"change_password":{"enabled":true,"html":"My Custom Reset Password Page"},"default_audience":"","default_directory":"","enabled_locales":["de","fr"],"error_page":{"html":"My Custom Error Page","show_log_link":true,"url":"https://example.com"},"flags":{"allow_changing_enable_sso":false,"disable_impersonation":true,"disable_management_api_sms_obfuscation":true,"enable_public_signup_user_exists_error":true,"enable_sso":true,"new_universal_login_experience_enabled":true,"universal_login":true,"use_scope_descriptions_for_consent":false,"no_disclose_enterprise_connections":false,"revoke_refresh_token_grant":false,"disable_fields_map_fix":true,"require_signed_request_object":false,"dashboard_new_onboarding":false,"mfa_show_factor_list_on_enrollment":true,"disable_clickjack_protection_headers":false},"friendly_name":"My Test Tenant","guardian_mfa_page":{"enabled":true,"html":"My Custom MFA Page"},"idle_session_lifetime":72,"picture_url":"https://mycompany.org/logo.png","sandbox_version":"16","session_lifetime":168,"support_email":"support@mycompany.org","support_url":"https://mycompany.org/support","universal_login":{"colors":{"primary":"#0059d6","page_background":"#000000"}},"session_cookie":{"mode":"persistent"},"sandbox_versions_available":["16"]}' + headers: + Content-Type: + - application/json; charset=utf-8 + status: 200 OK + code: 200 + duration: 107.015708ms + - id: 39 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 5 + transfer_encoding: [] + trailer: {} + host: terraform-provider-auth0-dev.eu.auth0.com + remote_addr: "" + request_uri: "" + body: | + null + form: {} + headers: + Content-Type: + - application/json + User-Agent: + - Go-Auth0-SDK/0.17.2 + url: https://terraform-provider-auth0-dev.eu.auth0.com/api/v2/clients?fields=client_id&include_fields=true&include_totals=true&is_global=true&per_page=50 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: -1 + uncompressed: true + body: '{"total":1,"start":0,"limit":50,"clients":[{"tenant":"terraform-provider-auth0-dev","client_id":"o9HBfRCcqYIQmDQpaRIZAAQHCaTKdb1a"}]}' + headers: + Content-Type: + - application/json; charset=utf-8 + status: 200 OK + code: 200 + duration: 99.567042ms + - id: 40 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 31 + transfer_encoding: [] + trailer: {} + host: terraform-provider-auth0-dev.eu.auth0.com + remote_addr: "" + request_uri: "" + body: | + {"custom_login_page_on":false} + form: {} + headers: + Content-Type: + - application/json + User-Agent: + - Go-Auth0-SDK/0.17.2 + url: https://terraform-provider-auth0-dev.eu.auth0.com/api/v2/clients/o9HBfRCcqYIQmDQpaRIZAAQHCaTKdb1a + method: PATCH + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: -1 + uncompressed: true + body: '{"name":"All Applications","client_id":"o9HBfRCcqYIQmDQpaRIZAAQHCaTKdb1a","client_secret":"[REDACTED]","is_first_party":true,"callbacks":[],"signing_keys":[{"cert":"[REDACTED]"}],"custom_login_page_on":false,"custom_login_page":"\u003chtml\u003e\u003cbody\u003eMy Custom Login Page\u003c/body\u003e\u003c/html\u003e","refresh_token":{"rotation_type":"non-rotating","expiration_type":"non-expiring","leeway":0,"token_lifetime":2592000,"infinite_token_lifetime":true,"infinite_idle_token_lifetime":true,"idle_token_lifetime":1296000}}' + headers: + Content-Type: + - application/json; charset=utf-8 + status: 200 OK + code: 200 + duration: 105.139667ms + - id: 41 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 122 + transfer_encoding: [] + trailer: {} + host: terraform-provider-auth0-dev.eu.auth0.com + remote_addr: "" + request_uri: "" + body: | + {"change_password":{"enabled":false},"guardian_mfa_page":{"enabled":false},"error_page":{"show_log_link":false,"url":""}} + form: {} + headers: + Content-Type: + - application/json + User-Agent: + - Go-Auth0-SDK/0.17.2 + url: https://terraform-provider-auth0-dev.eu.auth0.com/api/v2/tenants/settings + method: PATCH + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: -1 + uncompressed: true + body: '{"allowed_logout_urls":[],"change_password":{"enabled":false,"html":"My Custom Reset Password Page"},"default_audience":"","default_directory":"","enabled_locales":["de","fr"],"error_page":{"html":"My Custom Error Page","show_log_link":false,"url":""},"flags":{"allow_changing_enable_sso":false,"cannot_change_enforce_client_authentication_on_passwordless_start":true,"disable_impersonation":true,"disable_management_api_sms_obfuscation":true,"enable_public_signup_user_exists_error":true,"enable_sso":true,"enforce_client_authentication_on_passwordless_start":true,"new_universal_login_experience_enabled":true,"universal_login":true,"use_scope_descriptions_for_consent":false,"no_disclose_enterprise_connections":false,"revoke_refresh_token_grant":false,"disable_fields_map_fix":true,"require_signed_request_object":false,"dashboard_new_onboarding":false,"mfa_show_factor_list_on_enrollment":true,"disable_clickjack_protection_headers":false},"friendly_name":"My Test Tenant","guardian_mfa_page":{"enabled":false,"html":"My Custom MFA Page"},"idle_session_lifetime":72,"picture_url":"https://mycompany.org/logo.png","sandbox_version":"16","session_lifetime":168,"support_email":"support@mycompany.org","support_url":"https://mycompany.org/support","universal_login":{"colors":{"primary":"#0059d6","page_background":"#000000"},"is_custom_theme_set":false,"is_custom_template_set":false},"session_cookie":{"mode":"persistent"}}' + headers: + Content-Type: + - application/json; charset=utf-8 + status: 200 OK + code: 200 + duration: 210.324209ms