{"openapi":"3.0.0","info":{"title":"OAuth 2.0 Test Client","description":"Built to exercise all authentication flows supported by [Auth0](https://auth0.com/docs/getting-started).\nThis Test Client is intended to be flexible. We will support any configuration of parameters defined in [RFC 6749](https://tools.ietf.org/html/rfc6749).\nIt is possible to create and test improper authentication flows with this Test Client. This is by design, since negative testing is useful too. Therefore, it is your responsibility to understand which OAuth 2.0 parameters are required for a given Authorization Grant type.\n","version":"1.3.0"},"paths":{"/":{"get":{"summary":"UI for this documentation","description":"View in a browser to see beautiful CSS","responses":{"200":{"description":"OK"}}}},"/v1/flows":{"post":{"summary":"Create a login flow","description":"Use this endpoint to create a new login flow.\n\nYou provide `login` and `callback` URLs and options (omitting or changing whichever parameters matter to the auth flow being tested).\n\nAll parameters are defined within [RFC 6749](https://tools.ietf.org/html/rfc6749) or [OpenID Connect Core](http://openid.net/specs/openid-connect-core-1_0.html).\n\n**What value should you use for \"redirect_uri\"?**\n\nThis server generates dynamic callback URLs, it is highly improbable that you can provide the correct one. Simply send the parameter `redirectUri:\"same\"` if you want the value to match this callback URL, or an arbitrary value if you are doing a negative test scenario.\n","requestBody":{"description":"Options for desired login flow","required":true,"content":{"application/json":{"schema":{"type":"object","required":["login"],"properties":{"login":{"$ref":"#/components/schemas/LoginV1"},"callback":{"$ref":"#/components/schemas/CallbackV1"}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"loginUrl":{"type":"string"},"callbackUrl":{"type":"string"}},"example":{"loginUrl":"http://localhost:3030/v1/flows/248d7b26-2b13-4527-bda4-83cf7a12f0ff/login","callbackUrl":"http://localhost:3030/v1/flows/248d7b26-2b13-4527-bda4-83cf7a12f0ff/callback"}}}}},"422":{"description":"Unprocessable Entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorV1"}}}}}}},"/v1/flows/{id}/login":{"get":{"summary":"Begin authentication flow","description":"This begins the process of authorizing according to whatever parameters were provided for this login flow.\n\nSee `POST /flows` for more on orchestrating a specific authentication flow.\n","parameters":[{"name":"id","in":"path","description":"Which login flow to initiate","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"302":{"description":"Found, redirecting to authorization server","headers":{"Location":{"description":"URL of Authorization Server","schema":{"type":"string"}}}}}}},"/v1/flows/{id}/callback":{"get":{"summary":"Post-authorization callback","description":"This URL will serve as the end of the login flow for the purpose of testing your Authorization Server.\n\nDepending on the configuration of your desired login flow, this endpoint may use server-side or client-side JS to fetch tokens or display errors.\n\nNote that it is possible to include or omit any parameter you wish. This will allow you to do negative and/or fuzz testing of your Authorization Server.\n","parameters":[{"name":"id","in":"path","description":"Which login flow to callback","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK"},"424":{"description":"Failed Dependency (i.e. failed to fetch a token)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorV1"}}}}}}},"/v1/embedded-lock":{"post":{"summary":"Initiate authentication flow with embedded lock simulator","description":"Use this endpoint to define the lock widget configuration that will be used to setup\na simulator for testing embedded lock scenarios.\n\nSince the purpose of the auth-flows-app is to test authentication flows, the documented\nconfiguration options pertain to configuring the auth flow.  However, you could add any\nof the lock configuration options found in the\n[lock documentation](https://auth0.com/docs/libraries/lock/v11/configuration).\n\n***NOTE: If you are using this app against Vivaldi, you will need to set the\nconfigurationBaseUrl lock config option to \"https://cdn.local.dev.auth0.com\"***\n","requestBody":{"description":"Options for desired login flow","required":true,"content":{"application/json":{"schema":{"type":"object","required":["embeddedLock"],"properties":{"embeddedLock":{"$ref":"#/components/schemas/EmbeddedLockV1"}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"lockSimUrl":{"type":"string"}},"example":{"lockSimUrl":"http://localhost:3030/v1/embedded-lock/ea4d8f78-897e-482b-b875-df1822daaca2"}}}}},"422":{"description":"Unprocessable Entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorV1"}}}}}}},"/v1/embedded-lock/:id":{"get":{"summary":"Setup and render embedded lock simulator","description":"Retrieves the lock configuration saved in the memory store and sends it to an html\n\ntemplate where the lock widget can be setup and shown upon the click of a link.\n","parameters":[{"name":"id","in":"path","description":"Which lock configuration to retrieve","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK"}}}},"/v1/saml":{"post":{"summary":"Create a saml flow","description":"Use this endpoint to create a new saml flow.\nRequires two parameters:\n1. The thumbprint of the saml IdP clients cert as the `thumbprints` object of `thumbprints: ['thumbprint']` including a thumbprint of the saml IdP clients cert.  A thumbprint method can be referenced at https://github.com/auth0/auth0-functionaltests/blob/master/helpers/test-data-helper.js#L53\n2.  The audience/realm parameter as the `audience` object.\n","requestBody":{"description":"Object with key thumbprints and value string array of thumbprints","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SamlV1"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"samlCallbackUrl":{"type":"string"}},"example":{"samlCallbackUrl":"http://localhost:3030/v1/saml/248d7b26-2b13-4527-bda4-83cf7a12f0ff/callback"}}}}},"422":{"description":"Unprocessable Entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorV1"}}}}}}},"/v1/saml/{id}/callback":{"post":{"summary":"Post-authorization callback","description":"This URL will serve as the end of the saml flow for the purpose of testing your Authorization Server.\nDepending on the configuration of your desired saml flow, this endpoint will call IdP or originating tenant to complete the saml authentication.\n","parameters":[{"name":"id","in":"path","description":"Which saml flow to callback","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"description":"Browser posts SamlResponse and RelayState","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SamlCallbackV1"}}}},"responses":{"200":{"description":"OK"},"424":{"description":"Failed Dependency (i.e. failed to fetch saml object from store)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorV1"}}}}}}},"/v1/wsfed":{"post":{"summary":"Create a WS-Fed flow","description":"Use this endpoint to create a new Ws-Fed flow.\nRequires three parameters:\n1. The Ws-Fed IdP clients x590 cert as the `cert` object\n2. The thumbprint of the Ws-Fed IdP clients cert as the `thumbprints` object of `thumbprints: ['thumbprint']` including a thumbprint of the Ws-Fed IdP clients cert.  A thumbprint method can be referenced at https://github.com/auth0/auth0-functionaltests/blob/master/helpers/test-data-helper.js#L53\n3.  The audience/realm parameter as the `audience` object.\n","requestBody":{"description":"Object with `thumbprints` key and value string array of thumbprints, `cert` key and value of string, `audience` key and value of string","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WsfedV1"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"wsfedCallbackUrl":{"type":"string"}},"example":{"wsfedCallbackUrl":"http://localhost:3030/v1/wsfed/248d7b26-2b13-4527-bda4-83cf7a12f0ff/callback"}}}}},"422":{"description":"Unprocessable Entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorV1"}}}}}}},"/v1/wsfed/{id}/callback":{"post":{"summary":"Post-authorization callback","description":"This URL will serve as the end of the WS-Fed flow for the purpose of testing your Authorization Server.\nDepending on the configuration of your desired WS-Fed flow, this endpoint will call IdP or originating tenant to complete the WS-Fed authentication.\n","parameters":[{"name":"id","in":"path","description":"Which WS-Fed flow to callback","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"description":"Browser posts WsfedResponse and RelayState","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WsfedCallbackV1"}}}},"responses":{"200":{"description":"OK"},"424":{"description":"Failed Dependency (i.e. failed to fetch WS-Fed object from store)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorV1"}}}}}}},"/v1/flows/redirect-continue":{"post":{"summary":"Create a redirect flow","description":"Use this endpoint to create a flow redirecting to an external app, which resumes login flow with the /continue endpoint.\n\nYou provide `domain` which is required in order to resume the login flow.\n","requestBody":{"description":"Options for desired redirect flow","required":true,"content":{"application/json":{"schema":{"type":"object","required":["domain"],"properties":{"domain":{"$ref":"#/components/schemas/RedirectV1"}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"redirectUrl":{"type":"string"}},"example":{"redirectUrl":"http://localhost:3030/v1/flows/248d7b26-2b13-4527-bda4-83cf7a12f0ff/redirect-continue"}}}}},"422":{"description":"Unprocessable Entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorV1"}}}}}}},"/v1/flows/{id}/redirect-continue":{"get":{"summary":"Begin redirect flow","description":"This begins the process of redirecting to an external app that will later resume the login flow.\n\nSee `POST /flows/redirect-continue` for more on orchestrating a specific authentication flow.\n","parameters":[{"name":"id","in":"path","description":"Which redirect flow to initiate","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"state","in":"query","description":"state param to send to /continue","required":true,"schema":{"type":"boolean"}}],"responses":{"302":{"description":"Found, redirecting to /continue endpoint","headers":{"Location":{"description":"URL of /continue endpoint","schema":{"type":"string"}}}}}}},"/v1/flows/data":{"post":{"summary":"Create a data store","description":"Use this endpoint to store data that can be retreived later, for example an SMS MFA code\nYou provide `store` as the object name and is required.\n","requestBody":{"description":"Object of data to store","required":true,"content":{"application/json":{"schema":{"type":"object","required":true,"$ref":"#components/schemas/DataV1"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"dataUrl":{"type":"string"}},"example":{"dataUrl":"http://localhost:3030/v1/flows/248d7b26-2b13-4527-bda4-83cf7a12f0ff/data"}}}}},"422":{"description":"Unprocessable Entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorV1"}}}}}},"patch":{"summary":"Update a data store","description":"Use this endpoint to update the stored data object that can be retreived later, for example an SMS MFA code\nYou provide `store` as the object name and is required.\n","requestBody":{"description":"Object of data to store","required":true,"content":{"application/json":{"schema":{"type":"object","required":true,"$ref":"#components/schemas/DataV1"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"store":{"type":"object"}},"example":{"key":"value"}}}}},"422":{"description":"Unprocessable Entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorV1"}}}}}}},"/v1/flows/{id}/data":{"get":{"summary":"Retreive stored data","description":"This fetches the store object saved before\nSee `POST /flows/data` for more on saving a store object.\n","parameters":[{"name":"id","in":"path","description":"Which data to retreive","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"store":{"type":"object"}},"example":{"key":"value"}}}}}}}},"/v1/echo":{"post":{"summary":"Echo's back the form POST parameters that were submitted as JSON.","description":"Use this endpoint to create a new echo page that will receive a POST requests on the page api with diffrent requests. And will have a response based on the setup schema","requestBody":{"description":"Anything reasonable POST","required":false,"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"echoUrl":{"type":"string"},"callbackUrl":{"type":"string"}},"example":{"method":"POST","query":{"id":"123","someVar":"someValue"},"headers":{"content-type":"application/json","user-agent":"PostmanRuntime/7.28.4","accept":"*/*","postman-token":"f1350620-f47f-480c-8fe3-7d9526447958","host":"localhost:3000","accept-encoding":"gzip, deflate, br","connection":"keep-alive","content-length":"24"},"body":{"type":"string"}}}}}}}},"get":{"summary":"Echo's back the GET query parameters that were submitted as JSON.","description":"GET Method api to retrive data stored based on the query parameter or all if there is no query paramter","parameters":[{"name":"id","in":"path","description":"Filter or query based on a specific id parameter","required":true,"schema":{"type":"number","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"store":{"type":"object"}},"example":{"method":"GET","query":{"id":"123","someVar":"someValue"},"headers":{"content-type":"application/json","user-agent":"PostmanRuntime/7.28.4","accept":"*/*","postman-token":"08c3b72f-3125-465f-8276-f066c9fa4ab1","host":"localhost:3000","accept-encoding":"gzip, deflate, br","connection":"keep-alive","content-length":"24"},"body":{"type":"string"}}}}}}}},"delete":{"summary":"Delete stored data","description":"Delete stored data based on the paramters query like id, user data","parameters":[{"name":"id","in":"path","description":"Filter or query based on a specific id parameter","required":true,"schema":{"type":"number","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"store":{"type":"object"}},"example":{"method":"DELETE","query":{"id":"123","someVar":"someValue"},"headers":{"content-type":"application/json","user-agent":"PostmanRuntime/7.28.4","accept":"*/*","postman-token":"0d154486-f883-4e5c-8a4e-76d5ce79f4c7","host":"localhost:3000","accept-encoding":"gzip, deflate, br","connection":"keep-alive","content-length":"24"},"body":{"type":"string"}}}}}}}}},"/v1/log-streams/{id}":{"post":{"summary":"Acts as a log stream destination for HTTP webhook log streams","description":"Acts as an HTTP webhook destination for log streams. Logs posted in the body\nare stored with the corresponding `id` passed in the URL parameters.\n\nMultiple requests are made to this endpoint with the same `id`, additional\nlogs are appended rather than replacing previously posted logs\n\nCurrently only accepts JSON array and JSON object log stream formats\n","parameters":[{"name":"id","in":"path","description":"ID for the log stream webhook","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"type":"array","items":{"$ref":"#/components/schemas/LogV1"}},{"type":"object","required":["logs"],"properties":{"logs":{"type":"array","items":{"$ref":"#/components/schemas/LogV1"}}}}],"example":[{"log_id":"90020210923231632095197554338877438287498707761385963538","data":{"date":"2021-09-23T23:16:27.042Z","type":"sapi"}}]}}}},"responses":{"200":{"description":"OK"},"400":{"description":"Bad request"}}},"get":{"summary":"Get logs for log stream","description":"Returns all logs sent to the log stream webhook with the given `id`\n","parameters":[{"name":"id","in":"path","description":"ID for the log stream webhook","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LogV1"},"example":[{"log_id":"90020210923231632095197554338877438287498707761385963538","data":{"date":"2021-09-23T23:16:27.042Z","type":"sapi"}}]}}}}}}},"/v1/metric-streams/{id}":{"post":{"summary":"Acts as a metric stream destination for Datadog or OpenTelemetry endpoints","description":"Acts as an HTTP destination for metrics (like Datadog or OpenTelemetry endpoints). Details\nfrom requests sent to this endpoint (path, headers and body) are stored with the\ncorresponding `id` passed in the URL parameters.\n\nMultiple requests made to this endpoint with the same `id` will append requests rather than\nreplacing previously posted ones.\n\nTo obtain the details about the requests made to this endpoint, use the\n`GET /v1/metric-streams/{id}` endpoint.\n","parameters":[{"name":"id","in":"path","description":"ID for the metric stream","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"type":"array"},{"type":"object"}],"example":{"series":[{"metric":"system.load.1","type":0,"points":[{"timestamp":1636629071,"value":0.7}],"resources":[{"name":"dummyhost","type":"host"}]}]}}}}},"responses":{"202":{"description":"Accepted"},"400":{"description":"Bad request"}}},"get":{"summary":"Get requests sent to metric stream","description":"Returns all requests sent to the metric stream with the given `id`\n","parameters":[{"name":"id","in":"path","description":"ID for the metric stream","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["path","headers","body"],"properties":{"path":{"type":"string"},"headers":{"type":"object"},"body":{"oneOf":[{"type":"object"},{"type":"array"}]}},"example":[{"path":"/api/v1/series","headers":{"content-type":"application/json","user-agent":"Datadog Agent/7.32.0 (linux)","accept-encoding":"gzip","connection":"keep-alive","content-length":"245"},"body":{"series":[{"metric":"system.load.1","type":0,"points":[{"timestamp":1636629071,"value":0.7}],"resources":[{"name":"dummyhost","type":"host"}]}]}}]}}}}}}},"/v1/gwds/oauth2/token":{"post":{"summary":"Mock Google OAuth2 token refresh","description":"Returns a mock access token for the Google Workspace Directory API.\nOnly supports the `refresh_token` grant type.\n","requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"type":"object","required":["grant_type","refresh_token","client_id","client_secret"],"properties":{"grant_type":{"type":"string","example":"refresh_token"},"refresh_token":{"type":"string"},"client_id":{"type":"string"},"client_secret":{"type":"string"}}}}}},"responses":{"200":{"description":"Token response","content":{"application/json":{"schema":{"type":"object","properties":{"access_token":{"type":"string"},"expires_in":{"type":"integer"},"scope":{"type":"string"},"token_type":{"type":"string"}}}}}},"400":{"description":"Invalid grant type or missing parameters"}}}},"/v1/gwds/oauth2/tokeninfo":{"post":{"summary":"Mock Google OAuth2 token info","description":"Returns mock token metadata. Requires a Bearer token in the Authorization header.","parameters":[{"in":"header","name":"Authorization","required":true,"schema":{"type":"string"},"example":"Bearer ya29.xxx"}],"responses":{"200":{"description":"Token info response","content":{"application/json":{"schema":{"type":"object","properties":{"aud":{"type":"string"},"scope":{"type":"string"},"exp":{"type":"string"},"expires_in":{"type":"string"},"user_id":{"type":"string"},"email":{"type":"string"},"email_verified":{"type":"string"}}}}}},"400":{"description":"Invalid authorization header"}}}},"/v1/gwds/admin/directory/v1/users":{"get":{"summary":"List mock Google Workspace users","description":"Returns a paginated list of mock users for the given domain.\nSupports Google's `fields` parameter for partial responses.\nOnly the hardcoded domain `system-test.auth0-mock.internal` is accepted (10 active users, 2 deleted users).\n","parameters":[{"in":"query","name":"domain","required":true,"schema":{"type":"string"},"description":"Must be `system-test.auth0-mock.internal`. Other domains are rejected."},{"in":"query","name":"showDeleted","schema":{"type":"string","enum":["true","false"]},"description":"If \"true\", returns deleted users instead of active ones"},{"in":"query","name":"maxResults","schema":{"type":"integer","default":500},"description":"Maximum number of users per page"},{"in":"query","name":"pageToken","schema":{"type":"string"},"description":"Token for pagination"},{"in":"query","name":"fields","schema":{"type":"string"},"description":"Partial response fields (e.g., users(id,primaryEmail),nextPageToken)"}],"responses":{"200":{"description":"List of users","content":{"application/json":{"schema":{"type":"object","properties":{"users":{"type":"array","items":{"type":"object"}},"nextPageToken":{"type":"string"}}}}}},"400":{"description":"Missing domain or invalid page token"}}}},"/v1/gwds/admin/directory/v1/groups":{"get":{"summary":"List mock Google Workspace groups","description":"Returns a paginated list of mock groups for the given domain.\nOnly the hardcoded domain `system-test.auth0-mock.internal` is accepted (2 groups with 2 members each).\n","parameters":[{"in":"query","name":"domain","required":true,"schema":{"type":"string"},"description":"Must be `system-test.auth0-mock.internal`. Other domains are rejected."},{"in":"query","name":"maxResults","schema":{"type":"integer","default":200},"description":"Maximum number of groups per page"},{"in":"query","name":"pageToken","schema":{"type":"string"},"description":"Token for pagination"},{"in":"query","name":"fields","schema":{"type":"string"},"description":"Partial response fields (e.g., groups(id,email),nextPageToken)"}],"responses":{"200":{"description":"List of groups","content":{"application/json":{"schema":{"type":"object","properties":{"groups":{"type":"array","items":{"type":"object"}},"nextPageToken":{"type":"string"}}}}}},"400":{"description":"Missing domain or invalid page token"}}}},"/v1/gwds/admin/directory/v1/groups/{groupKey}/members":{"get":{"summary":"List mock Google Workspace group members","description":"Returns a paginated list of mock members for the given group.\nThe groupKey must be a 15-digit numeric group ID as returned by the groups endpoint.\n","parameters":[{"in":"path","name":"groupKey","required":true,"schema":{"type":"string","pattern":"^\\d{15}$","example":"000000000000001"},"description":"Zero-padded 15-digit group ID as returned by the groups endpoint (e.g., 000000000000001)"},{"in":"query","name":"maxResults","schema":{"type":"integer","default":200},"description":"Maximum number of members per page"},{"in":"query","name":"pageToken","schema":{"type":"string"},"description":"Token for pagination"},{"in":"query","name":"fields","schema":{"type":"string"},"description":"Partial response fields (e.g., members(id,email),nextPageToken)"}],"responses":{"200":{"description":"List of members","content":{"application/json":{"schema":{"type":"object","properties":{"members":{"type":"array","items":{"type":"object"}},"nextPageToken":{"type":"string"}}}}}},"400":{"description":"Invalid group key format or page token"},"404":{"description":"Group not found"}}}}},"components":{"schemas":{"LoginV1":{"required":["authorizationUrl"],"type":"object","properties":{"authorizationUrl":{"type":"string"},"responseType":{"type":"string"},"clientId":{"type":"string"},"scope":{"type":"string"},"redirectUri":{"type":"string"},"connection":{"type":"string"},"state":{"type":"string"},"nonce":{"type":"string"},"audience":{"type":"string"},"codeChallenge":{"type":"string"},"codeChallengeMethod":{"type":"string"}}},"SamlV1":{"type":"object","required":["thumbprints","audience"],"properties":{"thumbrints":{"type":"array","items":{"type":"string"}},"audience":{"type":"string"}}},"WsfedV1":{"type":"object","required":["thumbprints","cert","audience"],"properties":{"thumbrints":{"type":"array","items":{"type":"string"}},"cert":{"type":"string"},"audience":{"type":"string"}}},"CallbackV1":{"type":"object","properties":{"tokenUrl":{"type":"string"},"grantType":{"type":"string"},"clientId":{"type":"string"},"clientSecret":{"type":"string"},"audience":{"type":"string"},"scope":{"type":"string"},"code":{"type":"string"},"redirectUri":{"type":"string"},"codeVerifier":{"type":"string"}}},"SamlCallbackV1":{"type":"object","properties":{"SamlResponse":{"type":"string"},"RelayState":{"type":"string"}}},"WsfedCallbackV1":{"type":"object","properties":{"SamlResponse":{"type":"string"},"RelayState":{"type":"string"}}},"EmbeddedLockV1":{"type":"object","required":["clientId","domain","lockVersion"],"properties":{"clientId":{"type":"string"},"domain":{"type":"string"},"lockVersion":{"type":"string"},"lockConfig":{"type":"object","properties":{"auth":{"type":"object","properties":{"audience":{"type":"string"},"autoParseHash":{"type":"boolean"},"connectionScopes":{"type":"object"},"params":{"type":"object","properties":{"scope":{"type":"string"},"state":{"type":"string"},"nonce":{"type":"string"},"device":{"type":"string"}}},"redirect":{"type":"boolean","default":false},"redirectUrl":{"type":"string"},"responseMode":{"type":"string"},"responseType":{"type":"string"}}},"configurationBaseUrl":{"type":"string"}}}}},"RedirectV1":{"type":"object","required":["domain"],"properties":{"domain":{"type":"string","items":{"type":"string"}}}},"DataV1":{"type":"object","required":["store"],"properties":{"key":{"type":"string"}}},"ErrorV1":{"required":["error"],"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"}}},"LogV1":{"type":"object","properties":{"log_id":{"type":"string"},"data":{"type":"object"}},"required":["log_id","data"]}}}}