From a49755892572f07e4ade6eeb291371850b86cd19 Mon Sep 17 00:00:00 2001 From: Sergiu Ghitea <28300158+sergiught@users.noreply.github.com> Date: Sun, 29 Jan 2023 23:42:36 +0100 Subject: [PATCH] Allow url fields to be set to empty --- docs/data-sources/client.md | 2 +- docs/data-sources/global_client.md | 2 +- docs/index.md | 5 +- docs/resources/client.md | 2 +- docs/resources/global_client.md | 2 +- docs/resources/guardian.md | 4 +- docs/resources/tenant.md | 2 +- internal/provider/resource_auth0_client.go | 12 ++-- .../provider/resource_auth0_client_test.go | 4 +- internal/provider/resource_auth0_guardian.go | 10 +-- internal/provider/resource_auth0_tenant.go | 13 ++-- .../provider/resource_auth0_tenant_test.go | 3 +- internal/validation/validation.go | 41 +++--------- internal/validation/validation_test.go | 66 +++++++++++++++---- test/data/recordings/TestAccClient.yaml | 8 +-- test/data/recordings/TestAccTenant.yaml | 12 ++-- 16 files changed, 103 insertions(+), 85 deletions(-) diff --git a/docs/data-sources/client.md b/docs/data-sources/client.md index 0cebf1b67..b03ade085 100644 --- a/docs/data-sources/client.md +++ b/docs/data-sources/client.md @@ -50,7 +50,7 @@ data "auth0_client" "some-client-by-id" { - `form_template` (String) HTML form template to be used for WS-Federation. - `grant_types` (List of String) Types of grants that this client is authorized to use. - `id` (String) The ID of this resource. -- `initiate_login_uri` (String) Initiate login URI, must be HTTPS. +- `initiate_login_uri` (String) Initiate login URI. Must be HTTPS or an empty string. - `is_first_party` (Boolean) Indicates whether this client is a first-party client. - `is_token_endpoint_ip_header_trusted` (Boolean) Indicates whether the token endpoint IP header is trusted. - `jwt_configuration` (List of Object) Configuration settings for the JWTs issued for this client. (see [below for nested schema](#nestedatt--jwt_configuration)) diff --git a/docs/data-sources/global_client.md b/docs/data-sources/global_client.md index 3d67112d0..0e82c19fc 100644 --- a/docs/data-sources/global_client.md +++ b/docs/data-sources/global_client.md @@ -38,7 +38,7 @@ data "auth0_global_client" "global" {} - `form_template` (String) HTML form template to be used for WS-Federation. - `grant_types` (List of String) Types of grants that this client is authorized to use. - `id` (String) The ID of this resource. -- `initiate_login_uri` (String) Initiate login URI, must be HTTPS. +- `initiate_login_uri` (String) Initiate login URI. Must be HTTPS or an empty string. - `is_first_party` (Boolean) Indicates whether this client is a first-party client. - `is_token_endpoint_ip_header_trusted` (Boolean) Indicates whether the token endpoint IP header is trusted. - `jwt_configuration` (List of Object) Configuration settings for the JWTs issued for this client. (see [below for nested schema](#nestedatt--jwt_configuration)) diff --git a/docs/index.md b/docs/index.md index 1214fff45..1a94f1263 100644 --- a/docs/index.md +++ b/docs/index.md @@ -33,10 +33,6 @@ better alternative. ## Schema -### Required - -- `domain` (String) Your Auth0 domain name. It can also be sourced from the `AUTH0_DOMAIN` environment variable. - ### Optional - `api_token` (String) Your Auth0 [management api access token](https://auth0.com/docs/security/tokens/access-tokens/management-api-access-tokens). It can also be sourced from the `AUTH0_API_TOKEN` environment variable. It can be used instead of `client_id` + `client_secret`. If both are specified, `api_token` will be used over `client_id` + `client_secret` fields. @@ -44,6 +40,7 @@ better alternative. - `client_id` (String) Your Auth0 client ID. It can also be sourced from the `AUTH0_CLIENT_ID` environment variable. - `client_secret` (String) Your Auth0 client secret. It can also be sourced from the `AUTH0_CLIENT_SECRET` environment variable. - `debug` (Boolean) Indicates whether to turn on debug mode. +- `domain` (String) Your Auth0 domain name. It can also be sourced from the `AUTH0_DOMAIN` environment variable. ## Environment Variables diff --git a/docs/resources/client.md b/docs/resources/client.md index 2ad1fb092..55a36a32e 100644 --- a/docs/resources/client.md +++ b/docs/resources/client.md @@ -111,7 +111,7 @@ resource "auth0_client" "my_client" { - `encryption_key` (Map of String) Encryption used for WS-Fed responses with this client. - `form_template` (String) HTML form template to be used for WS-Federation. - `grant_types` (List of String) Types of grants that this client is authorized to use. -- `initiate_login_uri` (String) Initiate login URI, must be HTTPS. +- `initiate_login_uri` (String) Initiate login URI. Must be HTTPS or an empty string. - `is_first_party` (Boolean) Indicates whether this client is a first-party client. - `is_token_endpoint_ip_header_trusted` (Boolean) Indicates whether the token endpoint IP header is trusted. - `jwt_configuration` (Block List, Max: 1) Configuration settings for the JWTs issued for this client. (see [below for nested schema](#nestedblock--jwt_configuration)) diff --git a/docs/resources/global_client.md b/docs/resources/global_client.md index d8a3b4438..af4eb467b 100644 --- a/docs/resources/global_client.md +++ b/docs/resources/global_client.md @@ -50,7 +50,7 @@ PAGE - `encryption_key` (Map of String) Encryption used for WS-Fed responses with this client. - `form_template` (String) HTML form template to be used for WS-Federation. - `grant_types` (List of String) Types of grants that this client is authorized to use. -- `initiate_login_uri` (String) Initiate login URI, must be HTTPS. +- `initiate_login_uri` (String) Initiate login URI. Must be HTTPS or an empty string. - `is_first_party` (Boolean) Indicates whether this client is a first-party client. - `is_token_endpoint_ip_header_trusted` (Boolean) Indicates whether the token endpoint IP header is trusted. - `jwt_configuration` (Block List, Max: 1) Configuration settings for the JWTs issued for this client. (see [below for nested schema](#nestedblock--jwt_configuration)) diff --git a/docs/resources/guardian.md b/docs/resources/guardian.md index b73d57153..d13ec8bd5 100644 --- a/docs/resources/guardian.md +++ b/docs/resources/guardian.md @@ -159,8 +159,8 @@ Required: Optional: - `app_name` (String) Custom Application Name. -- `apple_app_link` (String) Apple App Store URL. -- `google_app_link` (String) Google Store URL. +- `apple_app_link` (String) Apple App Store URL. Must be HTTPS or an empty string. +- `google_app_link` (String) Google Store URL. Must be HTTPS or an empty string. diff --git a/docs/resources/tenant.md b/docs/resources/tenant.md index bb4ef03da..38c546c5f 100644 --- a/docs/resources/tenant.md +++ b/docs/resources/tenant.md @@ -73,7 +73,7 @@ resource "auth0_tenant" "my_tenant" { - `change_password` (Block List, Max: 1) Configuration settings for change password page. (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 and cannot contain a fragment. +- `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)) - `flags` (Block List, Max: 1) Configuration settings for tenant flags. (see [below for nested schema](#nestedblock--flags)) diff --git a/internal/provider/resource_auth0_client.go b/internal/provider/resource_auth0_client.go index ee2ea2e6f..0ca2f333d 100644 --- a/internal/provider/resource_auth0_client.go +++ b/internal/provider/resource_auth0_client.go @@ -9,6 +9,8 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" + + internalValidation "github.com/auth0/terraform-provider-auth0/internal/validation" ) func newClient() *schema.Resource { @@ -51,9 +53,9 @@ func newClient() *schema.Resource { Type: schema.TypeMap, Optional: true, Description: "Custom metadata for the rotation. " + - "The contents of this map are arbitrary and are hashed by the provider. When the hash changes, a rotation is triggered. " + - "For example, the map could contain the user making the change, the date of the change, and a text reason for the change. " + - "For more info: [rotate-client-secret](https://auth0.com/docs/get-started/applications/rotate-client-secret).", + "The contents of this map are arbitrary and are hashed by the provider. When the hash changes, a rotation is triggered. " + + "For example, the map could contain the user making the change, the date of the change, and a text reason for the change. " + + "For more info: [rotate-client-secret](https://auth0.com/docs/get-started/applications/rotate-client-secret).", }, "client_aliases": { Type: schema.TypeList, @@ -608,8 +610,8 @@ func newClient() *schema.Resource { "initiate_login_uri": { Type: schema.TypeString, Optional: true, - ValidateFunc: validation.IsURLWithHTTPS, - Description: "Initiate login URI, must be HTTPS.", + ValidateFunc: internalValidation.IsURLWithHTTPSorEmptyString, + Description: "Initiate login URI. Must be HTTPS or an empty string.", }, "native_social_login": { Type: schema.TypeList, diff --git a/internal/provider/resource_auth0_client_test.go b/internal/provider/resource_auth0_client_test.go index 615b53e33..48ce7a353 100644 --- a/internal/provider/resource_auth0_client_test.go +++ b/internal/provider/resource_auth0_client_test.go @@ -584,7 +584,7 @@ resource "auth0_client" "my_client" { custom_login_page = "" form_template = "" token_endpoint_auth_method = "client_secret_post" - initiate_login_uri = "https://example.com/login-uri" + initiate_login_uri = "" logo_uri = "https://another-example.com/logoUri" organization_require_behavior = "no_prompt" organization_usage = "deny" @@ -748,7 +748,7 @@ func TestAccClient(t *testing.T) { resource.TestCheckResourceAttr("auth0_client.my_client", "custom_login_page", ""), resource.TestCheckResourceAttr("auth0_client.my_client", "form_template", ""), resource.TestCheckResourceAttr("auth0_client.my_client", "token_endpoint_auth_method", "client_secret_post"), - resource.TestCheckResourceAttr("auth0_client.my_client", "initiate_login_uri", "https://example.com/login-uri"), + resource.TestCheckResourceAttr("auth0_client.my_client", "initiate_login_uri", ""), resource.TestCheckResourceAttr("auth0_client.my_client", "logo_uri", "https://another-example.com/logoUri"), resource.TestCheckResourceAttr("auth0_client.my_client", "organization_require_behavior", "no_prompt"), resource.TestCheckResourceAttr("auth0_client.my_client", "organization_usage", "deny"), diff --git a/internal/provider/resource_auth0_guardian.go b/internal/provider/resource_auth0_guardian.go index 23e9fbfbd..79920ccaa 100644 --- a/internal/provider/resource_auth0_guardian.go +++ b/internal/provider/resource_auth0_guardian.go @@ -9,6 +9,8 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" + + internalValidation "github.com/auth0/terraform-provider-auth0/internal/validation" ) func newGuardian() *schema.Resource { @@ -333,14 +335,14 @@ func newGuardian() *schema.Resource { "apple_app_link": { Type: schema.TypeString, Optional: true, - ValidateFunc: validation.IsURLWithHTTPS, - Description: "Apple App Store URL.", + ValidateFunc: internalValidation.IsURLWithHTTPSorEmptyString, + Description: "Apple App Store URL. Must be HTTPS or an empty string.", }, "google_app_link": { Type: schema.TypeString, Optional: true, - ValidateFunc: validation.IsURLWithHTTPS, - Description: "Google Store URL.", + ValidateFunc: internalValidation.IsURLWithHTTPSorEmptyString, + Description: "Google Store URL. Must be HTTPS or an empty string.", }, }, }, diff --git a/internal/provider/resource_auth0_tenant.go b/internal/provider/resource_auth0_tenant.go index d07cd8399..1787ba053 100644 --- a/internal/provider/resource_auth0_tenant.go +++ b/internal/provider/resource_auth0_tenant.go @@ -351,14 +351,11 @@ func newTenant() *schema.Resource { }, }, "default_redirection_uri": { - Type: schema.TypeString, - Optional: true, - Computed: true, - ValidateFunc: validation.All( - internalValidation.IsURLWithNoFragment, - validation.IsURLWithScheme([]string{"https"}), - ), - Description: "The default absolute redirection URI, must be https and cannot contain a fragment.", + Type: schema.TypeString, + Optional: true, + Computed: true, + ValidateFunc: internalValidation.IsURLWithHTTPSorEmptyString, + Description: "The default absolute redirection URI. Must be HTTPS or an empty string.", }, "session_cookie": { Type: schema.TypeList, diff --git a/internal/provider/resource_auth0_tenant_test.go b/internal/provider/resource_auth0_tenant_test.go index 38bceb0c4..13f41ba4e 100644 --- a/internal/provider/resource_auth0_tenant_test.go +++ b/internal/provider/resource_auth0_tenant_test.go @@ -64,6 +64,7 @@ func TestAccTenant(t *testing.T) { resource.TestCheckResourceAttr("auth0_tenant.my_tenant", "flags.0.use_scope_descriptions_for_consent", "false"), resource.TestCheckResourceAttr("auth0_tenant.my_tenant", "allowed_logout_urls.#", "0"), resource.TestCheckResourceAttr("auth0_tenant.my_tenant", "session_cookie.0.mode", "persistent"), + resource.TestCheckResourceAttr("auth0_tenant.my_tenant", "default_redirection_uri", ""), ), }, { @@ -165,7 +166,7 @@ resource "auth0_tenant" "my_tenant" { page_background = "#000000" } } - default_redirection_uri = "https://example.com/login" + default_redirection_uri = "" session_cookie { mode = "persistent" } diff --git a/internal/validation/validation.go b/internal/validation/validation.go index c08fccbfc..b94150566 100644 --- a/internal/validation/validation.go +++ b/internal/validation/validation.go @@ -1,38 +1,17 @@ package validation import ( - "fmt" - "net/url" -) - -// IsURLWithNoFragment is a SchemaValidateFunc which tests if the provided value -// is of type string and a valid URL with no fragment. -func IsURLWithNoFragment(i interface{}, k string) (warnings []string, errors []error) { - v, ok := i.(string) - if !ok { - errors = append(errors, fmt.Errorf("expected type of %q to be string", k)) - return - } - - if v == "" { - errors = append(errors, fmt.Errorf("expected %q url to not be empty, got %v", k, i)) - return - } + "strings" - u, err := url.Parse(v) - if err != nil { - errors = append(errors, fmt.Errorf("expected %q to be a valid url, got %v: %+v", k, v, err)) - return - } - - if u.Host == "" { - errors = append(errors, fmt.Errorf("expected %q to have a host, got %v", k, v)) - return - } + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" +) - if u.Fragment != "" { - errors = append(errors, fmt.Errorf("expected %q to have a url with an empty fragment. %s", k, v)) +func IsURLWithHTTPSorEmptyString(i interface{}, s string) ([]string, []error) { + _, errors := validation.IsURLWithHTTPS(i, s) + for _, err := range errors { + if !strings.Contains(err.Error(), "url to not be empty") { + return nil, errors + } } - - return + return nil, nil } diff --git a/internal/validation/validation_test.go b/internal/validation/validation_test.go index 9e3ee4984..ec5e3050e 100644 --- a/internal/validation/validation_test.go +++ b/internal/validation/validation_test.go @@ -1,18 +1,58 @@ package validation -import "testing" +import ( + "fmt" + "testing" -func TestIsURLWithNoFragment(t *testing.T) { - for url, valid := range map[string]bool{ - "http://example.com": true, - "http://example.com/foo": true, - "http://example.com#foo": false, - "https://example.com/foo": true, - "https://example.com#foo": false, - } { - _, err := IsURLWithNoFragment(url, "url") - if err != nil && valid { - t.Errorf("IsURLWithNoFragment(%s) produced an unexpected error", url) - } + "github.com/stretchr/testify/assert" +) + +func TestIsURLWithHTTPSorEmptyString(t *testing.T) { + var testCases = []struct { + inputURL string + expectedErrors []string + }{ + { + inputURL: "http://example.com", + expectedErrors: []string{ + "expected \"theTestURL\" to have a url with schema of: \"https\", got http://example.com", + }, + }, + { + inputURL: "http://example.com/foo", + expectedErrors: []string{ + "expected \"theTestURL\" to have a url with schema of: \"https\", got http://example.com/foo", + }, + }, + { + inputURL: "http://example.com#foo", + expectedErrors: []string{ + "expected \"theTestURL\" to have a url with schema of: \"https\", got http://example.com#foo", + }, + }, + { + inputURL: "https://example.com/foo", + expectedErrors: nil, + }, + { + inputURL: "https://example.com#foo", + expectedErrors: nil, + }, + { + inputURL: "", + expectedErrors: nil, + }, + } + + for i, testCase := range testCases { + t.Run(fmt.Sprintf("test case #%d", i), func(t *testing.T) { + var errorsAsString []string + _, actualErrors := IsURLWithHTTPSorEmptyString(testCase.inputURL, "theTestURL") + for _, actualError := range actualErrors { + errorsAsString = append(errorsAsString, actualError.Error()) + } + + assert.Equal(t, testCase.expectedErrors, errorsAsString) + }) } } diff --git a/test/data/recordings/TestAccClient.yaml b/test/data/recordings/TestAccClient.yaml index cece87824..dede4ed50 100644 --- a/test/data/recordings/TestAccClient.yaml +++ b/test/data/recordings/TestAccClient.yaml @@ -301,7 +301,7 @@ interactions: remote_addr: "" request_uri: "" body: | - {"name":"Acceptance Test - TestAccClient","description":"","app_type":"non_interactive","logo_uri":"https://another-example.com/logoUri","is_first_party":true,"is_token_endpoint_ip_header_trusted":true,"oidc_conformant":true,"callbacks":[],"allowed_origins":[],"web_origins":[],"client_aliases":[],"allowed_clients":[],"allowed_logout_urls":[],"sso":true,"sso_disabled":true,"cross_origin_auth":true,"grant_types":[],"cross_origin_loc":"https://example.com/cross-origin-loc","custom_login_page_on":true,"custom_login_page":"","form_template":"","token_endpoint_auth_method":"client_secret_post","client_metadata":{},"initiate_login_uri":"https://example.com/login-uri","organization_usage":"deny","organization_require_behavior":"no_prompt"} + {"name":"Acceptance Test - TestAccClient","description":"","app_type":"non_interactive","logo_uri":"https://another-example.com/logoUri","is_first_party":true,"is_token_endpoint_ip_header_trusted":true,"oidc_conformant":true,"callbacks":[],"allowed_origins":[],"web_origins":[],"client_aliases":[],"allowed_clients":[],"allowed_logout_urls":[],"sso":true,"sso_disabled":true,"cross_origin_auth":true,"grant_types":[],"cross_origin_loc":"https://example.com/cross-origin-loc","custom_login_page_on":true,"custom_login_page":"","form_template":"","token_endpoint_auth_method":"client_secret_post","client_metadata":{},"initiate_login_uri":"","organization_usage":"deny","organization_require_behavior":"no_prompt"} form: { } headers: Content-Type: @@ -318,7 +318,7 @@ interactions: trailer: { } content_length: -1 uncompressed: true - body: '{"name":"Acceptance Test - TestAccClient","description":"","client_id":"iT7PiZYN71VGR4mBpMLOYjaVSyQgBtNX","client_secret":"[REDACTED]","app_type":"non_interactive","logo_uri":"https://another-example.com/logoUri","is_first_party":true,"is_token_endpoint_ip_header_trusted":true,"oidc_conformant":true,"callbacks":[],"allowed_origins":[],"web_origins":[],"client_aliases":[],"allowed_clients":[],"allowed_logout_urls":[],"jwt_configuration":{"secret_encoded":false,"lifetime_in_seconds":36000},"signing_keys":[{"cert":"[REDACTED]"}],"sso":true,"sso_disabled":true,"cross_origin_auth":true,"grant_types":[],"cross_origin_loc":"https://example.com/cross-origin-loc","custom_login_page_on":true,"custom_login_page":"","form_template":"","token_endpoint_auth_method":"client_secret_post","client_metadata":{},"initiate_login_uri":"https://example.com/login-uri","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},"organization_usage":"deny","organization_require_behavior":"no_prompt"}' + body: '{"name":"Acceptance Test - TestAccClient","description":"","client_id":"iT7PiZYN71VGR4mBpMLOYjaVSyQgBtNX","client_secret":"[REDACTED]","app_type":"non_interactive","logo_uri":"https://another-example.com/logoUri","is_first_party":true,"is_token_endpoint_ip_header_trusted":true,"oidc_conformant":true,"callbacks":[],"allowed_origins":[],"web_origins":[],"client_aliases":[],"allowed_clients":[],"allowed_logout_urls":[],"jwt_configuration":{"secret_encoded":false,"lifetime_in_seconds":36000},"signing_keys":[{"cert":"[REDACTED]"}],"sso":true,"sso_disabled":true,"cross_origin_auth":true,"grant_types":[],"cross_origin_loc":"https://example.com/cross-origin-loc","custom_login_page_on":true,"custom_login_page":"","form_template":"","token_endpoint_auth_method":"client_secret_post","client_metadata":{},"initiate_login_uri":"F","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},"organization_usage":"deny","organization_require_behavior":"no_prompt"}' headers: Content-Type: - application/json; charset=utf-8 @@ -354,7 +354,7 @@ interactions: trailer: { } content_length: -1 uncompressed: true - body: '{"name":"Acceptance Test - TestAccClient","description":"","client_id":"iT7PiZYN71VGR4mBpMLOYjaVSyQgBtNX","client_secret":"[REDACTED]","app_type":"non_interactive","logo_uri":"https://another-example.com/logoUri","is_first_party":true,"is_token_endpoint_ip_header_trusted":true,"oidc_conformant":true,"callbacks":[],"allowed_origins":[],"web_origins":[],"client_aliases":[],"allowed_clients":[],"allowed_logout_urls":[],"jwt_configuration":{"secret_encoded":false,"lifetime_in_seconds":36000},"signing_keys":[{"cert":"[REDACTED]"}],"sso":true,"sso_disabled":true,"cross_origin_auth":true,"grant_types":[],"cross_origin_loc":"https://example.com/cross-origin-loc","custom_login_page_on":true,"custom_login_page":"","form_template":"","token_endpoint_auth_method":"client_secret_post","client_metadata":{},"initiate_login_uri":"https://example.com/login-uri","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},"organization_usage":"deny","organization_require_behavior":"no_prompt"}' + body: '{"name":"Acceptance Test - TestAccClient","description":"","client_id":"iT7PiZYN71VGR4mBpMLOYjaVSyQgBtNX","client_secret":"[REDACTED]","app_type":"non_interactive","logo_uri":"https://another-example.com/logoUri","is_first_party":true,"is_token_endpoint_ip_header_trusted":true,"oidc_conformant":true,"callbacks":[],"allowed_origins":[],"web_origins":[],"client_aliases":[],"allowed_clients":[],"allowed_logout_urls":[],"jwt_configuration":{"secret_encoded":false,"lifetime_in_seconds":36000},"signing_keys":[{"cert":"[REDACTED]"}],"sso":true,"sso_disabled":true,"cross_origin_auth":true,"grant_types":[],"cross_origin_loc":"https://example.com/cross-origin-loc","custom_login_page_on":true,"custom_login_page":"","form_template":"","token_endpoint_auth_method":"client_secret_post","client_metadata":{},"initiate_login_uri":"","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},"organization_usage":"deny","organization_require_behavior":"no_prompt"}' headers: Content-Type: - application/json; charset=utf-8 @@ -390,7 +390,7 @@ interactions: trailer: { } content_length: -1 uncompressed: true - body: '{"name":"Acceptance Test - TestAccClient","description":"","client_id":"iT7PiZYN71VGR4mBpMLOYjaVSyQgBtNX","client_secret":"[REDACTED]","app_type":"non_interactive","logo_uri":"https://another-example.com/logoUri","is_first_party":true,"is_token_endpoint_ip_header_trusted":true,"oidc_conformant":true,"callbacks":[],"allowed_origins":[],"web_origins":[],"client_aliases":[],"allowed_clients":[],"allowed_logout_urls":[],"jwt_configuration":{"secret_encoded":false,"lifetime_in_seconds":36000},"signing_keys":[{"cert":"[REDACTED]"}],"sso":true,"sso_disabled":true,"cross_origin_auth":true,"grant_types":[],"cross_origin_loc":"https://example.com/cross-origin-loc","custom_login_page_on":true,"custom_login_page":"","form_template":"","token_endpoint_auth_method":"client_secret_post","client_metadata":{},"initiate_login_uri":"https://example.com/login-uri","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},"organization_usage":"deny","organization_require_behavior":"no_prompt"}' + body: '{"name":"Acceptance Test - TestAccClient","description":"","client_id":"iT7PiZYN71VGR4mBpMLOYjaVSyQgBtNX","client_secret":"[REDACTED]","app_type":"non_interactive","logo_uri":"https://another-example.com/logoUri","is_first_party":true,"is_token_endpoint_ip_header_trusted":true,"oidc_conformant":true,"callbacks":[],"allowed_origins":[],"web_origins":[],"client_aliases":[],"allowed_clients":[],"allowed_logout_urls":[],"jwt_configuration":{"secret_encoded":false,"lifetime_in_seconds":36000},"signing_keys":[{"cert":"[REDACTED]"}],"sso":true,"sso_disabled":true,"cross_origin_auth":true,"grant_types":[],"cross_origin_loc":"https://example.com/cross-origin-loc","custom_login_page_on":true,"custom_login_page":"","form_template":"","token_endpoint_auth_method":"client_secret_post","client_metadata":{},"initiate_login_uri":"","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},"organization_usage":"deny","organization_require_behavior":"no_prompt"}' headers: Content-Type: - application/json; charset=utf-8 diff --git a/test/data/recordings/TestAccTenant.yaml b/test/data/recordings/TestAccTenant.yaml index 29aaf6a69..b70a98838 100644 --- a/test/data/recordings/TestAccTenant.yaml +++ b/test/data/recordings/TestAccTenant.yaml @@ -354,7 +354,7 @@ interactions: trailer: {} content_length: -1 uncompressed: true - body: '{"allowed_logout_urls":[],"change_password":{"enabled":true,"html":"Change Password"},"default_audience":"","default_directory":"","default_redirection_uri":"https://example.com/login","enabled_locales":["de","fr"],"error_page":{"html":"Error Page","show_log_link":false,"url":"https://mycompany.org/error"},"flags":{"allow_changing_enable_sso":false,"allow_legacy_delegation_grant_types":true,"allow_legacy_ro_grant_types":true,"allow_legacy_tokeninfo_endpoint":true,"change_pwd_flow_v1":false,"disable_impersonation":true,"disable_management_api_sms_obfuscation":true,"enable_adfs_waad_email_verification":true,"enable_apis_section":true,"enable_client_connections":true,"enable_custom_domain_in_emails":false,"enable_dynamic_client_registration":true,"enable_idtoken_api2":true,"enable_legacy_logs_search_v2":true,"enable_legacy_profile":true,"enable_public_signup_user_exists_error":true,"enable_sso":true,"new_universal_login_experience_enabled":true,"non_oidc_conformant_updated_at":true,"universal_login":true,"use_scope_descriptions_for_consent":false,"no_disclose_enterprise_connections":false,"revoke_refresh_token_grant":false,"dashboard_log_streams_next":true,"disable_fields_map_fix":true,"disable_clickjack_protection_headers":false,"enable_pipeline2":true},"friendly_name":"My Test Tenant","guardian_mfa_page":{"enabled":true,"html":"MFA"},"idle_session_lifetime":72,"picture_url":"https://mycompany.org/logo.png","sandbox_version":"12","session_lifetime":720,"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","12"]}' + body: '{"allowed_logout_urls":[],"change_password":{"enabled":true,"html":"Change Password"},"default_audience":"","default_directory":"","default_redirection_uri":"","enabled_locales":["de","fr"],"error_page":{"html":"Error Page","show_log_link":false,"url":"https://mycompany.org/error"},"flags":{"allow_changing_enable_sso":false,"allow_legacy_delegation_grant_types":true,"allow_legacy_ro_grant_types":true,"allow_legacy_tokeninfo_endpoint":true,"change_pwd_flow_v1":false,"disable_impersonation":true,"disable_management_api_sms_obfuscation":true,"enable_adfs_waad_email_verification":true,"enable_apis_section":true,"enable_client_connections":true,"enable_custom_domain_in_emails":false,"enable_dynamic_client_registration":true,"enable_idtoken_api2":true,"enable_legacy_logs_search_v2":true,"enable_legacy_profile":true,"enable_public_signup_user_exists_error":true,"enable_sso":true,"new_universal_login_experience_enabled":true,"non_oidc_conformant_updated_at":true,"universal_login":true,"use_scope_descriptions_for_consent":false,"no_disclose_enterprise_connections":false,"revoke_refresh_token_grant":false,"dashboard_log_streams_next":true,"disable_fields_map_fix":true,"disable_clickjack_protection_headers":false,"enable_pipeline2":true},"friendly_name":"My Test Tenant","guardian_mfa_page":{"enabled":true,"html":"MFA"},"idle_session_lifetime":72,"picture_url":"https://mycompany.org/logo.png","sandbox_version":"12","session_lifetime":720,"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","12"]}' headers: Content-Type: - application/json; charset=utf-8 @@ -390,7 +390,7 @@ interactions: trailer: {} content_length: -1 uncompressed: true - body: '{"allowed_logout_urls":[],"change_password":{"enabled":true,"html":"Change Password"},"default_audience":"","default_directory":"","default_redirection_uri":"https://example.com/login","enabled_locales":["de","fr"],"error_page":{"html":"Error Page","show_log_link":false,"url":"https://mycompany.org/error"},"flags":{"allow_changing_enable_sso":false,"allow_legacy_delegation_grant_types":true,"allow_legacy_ro_grant_types":true,"allow_legacy_tokeninfo_endpoint":true,"change_pwd_flow_v1":false,"disable_impersonation":true,"disable_management_api_sms_obfuscation":true,"enable_adfs_waad_email_verification":true,"enable_apis_section":true,"enable_client_connections":true,"enable_custom_domain_in_emails":false,"enable_dynamic_client_registration":true,"enable_idtoken_api2":true,"enable_legacy_logs_search_v2":true,"enable_legacy_profile":true,"enable_public_signup_user_exists_error":true,"enable_sso":true,"new_universal_login_experience_enabled":true,"non_oidc_conformant_updated_at":true,"universal_login":true,"use_scope_descriptions_for_consent":false,"no_disclose_enterprise_connections":false,"revoke_refresh_token_grant":false,"dashboard_log_streams_next":true,"disable_fields_map_fix":true,"disable_clickjack_protection_headers":false,"enable_pipeline2":true},"friendly_name":"My Test Tenant","guardian_mfa_page":{"enabled":true,"html":"MFA"},"idle_session_lifetime":72,"picture_url":"https://mycompany.org/logo.png","sandbox_version":"12","session_lifetime":720,"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","12"]}' + body: '{"allowed_logout_urls":[],"change_password":{"enabled":true,"html":"Change Password"},"default_audience":"","default_directory":"","default_redirection_uri":"","enabled_locales":["de","fr"],"error_page":{"html":"Error Page","show_log_link":false,"url":"https://mycompany.org/error"},"flags":{"allow_changing_enable_sso":false,"allow_legacy_delegation_grant_types":true,"allow_legacy_ro_grant_types":true,"allow_legacy_tokeninfo_endpoint":true,"change_pwd_flow_v1":false,"disable_impersonation":true,"disable_management_api_sms_obfuscation":true,"enable_adfs_waad_email_verification":true,"enable_apis_section":true,"enable_client_connections":true,"enable_custom_domain_in_emails":false,"enable_dynamic_client_registration":true,"enable_idtoken_api2":true,"enable_legacy_logs_search_v2":true,"enable_legacy_profile":true,"enable_public_signup_user_exists_error":true,"enable_sso":true,"new_universal_login_experience_enabled":true,"non_oidc_conformant_updated_at":true,"universal_login":true,"use_scope_descriptions_for_consent":false,"no_disclose_enterprise_connections":false,"revoke_refresh_token_grant":false,"dashboard_log_streams_next":true,"disable_fields_map_fix":true,"disable_clickjack_protection_headers":false,"enable_pipeline2":true},"friendly_name":"My Test Tenant","guardian_mfa_page":{"enabled":true,"html":"MFA"},"idle_session_lifetime":72,"picture_url":"https://mycompany.org/logo.png","sandbox_version":"12","session_lifetime":720,"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","12"]}' headers: Content-Type: - application/json; charset=utf-8 @@ -426,7 +426,7 @@ interactions: trailer: {} content_length: -1 uncompressed: true - body: '{"allowed_logout_urls":[],"change_password":{"enabled":true,"html":"Change Password"},"default_audience":"","default_directory":"","default_redirection_uri":"https://example.com/login","enabled_locales":["de","fr"],"error_page":{"html":"Error Page","show_log_link":false,"url":"https://mycompany.org/error"},"flags":{"allow_changing_enable_sso":false,"allow_legacy_delegation_grant_types":true,"allow_legacy_ro_grant_types":true,"allow_legacy_tokeninfo_endpoint":true,"change_pwd_flow_v1":false,"disable_impersonation":true,"disable_management_api_sms_obfuscation":true,"enable_adfs_waad_email_verification":true,"enable_apis_section":true,"enable_client_connections":true,"enable_custom_domain_in_emails":false,"enable_dynamic_client_registration":true,"enable_idtoken_api2":true,"enable_legacy_logs_search_v2":true,"enable_legacy_profile":true,"enable_public_signup_user_exists_error":true,"enable_sso":true,"new_universal_login_experience_enabled":true,"non_oidc_conformant_updated_at":true,"universal_login":true,"use_scope_descriptions_for_consent":false,"no_disclose_enterprise_connections":false,"revoke_refresh_token_grant":false,"dashboard_log_streams_next":true,"disable_fields_map_fix":true,"disable_clickjack_protection_headers":false,"enable_pipeline2":true},"friendly_name":"My Test Tenant","guardian_mfa_page":{"enabled":true,"html":"MFA"},"idle_session_lifetime":72,"picture_url":"https://mycompany.org/logo.png","sandbox_version":"12","session_lifetime":720,"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","12"]}' + body: '{"allowed_logout_urls":[],"change_password":{"enabled":true,"html":"Change Password"},"default_audience":"","default_directory":"","default_redirection_uri":"","enabled_locales":["de","fr"],"error_page":{"html":"Error Page","show_log_link":false,"url":"https://mycompany.org/error"},"flags":{"allow_changing_enable_sso":false,"allow_legacy_delegation_grant_types":true,"allow_legacy_ro_grant_types":true,"allow_legacy_tokeninfo_endpoint":true,"change_pwd_flow_v1":false,"disable_impersonation":true,"disable_management_api_sms_obfuscation":true,"enable_adfs_waad_email_verification":true,"enable_apis_section":true,"enable_client_connections":true,"enable_custom_domain_in_emails":false,"enable_dynamic_client_registration":true,"enable_idtoken_api2":true,"enable_legacy_logs_search_v2":true,"enable_legacy_profile":true,"enable_public_signup_user_exists_error":true,"enable_sso":true,"new_universal_login_experience_enabled":true,"non_oidc_conformant_updated_at":true,"universal_login":true,"use_scope_descriptions_for_consent":false,"no_disclose_enterprise_connections":false,"revoke_refresh_token_grant":false,"dashboard_log_streams_next":true,"disable_fields_map_fix":true,"disable_clickjack_protection_headers":false,"enable_pipeline2":true},"friendly_name":"My Test Tenant","guardian_mfa_page":{"enabled":true,"html":"MFA"},"idle_session_lifetime":72,"picture_url":"https://mycompany.org/logo.png","sandbox_version":"12","session_lifetime":720,"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","12"]}' headers: Content-Type: - application/json; charset=utf-8 @@ -462,7 +462,7 @@ interactions: trailer: {} content_length: -1 uncompressed: true - body: '{"allowed_logout_urls":[],"change_password":{},"default_audience":"","default_directory":"","default_redirection_uri":"https://example.com/login","enabled_locales":["de","fr"],"error_page":{},"flags":{"allow_changing_enable_sso":false,"allow_legacy_delegation_grant_types":true,"allow_legacy_ro_grant_types":true,"allow_legacy_tokeninfo_endpoint":true,"cannot_change_enforce_client_authentication_on_passwordless_start":true,"change_pwd_flow_v1":false,"disable_impersonation":true,"disable_management_api_sms_obfuscation":true,"enable_adfs_waad_email_verification":true,"enable_apis_section":true,"enable_client_connections":true,"enable_custom_domain_in_emails":false,"enable_dynamic_client_registration":true,"enable_idtoken_api2":true,"enable_legacy_logs_search_v2":true,"enable_legacy_profile":true,"enable_public_signup_user_exists_error":true,"enable_sso":true,"enforce_client_authentication_on_passwordless_start":true,"new_universal_login_experience_enabled":true,"non_oidc_conformant_updated_at":true,"universal_login":true,"use_scope_descriptions_for_consent":false,"no_disclose_enterprise_connections":false,"revoke_refresh_token_grant":false,"dashboard_log_streams_next":true,"disable_fields_map_fix":true,"disable_clickjack_protection_headers":false,"enable_pipeline2":true},"friendly_name":"My Test Tenant","guardian_mfa_page":{},"idle_session_lifetime":72,"picture_url":"https://mycompany.org/logo.png","sandbox_version":"12","session_lifetime":168,"support_email":"support@mycompany.org","support_url":"https://mycompany.org/support","universal_login":{},"session_cookie":{"mode":"persistent"}}' + body: '{"allowed_logout_urls":[],"change_password":{},"default_audience":"","default_directory":"","default_redirection_uri":"","enabled_locales":["de","fr"],"error_page":{},"flags":{"allow_changing_enable_sso":false,"allow_legacy_delegation_grant_types":true,"allow_legacy_ro_grant_types":true,"allow_legacy_tokeninfo_endpoint":true,"cannot_change_enforce_client_authentication_on_passwordless_start":true,"change_pwd_flow_v1":false,"disable_impersonation":true,"disable_management_api_sms_obfuscation":true,"enable_adfs_waad_email_verification":true,"enable_apis_section":true,"enable_client_connections":true,"enable_custom_domain_in_emails":false,"enable_dynamic_client_registration":true,"enable_idtoken_api2":true,"enable_legacy_logs_search_v2":true,"enable_legacy_profile":true,"enable_public_signup_user_exists_error":true,"enable_sso":true,"enforce_client_authentication_on_passwordless_start":true,"new_universal_login_experience_enabled":true,"non_oidc_conformant_updated_at":true,"universal_login":true,"use_scope_descriptions_for_consent":false,"no_disclose_enterprise_connections":false,"revoke_refresh_token_grant":false,"dashboard_log_streams_next":true,"disable_fields_map_fix":true,"disable_clickjack_protection_headers":false,"enable_pipeline2":true},"friendly_name":"My Test Tenant","guardian_mfa_page":{},"idle_session_lifetime":72,"picture_url":"https://mycompany.org/logo.png","sandbox_version":"12","session_lifetime":168,"support_email":"support@mycompany.org","support_url":"https://mycompany.org/support","universal_login":{},"session_cookie":{"mode":"persistent"}}' headers: Content-Type: - application/json; charset=utf-8 @@ -498,7 +498,7 @@ interactions: trailer: {} content_length: -1 uncompressed: true - body: '{"allowed_logout_urls":[],"change_password":{},"default_audience":"","default_directory":"","default_redirection_uri":"https://example.com/login","enabled_locales":["de","fr"],"error_page":{},"flags":{"allow_changing_enable_sso":false,"allow_legacy_delegation_grant_types":true,"allow_legacy_ro_grant_types":true,"allow_legacy_tokeninfo_endpoint":true,"change_pwd_flow_v1":false,"disable_impersonation":true,"disable_management_api_sms_obfuscation":true,"enable_adfs_waad_email_verification":true,"enable_apis_section":true,"enable_client_connections":true,"enable_custom_domain_in_emails":false,"enable_dynamic_client_registration":true,"enable_idtoken_api2":true,"enable_legacy_logs_search_v2":true,"enable_legacy_profile":true,"enable_public_signup_user_exists_error":true,"enable_sso":true,"new_universal_login_experience_enabled":true,"non_oidc_conformant_updated_at":true,"universal_login":true,"use_scope_descriptions_for_consent":false,"no_disclose_enterprise_connections":false,"revoke_refresh_token_grant":false,"dashboard_log_streams_next":true,"disable_fields_map_fix":true,"disable_clickjack_protection_headers":false,"enable_pipeline2":true},"friendly_name":"My Test Tenant","guardian_mfa_page":{},"idle_session_lifetime":72,"picture_url":"https://mycompany.org/logo.png","sandbox_version":"12","session_lifetime":168,"support_email":"support@mycompany.org","support_url":"https://mycompany.org/support","universal_login":{},"session_cookie":{"mode":"persistent"},"sandbox_versions_available":["16","12"]}' + body: '{"allowed_logout_urls":[],"change_password":{},"default_audience":"","default_directory":"","default_redirection_uri":"","enabled_locales":["de","fr"],"error_page":{},"flags":{"allow_changing_enable_sso":false,"allow_legacy_delegation_grant_types":true,"allow_legacy_ro_grant_types":true,"allow_legacy_tokeninfo_endpoint":true,"change_pwd_flow_v1":false,"disable_impersonation":true,"disable_management_api_sms_obfuscation":true,"enable_adfs_waad_email_verification":true,"enable_apis_section":true,"enable_client_connections":true,"enable_custom_domain_in_emails":false,"enable_dynamic_client_registration":true,"enable_idtoken_api2":true,"enable_legacy_logs_search_v2":true,"enable_legacy_profile":true,"enable_public_signup_user_exists_error":true,"enable_sso":true,"new_universal_login_experience_enabled":true,"non_oidc_conformant_updated_at":true,"universal_login":true,"use_scope_descriptions_for_consent":false,"no_disclose_enterprise_connections":false,"revoke_refresh_token_grant":false,"dashboard_log_streams_next":true,"disable_fields_map_fix":true,"disable_clickjack_protection_headers":false,"enable_pipeline2":true},"friendly_name":"My Test Tenant","guardian_mfa_page":{},"idle_session_lifetime":72,"picture_url":"https://mycompany.org/logo.png","sandbox_version":"12","session_lifetime":168,"support_email":"support@mycompany.org","support_url":"https://mycompany.org/support","universal_login":{},"session_cookie":{"mode":"persistent"},"sandbox_versions_available":["16","12"]}' headers: Content-Type: - application/json; charset=utf-8 @@ -534,7 +534,7 @@ interactions: trailer: {} content_length: -1 uncompressed: true - body: '{"allowed_logout_urls":[],"change_password":{},"default_audience":"","default_directory":"","default_redirection_uri":"https://example.com/login","enabled_locales":["de","fr"],"error_page":{},"flags":{"allow_changing_enable_sso":false,"allow_legacy_delegation_grant_types":true,"allow_legacy_ro_grant_types":true,"allow_legacy_tokeninfo_endpoint":true,"change_pwd_flow_v1":false,"disable_impersonation":true,"disable_management_api_sms_obfuscation":true,"enable_adfs_waad_email_verification":true,"enable_apis_section":true,"enable_client_connections":true,"enable_custom_domain_in_emails":false,"enable_dynamic_client_registration":true,"enable_idtoken_api2":true,"enable_legacy_logs_search_v2":true,"enable_legacy_profile":true,"enable_public_signup_user_exists_error":true,"enable_sso":true,"new_universal_login_experience_enabled":true,"non_oidc_conformant_updated_at":true,"universal_login":true,"use_scope_descriptions_for_consent":false,"no_disclose_enterprise_connections":false,"revoke_refresh_token_grant":false,"dashboard_log_streams_next":true,"disable_fields_map_fix":true,"disable_clickjack_protection_headers":false,"enable_pipeline2":true},"friendly_name":"My Test Tenant","guardian_mfa_page":{},"idle_session_lifetime":72,"picture_url":"https://mycompany.org/logo.png","sandbox_version":"12","session_lifetime":168,"support_email":"support@mycompany.org","support_url":"https://mycompany.org/support","universal_login":{},"session_cookie":{"mode":"persistent"},"sandbox_versions_available":["16","12"]}' + body: '{"allowed_logout_urls":[],"change_password":{},"default_audience":"","default_directory":"","default_redirection_uri":"","enabled_locales":["de","fr"],"error_page":{},"flags":{"allow_changing_enable_sso":false,"allow_legacy_delegation_grant_types":true,"allow_legacy_ro_grant_types":true,"allow_legacy_tokeninfo_endpoint":true,"change_pwd_flow_v1":false,"disable_impersonation":true,"disable_management_api_sms_obfuscation":true,"enable_adfs_waad_email_verification":true,"enable_apis_section":true,"enable_client_connections":true,"enable_custom_domain_in_emails":false,"enable_dynamic_client_registration":true,"enable_idtoken_api2":true,"enable_legacy_logs_search_v2":true,"enable_legacy_profile":true,"enable_public_signup_user_exists_error":true,"enable_sso":true,"new_universal_login_experience_enabled":true,"non_oidc_conformant_updated_at":true,"universal_login":true,"use_scope_descriptions_for_consent":false,"no_disclose_enterprise_connections":false,"revoke_refresh_token_grant":false,"dashboard_log_streams_next":true,"disable_fields_map_fix":true,"disable_clickjack_protection_headers":false,"enable_pipeline2":true},"friendly_name":"My Test Tenant","guardian_mfa_page":{},"idle_session_lifetime":72,"picture_url":"https://mycompany.org/logo.png","sandbox_version":"12","session_lifetime":168,"support_email":"support@mycompany.org","support_url":"https://mycompany.org/support","universal_login":{},"session_cookie":{"mode":"persistent"},"sandbox_versions_available":["16","12"]}' headers: Content-Type: - application/json; charset=utf-8