diff --git a/docs/resource-specific-documentation.md b/docs/resource-specific-documentation.md index b30329755..9bdf6848f 100644 --- a/docs/resource-specific-documentation.md +++ b/docs/resource-specific-documentation.md @@ -970,3 +970,162 @@ File: `./risk-assessment/settings.json` ``` For more details, see the [Management API documentation](https://auth0.com/docs/api/management/v2#!/Risk_Assessments/get_settings). + +## Action Modules + +Action modules are reusable code modules that can be shared across multiple Auth0 actions. They allow you to create common utility functions, helpers, and libraries that can be imported and used by any action in your tenant. + +### YAML Example + +```yaml +# Contents of ./tenant.yaml +actionModules: + - name: auth-helper + code: ./action-modules/auth-helper/code.js + dependencies: + - name: axios + version: 1.6.0 + - name: jsonwebtoken + version: 9.0.0 + secrets: + - name: JWT_SECRET + value: ##JWT_SECRET## + + - name: notification-helper + code: ./action-modules/notification-helper/code.js + dependencies: + - name: uuid + version: 9.0.0 + secrets: [] +``` + +Folder structure when in YAML mode: + +``` +./action-modules/ + /auth-helper/ + /code.js + /notification-helper/ + /code.js +./tenant.yaml +``` + +### Directory Example + +Folder structure when in directory mode: + +``` +./action-modules/ + ./auth-helper.json + ./auth-helper/ + ./code.js + ./notification-helper.json + ./notification-helper/ + ./code.js +``` + +Contents of `auth-helper.json`: + +```json +{ + "name": "auth-helper", + "code": "./action-modules/auth-helper/code.js", + "dependencies": [ + { + "name": "axios", + "version": "1.6.0" + }, + { + "name": "jsonwebtoken", + "version": "9.0.0" + } + ], + "secrets": [ + { + "name": "JWT_SECRET", + "value": "##JWT_SECRET##" + } + ] +} +``` + +Contents of `auth-helper/code.js`: + +```javascript +const jwt = require('jsonwebtoken'); +const axios = require('axios'); + +/** + * Auth Helper Module + * Provides JWT validation and token refresh utilities + */ +module.exports = { + async validateToken(token) { + const secret = actions.secrets.JWT_SECRET; + try { + return jwt.verify(token, secret); + } catch (error) { + throw new Error('Invalid token: ' + error.message); + } + }, + + async fetchUserData(userId) { + const response = await axios.get(`https://api.example.com/users/${userId}`); + return response.data; + }, +}; +``` + +### Using Action Modules in Actions + +Actions can reference action modules in their configuration: + +**YAML Example:** + +```yaml +actions: + - name: send-phone-message + code: ./actions/send-phone-message/code.js + supported_triggers: + - id: send-phone-message + version: v1 + modules: + - module_name: notification-helper + module_version_number: 1 +``` + +**Directory Example:** + +Contents of `actions/send-phone-message.json`: + +```json +{ + "name": "send-phone-message", + "code": "./actions/send-phone-message/code.js", + "supported_triggers": [ + { + "id": "send-phone-message", + "version": "v1" + } + ], + "modules": [ + { + "module_name": "notification-helper", + "module_version_number": 1 + } + ] +} +``` + +The action can then import and use the module in its code: + +```javascript +const notificationHelper = require('actions:notification-helper'); + +exports.onExecuteSendPhoneMessage = async (event) => { + const message = notificationHelper.formatMessage( + event.user.phone_number, + 'Your verification code' + ); +}; +``` diff --git a/examples/directory/README.md b/examples/directory/README.md index ac239a5fc..5889786a6 100644 --- a/examples/directory/README.md +++ b/examples/directory/README.md @@ -61,6 +61,13 @@ repository => code.js current_version.js action1.json + action-modules + auth-helper + code.js + auth-helper.json + notification-helper + code.js + notification-helper.json triggers triggers.json ``` diff --git a/examples/directory/action-modules/auth-helper.json b/examples/directory/action-modules/auth-helper.json new file mode 100644 index 000000000..7cbf16d0f --- /dev/null +++ b/examples/directory/action-modules/auth-helper.json @@ -0,0 +1,20 @@ +{ + "name": "auth-helper", + "code": "./action-modules/auth-helper/code.js", + "dependencies": [ + { + "name": "axios", + "version": "1.6.0" + }, + { + "name": "jsonwebtoken", + "version": "9.0.0" + } + ], + "secrets": [ + { + "name": "JWT_SECRET", + "value": "##JWT_SECRET##" + } + ] +} diff --git a/examples/directory/action-modules/auth-helper/code.js b/examples/directory/action-modules/auth-helper/code.js new file mode 100644 index 000000000..c4de62bf5 --- /dev/null +++ b/examples/directory/action-modules/auth-helper/code.js @@ -0,0 +1,32 @@ +const jwt = require('jsonwebtoken'); +const axios = require('axios'); + +/** + * Auth Helper Module + * Provides JWT validation and token refresh utilities + */ +module.exports = { + /** + * Validates a JWT token + * @param {string} token - JWT token to validate + * @returns {Promise} Decoded token payload + */ + async validateToken(token) { + const secret = actions.secrets.JWT_SECRET; + try { + return jwt.verify(token, secret); + } catch (error) { + throw new Error('Invalid token: ' + error.message); + } + }, + + /** + * Fetches user data from an external API + * @param {string} userId - User ID to fetch + * @returns {Promise} User data + */ + async fetchUserData(userId) { + const response = await axios.get(`https://api.example.com/users/${userId}`); + return response.data; + } +}; diff --git a/examples/directory/action-modules/notification-helper.json b/examples/directory/action-modules/notification-helper.json new file mode 100644 index 000000000..07a03a9ee --- /dev/null +++ b/examples/directory/action-modules/notification-helper.json @@ -0,0 +1,11 @@ +{ + "name": "notification-helper", + "code": "./action-modules/notification-helper/code.js", + "dependencies": [ + { + "name": "uuid", + "version": "9.0.0" + } + ], + "secrets": [] +} diff --git a/examples/directory/action-modules/notification-helper/code.js b/examples/directory/action-modules/notification-helper/code.js new file mode 100644 index 000000000..11dded602 --- /dev/null +++ b/examples/directory/action-modules/notification-helper/code.js @@ -0,0 +1,23 @@ +const { v4: uuidv4 } = require('uuid'); + +/** + * Notification Helper Module + * Provides utility functions for notification handling + */ +module.exports = { + /** + * Formats a phone message with tracking metadata + * @param {string} recipient - Phone number + * @param {string} message - Message content + * @returns {object} Formatted message object + */ + formatMessage: function(recipient, message) { + return { + id: uuidv4(), + recipient, + message, + timestamp: new Date().toISOString(), + status: 'pending' + }; + } +}; diff --git a/examples/directory/actions/action-example.json b/examples/directory/actions/action-example.json index 1c1c155f8..68c9304c9 100644 --- a/examples/directory/actions/action-example.json +++ b/examples/directory/actions/action-example.json @@ -21,4 +21,4 @@ } ], "deployed": true -} \ No newline at end of file +} diff --git a/examples/directory/actions/send-phone-message.json b/examples/directory/actions/send-phone-message.json new file mode 100644 index 000000000..eb7e0e22a --- /dev/null +++ b/examples/directory/actions/send-phone-message.json @@ -0,0 +1,29 @@ +{ + "name": "send-phone-message", + "code": "./actions/send-phone-message/code.js", + "status": "built", + "dependencies": [ + { + "name": "axios", + "version": "1.6.0" + }, + { + "name": "uuid", + "version": "9.0.0" + } + ], + "secrets": [], + "supported_triggers": [ + { + "id": "send-phone-message", + "version": "v1" + } + ], + "deployed": true, + "modules": [ + { + "module_name": "notification-helper", + "module_version_number": 1 + } + ] +} diff --git a/examples/directory/actions/send-phone-message/code.js b/examples/directory/actions/send-phone-message/code.js new file mode 100644 index 000000000..16d7e1e28 --- /dev/null +++ b/examples/directory/actions/send-phone-message/code.js @@ -0,0 +1,36 @@ +const axios = require('axios'); +const { v4: uuidv4 } = require('uuid'); +const { formatMessage } = require('actions:notification-helper'); + +/** + * @type {SendPhoneMessageAction} + * + * This action demonstrates using an action module to share code + * across multiple actions. The notification-helper module provides + * utilities for message formatting and tracking. + */ +exports.onExecuteSendPhoneMessage = async (event, api) => { + const messageId = uuidv4(); + console.log(`Processing phone message. MessageId: ${messageId}`); + + try { + // Format the message using the module + const formattedMessage = formatMessage( + event.message_options.recipient, + event.message_options.text + ); + console.log('Formatted message:', formattedMessage); + + // Example: Make an API call to external service + const response = await axios.post('https://api.example.com/sms/send', { + to: formattedMessage.recipient, + body: formattedMessage.message, + trackingId: formattedMessage.id + }); + + console.log('Message sent successfully:', response.data); + } catch (error) { + console.error('Error sending phone message:', error.message); + // Allow the message to continue even if external API fails + } +}; diff --git a/examples/directory/config.json.example b/examples/directory/config.json.example index e9f76b5c0..dff0bd6ec 100644 --- a/examples/directory/config.json.example +++ b/examples/directory/config.json.example @@ -10,7 +10,8 @@ "client_secret": "", "domain": "", "type": "OAUTH_APP" - } + }, + "JWT_SECRET": "" }, "AUTH0_ALLOW_DELETE": false, "INCLUDED_PROPS": { diff --git a/examples/yaml/README.md b/examples/yaml/README.md index babf346b0..76ad8c657 100644 --- a/examples/yaml/README.md +++ b/examples/yaml/README.md @@ -3,7 +3,7 @@ This README will document how to use the YAML Option of the Auth0-deploy-cli tool. Please refer to the main project [README.md](../../README.md) for more information on the Auth0 Deploy CLI. # Overview -The YAML option supports exporting and importing the Auth0 tenant configuration via a YAML file. +The YAML option supports exporting and importing the Auth0 tenant configuration via a YAML file. This includes support for all resource types such as clients, connections, rules, actions, action modules, and more. For more information on YAML please refer to [http://yaml.org/](http://yaml.org/) diff --git a/examples/yaml/action-modules/auth-helper/code.js b/examples/yaml/action-modules/auth-helper/code.js new file mode 100644 index 000000000..c4de62bf5 --- /dev/null +++ b/examples/yaml/action-modules/auth-helper/code.js @@ -0,0 +1,32 @@ +const jwt = require('jsonwebtoken'); +const axios = require('axios'); + +/** + * Auth Helper Module + * Provides JWT validation and token refresh utilities + */ +module.exports = { + /** + * Validates a JWT token + * @param {string} token - JWT token to validate + * @returns {Promise} Decoded token payload + */ + async validateToken(token) { + const secret = actions.secrets.JWT_SECRET; + try { + return jwt.verify(token, secret); + } catch (error) { + throw new Error('Invalid token: ' + error.message); + } + }, + + /** + * Fetches user data from an external API + * @param {string} userId - User ID to fetch + * @returns {Promise} User data + */ + async fetchUserData(userId) { + const response = await axios.get(`https://api.example.com/users/${userId}`); + return response.data; + } +}; diff --git a/examples/yaml/action-modules/notification-helper/code.js b/examples/yaml/action-modules/notification-helper/code.js new file mode 100644 index 000000000..11dded602 --- /dev/null +++ b/examples/yaml/action-modules/notification-helper/code.js @@ -0,0 +1,23 @@ +const { v4: uuidv4 } = require('uuid'); + +/** + * Notification Helper Module + * Provides utility functions for notification handling + */ +module.exports = { + /** + * Formats a phone message with tracking metadata + * @param {string} recipient - Phone number + * @param {string} message - Message content + * @returns {object} Formatted message object + */ + formatMessage: function(recipient, message) { + return { + id: uuidv4(), + recipient, + message, + timestamp: new Date().toISOString(), + status: 'pending' + }; + } +}; diff --git a/examples/yaml/actions/send-phone-message/code.js b/examples/yaml/actions/send-phone-message/code.js new file mode 100644 index 000000000..16d7e1e28 --- /dev/null +++ b/examples/yaml/actions/send-phone-message/code.js @@ -0,0 +1,36 @@ +const axios = require('axios'); +const { v4: uuidv4 } = require('uuid'); +const { formatMessage } = require('actions:notification-helper'); + +/** + * @type {SendPhoneMessageAction} + * + * This action demonstrates using an action module to share code + * across multiple actions. The notification-helper module provides + * utilities for message formatting and tracking. + */ +exports.onExecuteSendPhoneMessage = async (event, api) => { + const messageId = uuidv4(); + console.log(`Processing phone message. MessageId: ${messageId}`); + + try { + // Format the message using the module + const formattedMessage = formatMessage( + event.message_options.recipient, + event.message_options.text + ); + console.log('Formatted message:', formattedMessage); + + // Example: Make an API call to external service + const response = await axios.post('https://api.example.com/sms/send', { + to: formattedMessage.recipient, + body: formattedMessage.message, + trackingId: formattedMessage.id + }); + + console.log('Message sent successfully:', response.data); + } catch (error) { + console.error('Error sending phone message:', error.message); + // Allow the message to continue even if external API fails + } +}; diff --git a/examples/yaml/config.json.example b/examples/yaml/config.json.example index 94e381781..1d8a84222 100644 --- a/examples/yaml/config.json.example +++ b/examples/yaml/config.json.example @@ -10,7 +10,8 @@ "client_secret": "", "domain": "", "type": "OAUTH_APP" - } + }, + "JWT_SECRET": "" }, "AUTH0_ALLOW_DELETE": false, "INCLUDED_PROPS": { diff --git a/examples/yaml/tenant.yaml b/examples/yaml/tenant.yaml index f9119456d..11af2ef89 100644 --- a/examples/yaml/tenant.yaml +++ b/examples/yaml/tenant.yaml @@ -295,6 +295,42 @@ actions: - id: post-login version: v1 + - name: send-phone-message + code: ./actions/send-phone-message/code.js + dependencies: + - name: axios + version: 1.6.0 + - name: uuid + version: 9.0.0 + deployed: true + secrets: [] + status: built + supported_triggers: + - id: send-phone-message + version: v1 + modules: + - module_name: notification-helper + module_version_number: 1 + +actionModules: + - name: auth-helper + code: ./action-modules/auth-helper/code.js + dependencies: + - name: axios + version: 1.6.0 + - name: jsonwebtoken + version: 9.0.0 + secrets: + - name: JWT_SECRET + value: ##JWT_SECRET## + + - name: notification-helper + code: ./action-modules/notification-helper/code.js + dependencies: + - name: uuid + version: 9.0.0 + secrets: [] + triggers: credentials-exchange: [] post-change-password: [] diff --git a/package-lock.json b/package-lock.json index 72851c0d1..8e714a048 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,7 +19,7 @@ "nconf": "^0.13.0", "promise-pool-executor": "^1.1.1", "sanitize-filename": "^1.6.3", - "undici": "^7.21.0", + "undici": "^7.22.0", "winston": "^3.19.0", "yargs": "^15.4.1" }, @@ -1493,6 +1493,7 @@ "version": "5.3.1", "resolved": "https://registry.npmjs.org/auth0/-/auth0-5.3.1.tgz", "integrity": "sha512-Ok4iMT8f+2+wbVeHvxQHGL51shikaVtkce/QlYQey1iVhBaX/EtWA64HgVPmw17sZBpPvfU8YsO//7mSp4PGzA==", + "license": "MIT", "dependencies": { "auth0-legacy": "npm:auth0@^4.27.0", "jose": "^4.13.2", @@ -6811,9 +6812,9 @@ } }, "node_modules/undici": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.21.0.tgz", - "integrity": "sha512-Hn2tCQpoDt1wv23a68Ctc8Cr/BHpUSfaPYrkajTXOS9IKpxVRx/X5m1K2YkbK2ipgZgxXSgsUinl3x+2YdSSfg==", + "version": "7.22.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.22.0.tgz", + "integrity": "sha512-RqslV2Us5BrllB+JeiZnK4peryVTndy9Dnqq62S3yYRRTj0tFQCwEniUy2167skdGOy3vqRzEvl1Dm4sV2ReDg==", "license": "MIT", "engines": { "node": ">=20.18.1" diff --git a/package.json b/package.json index 0877d3ffd..e17f456f3 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "nconf": "^0.13.0", "promise-pool-executor": "^1.1.1", "sanitize-filename": "^1.6.3", - "undici": "^7.21.0", + "undici": "^7.22.0", "winston": "^3.19.0", "yargs": "^15.4.1" }, diff --git a/src/context/directory/handlers/actionModules.ts b/src/context/directory/handlers/actionModules.ts new file mode 100644 index 000000000..09c06c9ad --- /dev/null +++ b/src/context/directory/handlers/actionModules.ts @@ -0,0 +1,108 @@ +import path from 'path'; +import fs from 'fs-extra'; +import { constants } from '../../../tools'; + +import { getFiles, existsMustBeDir, loadJSON, sanitize, dumpJSON } from '../../../utils'; +import log from '../../../logger'; +import { DirectoryHandler } from '.'; +import DirectoryContext from '..'; +import { Asset, ParsedAsset } from '../../../types'; +import { ActionModule } from '../../../tools/auth0/handlers/actionModules'; + +type ParsedActionModules = ParsedAsset<'actionModules', Asset[]>; + +function parse(context: DirectoryContext): ParsedActionModules { + const modulesFolder = path.join(context.filePath, constants.ACTION_MODULES_DIRECTORY); + + if (!existsMustBeDir(modulesFolder)) return { actionModules: null }; + + const files = getFiles(modulesFolder, ['.json']); + const actionModules = files.map((file) => { + const module = { + ...loadJSON(file, { + mappings: context.mappings, + disableKeywordReplacement: context.disableKeywordReplacement, + }), + }; + const moduleFolder = path.join(constants.ACTION_MODULES_DIRECTORY, `${module.name}`); + + if (module.code) { + // The `module.code` can be a file path. It needs to be loaded. + // It can be a relative path, so we need to handle both cases. + const unixPath = module.code.replace(/[\\/]+/g, '/').replace(/^([a-zA-Z]+:|\.\/)/, ''); + if (fs.existsSync(unixPath)) { + module.code = context.loadFile(unixPath, moduleFolder); + } else { + module.code = context.loadFile(path.join(context.filePath, module.code), moduleFolder); + } + } + + return module; + }); + + return { actionModules }; +} + +function mapSecrets(secrets) { + if (typeof secrets === 'string') { + return secrets; + } + if (secrets && secrets.length > 0) { + return secrets.map((secret) => ({ name: secret.name, value: secret.value })); + } + return []; +} + +function mapModuleCode(filePath, module) { + const { code } = module; + + if (!code) { + return ''; + } + + const moduleName = sanitize(module.name); + const moduleFolder = path.join(filePath, constants.ACTION_MODULES_DIRECTORY, `${moduleName}`); + fs.ensureDirSync(moduleFolder); + + const codeFile = path.join(moduleFolder, 'code.js'); + log.info(`Writing ${codeFile}`); + fs.writeFileSync(codeFile, code); + + return `./${constants.ACTION_MODULES_DIRECTORY}/${moduleName}/code.js`; +} + +function mapToActionModule(filePath, module, includeIdentifiers: boolean): Partial { + return { + ...(includeIdentifiers && module.id ? { id: module.id } : {}), + name: module.name, + code: mapModuleCode(filePath, module), + dependencies: module.dependencies, + secrets: mapSecrets(module.secrets), + actions_using_module_total: module.actions_using_module_total, + all_changes_published: module.all_changes_published, + latest_version_number: module.latest_version_number, + }; +} + +async function dump(context: DirectoryContext): Promise { + const { actionModules } = context.assets; + if (!actionModules) return; + + // Create action modules folder + const modulesFolder = path.join(context.filePath, constants.ACTION_MODULES_DIRECTORY); + fs.ensureDirSync(modulesFolder); + const includeIdentifiers = Boolean(context.config.AUTH0_EXPORT_IDENTIFIERS); + + actionModules.forEach((module) => { + const name = sanitize(module.name); + const moduleFile = path.join(modulesFolder, `${name}.json`); + dumpJSON(moduleFile, mapToActionModule(context.filePath, module, includeIdentifiers)); + }); +} + +const actionModulesHandler: DirectoryHandler = { + parse, + dump, +}; + +export default actionModulesHandler; diff --git a/src/context/directory/handlers/actions.ts b/src/context/directory/handlers/actions.ts index 0350e2420..16d79f83c 100644 --- a/src/context/directory/handlers/actions.ts +++ b/src/context/directory/handlers/actions.ts @@ -85,6 +85,10 @@ function mapToAction(filePath, action, includeIdentifiers: boolean): Partial ({ + module_name: module.module_name, + module_version_number: module.module_version_number, + })), }; } diff --git a/src/context/directory/handlers/index.ts b/src/context/directory/handlers/index.ts index aca34ae89..ab9ce2966 100644 --- a/src/context/directory/handlers/index.ts +++ b/src/context/directory/handlers/index.ts @@ -15,6 +15,7 @@ import guardianPhoneFactorSelectedProvider from './guardianPhoneFactorSelectedPr import guardianPolicies from './guardianPolicies'; import roles from './roles'; import actions from './actions'; +import actionModules from './actionModules'; import organizations from './organizations'; import triggers from './triggers'; import attackProtection from './attackProtection'; @@ -69,6 +70,7 @@ const directoryHandlers: { guardianPolicies, roles, actions, + actionModules, organizations, triggers, attackProtection, diff --git a/src/context/yaml/handlers/actionModules.ts b/src/context/yaml/handlers/actionModules.ts new file mode 100644 index 000000000..390ecd7a7 --- /dev/null +++ b/src/context/yaml/handlers/actionModules.ts @@ -0,0 +1,82 @@ +import path from 'path'; +import fs from 'fs-extra'; +import { constants } from '../../../tools'; +import { sanitize } from '../../../utils'; +import log from '../../../logger'; +import { YAMLHandler } from '.'; +import YAMLContext from '..'; +import { ParsedAsset } from '../../../types'; +import { ActionModule } from '../../../tools/auth0/handlers/actionModules'; + +type ParsedActionModules = ParsedAsset<'actionModules', Partial[]>; + +async function parse(context: YAMLContext): Promise { + const { actionModules } = context.assets; + + if (!actionModules) return { actionModules: null }; + + return { + actionModules: [ + ...actionModules.map((module) => ({ + ...module, + code: context.loadFile(module.code || ''), + })), + ], + }; +} + +function mapSecrets(secrets) { + if (typeof secrets === 'string') { + return secrets; + } + if (secrets && secrets.length > 0) { + return secrets.map((secret) => ({ name: secret.name, value: secret.value })); + } + return []; +} + +function mapModuleCode(basePath: string, module: ActionModule): string { + const { code } = module; + + if (!code) { + return ''; + } + + const moduleName = sanitize(module.name); + const modulesFolder = path.join(basePath, constants.ACTION_MODULES_DIRECTORY, moduleName); + fs.ensureDirSync(modulesFolder); + + const codeFile = path.join(modulesFolder, 'code.js'); + log.info(`Writing ${codeFile}`); + fs.writeFileSync(codeFile, code); + + return `./${constants.ACTION_MODULES_DIRECTORY}/${moduleName}/code.js`; +} + +async function dump(context: YAMLContext): Promise { + const { actionModules } = context.assets; + + if (!actionModules || actionModules.length === 0) return { actionModules: null }; + + const includeIdentifiers = Boolean(context.config.AUTH0_EXPORT_IDENTIFIERS); + + return { + actionModules: actionModules?.map((module) => ({ + ...(includeIdentifiers && module.id ? { id: module.id } : {}), + name: module.name, + code: mapModuleCode(context.basePath, module), + dependencies: module.dependencies || [], + secrets: mapSecrets(module.secrets), + actions_using_module_total: module.actions_using_module_total, + all_changes_published: module.all_changes_published, + latest_version_number: module.latest_version_number, + })), + }; +} + +const ActionModulesHandler: YAMLHandler = { + parse, + dump, +}; + +export default ActionModulesHandler; diff --git a/src/context/yaml/handlers/actions.ts b/src/context/yaml/handlers/actions.ts index 6ea5b490e..82d8436cc 100644 --- a/src/context/yaml/handlers/actions.ts +++ b/src/context/yaml/handlers/actions.ts @@ -92,6 +92,10 @@ async function dump(context: YAMLContext): Promise { status: action.status, secrets: mapSecrets(action.secrets), supported_triggers: action.supported_triggers, + modules: action.modules?.map((module) => ({ + module_name: module.module_name, + module_version_number: module.module_version_number, + })), })), }; } diff --git a/src/context/yaml/handlers/index.ts b/src/context/yaml/handlers/index.ts index 76a318c64..e9b7857d7 100644 --- a/src/context/yaml/handlers/index.ts +++ b/src/context/yaml/handlers/index.ts @@ -16,6 +16,7 @@ import guardianPolicies from './guardianPolicies'; import roles from './roles'; import organizations from './organizations'; import actions from './actions'; +import actionModules from './actionModules'; import triggers from './triggers'; import attackProtection from './attackProtection'; import riskAssessment from './riskAssessment'; @@ -67,6 +68,7 @@ const yamlHandlers: { [key in AssetTypes]: YAMLHandler<{ [key: string]: unknown guardianPhoneFactorSelectedProvider, guardianPolicies, actions, + actionModules, organizations, triggers, attackProtection, diff --git a/src/tools/auth0/handlers/actionModules.ts b/src/tools/auth0/handlers/actionModules.ts new file mode 100644 index 000000000..0979808e2 --- /dev/null +++ b/src/tools/auth0/handlers/actionModules.ts @@ -0,0 +1,181 @@ +import DefaultAPIHandler, { order } from './default'; +import log from '../../../logger'; +import { Asset, Assets } from '../../../types'; +import { paginate } from '../client'; +import { Management } from 'auth0'; + +export const schema = { + type: 'array', + items: { + type: 'object', + required: ['name', 'code'], + additionalProperties: true, + properties: { + name: { type: 'string' }, + code: { type: 'string' }, + dependencies: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + name: { type: 'string' }, + version: { type: 'string' }, + }, + }, + }, + secrets: { + type: 'array', + items: { + type: 'object', + properties: { + name: { type: 'string' }, + value: { type: 'string' }, + }, + required: ['name'], + }, + }, + all_changes_published: { type: 'boolean' }, + }, + }, +}; + +export type ActionModule = Management.ActionModuleListItem; + +export default class ActionModulesHandler extends DefaultAPIHandler { + existing: ActionModule[] | null; + + constructor(options: DefaultAPIHandler) { + super({ + ...options, + type: 'actionModules', + id: 'id', + identifiers: ['id', 'name'], + stripUpdateFields: [ + 'name', + 'actions_using_module_total', + 'all_changes_published', + 'latest_version_number', + 'created_at', + 'updated_at', + ], + stripCreateFields: [ + 'actions_using_module_total', + 'latest_version_number', + 'created_at', + 'updated_at', + ], + functions: { + create: (module) => this.createModule(module), + update: (id: string, module) => this.updateModule(id, module), + delete: (id) => this.deleteModule(id), + }, + }); + } + + async createModule(module: Management.CreateActionModuleRequestContent) { + if ('all_changes_published' in module) { + delete module.all_changes_published; + } + const createdModule = await this.client.actions.modules.create(module); + + return createdModule; + } + + async updateModule(moduleId: string, module: Management.UpdateActionModuleRequestContent) { + const updatableModule: Management.UpdateActionModuleRequestContent = { + code: module.code, + dependencies: module.dependencies, + secrets: module.secrets, + }; + return this.client.actions.modules.update(moduleId, updatableModule); + } + + async deleteModule(moduleId: string) { + return this.client.actions.modules.delete(moduleId); + } + + objString(module: ActionModule): string { + return super.objString({ id: module.id, name: module.name }); + } + + async publishActionModules(modules: ActionModule[]) { + await this.client.pool + .addEachTask({ + data: modules || [], + generator: (module) => + this.client.actions.modules.versions + .create(module.id!) + .then(() => { + log.info(`Published [${this.type}]: ${this.objString(module)}`); + }) + .catch((err) => { + throw new Error(`Problem Publishing ${this.type} ${this.objString(module)}\n${err}`); + }), + }) + .promise(); + } + + async getType(): Promise { + if (this.existing) return this.existing; + + try { + const modules = await paginate(this.client.actions.modules.list, { + paginate: true, + }); + + this.existing = modules; + return this.existing; + } catch (err: any) { + if (err.statusCode === 404 || err.statusCode === 501) { + return null; + } + + if (err.statusCode === 403 || err.errorCode === 'feature_not_enabled') { + log.debug('Skipping action modules because it is not enabled.'); + return null; + } + + throw err; + } + } + + // Before actions are processed + @order('50') + async processChanges(assets: Assets): Promise { + const { actionModules } = assets; + + // Do nothing if not set + if (!actionModules) return; + + const changes = await this.calcChanges(assets); + await super.processChanges(assets, changes); + + // Refresh module list to get latest state with all_changes_published field + const postProcessedModules = await (async () => { + this.existing = null; // Clear the cache + return this.getType(); + })(); + + // Publish modules that have unpublished changes + const modulesToPublish = [ + ...changes.create + .filter((module) => module.all_changes_published === true) + .map((moduleWithoutId) => { + // Add IDs to just-created modules + const moduleId = postProcessedModules?.find( + (postProcessedModule) => postProcessedModule.name === moduleWithoutId.name + )?.id; + + const module = postProcessedModules?.find( + (postProcessedModule) => postProcessedModule.id === moduleId + ); + + return module; + }), + ...changes.update.filter((module) => module.all_changes_published === true), + ].filter((module): module is ActionModule => module !== undefined); + + await this.publishActionModules(modulesToPublish); + } +} diff --git a/src/tools/auth0/handlers/actions.ts b/src/tools/auth0/handlers/actions.ts index 8b6dc917b..94883d3cf 100644 --- a/src/tools/auth0/handlers/actions.ts +++ b/src/tools/auth0/handlers/actions.ts @@ -5,6 +5,7 @@ import log from '../../../logger'; import { areArraysEquals, sleep } from '../../utils'; import { Asset, Assets, CalculatedChanges } from '../../../types'; import { paginate } from '../client'; +import { ActionModule } from './actionModules'; const MAX_ACTION_DEPLOY_RETRY_ATTEMPTS = 60; // 60 * 2s => 2 min timeout @@ -62,6 +63,17 @@ export const schema = { }, }, }, + modules: { + type: 'array', + items: { + type: 'object', + required: ['module_name', 'module_version_number'], + properties: { + module_name: { type: 'string' }, + module_version_number: { type: 'number' }, + }, + }, + }, deployed: { type: 'boolean' }, status: { type: 'string' }, }, @@ -192,6 +204,10 @@ export default class ActionHandler extends DefaultAPIHandler { actionChanges.supported_triggers = action.supported_triggers; } + if (!areArraysEquals(action.modules, found.modules)) { + actionChanges.modules = action.modules; + } + return actionChanges; } @@ -230,12 +246,100 @@ export default class ActionHandler extends DefaultAPIHandler { } } - @order('50') + async calcChanges(assets: Assets): Promise { + let { actions, actionModules } = assets; + + // Do nothing if not set + if (!actions) + return { + del: [], + create: [], + update: [], + conflicts: [], + }; + + let modules: ActionModule[] | null = null; + if (actionModules && actionModules.length > 0) { + modules = actionModules; + } else { + try { + modules = await paginate(this.client.actions.modules.list, { + paginate: true, + }); + } catch { + log.debug( + 'Skipping actions modules enrichment because action modules could not be retrieved.' + ); + modules = null; + } + } + + if (modules != null) { + // Use task queue to process actions in parallel + const processedActions = await this.client.pool + .addEachTask({ + data: actions || [], + generator: (action) => this.enrichActionWithModuleIds(action, modules), + }) + .promise(); + + actions = processedActions; + } + + return super.calcChanges({ ...assets, actions }); + } + + async enrichActionWithModuleIds(action: Action, modules: ActionModule[]): Promise { + if (!action.modules || action.modules.length === 0) { + return action; + } + + const updatedModules = await this.client.pool + .addEachTask({ + data: action.modules, + generator: async (module) => { + const foundModule = modules.find((m) => m.name === module.module_name); + if (foundModule && foundModule.id) { + // paginate to get all versions of the module + const allModuleVersions: Management.ActionModuleVersion[] = []; + let moduleVersions = await this.client.actions.modules.versions.list(foundModule.id); + + // Process first page + allModuleVersions.push(...moduleVersions.data); + + // Fetch remaining pages + while (moduleVersions.hasNextPage()) { + moduleVersions = await moduleVersions.getNextPage(); + allModuleVersions.push(...moduleVersions.data); + } + + return { + module_name: module.module_name, + module_id: foundModule.id, + module_version_number: module.module_version_number, + module_version_id: + allModuleVersions?.find((v) => v.version_number === module.module_version_number) + ?.id || '', + }; + } + return module; + }, + }) + .promise(); + + return { + ...action, + modules: updatedModules, + } as Action; + } + + @order('51') async processChanges(assets: Assets) { const { actions } = assets; // Do nothing if not set if (!actions) return; + const changes = await this.calcChanges(assets); // Management of marketplace actions not currently supported, see ESD-23225. diff --git a/src/tools/auth0/handlers/index.ts b/src/tools/auth0/handlers/index.ts index e725e4702..074850297 100644 --- a/src/tools/auth0/handlers/index.ts +++ b/src/tools/auth0/handlers/index.ts @@ -22,6 +22,7 @@ import * as phoneProviders from './phoneProvider'; import * as phoneTemplates from './phoneTemplates'; import * as prompts from './prompts'; import * as actions from './actions'; +import * as actionModules from './actionModules'; import * as triggers from './triggers'; import * as organizations from './organizations'; import * as attackProtection from './attackProtection'; @@ -67,6 +68,7 @@ const auth0ApiHandlers: { [key in AssetTypes]: any } = { //@ts-ignore because prompts have not been universally implemented yet prompts, actions, + actionModules, triggers, organizations, attackProtection, diff --git a/src/tools/constants.ts b/src/tools/constants.ts index 98daf2279..a63c0c52f 100644 --- a/src/tools/constants.ts +++ b/src/tools/constants.ts @@ -35,6 +35,7 @@ const constants = { OBFUSCATED_SECRET_VALUE, HOOKS_DIRECTORY: 'hooks', ACTIONS_DIRECTORY: 'actions', + ACTION_MODULES_DIRECTORY: 'action-modules', TRIGGERS_DIRECTORY: 'triggers', RULES_CONFIGS_DIRECTORY: 'rules-configs', PAGES_DIRECTORY: 'pages', diff --git a/src/types.ts b/src/types.ts index d6715f21e..ef061cd80 100644 --- a/src/types.ts +++ b/src/types.ts @@ -1,6 +1,7 @@ import { Management, ManagementClient } from 'auth0'; import { PromisePoolExecutor } from 'promise-pool-executor'; import { Action } from './tools/auth0/handlers/actions'; +import { ActionModule } from './tools/auth0/handlers/actionModules'; import { Prompts } from './tools/auth0/handlers/prompts'; import { Tenant } from './tools/auth0/handlers/tenant'; import { Page } from './tools/auth0/handlers/pages'; @@ -98,6 +99,7 @@ export type Asset = { [key: string]: any }; export type Assets = Partial<{ actions: Action[] | null; + actionModules: ActionModule[] | null; attackProtection: AttackProtection | null; riskAssessment: RiskAssessment | null; branding: @@ -183,6 +185,7 @@ export type AssetTypes = | 'guardianPolicies' | 'roles' | 'actions' + | 'actionModules' | 'organizations' | 'triggers' | 'attackProtection' diff --git a/test/context/directory/actionModules.test.ts b/test/context/directory/actionModules.test.ts new file mode 100644 index 000000000..73dd98de4 --- /dev/null +++ b/test/context/directory/actionModules.test.ts @@ -0,0 +1,296 @@ +import path from 'path'; +import fs from 'fs-extra'; +import { expect } from 'chai'; +import { constants } from '../../../src/tools'; + +import Context from '../../../src/context/directory'; +import handler from '../../../src/context/directory/handlers/actionModules'; +import { loadJSON } from '../../../src/utils'; +import { cleanThenMkdir, testDataDir, createDir, mockMgmtClient } from '../../utils'; + +const actionModuleFiles = { + [constants.ACTION_MODULES_DIRECTORY]: { + 'code.js': 'module.exports = { test: @@replace@@ };', + 'module-one.json': `{ + "name": "module-one", + "code": "./action-modules/code.js", + "dependencies": [ + { + "name": "lodash", + "version": "4.17.21" + } + ], + "secrets": [] + }`, + }, +}; + +const actionModulesTarget = [ + { + name: 'module-one', + code: 'module.exports = { test: "test-value" };', + dependencies: [ + { + name: 'lodash', + version: '4.17.21', + }, + ], + secrets: [], + }, +]; + +describe('#directory context actionModules', () => { + it('should process action modules', async () => { + const repoDir = path.join(testDataDir, 'directory', 'actionModules1'); + createDir(repoDir, actionModuleFiles); + const config = { + AUTH0_INPUT_FILE: repoDir, + AUTH0_KEYWORD_REPLACE_MAPPINGS: { replace: 'test-value' }, + }; + const context = new Context(config, mockMgmtClient()); + await context.loadAssetsFromLocal(); + expect(context.assets.actionModules).to.deep.equal(actionModulesTarget); + }); + + it('should process action modules when code is stored in path relative to input file', async () => { + const repoDir = path.join(testDataDir, 'directory', 'actionModules2'); + const files = { + 'separate-directory': { + 'module-code.js': 'module.exports = { test: "test-value" };', + }, + [constants.ACTION_MODULES_DIRECTORY]: { + 'module-one.json': `{ + "name": "module-one", + "code": "./separate-directory/module-code.js", + "dependencies": [ + { + "name": "lodash", + "version": "4.17.21" + } + ], + "secrets": [] + }`, + }, + }; + createDir(repoDir, files); + const config = { + AUTH0_INPUT_FILE: repoDir, + }; + const context = new Context(config, mockMgmtClient()); + await context.loadAssetsFromLocal(); + expect(context.assets.actionModules).to.deep.equal(actionModulesTarget); + }); + + it('should ignore bad action modules directory', async () => { + const repoDir = path.join(testDataDir, 'directory', 'actionModules3'); + cleanThenMkdir(repoDir); + const dir = path.join(repoDir, constants.ACTION_MODULES_DIRECTORY); + fs.writeFileSync(dir, 'junk'); + + const context = new Context({ AUTH0_INPUT_FILE: repoDir }, mockMgmtClient()); + const errorMessage = `Expected ${dir} to be a folder but got a file?`; + await expect(context.loadAssetsFromLocal()) + .to.be.eventually.rejectedWith(Error) + .and.have.property('message', errorMessage); + }); + + it('should dump action modules', async () => { + const moduleName = 'module-one'; + const dir = path.join(testDataDir, 'directory', 'actionModules4'); + cleanThenMkdir(dir); + const context = new Context({ AUTH0_INPUT_FILE: dir }, mockMgmtClient()); + const codeValidation = 'module.exports = { test: "test-value" };'; + + context.assets.actionModules = [ + { + name: moduleName, + code: codeValidation, + dependencies: [ + { + name: 'lodash', + version: '4.17.21', + }, + ], + secrets: [], + actions_using_module_total: 0, + all_changes_published: true, + latest_version_number: 1, + }, + ]; + + await handler.dump(context); + + const modulesFolder = path.join(dir, constants.ACTION_MODULES_DIRECTORY); + + expect(loadJSON(path.join(modulesFolder, 'module-one.json'))).to.deep.equal({ + name: moduleName, + code: './action-modules/module-one/code.js', + dependencies: [ + { + name: 'lodash', + version: '4.17.21', + }, + ], + secrets: [], + actions_using_module_total: 0, + all_changes_published: true, + latest_version_number: 1, + }); + expect(fs.readFileSync(path.join(modulesFolder, moduleName, 'code.js'), 'utf8')).to.deep.equal( + codeValidation + ); + }); + + it('should dump action modules with identifiers when AUTH0_EXPORT_IDENTIFIERS is true', async () => { + const moduleName = 'module-with-id'; + const dir = path.join(testDataDir, 'directory', 'actionModules5'); + cleanThenMkdir(dir); + const context = new Context( + { AUTH0_INPUT_FILE: dir, AUTH0_EXPORT_IDENTIFIERS: true }, + mockMgmtClient() + ); + const codeValidation = 'module.exports = { test: "test-value" };'; + + context.assets.actionModules = [ + { + id: 'mod_123', + name: moduleName, + code: codeValidation, + dependencies: [], + secrets: [], + actions_using_module_total: 0, + all_changes_published: true, + latest_version_number: 1, + }, + ]; + + await handler.dump(context); + + const modulesFolder = path.join(dir, constants.ACTION_MODULES_DIRECTORY); + expect(loadJSON(path.join(modulesFolder, 'module-with-id.json'))).to.deep.equal({ + id: 'mod_123', + name: moduleName, + code: './action-modules/module-with-id/code.js', + dependencies: [], + secrets: [], + actions_using_module_total: 0, + all_changes_published: true, + latest_version_number: 1, + }); + expect(fs.readFileSync(path.join(modulesFolder, moduleName, 'code.js'), 'utf8')).to.deep.equal( + codeValidation + ); + }); + + it('should process action modules with @@KEYWORD@@ format in secrets', async () => { + const dir = path.join(testDataDir, 'directory', 'actionModules6'); + const modulesDir = path.join(dir, constants.ACTION_MODULES_DIRECTORY); + cleanThenMkdir(modulesDir); + + const codeFile = path.join(modulesDir, 'code.js'); + fs.writeFileSync(codeFile, 'module.exports = {};'); + + const json = `{ + "name": "module-with-secrets", + "code": "./action-modules/code.js", + "dependencies": [], + "secrets": [ + { + "name": "API_KEY", + "value": "@@API_KEY_VALUE@@" + }, + { + "name": "DATABASE_URL", + "value": "@@DB_CONNECTION@@" + } + ] + }`; + const jsonFile = path.join(modulesDir, 'module-with-secrets.json'); + fs.writeFileSync(jsonFile, json); + + const target = [ + { + name: 'module-with-secrets', + code: 'module.exports = {};', + dependencies: [], + secrets: [ + { + name: 'API_KEY', + value: 'secret-api-key-12345', + }, + { + name: 'DATABASE_URL', + value: 'postgresql://localhost:5432/mydb', + }, + ], + }, + ]; + + const config = { + AUTH0_INPUT_FILE: dir, + AUTH0_KEYWORD_REPLACE_MAPPINGS: { + API_KEY_VALUE: 'secret-api-key-12345', + DB_CONNECTION: 'postgresql://localhost:5432/mydb', + }, + }; + const context = new Context(config, mockMgmtClient()); + await context.loadAssetsFromLocal(); + expect(context.assets.actionModules).to.deep.equal(target); + }); + + it('should process action modules with ##KEYWORD## format in secrets', async () => { + const dir = path.join(testDataDir, 'directory', 'actionModules7'); + const modulesDir = path.join(dir, constants.ACTION_MODULES_DIRECTORY); + cleanThenMkdir(modulesDir); + + const codeFile = path.join(modulesDir, 'code.js'); + fs.writeFileSync(codeFile, 'module.exports = { env: "production" };'); + + const json = `{ + "name": "env-module", + "code": "./action-modules/code.js", + "dependencies": [], + "secrets": [ + { + "name": "STRIPE_KEY", + "value": "##STRIPE_SECRET_KEY##" + }, + { + "name": "SENDGRID_KEY", + "value": "##SENDGRID_API_KEY##" + } + ] + }`; + const jsonFile = path.join(modulesDir, 'env-module.json'); + fs.writeFileSync(jsonFile, json); + + const target = [ + { + name: 'env-module', + code: 'module.exports = { env: "production" };', + dependencies: [], + secrets: [ + { + name: 'STRIPE_KEY', + value: 'sk_live_stripe_key_12345', + }, + { + name: 'SENDGRID_KEY', + value: 'SG.sendgrid_api_key_67890', + }, + ], + }, + ]; + + const config = { + AUTH0_INPUT_FILE: dir, + AUTH0_KEYWORD_REPLACE_MAPPINGS: { + STRIPE_SECRET_KEY: 'sk_live_stripe_key_12345', + SENDGRID_API_KEY: 'SG.sendgrid_api_key_67890', + }, + }; + const context = new Context(config, mockMgmtClient()); + await context.loadAssetsFromLocal(); + expect(context.assets.actionModules).to.deep.equal(target); + }); +}); diff --git a/test/context/directory/actions.test.js b/test/context/directory/actions.test.js index 1aecd64ef..976d693af 100644 --- a/test/context/directory/actions.test.js +++ b/test/context/directory/actions.test.js @@ -350,4 +350,66 @@ describe('#directory context actions', () => { await context.loadAssetsFromLocal(); expect(context.assets.actions).to.deep.equal(target); }); + + it('should dump actions with modules', async () => { + const actionName = 'action-with-modules'; + const dir = path.join(testDataDir, 'directory', 'test-action-modules'); + cleanThenMkdir(dir); + const context = new Context({ AUTH0_INPUT_FILE: dir }, mockMgmtClient()); + const codeValidation = + '/** @type {PostLoginAction} */ module.exports = async (event, context) => { console.log("test-action"); return {}; };'; + + context.assets.actions = [ + { + name: actionName, + code: codeValidation, + runtime: 'node12', + dependencies: [], + secrets: [], + supported_triggers: [ + { + id: 'post-login', + version: 'v1', + }, + ], + deployed: true, + status: 'built', + modules: [ + { + module_name: 'test-module', + module_version_number: 1, + }, + ], + }, + ]; + + await handler.dump(context); + + const actionsFolder = path.join(dir, constants.ACTIONS_DIRECTORY); + + expect(loadJSON(path.join(actionsFolder, 'action-with-modules.json'))).to.deep.equal({ + name: actionName, + code: './actions/action-with-modules/code.js', + runtime: 'node12', + dependencies: [], + secrets: [], + supported_triggers: [ + { + id: 'post-login', + version: 'v1', + }, + ], + deployed: true, + status: 'built', + modules: [ + { + module_name: 'test-module', + module_version_number: 1, + }, + ], + }); + expect(fs.readFileSync(path.join(actionsFolder, actionName, 'code.js'), 'utf8')).to.deep.equal( + codeValidation + ); + }); }); diff --git a/test/context/yaml/actionModules.test.ts b/test/context/yaml/actionModules.test.ts new file mode 100644 index 000000000..b3a045bb6 --- /dev/null +++ b/test/context/yaml/actionModules.test.ts @@ -0,0 +1,262 @@ +import path from 'path'; +import fs from 'fs-extra'; +import { expect } from 'chai'; + +import Context from '../../../src/context/yaml'; +import handler from '../../../src/context/yaml/handlers/actionModules'; +import { cleanThenMkdir, testDataDir, mockMgmtClient } from '../../utils'; + +describe('#YAML context actionModules', () => { + it('should process action modules', async () => { + const dir = path.join(testDataDir, 'yaml', 'actionModule-one'); + cleanThenMkdir(dir); + + const codeContext = 'module.exports = { test: @@replace@@ };'; + const codeFile = path.join(dir, 'code.js'); + fs.writeFileSync(codeFile, codeContext); + + const yaml = ` + actionModules: + - name: module-one + code: "${codeFile}" + dependencies: + - name: lodash + version: 4.17.21 + secrets: [] + `; + const yamlFile = path.join(dir, 'module-one.yaml'); + fs.writeFileSync(yamlFile, yaml); + + const target = [ + { + name: 'module-one', + code: 'module.exports = { test: "test-value" };', + dependencies: [ + { + name: 'lodash', + version: '4.17.21', + }, + ], + secrets: [], + }, + ]; + + const config = { + AUTH0_INPUT_FILE: yamlFile, + AUTH0_KEYWORD_REPLACE_MAPPINGS: { replace: 'test-value' }, + }; + const context = new Context(config, mockMgmtClient()); + await context.loadAssetsFromLocal(); + expect(context.assets.actionModules).to.deep.equal(target); + }); + + it('should dump action modules', async () => { + const dir = path.join(testDataDir, 'yaml', 'actionModulesDump'); + cleanThenMkdir(dir); + const context = new Context( + { AUTH0_INPUT_FILE: path.join(dir, 'tenant.yaml') }, + mockMgmtClient() + ); + const codeValidation = 'module.exports = { test: "test-value" };'; + + context.assets.actionModules = [ + { + name: 'module-one', + code: codeValidation, + dependencies: [ + { + name: 'lodash', + version: '4.17.21', + }, + ], + secrets: [], + actions_using_module_total: 0, + all_changes_published: true, + latest_version_number: 1, + }, + ]; + + const dumped = await handler.dump(context); + expect(dumped).to.deep.equal({ + actionModules: [ + { + name: 'module-one', + code: './action-modules/module-one/code.js', + dependencies: [ + { + name: 'lodash', + version: '4.17.21', + }, + ], + secrets: [], + actions_using_module_total: 0, + all_changes_published: true, + latest_version_number: 1, + }, + ], + }); + + const modulesFolder = path.join(dir, 'action-modules', 'module-one'); + expect(fs.readFileSync(path.join(modulesFolder, 'code.js'), 'utf8')).to.deep.equal( + codeValidation + ); + }); + + it('should dump action modules with identifiers when AUTH0_EXPORT_IDENTIFIERS is true', async () => { + const dir = path.join(testDataDir, 'yaml', 'actionModulesDumpWithId'); + cleanThenMkdir(dir); + const context = new Context( + { AUTH0_INPUT_FILE: path.join(dir, 'tenant.yaml'), AUTH0_EXPORT_IDENTIFIERS: true }, + mockMgmtClient() + ); + const codeValidation = 'module.exports = { test: "test-value" };'; + + context.assets.actionModules = [ + { + id: 'mod_123', + name: 'module-one', + code: codeValidation, + dependencies: [], + secrets: [], + actions_using_module_total: 0, + all_changes_published: true, + latest_version_number: 1, + }, + ]; + + const dumped = await handler.dump(context); + expect(dumped).to.deep.equal({ + actionModules: [ + { + id: 'mod_123', + name: 'module-one', + code: './action-modules/module-one/code.js', + dependencies: [], + secrets: [], + actions_using_module_total: 0, + all_changes_published: true, + latest_version_number: 1, + }, + ], + }); + + const modulesFolder = path.join(dir, 'action-modules', 'module-one'); + expect(fs.readFileSync(path.join(modulesFolder, 'code.js'), 'utf8')).to.deep.equal( + codeValidation + ); + }); + + it('should process action modules with @@KEYWORD@@ format in secrets', async () => { + const dir = path.join(testDataDir, 'yaml', 'actionModule-secrets'); + cleanThenMkdir(dir); + + const codeContext = 'module.exports = { auth: true };'; + const codeFile = path.join(dir, 'code.js'); + fs.writeFileSync(codeFile, codeContext); + + const yaml = ` + actionModules: + - name: secure-module + code: "${codeFile}" + dependencies: [] + secrets: + - name: API_KEY + value: @@API_KEY_VALUE@@ + - name: CLIENT_SECRET + value: @@CLIENT_SECRET_VALUE@@ + `; + const yamlFile = path.join(dir, 'secure-module.yaml'); + fs.writeFileSync(yamlFile, yaml); + + const target = [ + { + name: 'secure-module', + code: 'module.exports = { auth: true };', + dependencies: [], + secrets: [ + { + name: 'API_KEY', + value: 'prod-api-key-xyz', + }, + { + name: 'CLIENT_SECRET', + value: 'prod-client-secret-abc', + }, + ], + }, + ]; + + const config = { + AUTH0_INPUT_FILE: yamlFile, + AUTH0_KEYWORD_REPLACE_MAPPINGS: { + API_KEY_VALUE: 'prod-api-key-xyz', + CLIENT_SECRET_VALUE: 'prod-client-secret-abc', + }, + }; + const context = new Context(config, mockMgmtClient()); + await context.loadAssetsFromLocal(); + expect(context.assets.actionModules).to.deep.equal(target); + }); + + it('should process action modules with ##KEYWORD## format in secrets', async () => { + const dir = path.join(testDataDir, 'yaml', 'actionModule-hash-keywords'); + cleanThenMkdir(dir); + + const codeContext = 'module.exports = { config: "##CONFIG_VALUE##" };'; + const codeFile = path.join(dir, 'code.js'); + fs.writeFileSync(codeFile, codeContext); + + const yaml = ` + actionModules: + - name: hash-keyword-module + code: "${codeFile}" + dependencies: + - name: ##LIBRARY_NAME## + version: ##LIBRARY_VERSION## + secrets: + - name: AWS_KEY + value: ##AWS_ACCESS_KEY## + - name: AWS_SECRET + value: ##AWS_SECRET_KEY## + `; + const yamlFile = path.join(dir, 'hash-keyword-module.yaml'); + fs.writeFileSync(yamlFile, yaml); + + const target = [ + { + name: 'hash-keyword-module', + code: 'module.exports = { config: "production" };', + dependencies: [ + { + name: 'aws-sdk', + version: '2.1400.0', + }, + ], + secrets: [ + { + name: 'AWS_KEY', + value: 'AKIAIOSFODNN7EXAMPLE', + }, + { + name: 'AWS_SECRET', + value: 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY', + }, + ], + }, + ]; + + const config = { + AUTH0_INPUT_FILE: yamlFile, + AUTH0_KEYWORD_REPLACE_MAPPINGS: { + CONFIG_VALUE: 'production', + LIBRARY_NAME: 'aws-sdk', + LIBRARY_VERSION: '2.1400.0', + AWS_ACCESS_KEY: 'AKIAIOSFODNN7EXAMPLE', + AWS_SECRET_KEY: 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY', + }, + }; + const context = new Context(config, mockMgmtClient()); + await context.loadAssetsFromLocal(); + expect(context.assets.actionModules).to.deep.equal(target); + }); +}); diff --git a/test/context/yaml/actions.test.js b/test/context/yaml/actions.test.js index bb7a47c34..ac20bb601 100644 --- a/test/context/yaml/actions.test.js +++ b/test/context/yaml/actions.test.js @@ -100,30 +100,27 @@ describe('#YAML context actions', () => { ]; const dumped = await handler.dump(context); - expect(dumped).to.deep.equal({ - actions: [ - { - name: 'action-one', - code: './actions/action-one/code.js', - runtime: 'node12', - status: 'built', - dependencies: [ - { - name: 'lodash', - version: '4.17.20', - }, - ], - supported_triggers: [ - { - id: 'post-login', - version: 'v1', - }, - ], - secrets: [], - deployed: true, - }, - ], + expect(dumped.actions).to.have.lengthOf(1); + expect(dumped.actions[0]).to.include({ + name: 'action-one', + code: './actions/action-one/code.js', + runtime: 'node12', + status: 'built', + deployed: true, }); + expect(dumped.actions[0].dependencies).to.deep.equal([ + { + name: 'lodash', + version: '4.17.20', + }, + ]); + expect(dumped.actions[0].supported_triggers).to.deep.equal([ + { + id: 'post-login', + version: 'v1', + }, + ]); + expect(dumped.actions[0].secrets).to.deep.equal([]); const actionsFolder = path.join(dir, 'actions', 'action-one'); expect(fs.readFileSync(path.join(actionsFolder, 'code.js'), 'utf8')).to.deep.equal( @@ -161,26 +158,23 @@ describe('#YAML context actions', () => { ]; const dumped = await handler.dump(context); - expect(dumped).to.deep.equal({ - actions: [ - { - id: 'act_123', - name: 'action-one', - code: './actions/action-one/code.js', - runtime: 'node12', - status: 'built', - dependencies: [], - supported_triggers: [ - { - id: 'post-login', - version: 'v1', - }, - ], - secrets: [], - deployed: true, - }, - ], + expect(dumped.actions).to.have.lengthOf(1); + expect(dumped.actions[0]).to.include({ + id: 'act_123', + name: 'action-one', + code: './actions/action-one/code.js', + runtime: 'node12', + status: 'built', + deployed: true, }); + expect(dumped.actions[0].dependencies).to.deep.equal([]); + expect(dumped.actions[0].supported_triggers).to.deep.equal([ + { + id: 'post-login', + version: 'v1', + }, + ]); + expect(dumped.actions[0].secrets).to.deep.equal([]); const actionsFolder = path.join(dir, 'actions', 'action-one'); expect(fs.readFileSync(path.join(actionsFolder, 'code.js'), 'utf8')).to.deep.equal( @@ -233,4 +227,71 @@ describe('#YAML context actions', () => { actions: [], }); }); + + it('should dump actions with modules', async () => { + const dir = path.join(testDataDir, 'yaml', 'actionsDumpWithModules'); + cleanThenMkdir(dir); + const context = new Context( + { AUTH0_INPUT_FILE: path.join(dir, 'tenant.yaml') }, + mockMgmtClient() + ); + const codeValidation = + '/** @type {PostLoginAction} */ module.exports = async (event, context) => { console.log("test-action"); return {}; };'; + + context.assets.actions = [ + { + name: 'action-with-modules', + code: codeValidation, + runtime: 'node12', + status: 'built', + dependencies: [], + supported_triggers: [ + { + id: 'post-login', + version: 'v1', + }, + ], + secrets: [], + deployed: true, + modules: [ + { + module_name: 'test-module', + module_version_number: 1, + }, + ], + }, + ]; + + const dumped = await handler.dump(context); + expect(dumped).to.deep.equal({ + actions: [ + { + name: 'action-with-modules', + code: './actions/action-with-modules/code.js', + runtime: 'node12', + status: 'built', + dependencies: [], + supported_triggers: [ + { + id: 'post-login', + version: 'v1', + }, + ], + secrets: [], + deployed: true, + modules: [ + { + module_name: 'test-module', + module_version_number: 1, + }, + ], + }, + ], + }); + + const actionsFolder = path.join(dir, 'actions', 'action-with-modules'); + expect(fs.readFileSync(path.join(actionsFolder, 'code.js'), 'utf8')).to.deep.equal( + codeValidation + ); + }); }); diff --git a/test/e2e/recordings/should-deploy-while-deleting-resources-if-AUTH0_ALLOW_DELETE-is-true.json b/test/e2e/recordings/should-deploy-while-deleting-resources-if-AUTH0_ALLOW_DELETE-is-true.json index fca51c3f2..37d732870 100644 --- a/test/e2e/recordings/should-deploy-while-deleting-resources-if-AUTH0_ALLOW_DELETE-is-true.json +++ b/test/e2e/recordings/should-deploy-while-deleting-resources-if-AUTH0_ALLOW_DELETE-is-true.json @@ -1293,7 +1293,7 @@ "body": "", "status": 200, "response": { - "total": 2, + "total": 9, "start": 0, "limit": 100, "clients": [ @@ -1379,7 +1379,7 @@ "subject": "deprecated" } ], - "client_id": "JPprKIN7pbVDPm8IviQEPLUMsYjPNUZH", + "client_id": "4R1cIUJb4tweu26ZLYAC8NGwhCzfPMcG", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -1394,218 +1394,581 @@ "client_credentials" ], "custom_login_page_on": true - } - ] - }, - "rawHeaders": [], - "responseIsBinary": false - }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "DELETE", - "path": "/api/v2/clients/JPprKIN7pbVDPm8IviQEPLUMsYjPNUZH", - "body": "", - "status": 204, - "response": "", - "rawHeaders": [], - "responseIsBinary": false - }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "POST", - "path": "/api/v2/clients", - "body": { - "name": "API Explorer Application", - "allowed_clients": [], - "app_type": "non_interactive", - "callbacks": [], - "client_aliases": [], - "client_metadata": {}, - "cross_origin_authentication": false, - "custom_login_page_on": true, - "grant_types": [ - "client_credentials" - ], - "is_first_party": true, - "is_token_endpoint_ip_header_trusted": false, - "jwt_configuration": { - "alg": "RS256", - "lifetime_in_seconds": 36000, - "secret_encoded": false - }, - "native_social_login": { - "apple": { - "enabled": false - }, - "facebook": { - "enabled": false - } - }, - "oidc_conformant": true, - "refresh_token": { - "expiration_type": "non-expiring", - "leeway": 0, - "infinite_token_lifetime": true, - "infinite_idle_token_lifetime": true, - "token_lifetime": 31557600, - "idle_token_lifetime": 2592000, - "rotation_type": "non-rotating" - }, - "sso_disabled": false, - "token_endpoint_auth_method": "client_secret_post" - }, - "status": 201, - "response": { - "tenant": "auth0-deploy-cli-e2e", - "global": false, - "is_token_endpoint_ip_header_trusted": false, - "name": "API Explorer Application", - "allowed_clients": [], - "callbacks": [], - "client_metadata": {}, - "cross_origin_authentication": false, - "is_first_party": true, - "native_social_login": { - "apple": { - "enabled": false }, - "facebook": { - "enabled": false - } - }, - "oidc_conformant": true, - "refresh_token": { - "expiration_type": "non-expiring", - "leeway": 0, - "infinite_token_lifetime": true, - "infinite_idle_token_lifetime": true, - "token_lifetime": 31557600, - "idle_token_lifetime": 2592000, - "rotation_type": "non-rotating" - }, - "sso_disabled": false, - "cross_origin_auth": false, - "encrypted": true, - "signing_keys": [ { - "cert": "[REDACTED]", - "key": "[REDACTED]", - "pkcs7": "[REDACTED]", - "subject": "/CN=auth0-deploy-cli-e2e.us.auth0.com" - } - ], - "client_id": "nY1tm1XI15kWINhYVVSpAFUFabzP2KnU", - "callback_url_template": false, - "client_secret": "[REDACTED]", - "jwt_configuration": { - "alg": "RS256", - "lifetime_in_seconds": 36000, - "secret_encoded": false - }, - "client_aliases": [], - "token_endpoint_auth_method": "client_secret_post", - "app_type": "non_interactive", - "grant_types": [ - "client_credentials" - ], - "custom_login_page_on": true - }, - "rawHeaders": [], - "responseIsBinary": false - }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "POST", - "path": "/api/v2/clients", - "body": { - "name": "Node App", - "allowed_clients": [], - "allowed_logout_urls": [], - "allowed_origins": [], - "app_type": "regular_web", - "callbacks": [], - "client_aliases": [], - "client_metadata": {}, - "cross_origin_authentication": false, - "custom_login_page_on": true, - "grant_types": [ - "authorization_code", - "implicit", - "refresh_token", - "client_credentials" - ], - "is_first_party": true, - "is_token_endpoint_ip_header_trusted": false, - "jwt_configuration": { - "alg": "RS256", - "lifetime_in_seconds": 36000, - "secret_encoded": false - }, - "native_social_login": { - "apple": { - "enabled": false - }, - "facebook": { - "enabled": false - } - }, - "oidc_conformant": true, - "refresh_token": { - "expiration_type": "non-expiring", - "leeway": 0, - "infinite_token_lifetime": true, - "infinite_idle_token_lifetime": true, - "token_lifetime": 31557600, - "idle_token_lifetime": 2592000, - "rotation_type": "non-rotating" - }, - "sso_disabled": false, - "token_endpoint_auth_method": "client_secret_post", - "web_origins": [] - }, - "status": 201, - "response": { - "tenant": "auth0-deploy-cli-e2e", - "global": false, - "is_token_endpoint_ip_header_trusted": false, - "name": "Node App", - "allowed_clients": [], - "allowed_logout_urls": [], - "callbacks": [], - "client_metadata": {}, - "cross_origin_authentication": false, - "is_first_party": true, - "native_social_login": { - "apple": { - "enabled": false + "tenant": "auth0-deploy-cli-e2e", + "global": false, + "is_token_endpoint_ip_header_trusted": false, + "name": "API Explorer Application", + "allowed_clients": [], + "callbacks": [], + "client_metadata": {}, + "cross_origin_authentication": false, + "is_first_party": true, + "native_social_login": { + "apple": { + "enabled": false + }, + "facebook": { + "enabled": false + } + }, + "oidc_conformant": true, + "refresh_token": { + "expiration_type": "non-expiring", + "leeway": 0, + "infinite_token_lifetime": true, + "infinite_idle_token_lifetime": true, + "token_lifetime": 31557600, + "idle_token_lifetime": 2592000, + "rotation_type": "non-rotating" + }, + "sso_disabled": false, + "cross_origin_auth": false, + "signing_keys": [ + { + "cert": "[REDACTED]", + "pkcs7": "[REDACTED]", + "subject": "deprecated" + } + ], + "client_id": "ILYi0cNQo9QFRhPu9x1LwaKpfJuxqvlQ", + "callback_url_template": false, + "client_secret": "[REDACTED]", + "jwt_configuration": { + "alg": "RS256", + "lifetime_in_seconds": 36000, + "secret_encoded": false + }, + "client_aliases": [], + "token_endpoint_auth_method": "client_secret_post", + "app_type": "non_interactive", + "grant_types": [ + "client_credentials" + ], + "custom_login_page_on": true }, - "facebook": { - "enabled": false - } - }, - "oidc_conformant": true, - "refresh_token": { - "expiration_type": "non-expiring", - "leeway": 0, - "infinite_token_lifetime": true, - "infinite_idle_token_lifetime": true, - "token_lifetime": 31557600, - "idle_token_lifetime": 2592000, - "rotation_type": "non-rotating" - }, - "sso_disabled": false, - "cross_origin_auth": false, - "encrypted": true, - "signing_keys": [ { - "cert": "[REDACTED]", - "key": "[REDACTED]", - "pkcs7": "[REDACTED]", - "subject": "/CN=auth0-deploy-cli-e2e.us.auth0.com" - } + "tenant": "auth0-deploy-cli-e2e", + "global": false, + "is_token_endpoint_ip_header_trusted": false, + "name": "Node App", + "allowed_clients": [], + "allowed_logout_urls": [], + "callbacks": [], + "client_metadata": {}, + "cross_origin_authentication": false, + "is_first_party": true, + "native_social_login": { + "apple": { + "enabled": false + }, + "facebook": { + "enabled": false + } + }, + "oidc_conformant": true, + "refresh_token": { + "expiration_type": "non-expiring", + "leeway": 0, + "infinite_token_lifetime": true, + "infinite_idle_token_lifetime": true, + "token_lifetime": 31557600, + "idle_token_lifetime": 2592000, + "rotation_type": "non-rotating" + }, + "sso_disabled": false, + "cross_origin_auth": false, + "signing_keys": [ + { + "cert": "[REDACTED]", + "pkcs7": "[REDACTED]", + "subject": "deprecated" + } + ], + "allowed_origins": [], + "client_id": "1J0eYQOAdKR6mWk9X1NPNqDXVqzgdwXZ", + "callback_url_template": false, + "client_secret": "[REDACTED]", + "jwt_configuration": { + "alg": "RS256", + "lifetime_in_seconds": 36000, + "secret_encoded": false + }, + "client_aliases": [], + "token_endpoint_auth_method": "client_secret_post", + "app_type": "regular_web", + "grant_types": [ + "authorization_code", + "implicit", + "refresh_token", + "client_credentials" + ], + "web_origins": [], + "custom_login_page_on": true + }, + { + "tenant": "auth0-deploy-cli-e2e", + "global": false, + "is_token_endpoint_ip_header_trusted": false, + "name": "Quickstarts API (Test Application)", + "client_metadata": { + "foo": "bar" + }, + "cross_origin_authentication": false, + "is_first_party": true, + "oidc_conformant": true, + "refresh_token": { + "expiration_type": "non-expiring", + "leeway": 0, + "infinite_token_lifetime": true, + "infinite_idle_token_lifetime": true, + "token_lifetime": 31557600, + "idle_token_lifetime": 2592000, + "rotation_type": "non-rotating" + }, + "sso_disabled": false, + "cross_origin_auth": false, + "signing_keys": [ + { + "cert": "[REDACTED]", + "pkcs7": "[REDACTED]", + "subject": "deprecated" + } + ], + "client_id": "YLxkngzwg8GRV4q93BtFqi0SIRreG0ef", + "callback_url_template": false, + "client_secret": "[REDACTED]", + "jwt_configuration": { + "alg": "RS256", + "lifetime_in_seconds": 36000, + "secret_encoded": false + }, + "token_endpoint_auth_method": "client_secret_post", + "app_type": "non_interactive", + "grant_types": [ + "client_credentials" + ], + "custom_login_page_on": true + }, + { + "tenant": "auth0-deploy-cli-e2e", + "global": false, + "is_token_endpoint_ip_header_trusted": false, + "name": "Terraform Provider", + "cross_origin_authentication": false, + "is_first_party": true, + "oidc_conformant": true, + "refresh_token": { + "expiration_type": "non-expiring", + "leeway": 0, + "infinite_token_lifetime": true, + "infinite_idle_token_lifetime": true, + "token_lifetime": 31557600, + "idle_token_lifetime": 2592000, + "rotation_type": "non-rotating" + }, + "sso_disabled": false, + "cross_origin_auth": false, + "signing_keys": [ + { + "cert": "[REDACTED]", + "pkcs7": "[REDACTED]", + "subject": "deprecated" + } + ], + "client_id": "JSpoWije4CKwUe6oUAGhtiP2b6qZVBoq", + "callback_url_template": false, + "client_secret": "[REDACTED]", + "jwt_configuration": { + "alg": "RS256", + "lifetime_in_seconds": 36000, + "secret_encoded": false + }, + "token_endpoint_auth_method": "client_secret_post", + "app_type": "non_interactive", + "grant_types": [ + "client_credentials" + ], + "custom_login_page_on": true + }, + { + "tenant": "auth0-deploy-cli-e2e", + "global": false, + "is_token_endpoint_ip_header_trusted": false, + "name": "The Default App", + "allowed_clients": [], + "callbacks": [], + "client_metadata": {}, + "cross_origin_authentication": false, + "is_first_party": true, + "native_social_login": { + "apple": { + "enabled": false + }, + "facebook": { + "enabled": false + } + }, + "oidc_conformant": false, + "refresh_token": { + "expiration_type": "non-expiring", + "leeway": 0, + "infinite_token_lifetime": true, + "infinite_idle_token_lifetime": true, + "token_lifetime": 2592000, + "idle_token_lifetime": 1296000, + "rotation_type": "non-rotating" + }, + "sso": false, + "sso_disabled": false, + "cross_origin_auth": false, + "signing_keys": [ + { + "cert": "[REDACTED]", + "pkcs7": "[REDACTED]", + "subject": "deprecated" + } + ], + "client_id": "xiWT8cVGT10UQcryJCU2HfMzRcNN0Exb", + "callback_url_template": false, + "client_secret": "[REDACTED]", + "jwt_configuration": { + "alg": "RS256", + "lifetime_in_seconds": 36000, + "secret_encoded": false + }, + "client_aliases": [], + "token_endpoint_auth_method": "client_secret_post", + "grant_types": [ + "authorization_code", + "implicit", + "refresh_token", + "client_credentials" + ], + "custom_login_page_on": true + }, + { + "tenant": "auth0-deploy-cli-e2e", + "global": false, + "is_token_endpoint_ip_header_trusted": false, + "name": "Test SPA", + "allowed_clients": [], + "allowed_logout_urls": [ + "http://localhost:3000" + ], + "callbacks": [ + "http://localhost:3000" + ], + "client_metadata": {}, + "cross_origin_authentication": false, + "is_first_party": true, + "native_social_login": { + "apple": { + "enabled": false + }, + "facebook": { + "enabled": false + } + }, + "oidc_conformant": true, + "refresh_token": { + "expiration_type": "expiring", + "leeway": 0, + "token_lifetime": 2592000, + "idle_token_lifetime": 1296000, + "infinite_token_lifetime": false, + "infinite_idle_token_lifetime": false, + "rotation_type": "rotating" + }, + "sso_disabled": false, + "cross_origin_auth": false, + "signing_keys": [ + { + "cert": "[REDACTED]", + "pkcs7": "[REDACTED]", + "subject": "deprecated" + } + ], + "client_id": "ob4KTYmPNjtAxiUSFLuRlhhRtmWUuU9h", + "callback_url_template": false, + "client_secret": "[REDACTED]", + "jwt_configuration": { + "alg": "RS256", + "lifetime_in_seconds": 36000, + "secret_encoded": false + }, + "client_aliases": [], + "token_endpoint_auth_method": "none", + "app_type": "spa", + "grant_types": [ + "authorization_code", + "implicit", + "refresh_token" + ], + "web_origins": [ + "http://localhost:3000" + ], + "custom_login_page_on": true + }, + { + "tenant": "auth0-deploy-cli-e2e", + "global": false, + "is_token_endpoint_ip_header_trusted": false, + "name": "auth0-deploy-cli-extension", + "allowed_clients": [], + "callbacks": [], + "client_metadata": {}, + "cross_origin_authentication": false, + "is_first_party": true, + "native_social_login": { + "apple": { + "enabled": false + }, + "facebook": { + "enabled": false + } + }, + "oidc_conformant": true, + "refresh_token": { + "expiration_type": "non-expiring", + "leeway": 0, + "infinite_token_lifetime": true, + "infinite_idle_token_lifetime": true, + "token_lifetime": 31557600, + "idle_token_lifetime": 2592000, + "rotation_type": "non-rotating" + }, + "sso_disabled": false, + "cross_origin_auth": false, + "signing_keys": [ + { + "cert": "[REDACTED]", + "pkcs7": "[REDACTED]", + "subject": "deprecated" + } + ], + "client_id": "u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek", + "callback_url_template": false, + "client_secret": "[REDACTED]", + "jwt_configuration": { + "alg": "RS256", + "lifetime_in_seconds": 36000, + "secret_encoded": false + }, + "client_aliases": [], + "token_endpoint_auth_method": "client_secret_post", + "app_type": "non_interactive", + "grant_types": [ + "client_credentials" + ], + "custom_login_page_on": true + } + ] + }, + "rawHeaders": [], + "responseIsBinary": false + }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "DELETE", + "path": "/api/v2/clients/4R1cIUJb4tweu26ZLYAC8NGwhCzfPMcG", + "body": "", + "status": 204, + "response": "", + "rawHeaders": [], + "responseIsBinary": false + }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "PATCH", + "path": "/api/v2/clients/ILYi0cNQo9QFRhPu9x1LwaKpfJuxqvlQ", + "body": { + "name": "API Explorer Application", + "allowed_clients": [], + "app_type": "non_interactive", + "callbacks": [], + "client_aliases": [], + "client_metadata": {}, + "cross_origin_authentication": false, + "custom_login_page_on": true, + "grant_types": [ + "client_credentials" + ], + "is_first_party": true, + "is_token_endpoint_ip_header_trusted": false, + "jwt_configuration": { + "alg": "RS256", + "lifetime_in_seconds": 36000 + }, + "native_social_login": { + "apple": { + "enabled": false + }, + "facebook": { + "enabled": false + } + }, + "oidc_conformant": true, + "refresh_token": { + "expiration_type": "non-expiring", + "leeway": 0, + "infinite_token_lifetime": true, + "infinite_idle_token_lifetime": true, + "token_lifetime": 31557600, + "idle_token_lifetime": 2592000, + "rotation_type": "non-rotating" + }, + "sso_disabled": false, + "token_endpoint_auth_method": "client_secret_post" + }, + "status": 200, + "response": { + "tenant": "auth0-deploy-cli-e2e", + "global": false, + "is_token_endpoint_ip_header_trusted": false, + "name": "API Explorer Application", + "allowed_clients": [], + "callbacks": [], + "client_metadata": {}, + "cross_origin_authentication": false, + "is_first_party": true, + "native_social_login": { + "apple": { + "enabled": false + }, + "facebook": { + "enabled": false + } + }, + "oidc_conformant": true, + "refresh_token": { + "expiration_type": "non-expiring", + "leeway": 0, + "infinite_token_lifetime": true, + "infinite_idle_token_lifetime": true, + "token_lifetime": 31557600, + "idle_token_lifetime": 2592000, + "rotation_type": "non-rotating" + }, + "sso_disabled": false, + "cross_origin_auth": false, + "signing_keys": [ + { + "cert": "[REDACTED]", + "pkcs7": "[REDACTED]", + "subject": "/CN=auth0-deploy-cli-e2e.us.auth0.com" + } + ], + "client_id": "ILYi0cNQo9QFRhPu9x1LwaKpfJuxqvlQ", + "callback_url_template": false, + "client_secret": "[REDACTED]", + "jwt_configuration": { + "alg": "RS256", + "lifetime_in_seconds": 36000, + "secret_encoded": false + }, + "client_aliases": [], + "token_endpoint_auth_method": "client_secret_post", + "app_type": "non_interactive", + "grant_types": [ + "client_credentials" + ], + "custom_login_page_on": true + }, + "rawHeaders": [], + "responseIsBinary": false + }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "PATCH", + "path": "/api/v2/clients/1J0eYQOAdKR6mWk9X1NPNqDXVqzgdwXZ", + "body": { + "name": "Node App", + "allowed_clients": [], + "allowed_logout_urls": [], + "allowed_origins": [], + "app_type": "regular_web", + "callbacks": [], + "client_aliases": [], + "client_metadata": {}, + "cross_origin_authentication": false, + "custom_login_page_on": true, + "grant_types": [ + "authorization_code", + "implicit", + "refresh_token", + "client_credentials" + ], + "is_first_party": true, + "is_token_endpoint_ip_header_trusted": false, + "jwt_configuration": { + "alg": "RS256", + "lifetime_in_seconds": 36000 + }, + "native_social_login": { + "apple": { + "enabled": false + }, + "facebook": { + "enabled": false + } + }, + "oidc_conformant": true, + "refresh_token": { + "expiration_type": "non-expiring", + "leeway": 0, + "infinite_token_lifetime": true, + "infinite_idle_token_lifetime": true, + "token_lifetime": 31557600, + "idle_token_lifetime": 2592000, + "rotation_type": "non-rotating" + }, + "sso_disabled": false, + "token_endpoint_auth_method": "client_secret_post", + "web_origins": [] + }, + "status": 200, + "response": { + "tenant": "auth0-deploy-cli-e2e", + "global": false, + "is_token_endpoint_ip_header_trusted": false, + "name": "Node App", + "allowed_clients": [], + "allowed_logout_urls": [], + "callbacks": [], + "client_metadata": {}, + "cross_origin_authentication": false, + "is_first_party": true, + "native_social_login": { + "apple": { + "enabled": false + }, + "facebook": { + "enabled": false + } + }, + "oidc_conformant": true, + "refresh_token": { + "expiration_type": "non-expiring", + "leeway": 0, + "infinite_token_lifetime": true, + "infinite_idle_token_lifetime": true, + "token_lifetime": 31557600, + "idle_token_lifetime": 2592000, + "rotation_type": "non-rotating" + }, + "sso_disabled": false, + "cross_origin_auth": false, + "signing_keys": [ + { + "cert": "[REDACTED]", + "pkcs7": "[REDACTED]", + "subject": "/CN=auth0-deploy-cli-e2e.us.auth0.com" + } ], "allowed_origins": [], - "client_id": "64zboz3cafsk4XjuU7qEBaDt2s8JPOBR", + "client_id": "1J0eYQOAdKR6mWk9X1NPNqDXVqzgdwXZ", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -1630,8 +1993,8 @@ }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "POST", - "path": "/api/v2/clients", + "method": "PATCH", + "path": "/api/v2/clients/YLxkngzwg8GRV4q93BtFqi0SIRreG0ef", "body": { "name": "Quickstarts API (Test Application)", "app_type": "non_interactive", @@ -1647,8 +2010,7 @@ "is_token_endpoint_ip_header_trusted": false, "jwt_configuration": { "alg": "RS256", - "lifetime_in_seconds": 36000, - "secret_encoded": false + "lifetime_in_seconds": 36000 }, "oidc_conformant": true, "refresh_token": { @@ -1663,7 +2025,7 @@ "sso_disabled": false, "token_endpoint_auth_method": "client_secret_post" }, - "status": 201, + "status": 200, "response": { "tenant": "auth0-deploy-cli-e2e", "global": false, @@ -1686,16 +2048,14 @@ }, "sso_disabled": false, "cross_origin_auth": false, - "encrypted": true, "signing_keys": [ { "cert": "[REDACTED]", - "key": "[REDACTED]", "pkcs7": "[REDACTED]", "subject": "/CN=auth0-deploy-cli-e2e.us.auth0.com" } ], - "client_id": "pgi4yAg7m0WBqvPyVS37vtLzDbM1DltY", + "client_id": "YLxkngzwg8GRV4q93BtFqi0SIRreG0ef", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -1715,93 +2075,63 @@ }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "POST", - "path": "/api/v2/clients", + "method": "PATCH", + "path": "/api/v2/clients/JSpoWije4CKwUe6oUAGhtiP2b6qZVBoq", "body": { - "name": "The Default App", - "allowed_clients": [], - "callbacks": [], - "client_aliases": [], - "client_metadata": {}, + "name": "Terraform Provider", + "app_type": "non_interactive", "cross_origin_authentication": false, "custom_login_page_on": true, "grant_types": [ - "authorization_code", - "implicit", - "refresh_token", "client_credentials" ], "is_first_party": true, "is_token_endpoint_ip_header_trusted": false, "jwt_configuration": { "alg": "RS256", - "lifetime_in_seconds": 36000, - "secret_encoded": false - }, - "native_social_login": { - "apple": { - "enabled": false - }, - "facebook": { - "enabled": false - } + "lifetime_in_seconds": 36000 }, - "oidc_conformant": false, + "oidc_conformant": true, "refresh_token": { "expiration_type": "non-expiring", "leeway": 0, "infinite_token_lifetime": true, "infinite_idle_token_lifetime": true, - "token_lifetime": 2592000, - "idle_token_lifetime": 1296000, + "token_lifetime": 31557600, + "idle_token_lifetime": 2592000, "rotation_type": "non-rotating" }, - "sso": false, "sso_disabled": false, "token_endpoint_auth_method": "client_secret_post" }, - "status": 201, + "status": 200, "response": { "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "The Default App", - "allowed_clients": [], - "callbacks": [], - "client_metadata": {}, + "name": "Terraform Provider", "cross_origin_authentication": false, "is_first_party": true, - "native_social_login": { - "apple": { - "enabled": false - }, - "facebook": { - "enabled": false - } - }, - "oidc_conformant": false, + "oidc_conformant": true, "refresh_token": { "expiration_type": "non-expiring", "leeway": 0, "infinite_token_lifetime": true, "infinite_idle_token_lifetime": true, - "token_lifetime": 2592000, - "idle_token_lifetime": 1296000, + "token_lifetime": 31557600, + "idle_token_lifetime": 2592000, "rotation_type": "non-rotating" }, - "sso": false, "sso_disabled": false, "cross_origin_auth": false, - "encrypted": true, "signing_keys": [ { "cert": "[REDACTED]", - "key": "[REDACTED]", "pkcs7": "[REDACTED]", "subject": "/CN=auth0-deploy-cli-e2e.us.auth0.com" } ], - "client_id": "239f4nV4lDD8GGjPXW1GTdCkw6oZsADw", + "client_id": "JSpoWije4CKwUe6oUAGhtiP2b6qZVBoq", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -1809,12 +2139,9 @@ "lifetime_in_seconds": 36000, "secret_encoded": false }, - "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", + "app_type": "non_interactive", "grant_types": [ - "authorization_code", - "implicit", - "refresh_token", "client_credentials" ], "custom_login_page_on": true @@ -1824,66 +2151,90 @@ }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "POST", - "path": "/api/v2/clients", + "method": "PATCH", + "path": "/api/v2/clients/xiWT8cVGT10UQcryJCU2HfMzRcNN0Exb", "body": { - "name": "Terraform Provider", - "app_type": "non_interactive", + "name": "The Default App", + "allowed_clients": [], + "callbacks": [], + "client_aliases": [], + "client_metadata": {}, "cross_origin_authentication": false, "custom_login_page_on": true, "grant_types": [ + "authorization_code", + "implicit", + "refresh_token", "client_credentials" ], "is_first_party": true, "is_token_endpoint_ip_header_trusted": false, "jwt_configuration": { "alg": "RS256", - "lifetime_in_seconds": 36000, - "secret_encoded": false + "lifetime_in_seconds": 36000 }, - "oidc_conformant": true, + "native_social_login": { + "apple": { + "enabled": false + }, + "facebook": { + "enabled": false + } + }, + "oidc_conformant": false, "refresh_token": { "expiration_type": "non-expiring", "leeway": 0, "infinite_token_lifetime": true, "infinite_idle_token_lifetime": true, - "token_lifetime": 31557600, - "idle_token_lifetime": 2592000, + "token_lifetime": 2592000, + "idle_token_lifetime": 1296000, "rotation_type": "non-rotating" }, + "sso": false, "sso_disabled": false, "token_endpoint_auth_method": "client_secret_post" }, - "status": 201, + "status": 200, "response": { "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "Terraform Provider", + "name": "The Default App", + "allowed_clients": [], + "callbacks": [], + "client_metadata": {}, "cross_origin_authentication": false, "is_first_party": true, - "oidc_conformant": true, + "native_social_login": { + "apple": { + "enabled": false + }, + "facebook": { + "enabled": false + } + }, + "oidc_conformant": false, "refresh_token": { "expiration_type": "non-expiring", "leeway": 0, "infinite_token_lifetime": true, "infinite_idle_token_lifetime": true, - "token_lifetime": 31557600, - "idle_token_lifetime": 2592000, + "token_lifetime": 2592000, + "idle_token_lifetime": 1296000, "rotation_type": "non-rotating" }, + "sso": false, "sso_disabled": false, "cross_origin_auth": false, - "encrypted": true, "signing_keys": [ { "cert": "[REDACTED]", - "key": "[REDACTED]", "pkcs7": "[REDACTED]", "subject": "/CN=auth0-deploy-cli-e2e.us.auth0.com" } ], - "client_id": "opf7mQSSvNN4GPKmyvAw2kss1nBiiRwZ", + "client_id": "xiWT8cVGT10UQcryJCU2HfMzRcNN0Exb", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -1891,9 +2242,12 @@ "lifetime_in_seconds": 36000, "secret_encoded": false }, + "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", - "app_type": "non_interactive", "grant_types": [ + "authorization_code", + "implicit", + "refresh_token", "client_credentials" ], "custom_login_page_on": true @@ -1903,8 +2257,8 @@ }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "POST", - "path": "/api/v2/clients", + "method": "PATCH", + "path": "/api/v2/clients/ob4KTYmPNjtAxiUSFLuRlhhRtmWUuU9h", "body": { "name": "Test SPA", "allowed_clients": [], @@ -1927,9 +2281,8 @@ "is_first_party": true, "is_token_endpoint_ip_header_trusted": false, "jwt_configuration": { - "alg": "RS256", - "lifetime_in_seconds": 36000, - "secret_encoded": false + "alg": "RS256", + "lifetime_in_seconds": 36000 }, "native_social_login": { "apple": { @@ -1955,7 +2308,7 @@ "http://localhost:3000" ] }, - "status": 201, + "status": 200, "response": { "tenant": "auth0-deploy-cli-e2e", "global": false, @@ -1991,16 +2344,14 @@ }, "sso_disabled": false, "cross_origin_auth": false, - "encrypted": true, "signing_keys": [ { "cert": "[REDACTED]", - "key": "[REDACTED]", "pkcs7": "[REDACTED]", "subject": "/CN=auth0-deploy-cli-e2e.us.auth0.com" } ], - "client_id": "CHMRuf4boUbwt5MZC7orUElirrAk1SoY", + "client_id": "ob4KTYmPNjtAxiUSFLuRlhhRtmWUuU9h", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -2026,8 +2377,8 @@ }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "POST", - "path": "/api/v2/clients", + "method": "PATCH", + "path": "/api/v2/clients/u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek", "body": { "name": "auth0-deploy-cli-extension", "allowed_clients": [], @@ -2044,8 +2395,7 @@ "is_token_endpoint_ip_header_trusted": false, "jwt_configuration": { "alg": "RS256", - "lifetime_in_seconds": 36000, - "secret_encoded": false + "lifetime_in_seconds": 36000 }, "native_social_login": { "apple": { @@ -2068,7 +2418,7 @@ "sso_disabled": false, "token_endpoint_auth_method": "client_secret_post" }, - "status": 201, + "status": 200, "response": { "tenant": "auth0-deploy-cli-e2e", "global": false, @@ -2099,16 +2449,14 @@ }, "sso_disabled": false, "cross_origin_auth": false, - "encrypted": true, "signing_keys": [ { "cert": "[REDACTED]", - "key": "[REDACTED]", "pkcs7": "[REDACTED]", "subject": "/CN=auth0-deploy-cli-e2e.us.auth0.com" } ], - "client_id": "us81QDRt9VL05XL6CimD66FYSCFO2URV", + "client_id": "u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -2130,7 +2478,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "PUT", - "path": "/api/v2/guardian/factors/duo", + "path": "/api/v2/guardian/factors/email", "body": { "enabled": false }, @@ -2144,7 +2492,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "PUT", - "path": "/api/v2/guardian/factors/webauthn-roaming", + "path": "/api/v2/guardian/factors/duo", "body": { "enabled": false }, @@ -2186,7 +2534,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "PUT", - "path": "/api/v2/guardian/factors/sms", + "path": "/api/v2/guardian/factors/webauthn-platform", "body": { "enabled": false }, @@ -2200,13 +2548,13 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "PUT", - "path": "/api/v2/guardian/factors/push-notification", + "path": "/api/v2/guardian/factors/sms", "body": { - "enabled": true + "enabled": false }, "status": 200, "response": { - "enabled": true + "enabled": false }, "rawHeaders": [], "responseIsBinary": false @@ -2214,13 +2562,13 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "PUT", - "path": "/api/v2/guardian/factors/email", + "path": "/api/v2/guardian/factors/push-notification", "body": { - "enabled": false + "enabled": true }, "status": 200, "response": { - "enabled": false + "enabled": true }, "rawHeaders": [], "responseIsBinary": false @@ -2228,7 +2576,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "PUT", - "path": "/api/v2/guardian/factors/webauthn-platform", + "path": "/api/v2/guardian/factors/webauthn-roaming", "body": { "enabled": false }, @@ -2299,125 +2647,28 @@ }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "GET", - "path": "/api/v2/actions/actions?page=0&per_page=100", - "body": "", - "status": 200, - "response": { - "actions": [], - "per_page": 100 - }, - "rawHeaders": [], - "responseIsBinary": false - }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "POST", - "path": "/api/v2/actions/actions", + "method": "PATCH", + "path": "/api/v2/attack-protection/brute-force-protection", "body": { - "name": "My Custom Action", - "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", - "dependencies": [], - "runtime": "node18", - "secrets": [], - "supported_triggers": [ - { - "id": "post-login", - "version": "v2" - } - ] - }, - "status": 201, - "response": { - "id": "f6d8001b-0d9d-4d34-ae45-93b955fe4988", - "name": "My Custom Action", - "supported_triggers": [ - { - "id": "post-login", - "version": "v2" - } - ], - "created_at": "2026-02-13T10:31:09.258700512Z", - "updated_at": "2026-02-13T10:31:09.271659544Z", - "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", - "dependencies": [], - "runtime": "node18", - "status": "pending", - "secrets": [], - "all_changes_deployed": false - }, - "rawHeaders": [], - "responseIsBinary": false - }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "GET", - "path": "/api/v2/actions/actions?page=0&per_page=100", - "body": "", - "status": 200, - "response": { - "actions": [ - { - "id": "f6d8001b-0d9d-4d34-ae45-93b955fe4988", - "name": "My Custom Action", - "supported_triggers": [ - { - "id": "post-login", - "version": "v2" - } - ], - "created_at": "2026-02-13T10:31:09.258700512Z", - "updated_at": "2026-02-13T10:31:09.271659544Z", - "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", - "dependencies": [], - "runtime": "node18", - "status": "built", - "secrets": [], - "all_changes_deployed": false - } + "enabled": true, + "shields": [ + "block", + "user_notification" ], - "total": 1, - "per_page": 100 + "mode": "count_per_identifier_and_ip", + "allowlist": [], + "max_attempts": 66 }, - "rawHeaders": [], - "responseIsBinary": false - }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "POST", - "path": "/api/v2/actions/actions/f6d8001b-0d9d-4d34-ae45-93b955fe4988/deploy", - "body": "", "status": 200, "response": { - "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", - "dependencies": [], - "id": "38bd0bef-bf9a-4207-8fc7-3fbdd852566a", - "deployed": false, - "number": 1, - "secrets": [], - "status": "built", - "created_at": "2026-02-13T10:31:10.023173872Z", - "updated_at": "2026-02-13T10:31:10.023173872Z", - "runtime": "node18", - "supported_triggers": [ - { - "id": "post-login", - "version": "v2" - } + "enabled": true, + "shields": [ + "block", + "user_notification" ], - "action": { - "id": "f6d8001b-0d9d-4d34-ae45-93b955fe4988", - "name": "My Custom Action", - "supported_triggers": [ - { - "id": "post-login", - "version": "v2" - } - ], - "created_at": "2026-02-13T10:31:09.258700512Z", - "updated_at": "2026-02-13T10:31:09.258700512Z", - "all_changes_deployed": false - } + "mode": "count_per_identifier_and_ip", + "allowlist": [], + "max_attempts": 66 }, "rawHeaders": [], "responseIsBinary": false @@ -2450,34 +2701,6 @@ "rawHeaders": [], "responseIsBinary": false }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "PATCH", - "path": "/api/v2/attack-protection/brute-force-protection", - "body": { - "enabled": true, - "shields": [ - "block", - "user_notification" - ], - "mode": "count_per_identifier_and_ip", - "allowlist": [], - "max_attempts": 66 - }, - "status": 200, - "response": { - "enabled": true, - "shields": [ - "block", - "user_notification" - ], - "mode": "count_per_identifier_and_ip", - "allowlist": [], - "max_attempts": 66 - }, - "rawHeaders": [], - "responseIsBinary": false - }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "PATCH", @@ -2555,7 +2778,7 @@ } }, "created_at": "2026-01-29T08:17:51.522Z", - "updated_at": "2026-02-13T10:28:23.762Z", + "updated_at": "2026-02-16T17:04:05.972Z", "id": "acl_5EgHsY1h2Apnv4cvsM6Q9J" } ] @@ -2600,7 +2823,7 @@ } }, "created_at": "2026-01-29T08:17:51.522Z", - "updated_at": "2026-02-13T10:31:11.400Z", + "updated_at": "2026-02-16T17:06:00.743Z", "id": "acl_5EgHsY1h2Apnv4cvsM6Q9J" }, "rawHeaders": [], @@ -2661,6 +2884,50 @@ "rawHeaders": [], "responseIsBinary": false }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "PATCH", + "path": "/api/v2/user-attribute-profiles/uap_1csDj3szFsgxGS1oTZTdFm", + "body": { + "name": "test-user-attribute-profile-2", + "user_attributes": { + "email": { + "description": "Email of the User", + "label": "Email", + "profile_required": true, + "auth0_mapping": "email" + } + }, + "user_id": { + "oidc_mapping": "sub", + "scim_mapping": "externalId" + } + }, + "status": 200, + "response": { + "id": "uap_1csDj3szFsgxGS1oTZTdFm", + "name": "test-user-attribute-profile-2", + "user_id": { + "oidc_mapping": "sub", + "saml_mapping": [ + "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier", + "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn", + "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name" + ], + "scim_mapping": "externalId" + }, + "user_attributes": { + "email": { + "label": "Email", + "description": "Email of the User", + "auth0_mapping": "email", + "profile_required": true + } + } + }, + "rawHeaders": [], + "responseIsBinary": false + }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "PATCH", @@ -2700,7 +2967,84 @@ "auth0_mapping": "email", "profile_required": true } - } + } + }, + "rawHeaders": [], + "responseIsBinary": false + }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "GET", + "path": "/api/v2/actions/modules?page=0&per_page=100", + "body": "", + "status": 403, + "response": { + "statusCode": 403, + "error": "Forbidden", + "message": "This feature is not enabled for this tenant.", + "errorCode": "feature_not_enabled" + }, + "rawHeaders": [], + "responseIsBinary": false + }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "GET", + "path": "/api/v2/actions/actions?page=0&per_page=100", + "body": "", + "status": 200, + "response": { + "actions": [ + { + "id": "0c2cd65a-2ab4-4874-84bb-5b11136cc9ba", + "name": "My Custom Action", + "supported_triggers": [ + { + "id": "post-login", + "version": "v2" + } + ], + "created_at": "2026-02-16T17:04:08.035726715Z", + "updated_at": "2026-02-16T17:04:08.043218401Z", + "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", + "dependencies": [], + "runtime": "node18", + "status": "built", + "secrets": [], + "current_version": { + "id": "f685c004-6924-462c-bdd1-d80b9c4d9c5d", + "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", + "runtime": "node18", + "status": "BUILT", + "number": 1, + "build_time": "2026-02-16T17:04:08.896675174Z", + "created_at": "2026-02-16T17:04:08.815168038Z", + "updated_at": "2026-02-16T17:04:08.897968815Z" + }, + "deployed_version": { + "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", + "dependencies": [], + "id": "f685c004-6924-462c-bdd1-d80b9c4d9c5d", + "deployed": true, + "number": 1, + "built_at": "2026-02-16T17:04:08.896675174Z", + "secrets": [], + "status": "built", + "created_at": "2026-02-16T17:04:08.815168038Z", + "updated_at": "2026-02-16T17:04:08.897968815Z", + "runtime": "node18", + "supported_triggers": [ + { + "id": "post-login", + "version": "v2" + } + ] + }, + "all_changes_deployed": true + } + ], + "total": 1, + "per_page": 100 }, "rawHeaders": [], "responseIsBinary": false @@ -2708,43 +3052,67 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "PATCH", - "path": "/api/v2/user-attribute-profiles/uap_1csDj3szFsgxGS1oTZTdFm", + "path": "/api/v2/actions/actions/0c2cd65a-2ab4-4874-84bb-5b11136cc9ba", "body": { - "name": "test-user-attribute-profile-2", - "user_attributes": { - "email": { - "description": "Email of the User", - "label": "Email", - "profile_required": true, - "auth0_mapping": "email" + "name": "My Custom Action", + "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", + "dependencies": [], + "runtime": "node18", + "secrets": [], + "supported_triggers": [ + { + "id": "post-login", + "version": "v2" } - }, - "user_id": { - "oidc_mapping": "sub", - "scim_mapping": "externalId" - } + ] }, "status": 200, "response": { - "id": "uap_1csDj3szFsgxGS1oTZTdFm", - "name": "test-user-attribute-profile-2", - "user_id": { - "oidc_mapping": "sub", - "saml_mapping": [ - "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier", - "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn", - "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name" - ], - "scim_mapping": "externalId" - }, - "user_attributes": { - "email": { - "label": "Email", - "description": "Email of the User", - "auth0_mapping": "email", - "profile_required": true + "id": "0c2cd65a-2ab4-4874-84bb-5b11136cc9ba", + "name": "My Custom Action", + "supported_triggers": [ + { + "id": "post-login", + "version": "v2" } - } + ], + "created_at": "2026-02-16T17:04:08.035726715Z", + "updated_at": "2026-02-16T17:06:02.911548290Z", + "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", + "dependencies": [], + "runtime": "node18", + "status": "pending", + "secrets": [], + "current_version": { + "id": "f685c004-6924-462c-bdd1-d80b9c4d9c5d", + "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", + "runtime": "node18", + "status": "BUILT", + "number": 1, + "build_time": "2026-02-16T17:04:08.896675174Z", + "created_at": "2026-02-16T17:04:08.815168038Z", + "updated_at": "2026-02-16T17:04:08.897968815Z" + }, + "deployed_version": { + "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", + "dependencies": [], + "id": "f685c004-6924-462c-bdd1-d80b9c4d9c5d", + "deployed": true, + "number": 1, + "built_at": "2026-02-16T17:04:08.896675174Z", + "secrets": [], + "status": "built", + "created_at": "2026-02-16T17:04:08.815168038Z", + "updated_at": "2026-02-16T17:04:08.897968815Z", + "runtime": "node18", + "supported_triggers": [ + { + "id": "post-login", + "version": "v2" + } + ] + }, + "all_changes_deployed": true }, "rawHeaders": [], "responseIsBinary": false @@ -2758,7 +3126,7 @@ "response": { "actions": [ { - "id": "f6d8001b-0d9d-4d34-ae45-93b955fe4988", + "id": "0c2cd65a-2ab4-4874-84bb-5b11136cc9ba", "name": "My Custom Action", "supported_triggers": [ { @@ -2766,34 +3134,34 @@ "version": "v2" } ], - "created_at": "2026-02-13T10:31:09.258700512Z", - "updated_at": "2026-02-13T10:31:09.271659544Z", + "created_at": "2026-02-16T17:04:08.035726715Z", + "updated_at": "2026-02-16T17:06:02.911548290Z", "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", "dependencies": [], "runtime": "node18", "status": "built", "secrets": [], "current_version": { - "id": "38bd0bef-bf9a-4207-8fc7-3fbdd852566a", + "id": "f685c004-6924-462c-bdd1-d80b9c4d9c5d", "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", "runtime": "node18", "status": "BUILT", "number": 1, - "build_time": "2026-02-13T10:31:10.098695207Z", - "created_at": "2026-02-13T10:31:10.023173872Z", - "updated_at": "2026-02-13T10:31:10.100057575Z" + "build_time": "2026-02-16T17:04:08.896675174Z", + "created_at": "2026-02-16T17:04:08.815168038Z", + "updated_at": "2026-02-16T17:04:08.897968815Z" }, "deployed_version": { "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", "dependencies": [], - "id": "38bd0bef-bf9a-4207-8fc7-3fbdd852566a", + "id": "f685c004-6924-462c-bdd1-d80b9c4d9c5d", "deployed": true, "number": 1, - "built_at": "2026-02-13T10:31:10.098695207Z", + "built_at": "2026-02-16T17:04:08.896675174Z", "secrets": [], "status": "built", - "created_at": "2026-02-13T10:31:10.023173872Z", - "updated_at": "2026-02-13T10:31:10.100057575Z", + "created_at": "2026-02-16T17:04:08.815168038Z", + "updated_at": "2026-02-16T17:04:08.897968815Z", "runtime": "node18", "supported_triggers": [ { @@ -2813,56 +3181,40 @@ }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "GET", - "path": "/api/v2/connections?take=50&strategy=auth0", + "method": "POST", + "path": "/api/v2/actions/actions/0c2cd65a-2ab4-4874-84bb-5b11136cc9ba/deploy", "body": "", "status": 200, "response": { - "connections": [ + "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", + "dependencies": [], + "id": "e7ac1206-af30-4a55-b534-09e940294d70", + "deployed": false, + "number": 2, + "secrets": [], + "status": "built", + "created_at": "2026-02-16T17:06:03.727874574Z", + "updated_at": "2026-02-16T17:06:03.727874574Z", + "runtime": "node18", + "supported_triggers": [ { - "id": "con_oEQkxGjkw3wGpLl1", - "options": { - "mfa": { - "active": true, - "return_enroll_settings": true - }, - "passwordPolicy": "good", - "passkey_options": { - "challenge_ui": "both", - "local_enrollment_enabled": true, - "progressive_enrollment_enabled": true - }, - "strategy_version": 2, - "authentication_methods": { - "passkey": { - "enabled": false - }, - "password": { - "enabled": true, - "api_behavior": "required", - "signup_behavior": "allow" - } - }, - "brute_force_protection": true, - "disable_self_service_change_password": false - }, - "strategy": "auth0", - "name": "Username-Password-Authentication", - "is_domain_connection": false, - "authentication": { - "active": true - }, - "connected_accounts": { - "active": false - }, - "realms": [ - "Username-Password-Authentication" - ], - "enabled_clients": [ - "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE" - ] + "id": "post-login", + "version": "v2" } - ] + ], + "action": { + "id": "0c2cd65a-2ab4-4874-84bb-5b11136cc9ba", + "name": "My Custom Action", + "supported_triggers": [ + { + "id": "post-login", + "version": "v2" + } + ], + "created_at": "2026-02-16T17:04:08.035726715Z", + "updated_at": "2026-02-16T17:06:02.905799489Z", + "all_changes_deployed": false + } }, "rawHeaders": [], "responseIsBinary": false @@ -2914,7 +3266,118 @@ "subject": "deprecated" } ], - "client_id": "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE", + "client_id": "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE", + "callback_url_template": false, + "client_secret": "[REDACTED]", + "jwt_configuration": { + "alg": "RS256", + "lifetime_in_seconds": 36000, + "secret_encoded": false + }, + "client_aliases": [], + "token_endpoint_auth_method": "client_secret_post", + "app_type": "non_interactive", + "grant_types": [ + "client_credentials", + "implicit", + "authorization_code", + "refresh_token" + ], + "custom_login_page_on": true + }, + { + "tenant": "auth0-deploy-cli-e2e", + "global": false, + "is_token_endpoint_ip_header_trusted": false, + "name": "API Explorer Application", + "allowed_clients": [], + "callbacks": [], + "client_metadata": {}, + "cross_origin_authentication": false, + "is_first_party": true, + "native_social_login": { + "apple": { + "enabled": false + }, + "facebook": { + "enabled": false + } + }, + "oidc_conformant": true, + "refresh_token": { + "expiration_type": "non-expiring", + "leeway": 0, + "infinite_token_lifetime": true, + "infinite_idle_token_lifetime": true, + "token_lifetime": 31557600, + "idle_token_lifetime": 2592000, + "rotation_type": "non-rotating" + }, + "sso_disabled": false, + "cross_origin_auth": false, + "signing_keys": [ + { + "cert": "[REDACTED]", + "pkcs7": "[REDACTED]", + "subject": "deprecated" + } + ], + "client_id": "ILYi0cNQo9QFRhPu9x1LwaKpfJuxqvlQ", + "callback_url_template": false, + "client_secret": "[REDACTED]", + "jwt_configuration": { + "alg": "RS256", + "lifetime_in_seconds": 36000, + "secret_encoded": false + }, + "client_aliases": [], + "token_endpoint_auth_method": "client_secret_post", + "app_type": "non_interactive", + "grant_types": [ + "client_credentials" + ], + "custom_login_page_on": true + }, + { + "tenant": "auth0-deploy-cli-e2e", + "global": false, + "is_token_endpoint_ip_header_trusted": false, + "name": "Node App", + "allowed_clients": [], + "allowed_logout_urls": [], + "callbacks": [], + "client_metadata": {}, + "cross_origin_authentication": false, + "is_first_party": true, + "native_social_login": { + "apple": { + "enabled": false + }, + "facebook": { + "enabled": false + } + }, + "oidc_conformant": true, + "refresh_token": { + "expiration_type": "non-expiring", + "leeway": 0, + "infinite_token_lifetime": true, + "infinite_idle_token_lifetime": true, + "token_lifetime": 31557600, + "idle_token_lifetime": 2592000, + "rotation_type": "non-rotating" + }, + "sso_disabled": false, + "cross_origin_auth": false, + "signing_keys": [ + { + "cert": "[REDACTED]", + "pkcs7": "[REDACTED]", + "subject": "deprecated" + } + ], + "allowed_origins": [], + "client_id": "1J0eYQOAdKR6mWk9X1NPNqDXVqzgdwXZ", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -2924,33 +3387,26 @@ }, "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", - "app_type": "non_interactive", + "app_type": "regular_web", "grant_types": [ - "client_credentials", - "implicit", "authorization_code", - "refresh_token" + "implicit", + "refresh_token", + "client_credentials" ], + "web_origins": [], "custom_login_page_on": true }, { "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "API Explorer Application", - "allowed_clients": [], - "callbacks": [], - "client_metadata": {}, + "name": "Quickstarts API (Test Application)", + "client_metadata": { + "foo": "bar" + }, "cross_origin_authentication": false, "is_first_party": true, - "native_social_login": { - "apple": { - "enabled": false - }, - "facebook": { - "enabled": false - } - }, "oidc_conformant": true, "refresh_token": { "expiration_type": "non-expiring", @@ -2970,7 +3426,7 @@ "subject": "deprecated" } ], - "client_id": "nY1tm1XI15kWINhYVVSpAFUFabzP2KnU", + "client_id": "YLxkngzwg8GRV4q93BtFqi0SIRreG0ef", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -2978,7 +3434,6 @@ "lifetime_in_seconds": 36000, "secret_encoded": false }, - "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", "app_type": "non_interactive", "grant_types": [ @@ -2990,10 +3445,7 @@ "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "Quickstarts API (Test Application)", - "client_metadata": { - "foo": "bar" - }, + "name": "Terraform Provider", "cross_origin_authentication": false, "is_first_party": true, "oidc_conformant": true, @@ -3015,7 +3467,7 @@ "subject": "deprecated" } ], - "client_id": "pgi4yAg7m0WBqvPyVS37vtLzDbM1DltY", + "client_id": "JSpoWije4CKwUe6oUAGhtiP2b6qZVBoq", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -3034,9 +3486,8 @@ "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "Node App", + "name": "The Default App", "allowed_clients": [], - "allowed_logout_urls": [], "callbacks": [], "client_metadata": {}, "cross_origin_authentication": false, @@ -3049,16 +3500,17 @@ "enabled": false } }, - "oidc_conformant": true, + "oidc_conformant": false, "refresh_token": { "expiration_type": "non-expiring", "leeway": 0, "infinite_token_lifetime": true, "infinite_idle_token_lifetime": true, - "token_lifetime": 31557600, - "idle_token_lifetime": 2592000, + "token_lifetime": 2592000, + "idle_token_lifetime": 1296000, "rotation_type": "non-rotating" }, + "sso": false, "sso_disabled": false, "cross_origin_auth": false, "signing_keys": [ @@ -3068,8 +3520,7 @@ "subject": "deprecated" } ], - "allowed_origins": [], - "client_id": "64zboz3cafsk4XjuU7qEBaDt2s8JPOBR", + "client_id": "xiWT8cVGT10UQcryJCU2HfMzRcNN0Exb", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -3079,32 +3530,46 @@ }, "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", - "app_type": "regular_web", "grant_types": [ "authorization_code", "implicit", "refresh_token", "client_credentials" ], - "web_origins": [], "custom_login_page_on": true }, { "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "Terraform Provider", + "name": "Test SPA", + "allowed_clients": [], + "allowed_logout_urls": [ + "http://localhost:3000" + ], + "callbacks": [ + "http://localhost:3000" + ], + "client_metadata": {}, "cross_origin_authentication": false, "is_first_party": true, + "native_social_login": { + "apple": { + "enabled": false + }, + "facebook": { + "enabled": false + } + }, "oidc_conformant": true, "refresh_token": { - "expiration_type": "non-expiring", + "expiration_type": "expiring", "leeway": 0, - "infinite_token_lifetime": true, - "infinite_idle_token_lifetime": true, - "token_lifetime": 31557600, - "idle_token_lifetime": 2592000, - "rotation_type": "non-rotating" + "token_lifetime": 2592000, + "idle_token_lifetime": 1296000, + "infinite_token_lifetime": false, + "infinite_idle_token_lifetime": false, + "rotation_type": "rotating" }, "sso_disabled": false, "cross_origin_auth": false, @@ -3115,7 +3580,7 @@ "subject": "deprecated" } ], - "client_id": "opf7mQSSvNN4GPKmyvAw2kss1nBiiRwZ", + "client_id": "ob4KTYmPNjtAxiUSFLuRlhhRtmWUuU9h", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -3123,10 +3588,16 @@ "lifetime_in_seconds": 36000, "secret_encoded": false }, - "token_endpoint_auth_method": "client_secret_post", - "app_type": "non_interactive", + "client_aliases": [], + "token_endpoint_auth_method": "none", + "app_type": "spa", "grant_types": [ - "client_credentials" + "authorization_code", + "implicit", + "refresh_token" + ], + "web_origins": [ + "http://localhost:3000" ], "custom_login_page_on": true }, @@ -3134,7 +3605,7 @@ "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "The Default App", + "name": "auth0-deploy-cli-extension", "allowed_clients": [], "callbacks": [], "client_metadata": {}, @@ -3148,17 +3619,16 @@ "enabled": false } }, - "oidc_conformant": false, + "oidc_conformant": true, "refresh_token": { "expiration_type": "non-expiring", "leeway": 0, "infinite_token_lifetime": true, "infinite_idle_token_lifetime": true, - "token_lifetime": 2592000, - "idle_token_lifetime": 1296000, + "token_lifetime": 31557600, + "idle_token_lifetime": 2592000, "rotation_type": "non-rotating" }, - "sso": false, "sso_disabled": false, "cross_origin_auth": false, "signing_keys": [ @@ -3168,7 +3638,7 @@ "subject": "deprecated" } ], - "client_id": "239f4nV4lDD8GGjPXW1GTdCkw6oZsADw", + "client_id": "u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -3178,166 +3648,362 @@ }, "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", + "app_type": "non_interactive", "grant_types": [ - "authorization_code", - "implicit", - "refresh_token", "client_credentials" ], "custom_login_page_on": true }, { "tenant": "auth0-deploy-cli-e2e", - "global": false, - "is_token_endpoint_ip_header_trusted": false, - "name": "Test SPA", - "allowed_clients": [], - "allowed_logout_urls": [ - "http://localhost:3000" + "global": true, + "callbacks": [], + "is_first_party": true, + "name": "All Applications", + "refresh_token": { + "expiration_type": "non-expiring", + "leeway": 0, + "infinite_token_lifetime": true, + "infinite_idle_token_lifetime": true, + "token_lifetime": 2592000, + "idle_token_lifetime": 1296000, + "rotation_type": "non-rotating" + }, + "owners": [ + "mr|samlp|okta|will.vedder@auth0.com", + "mr|google-oauth2|102002633619863830825", + "mr|samlp|okta|frederik.prijck@auth0.com", + "mr|google-oauth2|109614534713742077035", + "mr|google-oauth2|116771660953104383819", + "mr|google-oauth2|112839029247827700155", + "mr|samlp|okta|ewan.harris@auth0.com" ], - "callbacks": [ - "http://localhost:3000" + "custom_login_page": "TEST123\n", + "cross_origin_authentication": true, + "signing_keys": [ + { + "cert": "[REDACTED]", + "pkcs7": "[REDACTED]", + "subject": "deprecated" + } ], - "client_metadata": {}, - "cross_origin_authentication": false, - "is_first_party": true, - "native_social_login": { - "apple": { - "enabled": false + "client_id": "Isi93ibGHIGwmdYjsLwTOn7Gu7nwxU3V", + "client_secret": "[REDACTED]", + "custom_login_page_on": true + } + ] + }, + "rawHeaders": [], + "responseIsBinary": false + }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "GET", + "path": "/api/v2/connections?take=50&strategy=auth0", + "body": "", + "status": 200, + "response": { + "connections": [ + { + "id": "con_BaKydp194pu6KeMY", + "options": { + "mfa": { + "active": true, + "return_enroll_settings": true }, - "facebook": { - "enabled": false - } + "import_mode": false, + "customScripts": { + "login": "function login(email, password, callback) {\n // This script should authenticate a user against the credentials stored in\n // your database.\n // It is executed when a user attempts to log in or immediately after signing\n // up (as a verification that the user was successfully signed up).\n //\n // Everything returned by this script will be set as part of the user profile\n // and will be visible by any of the tenant admins. Avoid adding attributes\n // with values such as passwords, keys, secrets, etc.\n //\n // The `password` parameter of this function is in plain text. It must be\n // hashed/salted to match whatever is stored in your database. For example:\n //\n // var bcrypt = require('bcrypt@0.8.5');\n // bcrypt.compare(password, dbPasswordHash, function(err, res)) { ... }\n //\n // There are three ways this script can finish:\n // 1. The user's credentials are valid. The returned user profile should be in\n // the following format: https://auth0.com/docs/users/normalized/auth0/normalized-user-profile-schema\n // var profile = {\n // user_id: ..., // user_id is mandatory\n // email: ...,\n // [...]\n // };\n // callback(null, profile);\n // 2. The user's credentials are invalid\n // callback(new WrongUsernameOrPasswordError(email, \"my error message\"));\n // 3. Something went wrong while trying to reach your database\n // callback(new Error(\"my error message\"));\n //\n // A list of Node.js modules which can be referenced is available here:\n //\n // https://tehsis.github.io/webtaskio-canirequire/\n console.log('AYYYYYE');\n\n const msg =\n 'Please implement the Login script for this database connection ' +\n 'at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n", + "create": "function create(user, callback) {\n // This script should create a user entry in your existing database. It will\n // be executed when a user attempts to sign up, or when a user is created\n // through the Auth0 dashboard or API.\n // When this script has finished executing, the Login script will be\n // executed immediately afterwards, to verify that the user was created\n // successfully.\n //\n // The user object will always contain the following properties:\n // * email: the user's email\n // * password: the password entered by the user, in plain text\n // * tenant: the name of this Auth0 account\n // * client_id: the client ID of the application where the user signed up, or\n // API key if created through the API or Auth0 dashboard\n // * connection: the name of this database connection\n //\n // There are three ways this script can finish:\n // 1. A user was successfully created\n // callback(null);\n // 2. This user already exists in your database\n // callback(new ValidationError(\"user_exists\", \"my error message\"));\n // 3. Something went wrong while trying to reach your database\n // callback(new Error(\"my error message\"));\n\n const msg =\n 'Please implement the Create script for this database connection ' +\n 'at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n", + "delete": "function remove(id, callback) {\n // This script remove a user from your existing database.\n // It is executed whenever a user is deleted from the API or Auth0 dashboard.\n //\n // There are two ways that this script can finish:\n // 1. The user was removed successfully:\n // callback(null);\n // 2. Something went wrong while trying to reach your database:\n // callback(new Error(\"my error message\"));\n\n const msg =\n 'Please implement the Delete script for this database ' +\n 'connection at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n", + "verify": "function verify(email, callback) {\n // This script should mark the current user's email address as verified in\n // your database.\n // It is executed whenever a user clicks the verification link sent by email.\n // These emails can be customized at https://manage.auth0.com/#/emails.\n // It is safe to assume that the user's email already exists in your database,\n // because verification emails, if enabled, are sent immediately after a\n // successful signup.\n //\n // There are two ways that this script can finish:\n // 1. The user's email was verified successfully\n // callback(null, true);\n // 2. Something went wrong while trying to reach your database:\n // callback(new Error(\"my error message\"));\n //\n // If an error is returned, it will be passed to the query string of the page\n // where the user is being redirected to after clicking the verification link.\n // For example, returning `callback(new Error(\"error\"))` and redirecting to\n // https://example.com would redirect to the following URL:\n // https://example.com?email=alice%40example.com&message=error&success=false\n\n const msg =\n 'Please implement the Verify script for this database connection ' +\n 'at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n", + "get_user": "function getByEmail(email, callback) {\n // This script should retrieve a user profile from your existing database,\n // without authenticating the user.\n // It is used to check if a user exists before executing flows that do not\n // require authentication (signup and password reset).\n //\n // There are three ways this script can finish:\n // 1. A user was successfully found. The profile should be in the following\n // format: https://auth0.com/docs/users/normalized/auth0/normalized-user-profile-schema.\n // callback(null, profile);\n // 2. A user was not found\n // callback(null);\n // 3. Something went wrong while trying to reach your database:\n // callback(new Error(\"my error message\"));\n\n const msg =\n 'Please implement the Get User script for this database connection ' +\n 'at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n", + "change_password": "function changePassword(email, newPassword, callback) {\n // This script should change the password stored for the current user in your\n // database. It is executed when the user clicks on the confirmation link\n // after a reset password request.\n // The content and behavior of password confirmation emails can be customized\n // here: https://manage.auth0.com/#/emails\n // The `newPassword` parameter of this function is in plain text. It must be\n // hashed/salted to match whatever is stored in your database.\n //\n // There are three ways that this script can finish:\n // 1. The user's password was updated successfully:\n // callback(null, true);\n // 2. The user's password was not updated:\n // callback(null, false);\n // 3. Something went wrong while trying to reach your database:\n // callback(new Error(\"my error message\"));\n //\n // If an error is returned, it will be passed to the query string of the page\n // where the user is being redirected to after clicking the confirmation link.\n // For example, returning `callback(new Error(\"error\"))` and redirecting to\n // https://example.com would redirect to the following URL:\n // https://example.com?email=alice%40example.com&message=error&success=false\n\n const msg =\n 'Please implement the Change Password script for this database ' +\n 'connection at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n" + }, + "disable_signup": false, + "passwordPolicy": "low", + "passkey_options": { + "challenge_ui": "both", + "local_enrollment_enabled": true, + "progressive_enrollment_enabled": true + }, + "password_history": { + "size": 5, + "enable": false + }, + "strategy_version": 2, + "requires_username": true, + "password_dictionary": { + "enable": true, + "dictionary": [] + }, + "authentication_methods": { + "passkey": { + "enabled": false + }, + "password": { + "enabled": true, + "api_behavior": "required", + "signup_behavior": "allow" + } + }, + "brute_force_protection": true, + "password_no_personal_info": { + "enable": true + }, + "password_complexity_options": { + "min_length": 8 + }, + "enabledDatabaseCustomization": true, + "disable_self_service_change_password": false + }, + "strategy": "auth0", + "name": "boo-baz-db-connection-test", + "is_domain_connection": false, + "authentication": { + "active": true + }, + "connected_accounts": { + "active": false + }, + "realms": [ + "boo-baz-db-connection-test" + ], + "enabled_clients": [ + "1J0eYQOAdKR6mWk9X1NPNqDXVqzgdwXZ", + "u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek" + ] + }, + { + "id": "con_4KyyGHwwixzZfOVY", + "options": { + "mfa": { + "active": true, + "return_enroll_settings": true + }, + "passwordPolicy": "good", + "passkey_options": { + "challenge_ui": "both", + "local_enrollment_enabled": true, + "progressive_enrollment_enabled": true + }, + "strategy_version": 2, + "authentication_methods": { + "passkey": { + "enabled": false + }, + "password": { + "enabled": true, + "api_behavior": "required", + "signup_behavior": "allow" + } + }, + "brute_force_protection": true, + "disable_self_service_change_password": false }, - "oidc_conformant": true, - "refresh_token": { - "expiration_type": "expiring", - "leeway": 0, - "token_lifetime": 2592000, - "idle_token_lifetime": 1296000, - "infinite_token_lifetime": false, - "infinite_idle_token_lifetime": false, - "rotation_type": "rotating" + "strategy": "auth0", + "name": "Username-Password-Authentication", + "is_domain_connection": false, + "authentication": { + "active": true }, - "sso_disabled": false, - "cross_origin_auth": false, - "signing_keys": [ + "connected_accounts": { + "active": false + }, + "realms": [ + "Username-Password-Authentication" + ], + "enabled_clients": [ + "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE" + ] + } + ] + }, + "rawHeaders": [], + "responseIsBinary": false + }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "GET", + "path": "/api/v2/actions/actions?page=0&per_page=100", + "body": "", + "status": 200, + "response": { + "actions": [ + { + "id": "0c2cd65a-2ab4-4874-84bb-5b11136cc9ba", + "name": "My Custom Action", + "supported_triggers": [ { - "cert": "[REDACTED]", - "pkcs7": "[REDACTED]", - "subject": "deprecated" + "id": "post-login", + "version": "v2" } ], - "client_id": "CHMRuf4boUbwt5MZC7orUElirrAk1SoY", - "callback_url_template": false, - "client_secret": "[REDACTED]", - "jwt_configuration": { - "alg": "RS256", - "lifetime_in_seconds": 36000, - "secret_encoded": false + "created_at": "2026-02-16T17:04:08.035726715Z", + "updated_at": "2026-02-16T17:06:02.911548290Z", + "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", + "dependencies": [], + "runtime": "node18", + "status": "built", + "secrets": [], + "current_version": { + "id": "e7ac1206-af30-4a55-b534-09e940294d70", + "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", + "runtime": "node18", + "status": "BUILT", + "number": 2, + "build_time": "2026-02-16T17:06:03.800830330Z", + "created_at": "2026-02-16T17:06:03.727874574Z", + "updated_at": "2026-02-16T17:06:03.802024948Z" }, - "client_aliases": [], - "token_endpoint_auth_method": "none", - "app_type": "spa", - "grant_types": [ - "authorization_code", - "implicit", - "refresh_token" - ], - "web_origins": [ - "http://localhost:3000" - ], - "custom_login_page_on": true - }, + "deployed_version": { + "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", + "dependencies": [], + "id": "e7ac1206-af30-4a55-b534-09e940294d70", + "deployed": true, + "number": 2, + "built_at": "2026-02-16T17:06:03.800830330Z", + "secrets": [], + "status": "built", + "created_at": "2026-02-16T17:06:03.727874574Z", + "updated_at": "2026-02-16T17:06:03.802024948Z", + "runtime": "node18", + "supported_triggers": [ + { + "id": "post-login", + "version": "v2" + } + ] + }, + "all_changes_deployed": true + } + ], + "total": 1, + "per_page": 100 + }, + "rawHeaders": [], + "responseIsBinary": false + }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "GET", + "path": "/api/v2/connections?take=50&strategy=auth0", + "body": "", + "status": 200, + "response": { + "connections": [ { - "tenant": "auth0-deploy-cli-e2e", - "global": false, - "is_token_endpoint_ip_header_trusted": false, - "name": "auth0-deploy-cli-extension", - "allowed_clients": [], - "callbacks": [], - "client_metadata": {}, - "cross_origin_authentication": false, - "is_first_party": true, - "native_social_login": { - "apple": { - "enabled": false + "id": "con_BaKydp194pu6KeMY", + "options": { + "mfa": { + "active": true, + "return_enroll_settings": true }, - "facebook": { - "enabled": false - } + "import_mode": false, + "customScripts": { + "login": "function login(email, password, callback) {\n // This script should authenticate a user against the credentials stored in\n // your database.\n // It is executed when a user attempts to log in or immediately after signing\n // up (as a verification that the user was successfully signed up).\n //\n // Everything returned by this script will be set as part of the user profile\n // and will be visible by any of the tenant admins. Avoid adding attributes\n // with values such as passwords, keys, secrets, etc.\n //\n // The `password` parameter of this function is in plain text. It must be\n // hashed/salted to match whatever is stored in your database. For example:\n //\n // var bcrypt = require('bcrypt@0.8.5');\n // bcrypt.compare(password, dbPasswordHash, function(err, res)) { ... }\n //\n // There are three ways this script can finish:\n // 1. The user's credentials are valid. The returned user profile should be in\n // the following format: https://auth0.com/docs/users/normalized/auth0/normalized-user-profile-schema\n // var profile = {\n // user_id: ..., // user_id is mandatory\n // email: ...,\n // [...]\n // };\n // callback(null, profile);\n // 2. The user's credentials are invalid\n // callback(new WrongUsernameOrPasswordError(email, \"my error message\"));\n // 3. Something went wrong while trying to reach your database\n // callback(new Error(\"my error message\"));\n //\n // A list of Node.js modules which can be referenced is available here:\n //\n // https://tehsis.github.io/webtaskio-canirequire/\n console.log('AYYYYYE');\n\n const msg =\n 'Please implement the Login script for this database connection ' +\n 'at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n", + "create": "function create(user, callback) {\n // This script should create a user entry in your existing database. It will\n // be executed when a user attempts to sign up, or when a user is created\n // through the Auth0 dashboard or API.\n // When this script has finished executing, the Login script will be\n // executed immediately afterwards, to verify that the user was created\n // successfully.\n //\n // The user object will always contain the following properties:\n // * email: the user's email\n // * password: the password entered by the user, in plain text\n // * tenant: the name of this Auth0 account\n // * client_id: the client ID of the application where the user signed up, or\n // API key if created through the API or Auth0 dashboard\n // * connection: the name of this database connection\n //\n // There are three ways this script can finish:\n // 1. A user was successfully created\n // callback(null);\n // 2. This user already exists in your database\n // callback(new ValidationError(\"user_exists\", \"my error message\"));\n // 3. Something went wrong while trying to reach your database\n // callback(new Error(\"my error message\"));\n\n const msg =\n 'Please implement the Create script for this database connection ' +\n 'at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n", + "delete": "function remove(id, callback) {\n // This script remove a user from your existing database.\n // It is executed whenever a user is deleted from the API or Auth0 dashboard.\n //\n // There are two ways that this script can finish:\n // 1. The user was removed successfully:\n // callback(null);\n // 2. Something went wrong while trying to reach your database:\n // callback(new Error(\"my error message\"));\n\n const msg =\n 'Please implement the Delete script for this database ' +\n 'connection at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n", + "verify": "function verify(email, callback) {\n // This script should mark the current user's email address as verified in\n // your database.\n // It is executed whenever a user clicks the verification link sent by email.\n // These emails can be customized at https://manage.auth0.com/#/emails.\n // It is safe to assume that the user's email already exists in your database,\n // because verification emails, if enabled, are sent immediately after a\n // successful signup.\n //\n // There are two ways that this script can finish:\n // 1. The user's email was verified successfully\n // callback(null, true);\n // 2. Something went wrong while trying to reach your database:\n // callback(new Error(\"my error message\"));\n //\n // If an error is returned, it will be passed to the query string of the page\n // where the user is being redirected to after clicking the verification link.\n // For example, returning `callback(new Error(\"error\"))` and redirecting to\n // https://example.com would redirect to the following URL:\n // https://example.com?email=alice%40example.com&message=error&success=false\n\n const msg =\n 'Please implement the Verify script for this database connection ' +\n 'at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n", + "get_user": "function getByEmail(email, callback) {\n // This script should retrieve a user profile from your existing database,\n // without authenticating the user.\n // It is used to check if a user exists before executing flows that do not\n // require authentication (signup and password reset).\n //\n // There are three ways this script can finish:\n // 1. A user was successfully found. The profile should be in the following\n // format: https://auth0.com/docs/users/normalized/auth0/normalized-user-profile-schema.\n // callback(null, profile);\n // 2. A user was not found\n // callback(null);\n // 3. Something went wrong while trying to reach your database:\n // callback(new Error(\"my error message\"));\n\n const msg =\n 'Please implement the Get User script for this database connection ' +\n 'at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n", + "change_password": "function changePassword(email, newPassword, callback) {\n // This script should change the password stored for the current user in your\n // database. It is executed when the user clicks on the confirmation link\n // after a reset password request.\n // The content and behavior of password confirmation emails can be customized\n // here: https://manage.auth0.com/#/emails\n // The `newPassword` parameter of this function is in plain text. It must be\n // hashed/salted to match whatever is stored in your database.\n //\n // There are three ways that this script can finish:\n // 1. The user's password was updated successfully:\n // callback(null, true);\n // 2. The user's password was not updated:\n // callback(null, false);\n // 3. Something went wrong while trying to reach your database:\n // callback(new Error(\"my error message\"));\n //\n // If an error is returned, it will be passed to the query string of the page\n // where the user is being redirected to after clicking the confirmation link.\n // For example, returning `callback(new Error(\"error\"))` and redirecting to\n // https://example.com would redirect to the following URL:\n // https://example.com?email=alice%40example.com&message=error&success=false\n\n const msg =\n 'Please implement the Change Password script for this database ' +\n 'connection at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n" + }, + "disable_signup": false, + "passwordPolicy": "low", + "passkey_options": { + "challenge_ui": "both", + "local_enrollment_enabled": true, + "progressive_enrollment_enabled": true + }, + "password_history": { + "size": 5, + "enable": false + }, + "strategy_version": 2, + "requires_username": true, + "password_dictionary": { + "enable": true, + "dictionary": [] + }, + "authentication_methods": { + "passkey": { + "enabled": false + }, + "password": { + "enabled": true, + "api_behavior": "required", + "signup_behavior": "allow" + } + }, + "brute_force_protection": true, + "password_no_personal_info": { + "enable": true + }, + "password_complexity_options": { + "min_length": 8 + }, + "enabledDatabaseCustomization": true, + "disable_self_service_change_password": false }, - "oidc_conformant": true, - "refresh_token": { - "expiration_type": "non-expiring", - "leeway": 0, - "infinite_token_lifetime": true, - "infinite_idle_token_lifetime": true, - "token_lifetime": 31557600, - "idle_token_lifetime": 2592000, - "rotation_type": "non-rotating" + "strategy": "auth0", + "name": "boo-baz-db-connection-test", + "is_domain_connection": false, + "authentication": { + "active": true }, - "sso_disabled": false, - "cross_origin_auth": false, - "signing_keys": [ - { - "cert": "[REDACTED]", - "pkcs7": "[REDACTED]", - "subject": "deprecated" - } - ], - "client_id": "us81QDRt9VL05XL6CimD66FYSCFO2URV", - "callback_url_template": false, - "client_secret": "[REDACTED]", - "jwt_configuration": { - "alg": "RS256", - "lifetime_in_seconds": 36000, - "secret_encoded": false + "connected_accounts": { + "active": false }, - "client_aliases": [], - "token_endpoint_auth_method": "client_secret_post", - "app_type": "non_interactive", - "grant_types": [ - "client_credentials" + "realms": [ + "boo-baz-db-connection-test" ], - "custom_login_page_on": true + "enabled_clients": [ + "1J0eYQOAdKR6mWk9X1NPNqDXVqzgdwXZ", + "u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek" + ] }, { - "tenant": "auth0-deploy-cli-e2e", - "global": true, - "callbacks": [], - "is_first_party": true, - "name": "All Applications", - "refresh_token": { - "expiration_type": "non-expiring", - "leeway": 0, - "infinite_token_lifetime": true, - "infinite_idle_token_lifetime": true, - "token_lifetime": 2592000, - "idle_token_lifetime": 1296000, - "rotation_type": "non-rotating" + "id": "con_4KyyGHwwixzZfOVY", + "options": { + "mfa": { + "active": true, + "return_enroll_settings": true + }, + "passwordPolicy": "good", + "passkey_options": { + "challenge_ui": "both", + "local_enrollment_enabled": true, + "progressive_enrollment_enabled": true + }, + "strategy_version": 2, + "authentication_methods": { + "passkey": { + "enabled": false + }, + "password": { + "enabled": true, + "api_behavior": "required", + "signup_behavior": "allow" + } + }, + "brute_force_protection": true, + "disable_self_service_change_password": false + }, + "strategy": "auth0", + "name": "Username-Password-Authentication", + "is_domain_connection": false, + "authentication": { + "active": true }, - "owners": [ - "mr|samlp|okta|will.vedder@auth0.com", - "mr|google-oauth2|102002633619863830825", - "mr|samlp|okta|frederik.prijck@auth0.com", - "mr|google-oauth2|109614534713742077035", - "mr|google-oauth2|116771660953104383819", - "mr|google-oauth2|112839029247827700155", - "mr|samlp|okta|ewan.harris@auth0.com" - ], - "custom_login_page": "TEST123\n", - "cross_origin_authentication": true, - "signing_keys": [ - { - "cert": "[REDACTED]", - "pkcs7": "[REDACTED]", - "subject": "deprecated" - } + "connected_accounts": { + "active": false + }, + "realms": [ + "Username-Password-Authentication" ], - "client_id": "Isi93ibGHIGwmdYjsLwTOn7Gu7nwxU3V", - "client_secret": "[REDACTED]", - "custom_login_page_on": true + "enabled_clients": [ + "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE" + ] } ] }, @@ -3353,7 +4019,7 @@ "response": { "actions": [ { - "id": "f6d8001b-0d9d-4d34-ae45-93b955fe4988", + "id": "0c2cd65a-2ab4-4874-84bb-5b11136cc9ba", "name": "My Custom Action", "supported_triggers": [ { @@ -3361,34 +4027,34 @@ "version": "v2" } ], - "created_at": "2026-02-13T10:31:09.258700512Z", - "updated_at": "2026-02-13T10:31:09.271659544Z", + "created_at": "2026-02-16T17:04:08.035726715Z", + "updated_at": "2026-02-16T17:06:02.911548290Z", "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", "dependencies": [], "runtime": "node18", "status": "built", "secrets": [], "current_version": { - "id": "38bd0bef-bf9a-4207-8fc7-3fbdd852566a", + "id": "e7ac1206-af30-4a55-b534-09e940294d70", "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", "runtime": "node18", "status": "BUILT", - "number": 1, - "build_time": "2026-02-13T10:31:10.098695207Z", - "created_at": "2026-02-13T10:31:10.023173872Z", - "updated_at": "2026-02-13T10:31:10.100057575Z" + "number": 2, + "build_time": "2026-02-16T17:06:03.800830330Z", + "created_at": "2026-02-16T17:06:03.727874574Z", + "updated_at": "2026-02-16T17:06:03.802024948Z" }, "deployed_version": { "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", "dependencies": [], - "id": "38bd0bef-bf9a-4207-8fc7-3fbdd852566a", + "id": "e7ac1206-af30-4a55-b534-09e940294d70", "deployed": true, - "number": 1, - "built_at": "2026-02-13T10:31:10.098695207Z", + "number": 2, + "built_at": "2026-02-16T17:06:03.800830330Z", "secrets": [], "status": "built", - "created_at": "2026-02-13T10:31:10.023173872Z", - "updated_at": "2026-02-13T10:31:10.100057575Z", + "created_at": "2026-02-16T17:06:03.727874574Z", + "updated_at": "2026-02-16T17:06:03.802024948Z", "runtime": "node18", "supported_triggers": [ { @@ -3409,53 +4075,13 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/connections?take=50&strategy=auth0", + "path": "/api/v2/connections/con_4KyyGHwwixzZfOVY/clients?take=50", "body": "", "status": 200, "response": { - "connections": [ + "clients": [ { - "id": "con_oEQkxGjkw3wGpLl1", - "options": { - "mfa": { - "active": true, - "return_enroll_settings": true - }, - "passwordPolicy": "good", - "passkey_options": { - "challenge_ui": "both", - "local_enrollment_enabled": true, - "progressive_enrollment_enabled": true - }, - "strategy_version": 2, - "authentication_methods": { - "passkey": { - "enabled": false - }, - "password": { - "enabled": true, - "api_behavior": "required", - "signup_behavior": "allow" - } - }, - "brute_force_protection": true, - "disable_self_service_change_password": false - }, - "strategy": "auth0", - "name": "Username-Password-Authentication", - "is_domain_connection": false, - "authentication": { - "active": true - }, - "connected_accounts": { - "active": false - }, - "realms": [ - "Username-Password-Authentication" - ], - "enabled_clients": [ - "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE" - ] + "client_id": "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE" } ] }, @@ -3465,13 +4091,16 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/connections/con_oEQkxGjkw3wGpLl1/clients?take=50", + "path": "/api/v2/connections/con_BaKydp194pu6KeMY/clients?take=50", "body": "", "status": 200, "response": { "clients": [ { - "client_id": "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE" + "client_id": "1J0eYQOAdKR6mWk9X1NPNqDXVqzgdwXZ" + }, + { + "client_id": "u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek" } ] }, @@ -3481,26 +4110,23 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "DELETE", - "path": "/api/v2/connections/con_oEQkxGjkw3wGpLl1", + "path": "/api/v2/connections/con_4KyyGHwwixzZfOVY", "body": "", "status": 202, "response": { - "deleted_at": "2026-02-13T10:31:14.644Z" + "deleted_at": "2026-02-16T17:06:05.332Z" }, "rawHeaders": [], "responseIsBinary": false }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "POST", - "path": "/api/v2/connections", - "body": { - "name": "boo-baz-db-connection-test", - "strategy": "auth0", - "is_domain_connection": false, - "realms": [ - "boo-baz-db-connection-test" - ], + "method": "GET", + "path": "/api/v2/connections/con_BaKydp194pu6KeMY", + "body": "", + "status": 200, + "response": { + "id": "con_BaKydp194pu6KeMY", "options": { "mfa": { "active": true, @@ -3508,15 +4134,20 @@ }, "import_mode": false, "customScripts": { - "change_password": "function changePassword(email, newPassword, callback) {\n // This script should change the password stored for the current user in your\n // database. It is executed when the user clicks on the confirmation link\n // after a reset password request.\n // The content and behavior of password confirmation emails can be customized\n // here: https://manage.auth0.com/#/emails\n // The `newPassword` parameter of this function is in plain text. It must be\n // hashed/salted to match whatever is stored in your database.\n //\n // There are three ways that this script can finish:\n // 1. The user's password was updated successfully:\n // callback(null, true);\n // 2. The user's password was not updated:\n // callback(null, false);\n // 3. Something went wrong while trying to reach your database:\n // callback(new Error(\"my error message\"));\n //\n // If an error is returned, it will be passed to the query string of the page\n // where the user is being redirected to after clicking the confirmation link.\n // For example, returning `callback(new Error(\"error\"))` and redirecting to\n // https://example.com would redirect to the following URL:\n // https://example.com?email=alice%40example.com&message=error&success=false\n\n const msg =\n 'Please implement the Change Password script for this database ' +\n 'connection at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n", + "login": "function login(email, password, callback) {\n // This script should authenticate a user against the credentials stored in\n // your database.\n // It is executed when a user attempts to log in or immediately after signing\n // up (as a verification that the user was successfully signed up).\n //\n // Everything returned by this script will be set as part of the user profile\n // and will be visible by any of the tenant admins. Avoid adding attributes\n // with values such as passwords, keys, secrets, etc.\n //\n // The `password` parameter of this function is in plain text. It must be\n // hashed/salted to match whatever is stored in your database. For example:\n //\n // var bcrypt = require('bcrypt@0.8.5');\n // bcrypt.compare(password, dbPasswordHash, function(err, res)) { ... }\n //\n // There are three ways this script can finish:\n // 1. The user's credentials are valid. The returned user profile should be in\n // the following format: https://auth0.com/docs/users/normalized/auth0/normalized-user-profile-schema\n // var profile = {\n // user_id: ..., // user_id is mandatory\n // email: ...,\n // [...]\n // };\n // callback(null, profile);\n // 2. The user's credentials are invalid\n // callback(new WrongUsernameOrPasswordError(email, \"my error message\"));\n // 3. Something went wrong while trying to reach your database\n // callback(new Error(\"my error message\"));\n //\n // A list of Node.js modules which can be referenced is available here:\n //\n // https://tehsis.github.io/webtaskio-canirequire/\n console.log('AYYYYYE');\n\n const msg =\n 'Please implement the Login script for this database connection ' +\n 'at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n", "create": "function create(user, callback) {\n // This script should create a user entry in your existing database. It will\n // be executed when a user attempts to sign up, or when a user is created\n // through the Auth0 dashboard or API.\n // When this script has finished executing, the Login script will be\n // executed immediately afterwards, to verify that the user was created\n // successfully.\n //\n // The user object will always contain the following properties:\n // * email: the user's email\n // * password: the password entered by the user, in plain text\n // * tenant: the name of this Auth0 account\n // * client_id: the client ID of the application where the user signed up, or\n // API key if created through the API or Auth0 dashboard\n // * connection: the name of this database connection\n //\n // There are three ways this script can finish:\n // 1. A user was successfully created\n // callback(null);\n // 2. This user already exists in your database\n // callback(new ValidationError(\"user_exists\", \"my error message\"));\n // 3. Something went wrong while trying to reach your database\n // callback(new Error(\"my error message\"));\n\n const msg =\n 'Please implement the Create script for this database connection ' +\n 'at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n", "delete": "function remove(id, callback) {\n // This script remove a user from your existing database.\n // It is executed whenever a user is deleted from the API or Auth0 dashboard.\n //\n // There are two ways that this script can finish:\n // 1. The user was removed successfully:\n // callback(null);\n // 2. Something went wrong while trying to reach your database:\n // callback(new Error(\"my error message\"));\n\n const msg =\n 'Please implement the Delete script for this database ' +\n 'connection at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n", + "verify": "function verify(email, callback) {\n // This script should mark the current user's email address as verified in\n // your database.\n // It is executed whenever a user clicks the verification link sent by email.\n // These emails can be customized at https://manage.auth0.com/#/emails.\n // It is safe to assume that the user's email already exists in your database,\n // because verification emails, if enabled, are sent immediately after a\n // successful signup.\n //\n // There are two ways that this script can finish:\n // 1. The user's email was verified successfully\n // callback(null, true);\n // 2. Something went wrong while trying to reach your database:\n // callback(new Error(\"my error message\"));\n //\n // If an error is returned, it will be passed to the query string of the page\n // where the user is being redirected to after clicking the verification link.\n // For example, returning `callback(new Error(\"error\"))` and redirecting to\n // https://example.com would redirect to the following URL:\n // https://example.com?email=alice%40example.com&message=error&success=false\n\n const msg =\n 'Please implement the Verify script for this database connection ' +\n 'at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n", "get_user": "function getByEmail(email, callback) {\n // This script should retrieve a user profile from your existing database,\n // without authenticating the user.\n // It is used to check if a user exists before executing flows that do not\n // require authentication (signup and password reset).\n //\n // There are three ways this script can finish:\n // 1. A user was successfully found. The profile should be in the following\n // format: https://auth0.com/docs/users/normalized/auth0/normalized-user-profile-schema.\n // callback(null, profile);\n // 2. A user was not found\n // callback(null);\n // 3. Something went wrong while trying to reach your database:\n // callback(new Error(\"my error message\"));\n\n const msg =\n 'Please implement the Get User script for this database connection ' +\n 'at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n", - "login": "function login(email, password, callback) {\n // This script should authenticate a user against the credentials stored in\n // your database.\n // It is executed when a user attempts to log in or immediately after signing\n // up (as a verification that the user was successfully signed up).\n //\n // Everything returned by this script will be set as part of the user profile\n // and will be visible by any of the tenant admins. Avoid adding attributes\n // with values such as passwords, keys, secrets, etc.\n //\n // The `password` parameter of this function is in plain text. It must be\n // hashed/salted to match whatever is stored in your database. For example:\n //\n // var bcrypt = require('bcrypt@0.8.5');\n // bcrypt.compare(password, dbPasswordHash, function(err, res)) { ... }\n //\n // There are three ways this script can finish:\n // 1. The user's credentials are valid. The returned user profile should be in\n // the following format: https://auth0.com/docs/users/normalized/auth0/normalized-user-profile-schema\n // var profile = {\n // user_id: ..., // user_id is mandatory\n // email: ...,\n // [...]\n // };\n // callback(null, profile);\n // 2. The user's credentials are invalid\n // callback(new WrongUsernameOrPasswordError(email, \"my error message\"));\n // 3. Something went wrong while trying to reach your database\n // callback(new Error(\"my error message\"));\n //\n // A list of Node.js modules which can be referenced is available here:\n //\n // https://tehsis.github.io/webtaskio-canirequire/\n console.log('AYYYYYE');\n\n const msg =\n 'Please implement the Login script for this database connection ' +\n 'at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n", - "verify": "function verify(email, callback) {\n // This script should mark the current user's email address as verified in\n // your database.\n // It is executed whenever a user clicks the verification link sent by email.\n // These emails can be customized at https://manage.auth0.com/#/emails.\n // It is safe to assume that the user's email already exists in your database,\n // because verification emails, if enabled, are sent immediately after a\n // successful signup.\n //\n // There are two ways that this script can finish:\n // 1. The user's email was verified successfully\n // callback(null, true);\n // 2. Something went wrong while trying to reach your database:\n // callback(new Error(\"my error message\"));\n //\n // If an error is returned, it will be passed to the query string of the page\n // where the user is being redirected to after clicking the verification link.\n // For example, returning `callback(new Error(\"error\"))` and redirecting to\n // https://example.com would redirect to the following URL:\n // https://example.com?email=alice%40example.com&message=error&success=false\n\n const msg =\n 'Please implement the Verify script for this database connection ' +\n 'at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n" + "change_password": "function changePassword(email, newPassword, callback) {\n // This script should change the password stored for the current user in your\n // database. It is executed when the user clicks on the confirmation link\n // after a reset password request.\n // The content and behavior of password confirmation emails can be customized\n // here: https://manage.auth0.com/#/emails\n // The `newPassword` parameter of this function is in plain text. It must be\n // hashed/salted to match whatever is stored in your database.\n //\n // There are three ways that this script can finish:\n // 1. The user's password was updated successfully:\n // callback(null, true);\n // 2. The user's password was not updated:\n // callback(null, false);\n // 3. Something went wrong while trying to reach your database:\n // callback(new Error(\"my error message\"));\n //\n // If an error is returned, it will be passed to the query string of the page\n // where the user is being redirected to after clicking the confirmation link.\n // For example, returning `callback(new Error(\"error\"))` and redirecting to\n // https://example.com would redirect to the following URL:\n // https://example.com?email=alice%40example.com&message=error&success=false\n\n const msg =\n 'Please implement the Change Password script for this database ' +\n 'connection at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n" }, "disable_signup": false, "passwordPolicy": "low", + "passkey_options": { + "challenge_ui": "both", + "local_enrollment_enabled": true, + "progressive_enrollment_enabled": true + }, "password_history": { "size": 5, "enable": false @@ -3527,6 +4158,16 @@ "enable": true, "dictionary": [] }, + "authentication_methods": { + "passkey": { + "enabled": false + }, + "password": { + "enabled": true, + "api_behavior": "required", + "signup_behavior": "allow" + } + }, "brute_force_protection": true, "password_no_personal_info": { "enable": true @@ -3536,17 +4177,41 @@ }, "enabledDatabaseCustomization": true, "disable_self_service_change_password": false - } + }, + "strategy": "auth0", + "name": "boo-baz-db-connection-test", + "is_domain_connection": false, + "authentication": { + "active": true + }, + "connected_accounts": { + "active": false + }, + "enabled_clients": [ + "1J0eYQOAdKR6mWk9X1NPNqDXVqzgdwXZ", + "u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek" + ], + "realms": [ + "boo-baz-db-connection-test" + ] }, - "status": 201, - "response": { - "id": "con_VNsNbuBrPhr3ffYU", + "rawHeaders": [], + "responseIsBinary": false + }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "PATCH", + "path": "/api/v2/connections/con_BaKydp194pu6KeMY", + "body": { + "is_domain_connection": false, + "realms": [ + "boo-baz-db-connection-test" + ], "options": { "mfa": { "active": true, "return_enroll_settings": true }, - "passwordPolicy": "low", "import_mode": false, "customScripts": { "change_password": "function changePassword(email, newPassword, callback) {\n // This script should change the password stored for the current user in your\n // database. It is executed when the user clicks on the confirmation link\n // after a reset password request.\n // The content and behavior of password confirmation emails can be customized\n // here: https://manage.auth0.com/#/emails\n // The `newPassword` parameter of this function is in plain text. It must be\n // hashed/salted to match whatever is stored in your database.\n //\n // There are three ways that this script can finish:\n // 1. The user's password was updated successfully:\n // callback(null, true);\n // 2. The user's password was not updated:\n // callback(null, false);\n // 3. Something went wrong while trying to reach your database:\n // callback(new Error(\"my error message\"));\n //\n // If an error is returned, it will be passed to the query string of the page\n // where the user is being redirected to after clicking the confirmation link.\n // For example, returning `callback(new Error(\"error\"))` and redirecting to\n // https://example.com would redirect to the following URL:\n // https://example.com?email=alice%40example.com&message=error&success=false\n\n const msg =\n 'Please implement the Change Password script for this database ' +\n 'connection at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n", @@ -3557,6 +4222,12 @@ "verify": "function verify(email, callback) {\n // This script should mark the current user's email address as verified in\n // your database.\n // It is executed whenever a user clicks the verification link sent by email.\n // These emails can be customized at https://manage.auth0.com/#/emails.\n // It is safe to assume that the user's email already exists in your database,\n // because verification emails, if enabled, are sent immediately after a\n // successful signup.\n //\n // There are two ways that this script can finish:\n // 1. The user's email was verified successfully\n // callback(null, true);\n // 2. Something went wrong while trying to reach your database:\n // callback(new Error(\"my error message\"));\n //\n // If an error is returned, it will be passed to the query string of the page\n // where the user is being redirected to after clicking the verification link.\n // For example, returning `callback(new Error(\"error\"))` and redirecting to\n // https://example.com would redirect to the following URL:\n // https://example.com?email=alice%40example.com&message=error&success=false\n\n const msg =\n 'Please implement the Verify script for this database connection ' +\n 'at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n" }, "disable_signup": false, + "passwordPolicy": "low", + "passkey_options": { + "challenge_ui": "both", + "local_enrollment_enabled": true, + "progressive_enrollment_enabled": true + }, "password_history": { "size": 5, "enable": false @@ -3567,6 +4238,16 @@ "enable": true, "dictionary": [] }, + "authentication_methods": { + "passkey": { + "enabled": false + }, + "password": { + "enabled": true, + "api_behavior": "required", + "signup_behavior": "allow" + } + }, "brute_force_protection": true, "password_no_personal_info": { "enable": true @@ -3575,139 +4256,83 @@ "min_length": 8 }, "enabledDatabaseCustomization": true, - "disable_self_service_change_password": false, - "authentication_methods": { - "password": { - "enabled": true, - "api_behavior": "required", - "signup_behavior": "allow" - }, - "passkey": { - "enabled": false - } - }, - "passkey_options": { - "challenge_ui": "both", - "progressive_enrollment_enabled": true, - "local_enrollment_enabled": true - } - }, - "strategy": "auth0", - "name": "boo-baz-db-connection-test", - "is_domain_connection": false, - "authentication": { - "active": true - }, - "connected_accounts": { - "active": false - }, - "enabled_clients": [], - "realms": [ - "boo-baz-db-connection-test" - ] + "disable_self_service_change_password": false + } }, - "rawHeaders": [], - "responseIsBinary": false - }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "GET", - "path": "/api/v2/connections?take=1&name=boo-baz-db-connection-test&include_fields=true", - "body": "", "status": 200, "response": { - "connections": [ - { - "id": "con_VNsNbuBrPhr3ffYU", - "options": { - "mfa": { - "active": true, - "return_enroll_settings": true - }, - "import_mode": false, - "customScripts": { - "login": "function login(email, password, callback) {\n // This script should authenticate a user against the credentials stored in\n // your database.\n // It is executed when a user attempts to log in or immediately after signing\n // up (as a verification that the user was successfully signed up).\n //\n // Everything returned by this script will be set as part of the user profile\n // and will be visible by any of the tenant admins. Avoid adding attributes\n // with values such as passwords, keys, secrets, etc.\n //\n // The `password` parameter of this function is in plain text. It must be\n // hashed/salted to match whatever is stored in your database. For example:\n //\n // var bcrypt = require('bcrypt@0.8.5');\n // bcrypt.compare(password, dbPasswordHash, function(err, res)) { ... }\n //\n // There are three ways this script can finish:\n // 1. The user's credentials are valid. The returned user profile should be in\n // the following format: https://auth0.com/docs/users/normalized/auth0/normalized-user-profile-schema\n // var profile = {\n // user_id: ..., // user_id is mandatory\n // email: ...,\n // [...]\n // };\n // callback(null, profile);\n // 2. The user's credentials are invalid\n // callback(new WrongUsernameOrPasswordError(email, \"my error message\"));\n // 3. Something went wrong while trying to reach your database\n // callback(new Error(\"my error message\"));\n //\n // A list of Node.js modules which can be referenced is available here:\n //\n // https://tehsis.github.io/webtaskio-canirequire/\n console.log('AYYYYYE');\n\n const msg =\n 'Please implement the Login script for this database connection ' +\n 'at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n", - "create": "function create(user, callback) {\n // This script should create a user entry in your existing database. It will\n // be executed when a user attempts to sign up, or when a user is created\n // through the Auth0 dashboard or API.\n // When this script has finished executing, the Login script will be\n // executed immediately afterwards, to verify that the user was created\n // successfully.\n //\n // The user object will always contain the following properties:\n // * email: the user's email\n // * password: the password entered by the user, in plain text\n // * tenant: the name of this Auth0 account\n // * client_id: the client ID of the application where the user signed up, or\n // API key if created through the API or Auth0 dashboard\n // * connection: the name of this database connection\n //\n // There are three ways this script can finish:\n // 1. A user was successfully created\n // callback(null);\n // 2. This user already exists in your database\n // callback(new ValidationError(\"user_exists\", \"my error message\"));\n // 3. Something went wrong while trying to reach your database\n // callback(new Error(\"my error message\"));\n\n const msg =\n 'Please implement the Create script for this database connection ' +\n 'at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n", - "delete": "function remove(id, callback) {\n // This script remove a user from your existing database.\n // It is executed whenever a user is deleted from the API or Auth0 dashboard.\n //\n // There are two ways that this script can finish:\n // 1. The user was removed successfully:\n // callback(null);\n // 2. Something went wrong while trying to reach your database:\n // callback(new Error(\"my error message\"));\n\n const msg =\n 'Please implement the Delete script for this database ' +\n 'connection at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n", - "verify": "function verify(email, callback) {\n // This script should mark the current user's email address as verified in\n // your database.\n // It is executed whenever a user clicks the verification link sent by email.\n // These emails can be customized at https://manage.auth0.com/#/emails.\n // It is safe to assume that the user's email already exists in your database,\n // because verification emails, if enabled, are sent immediately after a\n // successful signup.\n //\n // There are two ways that this script can finish:\n // 1. The user's email was verified successfully\n // callback(null, true);\n // 2. Something went wrong while trying to reach your database:\n // callback(new Error(\"my error message\"));\n //\n // If an error is returned, it will be passed to the query string of the page\n // where the user is being redirected to after clicking the verification link.\n // For example, returning `callback(new Error(\"error\"))` and redirecting to\n // https://example.com would redirect to the following URL:\n // https://example.com?email=alice%40example.com&message=error&success=false\n\n const msg =\n 'Please implement the Verify script for this database connection ' +\n 'at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n", - "get_user": "function getByEmail(email, callback) {\n // This script should retrieve a user profile from your existing database,\n // without authenticating the user.\n // It is used to check if a user exists before executing flows that do not\n // require authentication (signup and password reset).\n //\n // There are three ways this script can finish:\n // 1. A user was successfully found. The profile should be in the following\n // format: https://auth0.com/docs/users/normalized/auth0/normalized-user-profile-schema.\n // callback(null, profile);\n // 2. A user was not found\n // callback(null);\n // 3. Something went wrong while trying to reach your database:\n // callback(new Error(\"my error message\"));\n\n const msg =\n 'Please implement the Get User script for this database connection ' +\n 'at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n", - "change_password": "function changePassword(email, newPassword, callback) {\n // This script should change the password stored for the current user in your\n // database. It is executed when the user clicks on the confirmation link\n // after a reset password request.\n // The content and behavior of password confirmation emails can be customized\n // here: https://manage.auth0.com/#/emails\n // The `newPassword` parameter of this function is in plain text. It must be\n // hashed/salted to match whatever is stored in your database.\n //\n // There are three ways that this script can finish:\n // 1. The user's password was updated successfully:\n // callback(null, true);\n // 2. The user's password was not updated:\n // callback(null, false);\n // 3. Something went wrong while trying to reach your database:\n // callback(new Error(\"my error message\"));\n //\n // If an error is returned, it will be passed to the query string of the page\n // where the user is being redirected to after clicking the confirmation link.\n // For example, returning `callback(new Error(\"error\"))` and redirecting to\n // https://example.com would redirect to the following URL:\n // https://example.com?email=alice%40example.com&message=error&success=false\n\n const msg =\n 'Please implement the Change Password script for this database ' +\n 'connection at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n" - }, - "disable_signup": false, - "passwordPolicy": "low", - "passkey_options": { - "challenge_ui": "both", - "local_enrollment_enabled": true, - "progressive_enrollment_enabled": true - }, - "password_history": { - "size": 5, - "enable": false - }, - "strategy_version": 2, - "requires_username": true, - "password_dictionary": { - "enable": true, - "dictionary": [] - }, - "authentication_methods": { - "passkey": { - "enabled": false - }, - "password": { - "enabled": true, - "api_behavior": "required", - "signup_behavior": "allow" - } - }, - "brute_force_protection": true, - "password_no_personal_info": { - "enable": true - }, - "password_complexity_options": { - "min_length": 8 - }, - "enabledDatabaseCustomization": true, - "disable_self_service_change_password": false - }, - "strategy": "auth0", - "name": "boo-baz-db-connection-test", - "is_domain_connection": false, - "authentication": { - "active": true - }, - "connected_accounts": { - "active": false + "id": "con_BaKydp194pu6KeMY", + "options": { + "mfa": { + "active": true, + "return_enroll_settings": true + }, + "import_mode": false, + "customScripts": { + "login": "function login(email, password, callback) {\n // This script should authenticate a user against the credentials stored in\n // your database.\n // It is executed when a user attempts to log in or immediately after signing\n // up (as a verification that the user was successfully signed up).\n //\n // Everything returned by this script will be set as part of the user profile\n // and will be visible by any of the tenant admins. Avoid adding attributes\n // with values such as passwords, keys, secrets, etc.\n //\n // The `password` parameter of this function is in plain text. It must be\n // hashed/salted to match whatever is stored in your database. For example:\n //\n // var bcrypt = require('bcrypt@0.8.5');\n // bcrypt.compare(password, dbPasswordHash, function(err, res)) { ... }\n //\n // There are three ways this script can finish:\n // 1. The user's credentials are valid. The returned user profile should be in\n // the following format: https://auth0.com/docs/users/normalized/auth0/normalized-user-profile-schema\n // var profile = {\n // user_id: ..., // user_id is mandatory\n // email: ...,\n // [...]\n // };\n // callback(null, profile);\n // 2. The user's credentials are invalid\n // callback(new WrongUsernameOrPasswordError(email, \"my error message\"));\n // 3. Something went wrong while trying to reach your database\n // callback(new Error(\"my error message\"));\n //\n // A list of Node.js modules which can be referenced is available here:\n //\n // https://tehsis.github.io/webtaskio-canirequire/\n console.log('AYYYYYE');\n\n const msg =\n 'Please implement the Login script for this database connection ' +\n 'at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n", + "create": "function create(user, callback) {\n // This script should create a user entry in your existing database. It will\n // be executed when a user attempts to sign up, or when a user is created\n // through the Auth0 dashboard or API.\n // When this script has finished executing, the Login script will be\n // executed immediately afterwards, to verify that the user was created\n // successfully.\n //\n // The user object will always contain the following properties:\n // * email: the user's email\n // * password: the password entered by the user, in plain text\n // * tenant: the name of this Auth0 account\n // * client_id: the client ID of the application where the user signed up, or\n // API key if created through the API or Auth0 dashboard\n // * connection: the name of this database connection\n //\n // There are three ways this script can finish:\n // 1. A user was successfully created\n // callback(null);\n // 2. This user already exists in your database\n // callback(new ValidationError(\"user_exists\", \"my error message\"));\n // 3. Something went wrong while trying to reach your database\n // callback(new Error(\"my error message\"));\n\n const msg =\n 'Please implement the Create script for this database connection ' +\n 'at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n", + "delete": "function remove(id, callback) {\n // This script remove a user from your existing database.\n // It is executed whenever a user is deleted from the API or Auth0 dashboard.\n //\n // There are two ways that this script can finish:\n // 1. The user was removed successfully:\n // callback(null);\n // 2. Something went wrong while trying to reach your database:\n // callback(new Error(\"my error message\"));\n\n const msg =\n 'Please implement the Delete script for this database ' +\n 'connection at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n", + "verify": "function verify(email, callback) {\n // This script should mark the current user's email address as verified in\n // your database.\n // It is executed whenever a user clicks the verification link sent by email.\n // These emails can be customized at https://manage.auth0.com/#/emails.\n // It is safe to assume that the user's email already exists in your database,\n // because verification emails, if enabled, are sent immediately after a\n // successful signup.\n //\n // There are two ways that this script can finish:\n // 1. The user's email was verified successfully\n // callback(null, true);\n // 2. Something went wrong while trying to reach your database:\n // callback(new Error(\"my error message\"));\n //\n // If an error is returned, it will be passed to the query string of the page\n // where the user is being redirected to after clicking the verification link.\n // For example, returning `callback(new Error(\"error\"))` and redirecting to\n // https://example.com would redirect to the following URL:\n // https://example.com?email=alice%40example.com&message=error&success=false\n\n const msg =\n 'Please implement the Verify script for this database connection ' +\n 'at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n", + "get_user": "function getByEmail(email, callback) {\n // This script should retrieve a user profile from your existing database,\n // without authenticating the user.\n // It is used to check if a user exists before executing flows that do not\n // require authentication (signup and password reset).\n //\n // There are three ways this script can finish:\n // 1. A user was successfully found. The profile should be in the following\n // format: https://auth0.com/docs/users/normalized/auth0/normalized-user-profile-schema.\n // callback(null, profile);\n // 2. A user was not found\n // callback(null);\n // 3. Something went wrong while trying to reach your database:\n // callback(new Error(\"my error message\"));\n\n const msg =\n 'Please implement the Get User script for this database connection ' +\n 'at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n", + "change_password": "function changePassword(email, newPassword, callback) {\n // This script should change the password stored for the current user in your\n // database. It is executed when the user clicks on the confirmation link\n // after a reset password request.\n // The content and behavior of password confirmation emails can be customized\n // here: https://manage.auth0.com/#/emails\n // The `newPassword` parameter of this function is in plain text. It must be\n // hashed/salted to match whatever is stored in your database.\n //\n // There are three ways that this script can finish:\n // 1. The user's password was updated successfully:\n // callback(null, true);\n // 2. The user's password was not updated:\n // callback(null, false);\n // 3. Something went wrong while trying to reach your database:\n // callback(new Error(\"my error message\"));\n //\n // If an error is returned, it will be passed to the query string of the page\n // where the user is being redirected to after clicking the confirmation link.\n // For example, returning `callback(new Error(\"error\"))` and redirecting to\n // https://example.com would redirect to the following URL:\n // https://example.com?email=alice%40example.com&message=error&success=false\n\n const msg =\n 'Please implement the Change Password script for this database ' +\n 'connection at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n" + }, + "disable_signup": false, + "passwordPolicy": "low", + "passkey_options": { + "challenge_ui": "both", + "local_enrollment_enabled": true, + "progressive_enrollment_enabled": true + }, + "password_history": { + "size": 5, + "enable": false + }, + "strategy_version": 2, + "requires_username": true, + "password_dictionary": { + "enable": true, + "dictionary": [] + }, + "authentication_methods": { + "passkey": { + "enabled": false }, - "realms": [ - "boo-baz-db-connection-test" - ], - "enabled_clients": [] - } + "password": { + "enabled": true, + "api_behavior": "required", + "signup_behavior": "allow" + } + }, + "brute_force_protection": true, + "password_no_personal_info": { + "enable": true + }, + "password_complexity_options": { + "min_length": 8 + }, + "enabledDatabaseCustomization": true, + "disable_self_service_change_password": false + }, + "strategy": "auth0", + "name": "boo-baz-db-connection-test", + "is_domain_connection": false, + "authentication": { + "active": true + }, + "connected_accounts": { + "active": false + }, + "enabled_clients": [ + "1J0eYQOAdKR6mWk9X1NPNqDXVqzgdwXZ", + "u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek" + ], + "realms": [ + "boo-baz-db-connection-test" ] }, "rawHeaders": [], "responseIsBinary": false }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "PATCH", - "path": "/api/v2/connections/con_VNsNbuBrPhr3ffYU/clients", - "body": [ - { - "client_id": "64zboz3cafsk4XjuU7qEBaDt2s8JPOBR", - "status": true - }, - { - "client_id": "us81QDRt9VL05XL6CimD66FYSCFO2URV", - "status": true - } - ], - "status": 204, - "response": "", - "rawHeaders": [], - "responseIsBinary": false - }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", @@ -3811,7 +4436,7 @@ "subject": "deprecated" } ], - "client_id": "nY1tm1XI15kWINhYVVSpAFUFabzP2KnU", + "client_id": "ILYi0cNQo9QFRhPu9x1LwaKpfJuxqvlQ", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -3831,12 +4456,21 @@ "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "Quickstarts API (Test Application)", - "client_metadata": { - "foo": "bar" - }, + "name": "Node App", + "allowed_clients": [], + "allowed_logout_urls": [], + "callbacks": [], + "client_metadata": {}, "cross_origin_authentication": false, "is_first_party": true, + "native_social_login": { + "apple": { + "enabled": false + }, + "facebook": { + "enabled": false + } + }, "oidc_conformant": true, "refresh_token": { "expiration_type": "non-expiring", @@ -3856,7 +4490,8 @@ "subject": "deprecated" } ], - "client_id": "pgi4yAg7m0WBqvPyVS37vtLzDbM1DltY", + "allowed_origins": [], + "client_id": "1J0eYQOAdKR6mWk9X1NPNqDXVqzgdwXZ", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -3864,32 +4499,28 @@ "lifetime_in_seconds": 36000, "secret_encoded": false }, + "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", - "app_type": "non_interactive", + "app_type": "regular_web", "grant_types": [ + "authorization_code", + "implicit", + "refresh_token", "client_credentials" ], + "web_origins": [], "custom_login_page_on": true }, { "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "Node App", - "allowed_clients": [], - "allowed_logout_urls": [], - "callbacks": [], - "client_metadata": {}, + "name": "Quickstarts API (Test Application)", + "client_metadata": { + "foo": "bar" + }, "cross_origin_authentication": false, "is_first_party": true, - "native_social_login": { - "apple": { - "enabled": false - }, - "facebook": { - "enabled": false - } - }, "oidc_conformant": true, "refresh_token": { "expiration_type": "non-expiring", @@ -3909,8 +4540,7 @@ "subject": "deprecated" } ], - "allowed_origins": [], - "client_id": "64zboz3cafsk4XjuU7qEBaDt2s8JPOBR", + "client_id": "YLxkngzwg8GRV4q93BtFqi0SIRreG0ef", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -3918,16 +4548,11 @@ "lifetime_in_seconds": 36000, "secret_encoded": false }, - "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", - "app_type": "regular_web", + "app_type": "non_interactive", "grant_types": [ - "authorization_code", - "implicit", - "refresh_token", "client_credentials" ], - "web_origins": [], "custom_login_page_on": true }, { @@ -3956,7 +4581,7 @@ "subject": "deprecated" } ], - "client_id": "opf7mQSSvNN4GPKmyvAw2kss1nBiiRwZ", + "client_id": "JSpoWije4CKwUe6oUAGhtiP2b6qZVBoq", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -4009,7 +4634,7 @@ "subject": "deprecated" } ], - "client_id": "239f4nV4lDD8GGjPXW1GTdCkw6oZsADw", + "client_id": "xiWT8cVGT10UQcryJCU2HfMzRcNN0Exb", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -4069,7 +4694,7 @@ "subject": "deprecated" } ], - "client_id": "CHMRuf4boUbwt5MZC7orUElirrAk1SoY", + "client_id": "ob4KTYmPNjtAxiUSFLuRlhhRtmWUuU9h", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -4127,7 +4752,7 @@ "subject": "deprecated" } ], - "client_id": "us81QDRt9VL05XL6CimD66FYSCFO2URV", + "client_id": "u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -4194,7 +4819,7 @@ "response": { "connections": [ { - "id": "con_VNsNbuBrPhr3ffYU", + "id": "con_BaKydp194pu6KeMY", "options": { "mfa": { "active": true, @@ -4259,8 +4884,35 @@ "boo-baz-db-connection-test" ], "enabled_clients": [ - "64zboz3cafsk4XjuU7qEBaDt2s8JPOBR", - "us81QDRt9VL05XL6CimD66FYSCFO2URV" + "1J0eYQOAdKR6mWk9X1NPNqDXVqzgdwXZ", + "u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek" + ] + }, + { + "id": "con_HqDvThofsvA7Ydc9", + "options": { + "email": true, + "scope": [ + "email", + "profile" + ], + "profile": true + }, + "strategy": "google-oauth2", + "name": "google-oauth2", + "is_domain_connection": false, + "authentication": { + "active": true + }, + "connected_accounts": { + "active": false + }, + "realms": [ + "google-oauth2" + ], + "enabled_clients": [ + "xiWT8cVGT10UQcryJCU2HfMzRcNN0Exb", + "u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek" ] } ] @@ -4277,7 +4929,7 @@ "response": { "connections": [ { - "id": "con_VNsNbuBrPhr3ffYU", + "id": "con_BaKydp194pu6KeMY", "options": { "mfa": { "active": true, @@ -4342,8 +4994,35 @@ "boo-baz-db-connection-test" ], "enabled_clients": [ - "64zboz3cafsk4XjuU7qEBaDt2s8JPOBR", - "us81QDRt9VL05XL6CimD66FYSCFO2URV" + "1J0eYQOAdKR6mWk9X1NPNqDXVqzgdwXZ", + "u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek" + ] + }, + { + "id": "con_HqDvThofsvA7Ydc9", + "options": { + "email": true, + "scope": [ + "email", + "profile" + ], + "profile": true + }, + "strategy": "google-oauth2", + "name": "google-oauth2", + "is_domain_connection": false, + "authentication": { + "active": true + }, + "connected_accounts": { + "active": false + }, + "realms": [ + "google-oauth2" + ], + "enabled_clients": [ + "xiWT8cVGT10UQcryJCU2HfMzRcNN0Exb", + "u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek" ] } ] @@ -4368,44 +5047,18 @@ }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "POST", - "path": "/api/v2/connections", - "body": { - "name": "google-oauth2", - "strategy": "google-oauth2", - "is_domain_connection": false, - "options": { - "email": true, - "scope": [ - "email", - "profile" - ], - "profile": true - } - }, - "status": 201, + "method": "GET", + "path": "/api/v2/connections/con_HqDvThofsvA7Ydc9/clients?take=50", + "body": "", + "status": 200, "response": { - "id": "con_Bt0T677DiTx09JW3", - "options": { - "email": true, - "scope": [ - "email", - "profile" - ], - "profile": true - }, - "strategy": "google-oauth2", - "name": "google-oauth2", - "is_domain_connection": false, - "authentication": { - "active": true - }, - "connected_accounts": { - "active": false - }, - "enabled_clients": [], - "realms": [ - "google-oauth2" + "clients": [ + { + "client_id": "u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek" + }, + { + "client_id": "xiWT8cVGT10UQcryJCU2HfMzRcNN0Exb" + } ] }, "rawHeaders": [], @@ -4413,57 +5066,47 @@ }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "GET", - "path": "/api/v2/connections?take=1&name=google-oauth2&include_fields=true", - "body": "", - "status": 200, - "response": { - "connections": [ - { - "id": "con_Bt0T677DiTx09JW3", - "options": { - "email": true, - "scope": [ - "email", - "profile" - ], - "profile": true - }, - "strategy": "google-oauth2", - "name": "google-oauth2", - "is_domain_connection": false, - "authentication": { - "active": true - }, - "connected_accounts": { - "active": false - }, - "realms": [ - "google-oauth2" - ], - "enabled_clients": [] - } - ] + "method": "PATCH", + "path": "/api/v2/connections/con_HqDvThofsvA7Ydc9", + "body": { + "is_domain_connection": false, + "options": { + "email": true, + "scope": [ + "email", + "profile" + ], + "profile": true + } }, - "rawHeaders": [], - "responseIsBinary": false - }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "PATCH", - "path": "/api/v2/connections/con_Bt0T677DiTx09JW3/clients", - "body": [ - { - "client_id": "239f4nV4lDD8GGjPXW1GTdCkw6oZsADw", - "status": true + "status": 200, + "response": { + "id": "con_HqDvThofsvA7Ydc9", + "options": { + "email": true, + "scope": [ + "email", + "profile" + ], + "profile": true }, - { - "client_id": "us81QDRt9VL05XL6CimD66FYSCFO2URV", - "status": true - } - ], - "status": 204, - "response": "", + "strategy": "google-oauth2", + "name": "google-oauth2", + "is_domain_connection": false, + "authentication": { + "active": true + }, + "connected_accounts": { + "active": false + }, + "enabled_clients": [ + "xiWT8cVGT10UQcryJCU2HfMzRcNN0Exb", + "u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek" + ], + "realms": [ + "google-oauth2" + ] + }, "rawHeaders": [], "responseIsBinary": false }, @@ -4607,7 +5250,7 @@ "subject": "deprecated" } ], - "client_id": "nY1tm1XI15kWINhYVVSpAFUFabzP2KnU", + "client_id": "ILYi0cNQo9QFRhPu9x1LwaKpfJuxqvlQ", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -4627,12 +5270,21 @@ "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "Quickstarts API (Test Application)", - "client_metadata": { - "foo": "bar" - }, + "name": "Node App", + "allowed_clients": [], + "allowed_logout_urls": [], + "callbacks": [], + "client_metadata": {}, "cross_origin_authentication": false, "is_first_party": true, + "native_social_login": { + "apple": { + "enabled": false + }, + "facebook": { + "enabled": false + } + }, "oidc_conformant": true, "refresh_token": { "expiration_type": "non-expiring", @@ -4652,7 +5304,8 @@ "subject": "deprecated" } ], - "client_id": "pgi4yAg7m0WBqvPyVS37vtLzDbM1DltY", + "allowed_origins": [], + "client_id": "1J0eYQOAdKR6mWk9X1NPNqDXVqzgdwXZ", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -4660,32 +5313,28 @@ "lifetime_in_seconds": 36000, "secret_encoded": false }, + "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", - "app_type": "non_interactive", + "app_type": "regular_web", "grant_types": [ + "authorization_code", + "implicit", + "refresh_token", "client_credentials" ], + "web_origins": [], "custom_login_page_on": true }, { "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "Node App", - "allowed_clients": [], - "allowed_logout_urls": [], - "callbacks": [], - "client_metadata": {}, + "name": "Quickstarts API (Test Application)", + "client_metadata": { + "foo": "bar" + }, "cross_origin_authentication": false, "is_first_party": true, - "native_social_login": { - "apple": { - "enabled": false - }, - "facebook": { - "enabled": false - } - }, "oidc_conformant": true, "refresh_token": { "expiration_type": "non-expiring", @@ -4705,8 +5354,7 @@ "subject": "deprecated" } ], - "allowed_origins": [], - "client_id": "64zboz3cafsk4XjuU7qEBaDt2s8JPOBR", + "client_id": "YLxkngzwg8GRV4q93BtFqi0SIRreG0ef", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -4714,16 +5362,11 @@ "lifetime_in_seconds": 36000, "secret_encoded": false }, - "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", - "app_type": "regular_web", + "app_type": "non_interactive", "grant_types": [ - "authorization_code", - "implicit", - "refresh_token", "client_credentials" ], - "web_origins": [], "custom_login_page_on": true }, { @@ -4752,7 +5395,7 @@ "subject": "deprecated" } ], - "client_id": "opf7mQSSvNN4GPKmyvAw2kss1nBiiRwZ", + "client_id": "JSpoWije4CKwUe6oUAGhtiP2b6qZVBoq", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -4805,7 +5448,7 @@ "subject": "deprecated" } ], - "client_id": "239f4nV4lDD8GGjPXW1GTdCkw6oZsADw", + "client_id": "xiWT8cVGT10UQcryJCU2HfMzRcNN0Exb", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -4865,7 +5508,7 @@ "subject": "deprecated" } ], - "client_id": "CHMRuf4boUbwt5MZC7orUElirrAk1SoY", + "client_id": "ob4KTYmPNjtAxiUSFLuRlhhRtmWUuU9h", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -4884,111 +5527,387 @@ "web_origins": [ "http://localhost:3000" ], - "custom_login_page_on": true + "custom_login_page_on": true + }, + { + "tenant": "auth0-deploy-cli-e2e", + "global": false, + "is_token_endpoint_ip_header_trusted": false, + "name": "auth0-deploy-cli-extension", + "allowed_clients": [], + "callbacks": [], + "client_metadata": {}, + "cross_origin_authentication": false, + "is_first_party": true, + "native_social_login": { + "apple": { + "enabled": false + }, + "facebook": { + "enabled": false + } + }, + "oidc_conformant": true, + "refresh_token": { + "expiration_type": "non-expiring", + "leeway": 0, + "infinite_token_lifetime": true, + "infinite_idle_token_lifetime": true, + "token_lifetime": 31557600, + "idle_token_lifetime": 2592000, + "rotation_type": "non-rotating" + }, + "sso_disabled": false, + "cross_origin_auth": false, + "signing_keys": [ + { + "cert": "[REDACTED]", + "pkcs7": "[REDACTED]", + "subject": "deprecated" + } + ], + "client_id": "u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek", + "callback_url_template": false, + "client_secret": "[REDACTED]", + "jwt_configuration": { + "alg": "RS256", + "lifetime_in_seconds": 36000, + "secret_encoded": false + }, + "client_aliases": [], + "token_endpoint_auth_method": "client_secret_post", + "app_type": "non_interactive", + "grant_types": [ + "client_credentials" + ], + "custom_login_page_on": true + }, + { + "tenant": "auth0-deploy-cli-e2e", + "global": true, + "callbacks": [], + "is_first_party": true, + "name": "All Applications", + "refresh_token": { + "expiration_type": "non-expiring", + "leeway": 0, + "infinite_token_lifetime": true, + "infinite_idle_token_lifetime": true, + "token_lifetime": 2592000, + "idle_token_lifetime": 1296000, + "rotation_type": "non-rotating" + }, + "owners": [ + "mr|samlp|okta|will.vedder@auth0.com", + "mr|google-oauth2|102002633619863830825", + "mr|samlp|okta|frederik.prijck@auth0.com", + "mr|google-oauth2|109614534713742077035", + "mr|google-oauth2|116771660953104383819", + "mr|google-oauth2|112839029247827700155", + "mr|samlp|okta|ewan.harris@auth0.com" + ], + "custom_login_page": "TEST123\n", + "cross_origin_authentication": true, + "signing_keys": [ + { + "cert": "[REDACTED]", + "pkcs7": "[REDACTED]", + "subject": "deprecated" + } + ], + "client_id": "Isi93ibGHIGwmdYjsLwTOn7Gu7nwxU3V", + "client_secret": "[REDACTED]", + "custom_login_page_on": true + } + ] + }, + "rawHeaders": [], + "responseIsBinary": false + }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "GET", + "path": "/api/v2/client-grants?take=50", + "body": "", + "status": 200, + "response": { + "client_grants": [ + { + "id": "cgr_PtCL12zii7M5JOSk", + "client_id": "ILYi0cNQo9QFRhPu9x1LwaKpfJuxqvlQ", + "audience": "https://auth0-deploy-cli-e2e.us.auth0.com/api/v2/", + "scope": [ + "read:client_grants", + "create:client_grants", + "delete:client_grants", + "update:client_grants", + "read:users", + "update:users", + "delete:users", + "create:users", + "read:users_app_metadata", + "update:users_app_metadata", + "delete:users_app_metadata", + "create:users_app_metadata", + "read:user_custom_blocks", + "create:user_custom_blocks", + "delete:user_custom_blocks", + "create:user_tickets", + "read:clients", + "update:clients", + "delete:clients", + "create:clients", + "read:client_keys", + "update:client_keys", + "delete:client_keys", + "create:client_keys", + "read:connections", + "update:connections", + "delete:connections", + "create:connections", + "read:resource_servers", + "update:resource_servers", + "delete:resource_servers", + "create:resource_servers", + "read:device_credentials", + "update:device_credentials", + "delete:device_credentials", + "create:device_credentials", + "read:rules", + "update:rules", + "delete:rules", + "create:rules", + "read:rules_configs", + "update:rules_configs", + "delete:rules_configs", + "read:hooks", + "update:hooks", + "delete:hooks", + "create:hooks", + "read:actions", + "update:actions", + "delete:actions", + "create:actions", + "read:email_provider", + "update:email_provider", + "delete:email_provider", + "create:email_provider", + "blacklist:tokens", + "read:stats", + "read:insights", + "read:tenant_settings", + "update:tenant_settings", + "read:logs", + "read:logs_users", + "read:shields", + "create:shields", + "update:shields", + "delete:shields", + "read:anomaly_blocks", + "delete:anomaly_blocks", + "update:triggers", + "read:triggers", + "read:grants", + "delete:grants", + "read:guardian_factors", + "update:guardian_factors", + "read:guardian_enrollments", + "delete:guardian_enrollments", + "create:guardian_enrollment_tickets", + "read:user_idp_tokens", + "create:passwords_checking_job", + "delete:passwords_checking_job", + "read:custom_domains", + "delete:custom_domains", + "create:custom_domains", + "update:custom_domains", + "read:email_templates", + "create:email_templates", + "update:email_templates", + "read:mfa_policies", + "update:mfa_policies", + "read:roles", + "create:roles", + "delete:roles", + "update:roles", + "read:prompts", + "update:prompts", + "read:branding", + "update:branding", + "delete:branding", + "read:log_streams", + "create:log_streams", + "delete:log_streams", + "update:log_streams", + "create:signing_keys", + "read:signing_keys", + "update:signing_keys", + "read:limits", + "update:limits", + "create:role_members", + "read:role_members", + "delete:role_members", + "read:entitlements", + "read:attack_protection", + "update:attack_protection", + "read:organizations", + "update:organizations", + "create:organizations", + "delete:organizations", + "create:organization_members", + "read:organization_members", + "delete:organization_members", + "create:organization_connections", + "read:organization_connections", + "update:organization_connections", + "delete:organization_connections", + "create:organization_member_roles", + "read:organization_member_roles", + "delete:organization_member_roles", + "create:organization_invitations", + "read:organization_invitations", + "delete:organization_invitations" + ], + "subject_type": "client" }, { - "tenant": "auth0-deploy-cli-e2e", - "global": false, - "is_token_endpoint_ip_header_trusted": false, - "name": "auth0-deploy-cli-extension", - "allowed_clients": [], - "callbacks": [], - "client_metadata": {}, - "cross_origin_authentication": false, - "is_first_party": true, - "native_social_login": { - "apple": { - "enabled": false - }, - "facebook": { - "enabled": false - } - }, - "oidc_conformant": true, - "refresh_token": { - "expiration_type": "non-expiring", - "leeway": 0, - "infinite_token_lifetime": true, - "infinite_idle_token_lifetime": true, - "token_lifetime": 31557600, - "idle_token_lifetime": 2592000, - "rotation_type": "non-rotating" - }, - "sso_disabled": false, - "cross_origin_auth": false, - "signing_keys": [ - { - "cert": "[REDACTED]", - "pkcs7": "[REDACTED]", - "subject": "deprecated" - } - ], - "client_id": "us81QDRt9VL05XL6CimD66FYSCFO2URV", - "callback_url_template": false, - "client_secret": "[REDACTED]", - "jwt_configuration": { - "alg": "RS256", - "lifetime_in_seconds": 36000, - "secret_encoded": false - }, - "client_aliases": [], - "token_endpoint_auth_method": "client_secret_post", - "app_type": "non_interactive", - "grant_types": [ - "client_credentials" + "id": "cgr_X9eWK7l92bqAY4ej", + "client_id": "JSpoWije4CKwUe6oUAGhtiP2b6qZVBoq", + "audience": "https://auth0-deploy-cli-e2e.us.auth0.com/api/v2/", + "scope": [ + "read:client_grants", + "create:client_grants", + "delete:client_grants", + "update:client_grants", + "read:users", + "update:users", + "delete:users", + "create:users", + "read:users_app_metadata", + "update:users_app_metadata", + "delete:users_app_metadata", + "create:users_app_metadata", + "read:user_custom_blocks", + "create:user_custom_blocks", + "delete:user_custom_blocks", + "create:user_tickets", + "read:clients", + "update:clients", + "delete:clients", + "create:clients", + "read:client_keys", + "update:client_keys", + "delete:client_keys", + "create:client_keys", + "read:connections", + "update:connections", + "delete:connections", + "create:connections", + "read:resource_servers", + "update:resource_servers", + "delete:resource_servers", + "create:resource_servers", + "read:device_credentials", + "update:device_credentials", + "delete:device_credentials", + "create:device_credentials", + "read:rules", + "update:rules", + "delete:rules", + "create:rules", + "read:rules_configs", + "update:rules_configs", + "delete:rules_configs", + "read:hooks", + "update:hooks", + "delete:hooks", + "create:hooks", + "read:actions", + "update:actions", + "delete:actions", + "create:actions", + "read:email_provider", + "update:email_provider", + "delete:email_provider", + "create:email_provider", + "blacklist:tokens", + "read:stats", + "read:insights", + "read:tenant_settings", + "update:tenant_settings", + "read:logs", + "read:logs_users", + "read:shields", + "create:shields", + "update:shields", + "delete:shields", + "read:anomaly_blocks", + "delete:anomaly_blocks", + "update:triggers", + "read:triggers", + "read:grants", + "delete:grants", + "read:guardian_factors", + "update:guardian_factors", + "read:guardian_enrollments", + "delete:guardian_enrollments", + "create:guardian_enrollment_tickets", + "read:user_idp_tokens", + "create:passwords_checking_job", + "delete:passwords_checking_job", + "read:custom_domains", + "delete:custom_domains", + "create:custom_domains", + "update:custom_domains", + "read:email_templates", + "create:email_templates", + "update:email_templates", + "read:mfa_policies", + "update:mfa_policies", + "read:roles", + "create:roles", + "delete:roles", + "update:roles", + "read:prompts", + "update:prompts", + "read:branding", + "update:branding", + "delete:branding", + "read:log_streams", + "create:log_streams", + "delete:log_streams", + "update:log_streams", + "create:signing_keys", + "read:signing_keys", + "update:signing_keys", + "read:limits", + "update:limits", + "create:role_members", + "read:role_members", + "delete:role_members", + "read:entitlements", + "read:attack_protection", + "update:attack_protection", + "read:organizations", + "update:organizations", + "create:organizations", + "delete:organizations", + "create:organization_members", + "read:organization_members", + "delete:organization_members", + "create:organization_connections", + "read:organization_connections", + "update:organization_connections", + "delete:organization_connections", + "create:organization_member_roles", + "read:organization_member_roles", + "delete:organization_member_roles", + "create:organization_invitations", + "read:organization_invitations", + "delete:organization_invitations" ], - "custom_login_page_on": true + "subject_type": "client" }, - { - "tenant": "auth0-deploy-cli-e2e", - "global": true, - "callbacks": [], - "is_first_party": true, - "name": "All Applications", - "refresh_token": { - "expiration_type": "non-expiring", - "leeway": 0, - "infinite_token_lifetime": true, - "infinite_idle_token_lifetime": true, - "token_lifetime": 2592000, - "idle_token_lifetime": 1296000, - "rotation_type": "non-rotating" - }, - "owners": [ - "mr|samlp|okta|will.vedder@auth0.com", - "mr|google-oauth2|102002633619863830825", - "mr|samlp|okta|frederik.prijck@auth0.com", - "mr|google-oauth2|109614534713742077035", - "mr|google-oauth2|116771660953104383819", - "mr|google-oauth2|112839029247827700155", - "mr|samlp|okta|ewan.harris@auth0.com" - ], - "custom_login_page": "TEST123\n", - "cross_origin_authentication": true, - "signing_keys": [ - { - "cert": "[REDACTED]", - "pkcs7": "[REDACTED]", - "subject": "deprecated" - } - ], - "client_id": "Isi93ibGHIGwmdYjsLwTOn7Gu7nwxU3V", - "client_secret": "[REDACTED]", - "custom_login_page_on": true - } - ] - }, - "rawHeaders": [], - "responseIsBinary": false - }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "GET", - "path": "/api/v2/client-grants?take=50", - "body": "", - "status": 200, - "response": { - "client_grants": [ { "id": "cgr_pbwejzhwoujrsNE8", "client_id": "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE", @@ -5236,11 +6155,9 @@ }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "POST", - "path": "/api/v2/client-grants", + "method": "PATCH", + "path": "/api/v2/client-grants/cgr_X9eWK7l92bqAY4ej", "body": { - "client_id": "opf7mQSSvNN4GPKmyvAw2kss1nBiiRwZ", - "audience": "https://auth0-deploy-cli-e2e.us.auth0.com/api/v2/", "scope": [ "read:client_grants", "create:client_grants", @@ -5374,10 +6291,10 @@ "delete:organization_invitations" ] }, - "status": 201, + "status": 200, "response": { - "id": "cgr_qqzFbf84O1PYlz85", - "client_id": "opf7mQSSvNN4GPKmyvAw2kss1nBiiRwZ", + "id": "cgr_X9eWK7l92bqAY4ej", + "client_id": "JSpoWije4CKwUe6oUAGhtiP2b6qZVBoq", "audience": "https://auth0-deploy-cli-e2e.us.auth0.com/api/v2/", "scope": [ "read:client_grants", @@ -5518,11 +6435,9 @@ }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "POST", - "path": "/api/v2/client-grants", + "method": "PATCH", + "path": "/api/v2/client-grants/cgr_PtCL12zii7M5JOSk", "body": { - "client_id": "nY1tm1XI15kWINhYVVSpAFUFabzP2KnU", - "audience": "https://auth0-deploy-cli-e2e.us.auth0.com/api/v2/", "scope": [ "read:client_grants", "create:client_grants", @@ -5656,10 +6571,10 @@ "delete:organization_invitations" ] }, - "status": 201, + "status": 200, "response": { - "id": "cgr_JvwOhGczRQdyMuXU", - "client_id": "nY1tm1XI15kWINhYVVSpAFUFabzP2KnU", + "id": "cgr_PtCL12zii7M5JOSk", + "client_id": "ILYi0cNQo9QFRhPu9x1LwaKpfJuxqvlQ", "audience": "https://auth0-deploy-cli-e2e.us.auth0.com/api/v2/", "scope": [ "read:client_grants", @@ -5805,7 +6720,43 @@ "body": "", "status": 200, "response": { - "roles": [], + "roles": [ + { + "id": "rol_PKvBKcfS2zcMAkgp", + "name": "Admin", + "description": "Can read and write things" + }, + { + "id": "rol_cTfY9XEvtAmpFXPH", + "name": "Reader", + "description": "Can only read things" + }, + { + "id": "rol_3WV3UtInVufuNfJi", + "name": "read_only", + "description": "Read Only" + }, + { + "id": "rol_DXCz3b7aZUyS2DM1", + "name": "read_osnly", + "description": "Readz Only" + } + ], + "start": 0, + "limit": 100, + "total": 4 + }, + "rawHeaders": [], + "responseIsBinary": false + }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "GET", + "path": "/api/v2/roles/rol_PKvBKcfS2zcMAkgp/permissions?per_page=100&page=0&include_totals=true", + "body": "", + "status": 200, + "response": { + "permissions": [], "start": 0, "limit": 100, "total": 0 @@ -5815,15 +6766,60 @@ }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "POST", - "path": "/api/v2/roles", + "method": "GET", + "path": "/api/v2/roles/rol_cTfY9XEvtAmpFXPH/permissions?per_page=100&page=0&include_totals=true", + "body": "", + "status": 200, + "response": { + "permissions": [], + "start": 0, + "limit": 100, + "total": 0 + }, + "rawHeaders": [], + "responseIsBinary": false + }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "GET", + "path": "/api/v2/roles/rol_3WV3UtInVufuNfJi/permissions?per_page=100&page=0&include_totals=true", + "body": "", + "status": 200, + "response": { + "permissions": [], + "start": 0, + "limit": 100, + "total": 0 + }, + "rawHeaders": [], + "responseIsBinary": false + }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "GET", + "path": "/api/v2/roles/rol_DXCz3b7aZUyS2DM1/permissions?per_page=100&page=0&include_totals=true", + "body": "", + "status": 200, + "response": { + "permissions": [], + "start": 0, + "limit": 100, + "total": 0 + }, + "rawHeaders": [], + "responseIsBinary": false + }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "PATCH", + "path": "/api/v2/roles/rol_cTfY9XEvtAmpFXPH", "body": { "name": "Reader", "description": "Can only read things" }, "status": 200, "response": { - "id": "rol_emRXv9caeV0628xP", + "id": "rol_cTfY9XEvtAmpFXPH", "name": "Reader", "description": "Can only read things" }, @@ -5832,15 +6828,15 @@ }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "POST", - "path": "/api/v2/roles", + "method": "PATCH", + "path": "/api/v2/roles/rol_PKvBKcfS2zcMAkgp", "body": { "name": "Admin", "description": "Can read and write things" }, "status": 200, "response": { - "id": "rol_zLSOUhKBpduicccm", + "id": "rol_PKvBKcfS2zcMAkgp", "name": "Admin", "description": "Can read and write things" }, @@ -5849,15 +6845,15 @@ }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "POST", - "path": "/api/v2/roles", + "method": "PATCH", + "path": "/api/v2/roles/rol_3WV3UtInVufuNfJi", "body": { "name": "read_only", "description": "Read Only" }, "status": 200, "response": { - "id": "rol_9vtNxqnNMKpWkKpa", + "id": "rol_3WV3UtInVufuNfJi", "name": "read_only", "description": "Read Only" }, @@ -5866,15 +6862,15 @@ }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "POST", - "path": "/api/v2/roles", + "method": "PATCH", + "path": "/api/v2/roles/rol_DXCz3b7aZUyS2DM1", "body": { "name": "read_osnly", "description": "Readz Only" }, "status": 200, "response": { - "id": "rol_TmP4ioaCAdhP7Xfn", + "id": "rol_DXCz3b7aZUyS2DM1", "name": "read_osnly", "description": "Readz Only" }, @@ -5910,7 +6906,7 @@ "okta" ], "created_at": "2024-11-26T11:58:18.962Z", - "updated_at": "2026-02-13T10:28:38.477Z", + "updated_at": "2026-02-16T17:04:23.454Z", "branding": { "colors": { "primary": "#19aecc" @@ -5986,7 +6982,7 @@ "okta" ], "created_at": "2024-11-26T11:58:18.962Z", - "updated_at": "2026-02-13T10:31:29.709Z", + "updated_at": "2026-02-16T17:06:14.650Z", "branding": { "colors": { "primary": "#19aecc" @@ -5996,6 +6992,34 @@ "rawHeaders": [], "responseIsBinary": false }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "PATCH", + "path": "/api/v2/email-templates/welcome_email", + "body": { + "template": "welcome_email", + "body": "\n \n

Welcome!

\n \n\n", + "enabled": false, + "from": "", + "resultUrl": "https://example.com/welcome", + "subject": "Welcome", + "syntax": "liquid", + "urlLifetimeInSeconds": 3600 + }, + "status": 200, + "response": { + "template": "welcome_email", + "body": "\n \n

Welcome!

\n \n\n", + "from": "", + "resultUrl": "https://example.com/welcome", + "subject": "Welcome", + "syntax": "liquid", + "urlLifetimeInSeconds": 3600, + "enabled": false + }, + "rawHeaders": [], + "responseIsBinary": false + }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "PATCH", @@ -6024,28 +7048,29 @@ }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "PATCH", - "path": "/api/v2/email-templates/welcome_email", - "body": { - "template": "welcome_email", - "body": "\n \n

Welcome!

\n \n\n", - "enabled": false, - "from": "", - "resultUrl": "https://example.com/welcome", - "subject": "Welcome", - "syntax": "liquid", - "urlLifetimeInSeconds": 3600 - }, + "method": "GET", + "path": "/api/v2/organizations?take=50", + "body": "", "status": 200, "response": { - "template": "welcome_email", - "body": "\n \n

Welcome!

\n \n\n", - "from": "", - "resultUrl": "https://example.com/welcome", - "subject": "Welcome", - "syntax": "liquid", - "urlLifetimeInSeconds": 3600, - "enabled": false + "organizations": [ + { + "id": "org_EJAehbxTdxksCwoH", + "name": "org2", + "display_name": "Organization2" + }, + { + "id": "org_B2OPtUdlswlQ6G26", + "name": "org1", + "display_name": "Organization", + "branding": { + "colors": { + "page_background": "#fff5f5", + "primary": "#57ddff" + } + } + } + ] }, "rawHeaders": [], "responseIsBinary": false @@ -6131,54 +7156,9 @@ "enabled": false }, "facebook": { - "enabled": false - } - }, - "oidc_conformant": true, - "refresh_token": { - "expiration_type": "non-expiring", - "leeway": 0, - "infinite_token_lifetime": true, - "infinite_idle_token_lifetime": true, - "token_lifetime": 31557600, - "idle_token_lifetime": 2592000, - "rotation_type": "non-rotating" - }, - "sso_disabled": false, - "cross_origin_auth": false, - "signing_keys": [ - { - "cert": "[REDACTED]", - "pkcs7": "[REDACTED]", - "subject": "deprecated" - } - ], - "client_id": "nY1tm1XI15kWINhYVVSpAFUFabzP2KnU", - "callback_url_template": false, - "client_secret": "[REDACTED]", - "jwt_configuration": { - "alg": "RS256", - "lifetime_in_seconds": 36000, - "secret_encoded": false - }, - "client_aliases": [], - "token_endpoint_auth_method": "client_secret_post", - "app_type": "non_interactive", - "grant_types": [ - "client_credentials" - ], - "custom_login_page_on": true - }, - { - "tenant": "auth0-deploy-cli-e2e", - "global": false, - "is_token_endpoint_ip_header_trusted": false, - "name": "Quickstarts API (Test Application)", - "client_metadata": { - "foo": "bar" + "enabled": false + } }, - "cross_origin_authentication": false, - "is_first_party": true, "oidc_conformant": true, "refresh_token": { "expiration_type": "non-expiring", @@ -6198,7 +7178,7 @@ "subject": "deprecated" } ], - "client_id": "pgi4yAg7m0WBqvPyVS37vtLzDbM1DltY", + "client_id": "ILYi0cNQo9QFRhPu9x1LwaKpfJuxqvlQ", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -6206,6 +7186,7 @@ "lifetime_in_seconds": 36000, "secret_encoded": false }, + "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", "app_type": "non_interactive", "grant_types": [ @@ -6252,7 +7233,7 @@ } ], "allowed_origins": [], - "client_id": "64zboz3cafsk4XjuU7qEBaDt2s8JPOBR", + "client_id": "1J0eYQOAdKR6mWk9X1NPNqDXVqzgdwXZ", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -6272,6 +7253,50 @@ "web_origins": [], "custom_login_page_on": true }, + { + "tenant": "auth0-deploy-cli-e2e", + "global": false, + "is_token_endpoint_ip_header_trusted": false, + "name": "Quickstarts API (Test Application)", + "client_metadata": { + "foo": "bar" + }, + "cross_origin_authentication": false, + "is_first_party": true, + "oidc_conformant": true, + "refresh_token": { + "expiration_type": "non-expiring", + "leeway": 0, + "infinite_token_lifetime": true, + "infinite_idle_token_lifetime": true, + "token_lifetime": 31557600, + "idle_token_lifetime": 2592000, + "rotation_type": "non-rotating" + }, + "sso_disabled": false, + "cross_origin_auth": false, + "signing_keys": [ + { + "cert": "[REDACTED]", + "pkcs7": "[REDACTED]", + "subject": "deprecated" + } + ], + "client_id": "YLxkngzwg8GRV4q93BtFqi0SIRreG0ef", + "callback_url_template": false, + "client_secret": "[REDACTED]", + "jwt_configuration": { + "alg": "RS256", + "lifetime_in_seconds": 36000, + "secret_encoded": false + }, + "token_endpoint_auth_method": "client_secret_post", + "app_type": "non_interactive", + "grant_types": [ + "client_credentials" + ], + "custom_login_page_on": true + }, { "tenant": "auth0-deploy-cli-e2e", "global": false, @@ -6298,7 +7323,7 @@ "subject": "deprecated" } ], - "client_id": "opf7mQSSvNN4GPKmyvAw2kss1nBiiRwZ", + "client_id": "JSpoWije4CKwUe6oUAGhtiP2b6qZVBoq", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -6351,7 +7376,7 @@ "subject": "deprecated" } ], - "client_id": "239f4nV4lDD8GGjPXW1GTdCkw6oZsADw", + "client_id": "xiWT8cVGT10UQcryJCU2HfMzRcNN0Exb", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -6411,7 +7436,7 @@ "subject": "deprecated" } ], - "client_id": "CHMRuf4boUbwt5MZC7orUElirrAk1SoY", + "client_id": "ob4KTYmPNjtAxiUSFLuRlhhRtmWUuU9h", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -6469,7 +7494,7 @@ "subject": "deprecated" } ], - "client_id": "us81QDRt9VL05XL6CimD66FYSCFO2URV", + "client_id": "u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -6530,11 +7555,83 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/organizations?take=50", + "path": "/api/v2/organizations/org_EJAehbxTdxksCwoH/enabled_connections?page=0&per_page=50&include_totals=true", "body": "", "status": 200, "response": { - "organizations": [] + "enabled_connections": [], + "start": 0, + "limit": 0, + "total": 0 + }, + "rawHeaders": [], + "responseIsBinary": false + }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "GET", + "path": "/api/v2/organizations/org_EJAehbxTdxksCwoH/client-grants?page=0&per_page=50&include_totals=true", + "body": "", + "status": 200, + "response": { + "client_grants": [], + "start": 0, + "limit": 50, + "total": 0 + }, + "rawHeaders": [], + "responseIsBinary": false + }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "GET", + "path": "/api/v2/organizations/org_EJAehbxTdxksCwoH/discovery-domains?take=50", + "body": "", + "status": 200, + "response": { + "domains": [] + }, + "rawHeaders": [], + "responseIsBinary": false + }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "GET", + "path": "/api/v2/organizations/org_B2OPtUdlswlQ6G26/enabled_connections?page=0&per_page=50&include_totals=true", + "body": "", + "status": 200, + "response": { + "enabled_connections": [], + "start": 0, + "limit": 0, + "total": 0 + }, + "rawHeaders": [], + "responseIsBinary": false + }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "GET", + "path": "/api/v2/organizations/org_B2OPtUdlswlQ6G26/client-grants?page=0&per_page=50&include_totals=true", + "body": "", + "status": 200, + "response": { + "client_grants": [], + "start": 0, + "limit": 50, + "total": 0 + }, + "rawHeaders": [], + "responseIsBinary": false + }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "GET", + "path": "/api/v2/organizations/org_B2OPtUdlswlQ6G26/discovery-domains?take=50", + "body": "", + "status": 200, + "response": { + "domains": [] }, "rawHeaders": [], "responseIsBinary": false @@ -6548,7 +7645,7 @@ "response": { "connections": [ { - "id": "con_VNsNbuBrPhr3ffYU", + "id": "con_BaKydp194pu6KeMY", "options": { "mfa": { "active": true, @@ -6613,12 +7710,12 @@ "boo-baz-db-connection-test" ], "enabled_clients": [ - "64zboz3cafsk4XjuU7qEBaDt2s8JPOBR", - "us81QDRt9VL05XL6CimD66FYSCFO2URV" + "1J0eYQOAdKR6mWk9X1NPNqDXVqzgdwXZ", + "u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek" ] }, { - "id": "con_Bt0T677DiTx09JW3", + "id": "con_HqDvThofsvA7Ydc9", "options": { "email": true, "scope": [ @@ -6640,8 +7737,8 @@ "google-oauth2" ], "enabled_clients": [ - "239f4nV4lDD8GGjPXW1GTdCkw6oZsADw", - "us81QDRt9VL05XL6CimD66FYSCFO2URV" + "xiWT8cVGT10UQcryJCU2HfMzRcNN0Exb", + "u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek" ] } ] @@ -6658,8 +7755,8 @@ "response": { "client_grants": [ { - "id": "cgr_JvwOhGczRQdyMuXU", - "client_id": "nY1tm1XI15kWINhYVVSpAFUFabzP2KnU", + "id": "cgr_PtCL12zii7M5JOSk", + "client_id": "ILYi0cNQo9QFRhPu9x1LwaKpfJuxqvlQ", "audience": "https://auth0-deploy-cli-e2e.us.auth0.com/api/v2/", "scope": [ "read:client_grants", @@ -6796,8 +7893,8 @@ "subject_type": "client" }, { - "id": "cgr_pbwejzhwoujrsNE8", - "client_id": "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE", + "id": "cgr_X9eWK7l92bqAY4ej", + "client_id": "JSpoWije4CKwUe6oUAGhtiP2b6qZVBoq", "audience": "https://auth0-deploy-cli-e2e.us.auth0.com/api/v2/", "scope": [ "read:client_grants", @@ -6824,10 +7921,6 @@ "update:client_keys", "delete:client_keys", "create:client_keys", - "read:client_credentials", - "update:client_credentials", - "delete:client_credentials", - "create:client_credentials", "read:connections", "update:connections", "delete:connections", @@ -6917,19 +8010,10 @@ "read:entitlements", "read:attack_protection", "update:attack_protection", - "read:organizations_summary", - "create:authentication_methods", - "read:authentication_methods", - "update:authentication_methods", - "delete:authentication_methods", "read:organizations", "update:organizations", "create:organizations", "delete:organizations", - "read:organization_discovery_domains", - "update:organization_discovery_domains", - "create:organization_discovery_domains", - "delete:organization_discovery_domains", "create:organization_members", "read:organization_members", "delete:organization_members", @@ -6942,102 +8026,13 @@ "delete:organization_member_roles", "create:organization_invitations", "read:organization_invitations", - "delete:organization_invitations", - "read:scim_config", - "create:scim_config", - "update:scim_config", - "delete:scim_config", - "create:scim_token", - "read:scim_token", - "delete:scim_token", - "delete:phone_providers", - "create:phone_providers", - "read:phone_providers", - "update:phone_providers", - "delete:phone_templates", - "create:phone_templates", - "read:phone_templates", - "update:phone_templates", - "create:encryption_keys", - "read:encryption_keys", - "update:encryption_keys", - "delete:encryption_keys", - "read:sessions", - "update:sessions", - "delete:sessions", - "read:refresh_tokens", - "update:refresh_tokens", - "delete:refresh_tokens", - "create:self_service_profiles", - "read:self_service_profiles", - "update:self_service_profiles", - "delete:self_service_profiles", - "create:sso_access_tickets", - "delete:sso_access_tickets", - "read:forms", - "update:forms", - "delete:forms", - "create:forms", - "read:flows", - "update:flows", - "delete:flows", - "create:flows", - "read:flows_vault", - "read:flows_vault_connections", - "update:flows_vault_connections", - "delete:flows_vault_connections", - "create:flows_vault_connections", - "read:flows_executions", - "delete:flows_executions", - "read:connections_options", - "update:connections_options", - "read:self_service_profile_custom_texts", - "update:self_service_profile_custom_texts", - "create:network_acls", - "update:network_acls", - "read:network_acls", - "delete:network_acls", - "delete:vdcs_templates", - "read:vdcs_templates", - "create:vdcs_templates", - "update:vdcs_templates", - "create:custom_signing_keys", - "read:custom_signing_keys", - "update:custom_signing_keys", - "delete:custom_signing_keys", - "read:federated_connections_tokens", - "delete:federated_connections_tokens", - "create:user_attribute_profiles", - "read:user_attribute_profiles", - "update:user_attribute_profiles", - "delete:user_attribute_profiles", - "read:event_streams", - "create:event_streams", - "delete:event_streams", - "update:event_streams", - "read:event_deliveries", - "update:event_deliveries", - "create:connection_profiles", - "read:connection_profiles", - "update:connection_profiles", - "delete:connection_profiles", - "read:organization_client_grants", - "create:organization_client_grants", - "delete:organization_client_grants", - "create:token_exchange_profiles", - "read:token_exchange_profiles", - "update:token_exchange_profiles", - "delete:token_exchange_profiles", - "read:security_metrics", - "read:connections_keys", - "update:connections_keys", - "create:connections_keys" + "delete:organization_invitations" ], "subject_type": "client" }, { - "id": "cgr_qqzFbf84O1PYlz85", - "client_id": "opf7mQSSvNN4GPKmyvAw2kss1nBiiRwZ", + "id": "cgr_pbwejzhwoujrsNE8", + "client_id": "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE", "audience": "https://auth0-deploy-cli-e2e.us.auth0.com/api/v2/", "scope": [ "read:client_grants", @@ -7064,6 +8059,10 @@ "update:client_keys", "delete:client_keys", "create:client_keys", + "read:client_credentials", + "update:client_credentials", + "delete:client_credentials", + "create:client_credentials", "read:connections", "update:connections", "delete:connections", @@ -7153,10 +8152,19 @@ "read:entitlements", "read:attack_protection", "update:attack_protection", + "read:organizations_summary", + "create:authentication_methods", + "read:authentication_methods", + "update:authentication_methods", + "delete:authentication_methods", "read:organizations", "update:organizations", "create:organizations", "delete:organizations", + "read:organization_discovery_domains", + "update:organization_discovery_domains", + "create:organization_discovery_domains", + "delete:organization_discovery_domains", "create:organization_members", "read:organization_members", "delete:organization_members", @@ -7169,7 +8177,96 @@ "delete:organization_member_roles", "create:organization_invitations", "read:organization_invitations", - "delete:organization_invitations" + "delete:organization_invitations", + "read:scim_config", + "create:scim_config", + "update:scim_config", + "delete:scim_config", + "create:scim_token", + "read:scim_token", + "delete:scim_token", + "delete:phone_providers", + "create:phone_providers", + "read:phone_providers", + "update:phone_providers", + "delete:phone_templates", + "create:phone_templates", + "read:phone_templates", + "update:phone_templates", + "create:encryption_keys", + "read:encryption_keys", + "update:encryption_keys", + "delete:encryption_keys", + "read:sessions", + "update:sessions", + "delete:sessions", + "read:refresh_tokens", + "update:refresh_tokens", + "delete:refresh_tokens", + "create:self_service_profiles", + "read:self_service_profiles", + "update:self_service_profiles", + "delete:self_service_profiles", + "create:sso_access_tickets", + "delete:sso_access_tickets", + "read:forms", + "update:forms", + "delete:forms", + "create:forms", + "read:flows", + "update:flows", + "delete:flows", + "create:flows", + "read:flows_vault", + "read:flows_vault_connections", + "update:flows_vault_connections", + "delete:flows_vault_connections", + "create:flows_vault_connections", + "read:flows_executions", + "delete:flows_executions", + "read:connections_options", + "update:connections_options", + "read:self_service_profile_custom_texts", + "update:self_service_profile_custom_texts", + "create:network_acls", + "update:network_acls", + "read:network_acls", + "delete:network_acls", + "delete:vdcs_templates", + "read:vdcs_templates", + "create:vdcs_templates", + "update:vdcs_templates", + "create:custom_signing_keys", + "read:custom_signing_keys", + "update:custom_signing_keys", + "delete:custom_signing_keys", + "read:federated_connections_tokens", + "delete:federated_connections_tokens", + "create:user_attribute_profiles", + "read:user_attribute_profiles", + "update:user_attribute_profiles", + "delete:user_attribute_profiles", + "read:event_streams", + "create:event_streams", + "delete:event_streams", + "update:event_streams", + "read:event_deliveries", + "update:event_deliveries", + "create:connection_profiles", + "read:connection_profiles", + "update:connection_profiles", + "delete:connection_profiles", + "read:organization_client_grants", + "create:organization_client_grants", + "delete:organization_client_grants", + "create:token_exchange_profiles", + "read:token_exchange_profiles", + "update:token_exchange_profiles", + "delete:token_exchange_profiles", + "read:security_metrics", + "read:connections_keys", + "update:connections_keys", + "create:connections_keys" ], "subject_type": "client" } @@ -7281,7 +8378,7 @@ "subject": "deprecated" } ], - "client_id": "nY1tm1XI15kWINhYVVSpAFUFabzP2KnU", + "client_id": "ILYi0cNQo9QFRhPu9x1LwaKpfJuxqvlQ", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -7301,12 +8398,21 @@ "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "Quickstarts API (Test Application)", - "client_metadata": { - "foo": "bar" - }, + "name": "Node App", + "allowed_clients": [], + "allowed_logout_urls": [], + "callbacks": [], + "client_metadata": {}, "cross_origin_authentication": false, "is_first_party": true, + "native_social_login": { + "apple": { + "enabled": false + }, + "facebook": { + "enabled": false + } + }, "oidc_conformant": true, "refresh_token": { "expiration_type": "non-expiring", @@ -7326,7 +8432,8 @@ "subject": "deprecated" } ], - "client_id": "pgi4yAg7m0WBqvPyVS37vtLzDbM1DltY", + "allowed_origins": [], + "client_id": "1J0eYQOAdKR6mWk9X1NPNqDXVqzgdwXZ", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -7334,32 +8441,28 @@ "lifetime_in_seconds": 36000, "secret_encoded": false }, + "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", - "app_type": "non_interactive", + "app_type": "regular_web", "grant_types": [ + "authorization_code", + "implicit", + "refresh_token", "client_credentials" ], + "web_origins": [], "custom_login_page_on": true }, { "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "Node App", - "allowed_clients": [], - "allowed_logout_urls": [], - "callbacks": [], - "client_metadata": {}, + "name": "Quickstarts API (Test Application)", + "client_metadata": { + "foo": "bar" + }, "cross_origin_authentication": false, "is_first_party": true, - "native_social_login": { - "apple": { - "enabled": false - }, - "facebook": { - "enabled": false - } - }, "oidc_conformant": true, "refresh_token": { "expiration_type": "non-expiring", @@ -7379,8 +8482,7 @@ "subject": "deprecated" } ], - "allowed_origins": [], - "client_id": "64zboz3cafsk4XjuU7qEBaDt2s8JPOBR", + "client_id": "YLxkngzwg8GRV4q93BtFqi0SIRreG0ef", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -7388,16 +8490,11 @@ "lifetime_in_seconds": 36000, "secret_encoded": false }, - "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", - "app_type": "regular_web", + "app_type": "non_interactive", "grant_types": [ - "authorization_code", - "implicit", - "refresh_token", "client_credentials" ], - "web_origins": [], "custom_login_page_on": true }, { @@ -7426,7 +8523,7 @@ "subject": "deprecated" } ], - "client_id": "opf7mQSSvNN4GPKmyvAw2kss1nBiiRwZ", + "client_id": "JSpoWije4CKwUe6oUAGhtiP2b6qZVBoq", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -7479,7 +8576,7 @@ "subject": "deprecated" } ], - "client_id": "239f4nV4lDD8GGjPXW1GTdCkw6oZsADw", + "client_id": "xiWT8cVGT10UQcryJCU2HfMzRcNN0Exb", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -7539,7 +8636,7 @@ "subject": "deprecated" } ], - "client_id": "CHMRuf4boUbwt5MZC7orUElirrAk1SoY", + "client_id": "ob4KTYmPNjtAxiUSFLuRlhhRtmWUuU9h", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -7597,7 +8694,7 @@ "subject": "deprecated" } ], - "client_id": "us81QDRt9VL05XL6CimD66FYSCFO2URV", + "client_id": "u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -7657,27 +8754,9 @@ }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "POST", - "path": "/api/v2/organizations", - "body": { - "name": "org2", - "display_name": "Organization2" - }, - "status": 201, - "response": { - "id": "org_ebYcZ8jNdmN7DKyj", - "display_name": "Organization2", - "name": "org2" - }, - "rawHeaders": [], - "responseIsBinary": false - }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "POST", - "path": "/api/v2/organizations", + "method": "PATCH", + "path": "/api/v2/organizations/org_B2OPtUdlswlQ6G26", "body": { - "name": "org1", "branding": { "colors": { "page_background": "#fff5f5", @@ -7686,62 +8765,113 @@ }, "display_name": "Organization" }, - "status": 201, + "status": 200, "response": { - "id": "org_6xyIAQ9SugnfVEHy", - "display_name": "Organization", - "name": "org1", "branding": { "colors": { "page_background": "#fff5f5", "primary": "#57ddff" } - } + }, + "id": "org_B2OPtUdlswlQ6G26", + "display_name": "Organization", + "name": "org1" }, "rawHeaders": [], "responseIsBinary": false }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "GET", - "path": "/api/v2/log-streams", - "body": "", + "method": "PATCH", + "path": "/api/v2/organizations/org_EJAehbxTdxksCwoH", + "body": { + "display_name": "Organization2" + }, "status": 200, - "response": [], + "response": { + "id": "org_EJAehbxTdxksCwoH", + "display_name": "Organization2", + "name": "org2" + }, "rawHeaders": [], "responseIsBinary": false }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "POST", + "method": "GET", "path": "/api/v2/log-streams", - "body": { - "name": "Suspended DD Log Stream", - "sink": { - "datadogApiKey": "some-sensitive-api-key", - "datadogRegion": "us" - }, - "type": "datadog" - }, + "body": "", "status": 200, - "response": { - "id": "lst_0000000000026540", - "name": "Suspended DD Log Stream", - "type": "datadog", - "status": "active", - "sink": { - "datadogApiKey": "some-sensitive-api-key", - "datadogRegion": "us" + "response": [ + { + "id": "lst_0000000000026646", + "name": "Suspended DD Log Stream", + "type": "datadog", + "status": "active", + "sink": { + "datadogApiKey": "some-sensitive-api-key", + "datadogRegion": "us" + }, + "isPriority": false }, - "isPriority": false - }, + { + "id": "lst_0000000000026647", + "name": "Amazon EventBridge", + "type": "eventbridge", + "status": "active", + "sink": { + "awsAccountId": "123456789012", + "awsRegion": "us-east-2", + "awsPartnerEventSource": "aws.partner/auth0.com/auth0-deploy-cli-e2e-86b53d0c-327c-4b51-9536-89175a2b42ab/auth0.logs" + }, + "filters": [ + { + "type": "category", + "name": "auth.login.success" + }, + { + "type": "category", + "name": "auth.login.notification" + }, + { + "type": "category", + "name": "auth.login.fail" + }, + { + "type": "category", + "name": "auth.signup.success" + }, + { + "type": "category", + "name": "auth.logout.success" + }, + { + "type": "category", + "name": "auth.logout.fail" + }, + { + "type": "category", + "name": "auth.silent_auth.fail" + }, + { + "type": "category", + "name": "auth.silent_auth.success" + }, + { + "type": "category", + "name": "auth.token_exchange.fail" + } + ], + "isPriority": false + } + ], "rawHeaders": [], "responseIsBinary": false }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "POST", - "path": "/api/v2/log-streams", + "method": "PATCH", + "path": "/api/v2/log-streams/lst_0000000000026647", "body": { "name": "Amazon EventBridge", "filters": [ @@ -7782,22 +8912,18 @@ "name": "auth.token_exchange.fail" } ], - "sink": { - "awsAccountId": "123456789012", - "awsRegion": "us-east-2" - }, - "type": "eventbridge" + "status": "active" }, "status": 200, "response": { - "id": "lst_0000000000026541", + "id": "lst_0000000000026647", "name": "Amazon EventBridge", "type": "eventbridge", "status": "active", "sink": { "awsAccountId": "123456789012", "awsRegion": "us-east-2", - "awsPartnerEventSource": "aws.partner/auth0.com/auth0-deploy-cli-e2e-5444af94-ad9d-454b-87a6-af6e31416210/auth0.logs" + "awsPartnerEventSource": "aws.partner/auth0.com/auth0-deploy-cli-e2e-86b53d0c-327c-4b51-9536-89175a2b42ab/auth0.logs" }, "filters": [ { @@ -7842,6 +8968,32 @@ "rawHeaders": [], "responseIsBinary": false }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "PATCH", + "path": "/api/v2/log-streams/lst_0000000000026646", + "body": { + "name": "Suspended DD Log Stream", + "sink": { + "datadogApiKey": "some-sensitive-api-key", + "datadogRegion": "us" + } + }, + "status": 200, + "response": { + "id": "lst_0000000000026646", + "name": "Suspended DD Log Stream", + "type": "datadog", + "status": "active", + "sink": { + "datadogApiKey": "some-sensitive-api-key", + "datadogRegion": "us" + }, + "isPriority": false + }, + "rawHeaders": [], + "responseIsBinary": false + }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", @@ -7888,7 +9040,7 @@ "name": "Blank-form", "flow_count": 0, "created_at": "2024-11-26T11:58:18.187Z", - "updated_at": "2026-02-13T10:28:49.644Z" + "updated_at": "2026-02-16T17:04:30.254Z" } ] }, @@ -7959,7 +9111,7 @@ } }, "created_at": "2024-11-26T11:58:18.187Z", - "updated_at": "2026-02-13T10:28:49.644Z" + "updated_at": "2026-02-16T17:04:30.254Z" }, "rawHeaders": [], "responseIsBinary": false @@ -8084,7 +9236,7 @@ } }, "created_at": "2024-11-26T11:58:18.187Z", - "updated_at": "2026-02-13T10:31:36.283Z" + "updated_at": "2026-02-16T17:06:23.605Z" }, "rawHeaders": [], "responseIsBinary": false @@ -9396,7 +10548,7 @@ "subject": "deprecated" } ], - "client_id": "nY1tm1XI15kWINhYVVSpAFUFabzP2KnU", + "client_id": "ILYi0cNQo9QFRhPu9x1LwaKpfJuxqvlQ", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -9416,12 +10568,21 @@ "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "Quickstarts API (Test Application)", - "client_metadata": { - "foo": "bar" - }, + "name": "Node App", + "allowed_clients": [], + "allowed_logout_urls": [], + "callbacks": [], + "client_metadata": {}, "cross_origin_authentication": false, "is_first_party": true, + "native_social_login": { + "apple": { + "enabled": false + }, + "facebook": { + "enabled": false + } + }, "oidc_conformant": true, "refresh_token": { "expiration_type": "non-expiring", @@ -9441,7 +10602,8 @@ "subject": "deprecated" } ], - "client_id": "pgi4yAg7m0WBqvPyVS37vtLzDbM1DltY", + "allowed_origins": [], + "client_id": "1J0eYQOAdKR6mWk9X1NPNqDXVqzgdwXZ", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -9449,32 +10611,28 @@ "lifetime_in_seconds": 36000, "secret_encoded": false }, + "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", - "app_type": "non_interactive", + "app_type": "regular_web", "grant_types": [ + "authorization_code", + "implicit", + "refresh_token", "client_credentials" ], + "web_origins": [], "custom_login_page_on": true }, { "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "Node App", - "allowed_clients": [], - "allowed_logout_urls": [], - "callbacks": [], - "client_metadata": {}, + "name": "Quickstarts API (Test Application)", + "client_metadata": { + "foo": "bar" + }, "cross_origin_authentication": false, "is_first_party": true, - "native_social_login": { - "apple": { - "enabled": false - }, - "facebook": { - "enabled": false - } - }, "oidc_conformant": true, "refresh_token": { "expiration_type": "non-expiring", @@ -9494,8 +10652,7 @@ "subject": "deprecated" } ], - "allowed_origins": [], - "client_id": "64zboz3cafsk4XjuU7qEBaDt2s8JPOBR", + "client_id": "YLxkngzwg8GRV4q93BtFqi0SIRreG0ef", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -9503,16 +10660,11 @@ "lifetime_in_seconds": 36000, "secret_encoded": false }, - "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", - "app_type": "regular_web", + "app_type": "non_interactive", "grant_types": [ - "authorization_code", - "implicit", - "refresh_token", "client_credentials" ], - "web_origins": [], "custom_login_page_on": true }, { @@ -9541,7 +10693,7 @@ "subject": "deprecated" } ], - "client_id": "opf7mQSSvNN4GPKmyvAw2kss1nBiiRwZ", + "client_id": "JSpoWije4CKwUe6oUAGhtiP2b6qZVBoq", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -9594,7 +10746,7 @@ "subject": "deprecated" } ], - "client_id": "239f4nV4lDD8GGjPXW1GTdCkw6oZsADw", + "client_id": "xiWT8cVGT10UQcryJCU2HfMzRcNN0Exb", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -9654,7 +10806,7 @@ "subject": "deprecated" } ], - "client_id": "CHMRuf4boUbwt5MZC7orUElirrAk1SoY", + "client_id": "ob4KTYmPNjtAxiUSFLuRlhhRtmWUuU9h", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -9712,7 +10864,7 @@ "subject": "deprecated" } ], - "client_id": "us81QDRt9VL05XL6CimD66FYSCFO2URV", + "client_id": "u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -9736,7 +10888,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "DELETE", - "path": "/api/v2/clients/nY1tm1XI15kWINhYVVSpAFUFabzP2KnU", + "path": "/api/v2/clients/ILYi0cNQo9QFRhPu9x1LwaKpfJuxqvlQ", "body": "", "status": 204, "response": "", @@ -9746,7 +10898,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "DELETE", - "path": "/api/v2/clients/64zboz3cafsk4XjuU7qEBaDt2s8JPOBR", + "path": "/api/v2/clients/YLxkngzwg8GRV4q93BtFqi0SIRreG0ef", "body": "", "status": 204, "response": "", @@ -9756,7 +10908,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "DELETE", - "path": "/api/v2/clients/pgi4yAg7m0WBqvPyVS37vtLzDbM1DltY", + "path": "/api/v2/clients/1J0eYQOAdKR6mWk9X1NPNqDXVqzgdwXZ", "body": "", "status": 204, "response": "", @@ -9766,7 +10918,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "DELETE", - "path": "/api/v2/clients/opf7mQSSvNN4GPKmyvAw2kss1nBiiRwZ", + "path": "/api/v2/clients/JSpoWije4CKwUe6oUAGhtiP2b6qZVBoq", "body": "", "status": 204, "response": "", @@ -9776,7 +10928,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "DELETE", - "path": "/api/v2/clients/239f4nV4lDD8GGjPXW1GTdCkw6oZsADw", + "path": "/api/v2/clients/xiWT8cVGT10UQcryJCU2HfMzRcNN0Exb", "body": "", "status": 204, "response": "", @@ -9786,7 +10938,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "DELETE", - "path": "/api/v2/clients/CHMRuf4boUbwt5MZC7orUElirrAk1SoY", + "path": "/api/v2/clients/ob4KTYmPNjtAxiUSFLuRlhhRtmWUuU9h", "body": "", "status": 204, "response": "", @@ -9796,7 +10948,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "DELETE", - "path": "/api/v2/clients/us81QDRt9VL05XL6CimD66FYSCFO2URV", + "path": "/api/v2/clients/u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek", "body": "", "status": 204, "response": "", @@ -9867,7 +11019,7 @@ "subject": "/CN=auth0-deploy-cli-e2e.us.auth0.com" } ], - "client_id": "4R1cIUJb4tweu26ZLYAC8NGwhCzfPMcG", + "client_id": "45lhLMgSUCKLZoNp0TWgvSSre7JA1sDH", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -9889,7 +11041,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "PUT", - "path": "/api/v2/guardian/factors/recovery-code", + "path": "/api/v2/guardian/factors/otp", "body": { "enabled": false }, @@ -9903,7 +11055,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "PUT", - "path": "/api/v2/guardian/factors/otp", + "path": "/api/v2/guardian/factors/email", "body": { "enabled": false }, @@ -9917,7 +11069,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "PUT", - "path": "/api/v2/guardian/factors/sms", + "path": "/api/v2/guardian/factors/duo", "body": { "enabled": false }, @@ -9931,7 +11083,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "PUT", - "path": "/api/v2/guardian/factors/duo", + "path": "/api/v2/guardian/factors/webauthn-roaming", "body": { "enabled": false }, @@ -9945,7 +11097,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "PUT", - "path": "/api/v2/guardian/factors/webauthn-roaming", + "path": "/api/v2/guardian/factors/sms", "body": { "enabled": false }, @@ -9959,7 +11111,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "PUT", - "path": "/api/v2/guardian/factors/email", + "path": "/api/v2/guardian/factors/push-notification", "body": { "enabled": false }, @@ -9987,7 +11139,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "PUT", - "path": "/api/v2/guardian/factors/push-notification", + "path": "/api/v2/guardian/factors/recovery-code", "body": { "enabled": false }, @@ -10053,85 +11205,28 @@ }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "GET", - "path": "/api/v2/actions/actions?page=0&per_page=100", - "body": "", - "status": 200, - "response": { - "actions": [ - { - "id": "f6d8001b-0d9d-4d34-ae45-93b955fe4988", - "name": "My Custom Action", - "supported_triggers": [ - { - "id": "post-login", - "version": "v2" - } - ], - "created_at": "2026-02-13T10:31:09.258700512Z", - "updated_at": "2026-02-13T10:31:09.271659544Z", - "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", - "dependencies": [], - "runtime": "node18", - "status": "built", - "secrets": [], - "current_version": { - "id": "38bd0bef-bf9a-4207-8fc7-3fbdd852566a", - "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", - "runtime": "node18", - "status": "BUILT", - "number": 1, - "build_time": "2026-02-13T10:31:10.098695207Z", - "created_at": "2026-02-13T10:31:10.023173872Z", - "updated_at": "2026-02-13T10:31:10.100057575Z" - }, - "deployed_version": { - "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", - "dependencies": [], - "id": "38bd0bef-bf9a-4207-8fc7-3fbdd852566a", - "deployed": true, - "number": 1, - "built_at": "2026-02-13T10:31:10.098695207Z", - "secrets": [], - "status": "built", - "created_at": "2026-02-13T10:31:10.023173872Z", - "updated_at": "2026-02-13T10:31:10.100057575Z", - "runtime": "node18", - "supported_triggers": [ - { - "id": "post-login", - "version": "v2" - } - ] - }, - "all_changes_deployed": true - } + "method": "PATCH", + "path": "/api/v2/attack-protection/brute-force-protection", + "body": { + "enabled": true, + "shields": [ + "block", + "user_notification" ], - "total": 1, - "per_page": 100 + "mode": "count_per_identifier_and_ip", + "allowlist": [], + "max_attempts": 10 }, - "rawHeaders": [], - "responseIsBinary": false - }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "DELETE", - "path": "/api/v2/actions/actions/f6d8001b-0d9d-4d34-ae45-93b955fe4988?force=true", - "body": "", - "status": 204, - "response": "", - "rawHeaders": [], - "responseIsBinary": false - }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "GET", - "path": "/api/v2/actions/actions?page=0&per_page=100", - "body": "", "status": 200, "response": { - "actions": [], - "per_page": 100 + "enabled": true, + "shields": [ + "block", + "user_notification" + ], + "mode": "count_per_identifier_and_ip", + "allowlist": [], + "max_attempts": 10 }, "rawHeaders": [], "responseIsBinary": false @@ -10214,28 +11309,15 @@ }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "PATCH", - "path": "/api/v2/attack-protection/brute-force-protection", - "body": { - "enabled": true, - "shields": [ - "block", - "user_notification" - ], - "mode": "count_per_identifier_and_ip", - "allowlist": [], - "max_attempts": 10 - }, - "status": 200, + "method": "GET", + "path": "/api/v2/actions/modules?page=0&per_page=100", + "body": "", + "status": 403, "response": { - "enabled": true, - "shields": [ - "block", - "user_notification" - ], - "mode": "count_per_identifier_and_ip", - "allowlist": [], - "max_attempts": 10 + "statusCode": 403, + "error": "Forbidden", + "message": "This feature is not enabled for this tenant.", + "errorCode": "feature_not_enabled" }, "rawHeaders": [], "responseIsBinary": false @@ -10243,79 +11325,84 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/connections?take=50&strategy=auth0", + "path": "/api/v2/actions/actions?page=0&per_page=100", "body": "", "status": 200, "response": { - "connections": [ + "actions": [ { - "id": "con_VNsNbuBrPhr3ffYU", - "options": { - "mfa": { - "active": true, - "return_enroll_settings": true - }, - "import_mode": false, - "customScripts": { - "login": "function login(email, password, callback) {\n // This script should authenticate a user against the credentials stored in\n // your database.\n // It is executed when a user attempts to log in or immediately after signing\n // up (as a verification that the user was successfully signed up).\n //\n // Everything returned by this script will be set as part of the user profile\n // and will be visible by any of the tenant admins. Avoid adding attributes\n // with values such as passwords, keys, secrets, etc.\n //\n // The `password` parameter of this function is in plain text. It must be\n // hashed/salted to match whatever is stored in your database. For example:\n //\n // var bcrypt = require('bcrypt@0.8.5');\n // bcrypt.compare(password, dbPasswordHash, function(err, res)) { ... }\n //\n // There are three ways this script can finish:\n // 1. The user's credentials are valid. The returned user profile should be in\n // the following format: https://auth0.com/docs/users/normalized/auth0/normalized-user-profile-schema\n // var profile = {\n // user_id: ..., // user_id is mandatory\n // email: ...,\n // [...]\n // };\n // callback(null, profile);\n // 2. The user's credentials are invalid\n // callback(new WrongUsernameOrPasswordError(email, \"my error message\"));\n // 3. Something went wrong while trying to reach your database\n // callback(new Error(\"my error message\"));\n //\n // A list of Node.js modules which can be referenced is available here:\n //\n // https://tehsis.github.io/webtaskio-canirequire/\n console.log('AYYYYYE');\n\n const msg =\n 'Please implement the Login script for this database connection ' +\n 'at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n", - "create": "function create(user, callback) {\n // This script should create a user entry in your existing database. It will\n // be executed when a user attempts to sign up, or when a user is created\n // through the Auth0 dashboard or API.\n // When this script has finished executing, the Login script will be\n // executed immediately afterwards, to verify that the user was created\n // successfully.\n //\n // The user object will always contain the following properties:\n // * email: the user's email\n // * password: the password entered by the user, in plain text\n // * tenant: the name of this Auth0 account\n // * client_id: the client ID of the application where the user signed up, or\n // API key if created through the API or Auth0 dashboard\n // * connection: the name of this database connection\n //\n // There are three ways this script can finish:\n // 1. A user was successfully created\n // callback(null);\n // 2. This user already exists in your database\n // callback(new ValidationError(\"user_exists\", \"my error message\"));\n // 3. Something went wrong while trying to reach your database\n // callback(new Error(\"my error message\"));\n\n const msg =\n 'Please implement the Create script for this database connection ' +\n 'at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n", - "delete": "function remove(id, callback) {\n // This script remove a user from your existing database.\n // It is executed whenever a user is deleted from the API or Auth0 dashboard.\n //\n // There are two ways that this script can finish:\n // 1. The user was removed successfully:\n // callback(null);\n // 2. Something went wrong while trying to reach your database:\n // callback(new Error(\"my error message\"));\n\n const msg =\n 'Please implement the Delete script for this database ' +\n 'connection at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n", - "verify": "function verify(email, callback) {\n // This script should mark the current user's email address as verified in\n // your database.\n // It is executed whenever a user clicks the verification link sent by email.\n // These emails can be customized at https://manage.auth0.com/#/emails.\n // It is safe to assume that the user's email already exists in your database,\n // because verification emails, if enabled, are sent immediately after a\n // successful signup.\n //\n // There are two ways that this script can finish:\n // 1. The user's email was verified successfully\n // callback(null, true);\n // 2. Something went wrong while trying to reach your database:\n // callback(new Error(\"my error message\"));\n //\n // If an error is returned, it will be passed to the query string of the page\n // where the user is being redirected to after clicking the verification link.\n // For example, returning `callback(new Error(\"error\"))` and redirecting to\n // https://example.com would redirect to the following URL:\n // https://example.com?email=alice%40example.com&message=error&success=false\n\n const msg =\n 'Please implement the Verify script for this database connection ' +\n 'at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n", - "get_user": "function getByEmail(email, callback) {\n // This script should retrieve a user profile from your existing database,\n // without authenticating the user.\n // It is used to check if a user exists before executing flows that do not\n // require authentication (signup and password reset).\n //\n // There are three ways this script can finish:\n // 1. A user was successfully found. The profile should be in the following\n // format: https://auth0.com/docs/users/normalized/auth0/normalized-user-profile-schema.\n // callback(null, profile);\n // 2. A user was not found\n // callback(null);\n // 3. Something went wrong while trying to reach your database:\n // callback(new Error(\"my error message\"));\n\n const msg =\n 'Please implement the Get User script for this database connection ' +\n 'at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n", - "change_password": "function changePassword(email, newPassword, callback) {\n // This script should change the password stored for the current user in your\n // database. It is executed when the user clicks on the confirmation link\n // after a reset password request.\n // The content and behavior of password confirmation emails can be customized\n // here: https://manage.auth0.com/#/emails\n // The `newPassword` parameter of this function is in plain text. It must be\n // hashed/salted to match whatever is stored in your database.\n //\n // There are three ways that this script can finish:\n // 1. The user's password was updated successfully:\n // callback(null, true);\n // 2. The user's password was not updated:\n // callback(null, false);\n // 3. Something went wrong while trying to reach your database:\n // callback(new Error(\"my error message\"));\n //\n // If an error is returned, it will be passed to the query string of the page\n // where the user is being redirected to after clicking the confirmation link.\n // For example, returning `callback(new Error(\"error\"))` and redirecting to\n // https://example.com would redirect to the following URL:\n // https://example.com?email=alice%40example.com&message=error&success=false\n\n const msg =\n 'Please implement the Change Password script for this database ' +\n 'connection at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n" - }, - "disable_signup": false, - "passwordPolicy": "low", - "passkey_options": { - "challenge_ui": "both", - "local_enrollment_enabled": true, - "progressive_enrollment_enabled": true - }, - "password_history": { - "size": 5, - "enable": false - }, - "strategy_version": 2, - "requires_username": true, - "password_dictionary": { - "enable": true, - "dictionary": [] - }, - "authentication_methods": { - "passkey": { - "enabled": false - }, - "password": { - "enabled": true, - "api_behavior": "required", - "signup_behavior": "allow" - } - }, - "brute_force_protection": true, - "password_no_personal_info": { - "enable": true - }, - "password_complexity_options": { - "min_length": 8 - }, - "enabledDatabaseCustomization": true, - "disable_self_service_change_password": false - }, - "strategy": "auth0", - "name": "boo-baz-db-connection-test", - "is_domain_connection": false, - "authentication": { - "active": true + "id": "0c2cd65a-2ab4-4874-84bb-5b11136cc9ba", + "name": "My Custom Action", + "supported_triggers": [ + { + "id": "post-login", + "version": "v2" + } + ], + "created_at": "2026-02-16T17:04:08.035726715Z", + "updated_at": "2026-02-16T17:06:02.911548290Z", + "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", + "dependencies": [], + "runtime": "node18", + "status": "built", + "secrets": [], + "current_version": { + "id": "e7ac1206-af30-4a55-b534-09e940294d70", + "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", + "runtime": "node18", + "status": "BUILT", + "number": 2, + "build_time": "2026-02-16T17:06:03.800830330Z", + "created_at": "2026-02-16T17:06:03.727874574Z", + "updated_at": "2026-02-16T17:06:03.802024948Z" }, - "connected_accounts": { - "active": false + "deployed_version": { + "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", + "dependencies": [], + "id": "e7ac1206-af30-4a55-b534-09e940294d70", + "deployed": true, + "number": 2, + "built_at": "2026-02-16T17:06:03.800830330Z", + "secrets": [], + "status": "built", + "created_at": "2026-02-16T17:06:03.727874574Z", + "updated_at": "2026-02-16T17:06:03.802024948Z", + "runtime": "node18", + "supported_triggers": [ + { + "id": "post-login", + "version": "v2" + } + ] }, - "realms": [ - "boo-baz-db-connection-test" - ], - "enabled_clients": [] + "all_changes_deployed": true } - ] + ], + "total": 1, + "per_page": 100 + }, + "rawHeaders": [], + "responseIsBinary": false + }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "DELETE", + "path": "/api/v2/actions/actions/0c2cd65a-2ab4-4874-84bb-5b11136cc9ba?force=true", + "body": "", + "status": 204, + "response": "", + "rawHeaders": [], + "responseIsBinary": false + }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "GET", + "path": "/api/v2/actions/actions?page=0&per_page=100", + "body": "", + "status": 200, + "response": { + "actions": [], + "per_page": 100 }, "rawHeaders": [], "responseIsBinary": false @@ -10413,7 +11500,7 @@ "subject": "deprecated" } ], - "client_id": "4R1cIUJb4tweu26ZLYAC8NGwhCzfPMcG", + "client_id": "45lhLMgSUCKLZoNp0TWgvSSre7JA1sDH", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -10471,6 +11558,86 @@ "rawHeaders": [], "responseIsBinary": false }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "GET", + "path": "/api/v2/connections?take=50&strategy=auth0", + "body": "", + "status": 200, + "response": { + "connections": [ + { + "id": "con_BaKydp194pu6KeMY", + "options": { + "mfa": { + "active": true, + "return_enroll_settings": true + }, + "import_mode": false, + "customScripts": { + "login": "function login(email, password, callback) {\n // This script should authenticate a user against the credentials stored in\n // your database.\n // It is executed when a user attempts to log in or immediately after signing\n // up (as a verification that the user was successfully signed up).\n //\n // Everything returned by this script will be set as part of the user profile\n // and will be visible by any of the tenant admins. Avoid adding attributes\n // with values such as passwords, keys, secrets, etc.\n //\n // The `password` parameter of this function is in plain text. It must be\n // hashed/salted to match whatever is stored in your database. For example:\n //\n // var bcrypt = require('bcrypt@0.8.5');\n // bcrypt.compare(password, dbPasswordHash, function(err, res)) { ... }\n //\n // There are three ways this script can finish:\n // 1. The user's credentials are valid. The returned user profile should be in\n // the following format: https://auth0.com/docs/users/normalized/auth0/normalized-user-profile-schema\n // var profile = {\n // user_id: ..., // user_id is mandatory\n // email: ...,\n // [...]\n // };\n // callback(null, profile);\n // 2. The user's credentials are invalid\n // callback(new WrongUsernameOrPasswordError(email, \"my error message\"));\n // 3. Something went wrong while trying to reach your database\n // callback(new Error(\"my error message\"));\n //\n // A list of Node.js modules which can be referenced is available here:\n //\n // https://tehsis.github.io/webtaskio-canirequire/\n console.log('AYYYYYE');\n\n const msg =\n 'Please implement the Login script for this database connection ' +\n 'at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n", + "create": "function create(user, callback) {\n // This script should create a user entry in your existing database. It will\n // be executed when a user attempts to sign up, or when a user is created\n // through the Auth0 dashboard or API.\n // When this script has finished executing, the Login script will be\n // executed immediately afterwards, to verify that the user was created\n // successfully.\n //\n // The user object will always contain the following properties:\n // * email: the user's email\n // * password: the password entered by the user, in plain text\n // * tenant: the name of this Auth0 account\n // * client_id: the client ID of the application where the user signed up, or\n // API key if created through the API or Auth0 dashboard\n // * connection: the name of this database connection\n //\n // There are three ways this script can finish:\n // 1. A user was successfully created\n // callback(null);\n // 2. This user already exists in your database\n // callback(new ValidationError(\"user_exists\", \"my error message\"));\n // 3. Something went wrong while trying to reach your database\n // callback(new Error(\"my error message\"));\n\n const msg =\n 'Please implement the Create script for this database connection ' +\n 'at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n", + "delete": "function remove(id, callback) {\n // This script remove a user from your existing database.\n // It is executed whenever a user is deleted from the API or Auth0 dashboard.\n //\n // There are two ways that this script can finish:\n // 1. The user was removed successfully:\n // callback(null);\n // 2. Something went wrong while trying to reach your database:\n // callback(new Error(\"my error message\"));\n\n const msg =\n 'Please implement the Delete script for this database ' +\n 'connection at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n", + "verify": "function verify(email, callback) {\n // This script should mark the current user's email address as verified in\n // your database.\n // It is executed whenever a user clicks the verification link sent by email.\n // These emails can be customized at https://manage.auth0.com/#/emails.\n // It is safe to assume that the user's email already exists in your database,\n // because verification emails, if enabled, are sent immediately after a\n // successful signup.\n //\n // There are two ways that this script can finish:\n // 1. The user's email was verified successfully\n // callback(null, true);\n // 2. Something went wrong while trying to reach your database:\n // callback(new Error(\"my error message\"));\n //\n // If an error is returned, it will be passed to the query string of the page\n // where the user is being redirected to after clicking the verification link.\n // For example, returning `callback(new Error(\"error\"))` and redirecting to\n // https://example.com would redirect to the following URL:\n // https://example.com?email=alice%40example.com&message=error&success=false\n\n const msg =\n 'Please implement the Verify script for this database connection ' +\n 'at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n", + "get_user": "function getByEmail(email, callback) {\n // This script should retrieve a user profile from your existing database,\n // without authenticating the user.\n // It is used to check if a user exists before executing flows that do not\n // require authentication (signup and password reset).\n //\n // There are three ways this script can finish:\n // 1. A user was successfully found. The profile should be in the following\n // format: https://auth0.com/docs/users/normalized/auth0/normalized-user-profile-schema.\n // callback(null, profile);\n // 2. A user was not found\n // callback(null);\n // 3. Something went wrong while trying to reach your database:\n // callback(new Error(\"my error message\"));\n\n const msg =\n 'Please implement the Get User script for this database connection ' +\n 'at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n", + "change_password": "function changePassword(email, newPassword, callback) {\n // This script should change the password stored for the current user in your\n // database. It is executed when the user clicks on the confirmation link\n // after a reset password request.\n // The content and behavior of password confirmation emails can be customized\n // here: https://manage.auth0.com/#/emails\n // The `newPassword` parameter of this function is in plain text. It must be\n // hashed/salted to match whatever is stored in your database.\n //\n // There are three ways that this script can finish:\n // 1. The user's password was updated successfully:\n // callback(null, true);\n // 2. The user's password was not updated:\n // callback(null, false);\n // 3. Something went wrong while trying to reach your database:\n // callback(new Error(\"my error message\"));\n //\n // If an error is returned, it will be passed to the query string of the page\n // where the user is being redirected to after clicking the confirmation link.\n // For example, returning `callback(new Error(\"error\"))` and redirecting to\n // https://example.com would redirect to the following URL:\n // https://example.com?email=alice%40example.com&message=error&success=false\n\n const msg =\n 'Please implement the Change Password script for this database ' +\n 'connection at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n" + }, + "disable_signup": false, + "passwordPolicy": "low", + "passkey_options": { + "challenge_ui": "both", + "local_enrollment_enabled": true, + "progressive_enrollment_enabled": true + }, + "password_history": { + "size": 5, + "enable": false + }, + "strategy_version": 2, + "requires_username": true, + "password_dictionary": { + "enable": true, + "dictionary": [] + }, + "authentication_methods": { + "passkey": { + "enabled": false + }, + "password": { + "enabled": true, + "api_behavior": "required", + "signup_behavior": "allow" + } + }, + "brute_force_protection": true, + "password_no_personal_info": { + "enable": true + }, + "password_complexity_options": { + "min_length": 8 + }, + "enabledDatabaseCustomization": true, + "disable_self_service_change_password": false + }, + "strategy": "auth0", + "name": "boo-baz-db-connection-test", + "is_domain_connection": false, + "authentication": { + "active": true + }, + "connected_accounts": { + "active": false + }, + "realms": [ + "boo-baz-db-connection-test" + ], + "enabled_clients": [] + } + ] + }, + "rawHeaders": [], + "responseIsBinary": false + }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", @@ -10506,7 +11673,7 @@ "response": { "connections": [ { - "id": "con_VNsNbuBrPhr3ffYU", + "id": "con_BaKydp194pu6KeMY", "options": { "mfa": { "active": true, @@ -10580,7 +11747,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/connections/con_VNsNbuBrPhr3ffYU/clients?take=50", + "path": "/api/v2/connections/con_BaKydp194pu6KeMY/clients?take=50", "body": "", "status": 200, "response": { @@ -10592,11 +11759,11 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "DELETE", - "path": "/api/v2/connections/con_VNsNbuBrPhr3ffYU", + "path": "/api/v2/connections/con_BaKydp194pu6KeMY", "body": "", "status": 202, "response": { - "deleted_at": "2026-02-13T10:31:51.126Z" + "deleted_at": "2026-02-16T17:06:36.942Z" }, "rawHeaders": [], "responseIsBinary": false @@ -10625,7 +11792,7 @@ }, "status": 201, "response": { - "id": "con_4KyyGHwwixzZfOVY", + "id": "con_1FgEzcVAYCcRMVDZ", "options": { "mfa": { "active": true, @@ -10677,7 +11844,7 @@ "response": { "connections": [ { - "id": "con_4KyyGHwwixzZfOVY", + "id": "con_1FgEzcVAYCcRMVDZ", "options": { "mfa": { "active": true, @@ -10725,14 +11892,14 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "PATCH", - "path": "/api/v2/connections/con_4KyyGHwwixzZfOVY/clients", + "path": "/api/v2/connections/con_1FgEzcVAYCcRMVDZ/clients", "body": [ { "client_id": "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE", "status": true }, { - "client_id": "4R1cIUJb4tweu26ZLYAC8NGwhCzfPMcG", + "client_id": "45lhLMgSUCKLZoNp0TWgvSSre7JA1sDH", "status": true } ], @@ -10834,7 +12001,7 @@ "subject": "deprecated" } ], - "client_id": "4R1cIUJb4tweu26ZLYAC8NGwhCzfPMcG", + "client_id": "45lhLMgSUCKLZoNp0TWgvSSre7JA1sDH", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -10901,7 +12068,7 @@ "response": { "connections": [ { - "id": "con_Bt0T677DiTx09JW3", + "id": "con_HqDvThofsvA7Ydc9", "options": { "email": true, "scope": [ @@ -10925,7 +12092,7 @@ "enabled_clients": [] }, { - "id": "con_4KyyGHwwixzZfOVY", + "id": "con_1FgEzcVAYCcRMVDZ", "options": { "mfa": { "active": true, @@ -10965,7 +12132,7 @@ ], "enabled_clients": [ "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE", - "4R1cIUJb4tweu26ZLYAC8NGwhCzfPMcG" + "45lhLMgSUCKLZoNp0TWgvSSre7JA1sDH" ] } ] @@ -10982,7 +12149,7 @@ "response": { "connections": [ { - "id": "con_Bt0T677DiTx09JW3", + "id": "con_HqDvThofsvA7Ydc9", "options": { "email": true, "scope": [ @@ -11006,7 +12173,7 @@ "enabled_clients": [] }, { - "id": "con_4KyyGHwwixzZfOVY", + "id": "con_1FgEzcVAYCcRMVDZ", "options": { "mfa": { "active": true, @@ -11046,7 +12213,7 @@ ], "enabled_clients": [ "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE", - "4R1cIUJb4tweu26ZLYAC8NGwhCzfPMcG" + "45lhLMgSUCKLZoNp0TWgvSSre7JA1sDH" ] } ] @@ -11072,7 +12239,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/connections/con_Bt0T677DiTx09JW3/clients?take=50", + "path": "/api/v2/connections/con_HqDvThofsvA7Ydc9/clients?take=50", "body": "", "status": 200, "response": { @@ -11084,11 +12251,11 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "DELETE", - "path": "/api/v2/connections/con_Bt0T677DiTx09JW3", + "path": "/api/v2/connections/con_HqDvThofsvA7Ydc9", "body": "", "status": 202, "response": { - "deleted_at": "2026-02-13T10:31:56.713Z" + "deleted_at": "2026-02-16T17:06:42.761Z" }, "rawHeaders": [], "responseIsBinary": false @@ -11220,7 +12387,7 @@ "subject": "deprecated" } ], - "client_id": "4R1cIUJb4tweu26ZLYAC8NGwhCzfPMcG", + "client_id": "45lhLMgSUCKLZoNp0TWgvSSre7JA1sDH", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -11540,22 +12707,22 @@ "response": { "roles": [ { - "id": "rol_zLSOUhKBpduicccm", + "id": "rol_PKvBKcfS2zcMAkgp", "name": "Admin", "description": "Can read and write things" }, { - "id": "rol_emRXv9caeV0628xP", + "id": "rol_cTfY9XEvtAmpFXPH", "name": "Reader", "description": "Can only read things" }, { - "id": "rol_9vtNxqnNMKpWkKpa", + "id": "rol_3WV3UtInVufuNfJi", "name": "read_only", "description": "Read Only" }, { - "id": "rol_TmP4ioaCAdhP7Xfn", + "id": "rol_DXCz3b7aZUyS2DM1", "name": "read_osnly", "description": "Readz Only" } @@ -11570,7 +12737,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/roles/rol_zLSOUhKBpduicccm/permissions?per_page=100&page=0&include_totals=true", + "path": "/api/v2/roles/rol_PKvBKcfS2zcMAkgp/permissions?per_page=100&page=0&include_totals=true", "body": "", "status": 200, "response": { @@ -11585,7 +12752,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/roles/rol_emRXv9caeV0628xP/permissions?per_page=100&page=0&include_totals=true", + "path": "/api/v2/roles/rol_cTfY9XEvtAmpFXPH/permissions?per_page=100&page=0&include_totals=true", "body": "", "status": 200, "response": { @@ -11600,7 +12767,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/roles/rol_9vtNxqnNMKpWkKpa/permissions?per_page=100&page=0&include_totals=true", + "path": "/api/v2/roles/rol_3WV3UtInVufuNfJi/permissions?per_page=100&page=0&include_totals=true", "body": "", "status": 200, "response": { @@ -11615,7 +12782,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/roles/rol_TmP4ioaCAdhP7Xfn/permissions?per_page=100&page=0&include_totals=true", + "path": "/api/v2/roles/rol_DXCz3b7aZUyS2DM1/permissions?per_page=100&page=0&include_totals=true", "body": "", "status": 200, "response": { @@ -11630,7 +12797,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "DELETE", - "path": "/api/v2/roles/rol_zLSOUhKBpduicccm", + "path": "/api/v2/roles/rol_cTfY9XEvtAmpFXPH", "body": "", "status": 200, "response": {}, @@ -11640,7 +12807,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "DELETE", - "path": "/api/v2/roles/rol_emRXv9caeV0628xP", + "path": "/api/v2/roles/rol_PKvBKcfS2zcMAkgp", "body": "", "status": 200, "response": {}, @@ -11650,7 +12817,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "DELETE", - "path": "/api/v2/roles/rol_9vtNxqnNMKpWkKpa", + "path": "/api/v2/roles/rol_3WV3UtInVufuNfJi", "body": "", "status": 200, "response": {}, @@ -11660,7 +12827,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "DELETE", - "path": "/api/v2/roles/rol_TmP4ioaCAdhP7Xfn", + "path": "/api/v2/roles/rol_DXCz3b7aZUyS2DM1", "body": "", "status": 200, "response": {}, @@ -11676,12 +12843,12 @@ "response": { "organizations": [ { - "id": "org_ebYcZ8jNdmN7DKyj", + "id": "org_EJAehbxTdxksCwoH", "name": "org2", "display_name": "Organization2" }, { - "id": "org_6xyIAQ9SugnfVEHy", + "id": "org_B2OPtUdlswlQ6G26", "name": "org1", "display_name": "Organization", "branding": { @@ -11789,7 +12956,7 @@ "subject": "deprecated" } ], - "client_id": "4R1cIUJb4tweu26ZLYAC8NGwhCzfPMcG", + "client_id": "45lhLMgSUCKLZoNp0TWgvSSre7JA1sDH", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -11850,7 +13017,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/organizations/org_ebYcZ8jNdmN7DKyj/enabled_connections?page=0&per_page=50&include_totals=true", + "path": "/api/v2/organizations/org_EJAehbxTdxksCwoH/enabled_connections?page=0&per_page=50&include_totals=true", "body": "", "status": 200, "response": { @@ -11865,7 +13032,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/organizations/org_ebYcZ8jNdmN7DKyj/client-grants?page=0&per_page=50&include_totals=true", + "path": "/api/v2/organizations/org_EJAehbxTdxksCwoH/client-grants?page=0&per_page=50&include_totals=true", "body": "", "status": 200, "response": { @@ -11880,7 +13047,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/organizations/org_ebYcZ8jNdmN7DKyj/discovery-domains?take=50", + "path": "/api/v2/organizations/org_EJAehbxTdxksCwoH/discovery-domains?take=50", "body": "", "status": 200, "response": { @@ -11892,7 +13059,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/organizations/org_6xyIAQ9SugnfVEHy/enabled_connections?page=0&per_page=50&include_totals=true", + "path": "/api/v2/organizations/org_B2OPtUdlswlQ6G26/enabled_connections?page=0&per_page=50&include_totals=true", "body": "", "status": 200, "response": { @@ -11907,7 +13074,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/organizations/org_6xyIAQ9SugnfVEHy/client-grants?page=0&per_page=50&include_totals=true", + "path": "/api/v2/organizations/org_B2OPtUdlswlQ6G26/client-grants?page=0&per_page=50&include_totals=true", "body": "", "status": 200, "response": { @@ -11922,7 +13089,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/organizations/org_6xyIAQ9SugnfVEHy/discovery-domains?take=50", + "path": "/api/v2/organizations/org_B2OPtUdlswlQ6G26/discovery-domains?take=50", "body": "", "status": 200, "response": { @@ -11940,7 +13107,7 @@ "response": { "connections": [ { - "id": "con_4KyyGHwwixzZfOVY", + "id": "con_1FgEzcVAYCcRMVDZ", "options": { "mfa": { "active": true, @@ -11948,191 +13115,40 @@ }, "passwordPolicy": "good", "passkey_options": { - "challenge_ui": "both", - "local_enrollment_enabled": true, - "progressive_enrollment_enabled": true - }, - "strategy_version": 2, - "authentication_methods": { - "passkey": { - "enabled": false - }, - "password": { - "enabled": true, - "api_behavior": "required", - "signup_behavior": "allow" - } - }, - "brute_force_protection": true, - "disable_self_service_change_password": false - }, - "strategy": "auth0", - "name": "Username-Password-Authentication", - "is_domain_connection": false, - "authentication": { - "active": true - }, - "connected_accounts": { - "active": false - }, - "realms": [ - "Username-Password-Authentication" - ], - "enabled_clients": [ - "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE", - "4R1cIUJb4tweu26ZLYAC8NGwhCzfPMcG" - ] - } - ] - }, - "rawHeaders": [], - "responseIsBinary": false - }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "GET", - "path": "/api/v2/clients?page=0&per_page=100&include_totals=true", - "body": "", - "status": 200, - "response": { - "total": 3, - "start": 0, - "limit": 100, - "clients": [ - { - "tenant": "auth0-deploy-cli-e2e", - "global": false, - "is_token_endpoint_ip_header_trusted": false, - "name": "Deploy CLI", - "is_first_party": true, - "oidc_conformant": true, - "sso_disabled": false, - "cross_origin_auth": false, - "refresh_token": { - "expiration_type": "non-expiring", - "leeway": 0, - "infinite_token_lifetime": true, - "infinite_idle_token_lifetime": true, - "token_lifetime": 31557600, - "idle_token_lifetime": 2592000, - "rotation_type": "non-rotating" - }, - "cross_origin_authentication": false, - "allowed_clients": [], - "callbacks": [], - "native_social_login": { - "apple": { - "enabled": false - }, - "facebook": { - "enabled": false - } - }, - "signing_keys": [ - { - "cert": "[REDACTED]", - "pkcs7": "[REDACTED]", - "subject": "deprecated" - } - ], - "client_id": "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE", - "callback_url_template": false, - "client_secret": "[REDACTED]", - "jwt_configuration": { - "alg": "RS256", - "lifetime_in_seconds": 36000, - "secret_encoded": false - }, - "client_aliases": [], - "token_endpoint_auth_method": "client_secret_post", - "app_type": "non_interactive", - "grant_types": [ - "client_credentials", - "implicit", - "authorization_code", - "refresh_token" - ], - "custom_login_page_on": true - }, - { - "tenant": "auth0-deploy-cli-e2e", - "global": false, - "is_token_endpoint_ip_header_trusted": false, - "name": "Default App", - "callbacks": [], - "cross_origin_authentication": false, - "is_first_party": true, - "oidc_conformant": true, - "refresh_token": { - "expiration_type": "non-expiring", - "leeway": 0, - "infinite_token_lifetime": true, - "infinite_idle_token_lifetime": true, - "token_lifetime": 2592000, - "idle_token_lifetime": 1296000, - "rotation_type": "non-rotating" + "challenge_ui": "both", + "local_enrollment_enabled": true, + "progressive_enrollment_enabled": true + }, + "strategy_version": 2, + "authentication_methods": { + "passkey": { + "enabled": false + }, + "password": { + "enabled": true, + "api_behavior": "required", + "signup_behavior": "allow" + } + }, + "brute_force_protection": true, + "disable_self_service_change_password": false }, - "sso_disabled": false, - "cross_origin_auth": false, - "signing_keys": [ - { - "cert": "[REDACTED]", - "pkcs7": "[REDACTED]", - "subject": "deprecated" - } - ], - "client_id": "4R1cIUJb4tweu26ZLYAC8NGwhCzfPMcG", - "callback_url_template": false, - "client_secret": "[REDACTED]", - "jwt_configuration": { - "alg": "RS256", - "lifetime_in_seconds": 36000, - "secret_encoded": false + "strategy": "auth0", + "name": "Username-Password-Authentication", + "is_domain_connection": false, + "authentication": { + "active": true }, - "grant_types": [ - "authorization_code", - "implicit", - "refresh_token", - "client_credentials" - ], - "custom_login_page_on": true - }, - { - "tenant": "auth0-deploy-cli-e2e", - "global": true, - "callbacks": [], - "is_first_party": true, - "name": "All Applications", - "refresh_token": { - "expiration_type": "non-expiring", - "leeway": 0, - "infinite_token_lifetime": true, - "infinite_idle_token_lifetime": true, - "token_lifetime": 2592000, - "idle_token_lifetime": 1296000, - "rotation_type": "non-rotating" + "connected_accounts": { + "active": false }, - "owners": [ - "mr|samlp|okta|will.vedder@auth0.com", - "mr|google-oauth2|102002633619863830825", - "mr|samlp|okta|frederik.prijck@auth0.com", - "mr|google-oauth2|109614534713742077035", - "mr|google-oauth2|116771660953104383819", - "mr|google-oauth2|112839029247827700155", - "mr|samlp|okta|ewan.harris@auth0.com" - ], - "custom_login_page": "TEST123\n", - "cross_origin_authentication": true, - "signing_keys": [ - { - "cert": "[REDACTED]", - "pkcs7": "[REDACTED]", - "subject": "deprecated" - } + "realms": [ + "Username-Password-Authentication" ], - "client_id": "Isi93ibGHIGwmdYjsLwTOn7Gu7nwxU3V", - "client_secret": "[REDACTED]", - "custom_login_page_on": true + "enabled_clients": [ + "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE", + "45lhLMgSUCKLZoNp0TWgvSSre7JA1sDH" + ] } ] }, @@ -12392,10 +13408,161 @@ "rawHeaders": [], "responseIsBinary": false }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "GET", + "path": "/api/v2/clients?page=0&per_page=100&include_totals=true", + "body": "", + "status": 200, + "response": { + "total": 3, + "start": 0, + "limit": 100, + "clients": [ + { + "tenant": "auth0-deploy-cli-e2e", + "global": false, + "is_token_endpoint_ip_header_trusted": false, + "name": "Deploy CLI", + "is_first_party": true, + "oidc_conformant": true, + "sso_disabled": false, + "cross_origin_auth": false, + "refresh_token": { + "expiration_type": "non-expiring", + "leeway": 0, + "infinite_token_lifetime": true, + "infinite_idle_token_lifetime": true, + "token_lifetime": 31557600, + "idle_token_lifetime": 2592000, + "rotation_type": "non-rotating" + }, + "cross_origin_authentication": false, + "allowed_clients": [], + "callbacks": [], + "native_social_login": { + "apple": { + "enabled": false + }, + "facebook": { + "enabled": false + } + }, + "signing_keys": [ + { + "cert": "[REDACTED]", + "pkcs7": "[REDACTED]", + "subject": "deprecated" + } + ], + "client_id": "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE", + "callback_url_template": false, + "client_secret": "[REDACTED]", + "jwt_configuration": { + "alg": "RS256", + "lifetime_in_seconds": 36000, + "secret_encoded": false + }, + "client_aliases": [], + "token_endpoint_auth_method": "client_secret_post", + "app_type": "non_interactive", + "grant_types": [ + "client_credentials", + "implicit", + "authorization_code", + "refresh_token" + ], + "custom_login_page_on": true + }, + { + "tenant": "auth0-deploy-cli-e2e", + "global": false, + "is_token_endpoint_ip_header_trusted": false, + "name": "Default App", + "callbacks": [], + "cross_origin_authentication": false, + "is_first_party": true, + "oidc_conformant": true, + "refresh_token": { + "expiration_type": "non-expiring", + "leeway": 0, + "infinite_token_lifetime": true, + "infinite_idle_token_lifetime": true, + "token_lifetime": 2592000, + "idle_token_lifetime": 1296000, + "rotation_type": "non-rotating" + }, + "sso_disabled": false, + "cross_origin_auth": false, + "signing_keys": [ + { + "cert": "[REDACTED]", + "pkcs7": "[REDACTED]", + "subject": "deprecated" + } + ], + "client_id": "45lhLMgSUCKLZoNp0TWgvSSre7JA1sDH", + "callback_url_template": false, + "client_secret": "[REDACTED]", + "jwt_configuration": { + "alg": "RS256", + "lifetime_in_seconds": 36000, + "secret_encoded": false + }, + "grant_types": [ + "authorization_code", + "implicit", + "refresh_token", + "client_credentials" + ], + "custom_login_page_on": true + }, + { + "tenant": "auth0-deploy-cli-e2e", + "global": true, + "callbacks": [], + "is_first_party": true, + "name": "All Applications", + "refresh_token": { + "expiration_type": "non-expiring", + "leeway": 0, + "infinite_token_lifetime": true, + "infinite_idle_token_lifetime": true, + "token_lifetime": 2592000, + "idle_token_lifetime": 1296000, + "rotation_type": "non-rotating" + }, + "owners": [ + "mr|samlp|okta|will.vedder@auth0.com", + "mr|google-oauth2|102002633619863830825", + "mr|samlp|okta|frederik.prijck@auth0.com", + "mr|google-oauth2|109614534713742077035", + "mr|google-oauth2|116771660953104383819", + "mr|google-oauth2|112839029247827700155", + "mr|samlp|okta|ewan.harris@auth0.com" + ], + "custom_login_page": "TEST123\n", + "cross_origin_authentication": true, + "signing_keys": [ + { + "cert": "[REDACTED]", + "pkcs7": "[REDACTED]", + "subject": "deprecated" + } + ], + "client_id": "Isi93ibGHIGwmdYjsLwTOn7Gu7nwxU3V", + "client_secret": "[REDACTED]", + "custom_login_page_on": true + } + ] + }, + "rawHeaders": [], + "responseIsBinary": false + }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "DELETE", - "path": "/api/v2/organizations/org_ebYcZ8jNdmN7DKyj", + "path": "/api/v2/organizations/org_B2OPtUdlswlQ6G26", "body": "", "status": 204, "response": "", @@ -12405,7 +13572,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "DELETE", - "path": "/api/v2/organizations/org_6xyIAQ9SugnfVEHy", + "path": "/api/v2/organizations/org_EJAehbxTdxksCwoH", "body": "", "status": 204, "response": "", @@ -12420,7 +13587,7 @@ "status": 200, "response": [ { - "id": "lst_0000000000026540", + "id": "lst_0000000000026646", "name": "Suspended DD Log Stream", "type": "datadog", "status": "active", @@ -12431,14 +13598,14 @@ "isPriority": false }, { - "id": "lst_0000000000026541", + "id": "lst_0000000000026647", "name": "Amazon EventBridge", "type": "eventbridge", "status": "active", "sink": { "awsAccountId": "123456789012", "awsRegion": "us-east-2", - "awsPartnerEventSource": "aws.partner/auth0.com/auth0-deploy-cli-e2e-5444af94-ad9d-454b-87a6-af6e31416210/auth0.logs" + "awsPartnerEventSource": "aws.partner/auth0.com/auth0-deploy-cli-e2e-86b53d0c-327c-4b51-9536-89175a2b42ab/auth0.logs" }, "filters": [ { @@ -12487,7 +13654,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "DELETE", - "path": "/api/v2/log-streams/lst_0000000000026540", + "path": "/api/v2/log-streams/lst_0000000000026646", "body": "", "status": 204, "response": "", @@ -12497,7 +13664,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "DELETE", - "path": "/api/v2/log-streams/lst_0000000000026541", + "path": "/api/v2/log-streams/lst_0000000000026647", "body": "", "status": 204, "response": "", @@ -13881,7 +15048,7 @@ "subject": "deprecated" } ], - "client_id": "4R1cIUJb4tweu26ZLYAC8NGwhCzfPMcG", + "client_id": "45lhLMgSUCKLZoNp0TWgvSSre7JA1sDH", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -13911,7 +15078,7 @@ "response": { "connections": [ { - "id": "con_4KyyGHwwixzZfOVY", + "id": "con_1FgEzcVAYCcRMVDZ", "options": { "mfa": { "active": true, @@ -13951,7 +15118,7 @@ ], "enabled_clients": [ "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE", - "4R1cIUJb4tweu26ZLYAC8NGwhCzfPMcG" + "45lhLMgSUCKLZoNp0TWgvSSre7JA1sDH" ] } ] @@ -13975,13 +15142,13 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/connections/con_4KyyGHwwixzZfOVY/clients?take=50", + "path": "/api/v2/connections/con_1FgEzcVAYCcRMVDZ/clients?take=50", "body": "", "status": 200, "response": { "clients": [ { - "client_id": "4R1cIUJb4tweu26ZLYAC8NGwhCzfPMcG" + "client_id": "45lhLMgSUCKLZoNp0TWgvSSre7JA1sDH" }, { "client_id": "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE" @@ -14015,7 +15182,7 @@ "response": { "connections": [ { - "id": "con_4KyyGHwwixzZfOVY", + "id": "con_1FgEzcVAYCcRMVDZ", "options": { "mfa": { "active": true, @@ -14055,7 +15222,7 @@ ], "enabled_clients": [ "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE", - "4R1cIUJb4tweu26ZLYAC8NGwhCzfPMcG" + "45lhLMgSUCKLZoNp0TWgvSSre7JA1sDH" ] } ] @@ -14138,29 +15305,14 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/emails/provider?fields=name%2Cenabled%2Ccredentials%2Csettings%2Cdefault_from_address&include_fields=true", - "body": "", - "status": 200, - "response": { - "name": "mandrill", - "credentials": {}, - "default_from_address": "auth0-user@auth0.com", - "enabled": false - }, - "rawHeaders": [], - "responseIsBinary": false - }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "GET", - "path": "/api/v2/email-templates/verify_email_by_code", + "path": "/api/v2/emails/provider?fields=name%2Cenabled%2Ccredentials%2Csettings%2Cdefault_from_address&include_fields=true", "body": "", - "status": 404, + "status": 200, "response": { - "statusCode": 404, - "error": "Not Found", - "message": "The template does not exist.", - "errorCode": "inexistent_email_template" + "name": "mandrill", + "credentials": {}, + "default_from_address": "auth0-user@auth0.com", + "enabled": false }, "rawHeaders": [], "responseIsBinary": false @@ -14186,7 +15338,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/email-templates/reset_email_by_code", + "path": "/api/v2/email-templates/verify_email_by_code", "body": "", "status": 404, "response": { @@ -14201,7 +15353,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/email-templates/stolen_credentials", + "path": "/api/v2/email-templates/enrollment_email", "body": "", "status": 404, "response": { @@ -14216,7 +15368,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/email-templates/password_reset", + "path": "/api/v2/email-templates/async_approval", "body": "", "status": 404, "response": { @@ -14231,7 +15383,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/email-templates/user_invitation", + "path": "/api/v2/email-templates/reset_email_by_code", "body": "", "status": 404, "response": { @@ -14246,7 +15398,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/email-templates/async_approval", + "path": "/api/v2/email-templates/mfa_oob_code", "body": "", "status": 404, "response": { @@ -14261,18 +15413,14 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/email-templates/welcome_email", + "path": "/api/v2/email-templates/stolen_credentials", "body": "", - "status": 200, + "status": 404, "response": { - "template": "welcome_email", - "body": "\n \n

Welcome!

\n \n\n", - "from": "", - "resultUrl": "https://example.com/welcome", - "subject": "Welcome", - "syntax": "liquid", - "urlLifetimeInSeconds": 3600, - "enabled": false + "statusCode": 404, + "error": "Not Found", + "message": "The template does not exist.", + "errorCode": "inexistent_email_template" }, "rawHeaders": [], "responseIsBinary": false @@ -14280,7 +15428,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/email-templates/enrollment_email", + "path": "/api/v2/email-templates/password_reset", "body": "", "status": 404, "response": { @@ -14295,7 +15443,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/email-templates/blocked_account", + "path": "/api/v2/email-templates/change_password", "body": "", "status": 404, "response": { @@ -14325,7 +15473,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/email-templates/mfa_oob_code", + "path": "/api/v2/email-templates/blocked_account", "body": "", "status": 404, "response": { @@ -14340,7 +15488,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/email-templates/change_password", + "path": "/api/v2/email-templates/user_invitation", "body": "", "status": 404, "response": { @@ -14352,6 +15500,25 @@ "rawHeaders": [], "responseIsBinary": false }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "GET", + "path": "/api/v2/email-templates/welcome_email", + "body": "", + "status": 200, + "response": { + "template": "welcome_email", + "body": "\n \n

Welcome!

\n \n\n", + "from": "", + "resultUrl": "https://example.com/welcome", + "subject": "Welcome", + "syntax": "liquid", + "urlLifetimeInSeconds": 3600, + "enabled": false + }, + "rawHeaders": [], + "responseIsBinary": false + }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", @@ -14659,7 +15826,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/guardian/factors/push-notification/providers/sns", + "path": "/api/v2/guardian/factors/sms/providers/twilio", "body": "", "status": 200, "response": {}, @@ -14669,7 +15836,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/guardian/factors/sms/providers/twilio", + "path": "/api/v2/guardian/factors/push-notification/providers/sns", "body": "", "status": 200, "response": {}, @@ -14970,7 +16137,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/login-password/custom-text/en", + "path": "/api/v2/prompts/login/custom-text/en", "body": "", "status": 200, "response": {}, @@ -14980,7 +16147,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/login/custom-text/en", + "path": "/api/v2/prompts/login-password/custom-text/en", "body": "", "status": 200, "response": {}, @@ -15000,7 +16167,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/signup/custom-text/en", + "path": "/api/v2/prompts/login-passwordless/custom-text/en", "body": "", "status": 200, "response": {}, @@ -15010,7 +16177,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/signup-id/custom-text/en", + "path": "/api/v2/prompts/signup/custom-text/en", "body": "", "status": 200, "response": {}, @@ -15020,7 +16187,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/login-passwordless/custom-text/en", + "path": "/api/v2/prompts/signup-password/custom-text/en", "body": "", "status": 200, "response": {}, @@ -15030,7 +16197,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/signup-password/custom-text/en", + "path": "/api/v2/prompts/signup-id/custom-text/en", "body": "", "status": 200, "response": {}, @@ -15050,7 +16217,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/email-identifier-challenge/custom-text/en", + "path": "/api/v2/prompts/phone-identifier-challenge/custom-text/en", "body": "", "status": 200, "response": {}, @@ -15060,7 +16227,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/reset-password/custom-text/en", + "path": "/api/v2/prompts/email-identifier-challenge/custom-text/en", "body": "", "status": 200, "response": {}, @@ -15070,7 +16237,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/phone-identifier-challenge/custom-text/en", + "path": "/api/v2/prompts/reset-password/custom-text/en", "body": "", "status": 200, "response": {}, @@ -15080,7 +16247,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/consent/custom-text/en", + "path": "/api/v2/prompts/custom-form/custom-text/en", "body": "", "status": 200, "response": {}, @@ -15090,7 +16257,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/custom-form/custom-text/en", + "path": "/api/v2/prompts/consent/custom-text/en", "body": "", "status": 200, "response": {}, @@ -15100,7 +16267,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/logout/custom-text/en", + "path": "/api/v2/prompts/customized-consent/custom-text/en", "body": "", "status": 200, "response": {}, @@ -15110,7 +16277,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/mfa-push/custom-text/en", + "path": "/api/v2/prompts/logout/custom-text/en", "body": "", "status": 200, "response": {}, @@ -15120,7 +16287,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/customized-consent/custom-text/en", + "path": "/api/v2/prompts/mfa-push/custom-text/en", "body": "", "status": 200, "response": {}, @@ -15150,7 +16317,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/mfa-sms/custom-text/en", + "path": "/api/v2/prompts/mfa-phone/custom-text/en", "body": "", "status": 200, "response": {}, @@ -15160,7 +16327,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/mfa-phone/custom-text/en", + "path": "/api/v2/prompts/mfa-webauthn/custom-text/en", "body": "", "status": 200, "response": {}, @@ -15170,7 +16337,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/mfa-webauthn/custom-text/en", + "path": "/api/v2/prompts/mfa-sms/custom-text/en", "body": "", "status": 200, "response": {}, @@ -15180,7 +16347,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/mfa-recovery-code/custom-text/en", + "path": "/api/v2/prompts/mfa-email/custom-text/en", "body": "", "status": 200, "response": {}, @@ -15190,7 +16357,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/mfa-email/custom-text/en", + "path": "/api/v2/prompts/mfa-recovery-code/custom-text/en", "body": "", "status": 200, "response": {}, @@ -15200,7 +16367,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/mfa/custom-text/en", + "path": "/api/v2/prompts/device-flow/custom-text/en", "body": "", "status": 200, "response": {}, @@ -15220,7 +16387,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/device-flow/custom-text/en", + "path": "/api/v2/prompts/mfa/custom-text/en", "body": "", "status": 200, "response": {}, @@ -15310,7 +16477,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/login-id/partials", + "path": "/api/v2/prompts/login/partials", "body": "", "status": 200, "response": {}, @@ -15320,7 +16487,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/login-password/partials", + "path": "/api/v2/prompts/login-id/partials", "body": "", "status": 200, "response": {}, @@ -15330,7 +16497,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/login-passwordless/partials", + "path": "/api/v2/prompts/login-password/partials", "body": "", "status": 200, "response": {}, @@ -15340,7 +16507,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/login/partials", + "path": "/api/v2/prompts/signup/partials", "body": "", "status": 200, "response": {}, @@ -15350,7 +16517,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/signup/partials", + "path": "/api/v2/prompts/login-passwordless/partials", "body": "", "status": 200, "response": {}, @@ -15360,7 +16527,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/signup-password/partials", + "path": "/api/v2/prompts/signup-id/partials", "body": "", "status": 200, "response": {}, @@ -15370,7 +16537,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/signup-id/partials", + "path": "/api/v2/prompts/signup-password/partials", "body": "", "status": 200, "response": {}, @@ -15405,6 +16572,21 @@ "rawHeaders": [], "responseIsBinary": false }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "GET", + "path": "/api/v2/actions/modules?page=0&per_page=100", + "body": "", + "status": 403, + "response": { + "statusCode": 403, + "error": "Forbidden", + "message": "This feature is not enabled for this tenant.", + "errorCode": "feature_not_enabled" + }, + "rawHeaders": [], + "responseIsBinary": false + }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", @@ -15413,6 +16595,17 @@ "status": 200, "response": { "triggers": [ + { + "id": "post-login", + "version": "v1", + "status": "DEPRECATED", + "runtimes": [ + "node22" + ], + "default_runtime": "node12", + "binding_policy": "trigger-bound", + "compatible_triggers": [] + }, { "id": "post-login", "version": "v3", @@ -15443,13 +16636,14 @@ "compatible_triggers": [] }, { - "id": "post-login", - "version": "v1", - "status": "DEPRECATED", + "id": "credentials-exchange", + "version": "v2", + "status": "CURRENT", "runtimes": [ + "node18-actions", "node22" ], - "default_runtime": "node12", + "default_runtime": "node22", "binding_policy": "trigger-bound", "compatible_triggers": [] }, @@ -15464,18 +16658,6 @@ "binding_policy": "trigger-bound", "compatible_triggers": [] }, - { - "id": "credentials-exchange", - "version": "v2", - "status": "CURRENT", - "runtimes": [ - "node18-actions", - "node22" - ], - "default_runtime": "node22", - "binding_policy": "trigger-bound", - "compatible_triggers": [] - }, { "id": "pre-user-registration", "version": "v1", @@ -15547,24 +16729,24 @@ }, { "id": "send-phone-message", - "version": "v1", - "status": "DEPRECATED", + "version": "v2", + "status": "CURRENT", "runtimes": [ + "node18-actions", "node22" ], - "default_runtime": "node12", + "default_runtime": "node22", "binding_policy": "trigger-bound", "compatible_triggers": [] }, { "id": "send-phone-message", - "version": "v2", - "status": "CURRENT", + "version": "v1", + "status": "DEPRECATED", "runtimes": [ - "node18-actions", "node22" ], - "default_runtime": "node22", + "default_runtime": "node12", "binding_policy": "trigger-bound", "compatible_triggers": [] }, @@ -15928,7 +17110,7 @@ "subject": "deprecated" } ], - "client_id": "4R1cIUJb4tweu26ZLYAC8NGwhCzfPMcG", + "client_id": "45lhLMgSUCKLZoNp0TWgvSSre7JA1sDH", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -16005,6 +17187,29 @@ "rawHeaders": [], "responseIsBinary": false }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "GET", + "path": "/api/v2/attack-protection/breached-password-detection", + "body": "", + "status": 200, + "response": { + "enabled": false, + "shields": [], + "admin_notification_frequency": [], + "method": "standard", + "stage": { + "pre-user-registration": { + "shields": [] + }, + "pre-change-password": { + "shields": [] + } + } + }, + "rawHeaders": [], + "responseIsBinary": false + }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", @@ -16036,29 +17241,6 @@ "rawHeaders": [], "responseIsBinary": false }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "GET", - "path": "/api/v2/attack-protection/breached-password-detection", - "body": "", - "status": 200, - "response": { - "enabled": false, - "shields": [], - "admin_notification_frequency": [], - "method": "standard", - "stage": { - "pre-user-registration": { - "shields": [] - }, - "pre-change-password": { - "shields": [] - } - } - }, - "rawHeaders": [], - "responseIsBinary": false - }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", @@ -16173,14 +17355,22 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/flows?page=0&per_page=100&include_totals=true", + "path": "/api/v2/forms?page=0&per_page=100&include_totals=true", "body": "", "status": 200, "response": { "limit": 100, "start": 0, - "total": 0, - "flows": [] + "total": 1, + "forms": [ + { + "id": "ap_6JUSCU7qq1CravnoU6d6jr", + "name": "Blank-form", + "flow_count": 0, + "created_at": "2024-11-26T11:58:18.187Z", + "updated_at": "2026-02-16T17:06:23.605Z" + } + ] }, "rawHeaders": [], "responseIsBinary": false @@ -16188,22 +17378,14 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/forms?page=0&per_page=100&include_totals=true", + "path": "/api/v2/flows?page=0&per_page=100&include_totals=true", "body": "", "status": 200, "response": { "limit": 100, "start": 0, - "total": 1, - "forms": [ - { - "id": "ap_6JUSCU7qq1CravnoU6d6jr", - "name": "Blank-form", - "flow_count": 0, - "created_at": "2024-11-26T11:58:18.187Z", - "updated_at": "2026-02-13T10:31:36.283Z" - } - ] + "total": 0, + "flows": [] }, "rawHeaders": [], "responseIsBinary": false @@ -16272,7 +17454,7 @@ } }, "created_at": "2024-11-26T11:58:18.187Z", - "updated_at": "2026-02-13T10:31:36.283Z" + "updated_at": "2026-02-16T17:06:23.605Z" }, "rawHeaders": [], "responseIsBinary": false @@ -16351,7 +17533,7 @@ "okta" ], "created_at": "2024-11-26T11:58:18.962Z", - "updated_at": "2026-02-13T10:31:29.709Z", + "updated_at": "2026-02-16T17:06:14.650Z", "branding": { "colors": { "primary": "#19aecc" @@ -16403,7 +17585,7 @@ } }, "created_at": "2026-01-29T08:17:51.522Z", - "updated_at": "2026-02-13T10:31:11.400Z", + "updated_at": "2026-02-16T17:06:00.743Z", "id": "acl_5EgHsY1h2Apnv4cvsM6Q9J" } ] diff --git a/test/e2e/recordings/should-deploy-without-deleting-resources-if-AUTH0_ALLOW_DELETE-is-false.json b/test/e2e/recordings/should-deploy-without-deleting-resources-if-AUTH0_ALLOW_DELETE-is-false.json index 8f4d37aba..d7f778ef6 100644 --- a/test/e2e/recordings/should-deploy-without-deleting-resources-if-AUTH0_ALLOW_DELETE-is-false.json +++ b/test/e2e/recordings/should-deploy-without-deleting-resources-if-AUTH0_ALLOW_DELETE-is-false.json @@ -1379,7 +1379,7 @@ "subject": "deprecated" } ], - "client_id": "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4", + "client_id": "4R1cIUJb4tweu26ZLYAC8NGwhCzfPMcG", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -1405,11 +1405,12 @@ "method": "POST", "path": "/api/v2/clients", "body": { - "name": "Quickstarts API (Test Application)", + "name": "API Explorer Application", + "allowed_clients": [], "app_type": "non_interactive", - "client_metadata": { - "foo": "bar" - }, + "callbacks": [], + "client_aliases": [], + "client_metadata": {}, "cross_origin_authentication": false, "custom_login_page_on": true, "grant_types": [ @@ -1422,6 +1423,14 @@ "lifetime_in_seconds": 36000, "secret_encoded": false }, + "native_social_login": { + "apple": { + "enabled": false + }, + "facebook": { + "enabled": false + } + }, "oidc_conformant": true, "refresh_token": { "expiration_type": "non-expiring", @@ -1440,12 +1449,20 @@ "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "Quickstarts API (Test Application)", - "client_metadata": { - "foo": "bar" - }, + "name": "API Explorer Application", + "allowed_clients": [], + "callbacks": [], + "client_metadata": {}, "cross_origin_authentication": false, "is_first_party": true, + "native_social_login": { + "apple": { + "enabled": false + }, + "facebook": { + "enabled": false + } + }, "oidc_conformant": true, "refresh_token": { "expiration_type": "non-expiring", @@ -1467,7 +1484,7 @@ "subject": "/CN=auth0-deploy-cli-e2e.us.auth0.com" } ], - "client_id": "A3DI3iNnJPuRBNAWAc0SggnvAiIj2K6o", + "client_id": "ILYi0cNQo9QFRhPu9x1LwaKpfJuxqvlQ", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -1475,6 +1492,7 @@ "lifetime_in_seconds": 36000, "secret_encoded": false }, + "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", "app_type": "non_interactive", "grant_types": [ @@ -1490,15 +1508,20 @@ "method": "POST", "path": "/api/v2/clients", "body": { - "name": "API Explorer Application", + "name": "Node App", "allowed_clients": [], - "app_type": "non_interactive", + "allowed_logout_urls": [], + "allowed_origins": [], + "app_type": "regular_web", "callbacks": [], "client_aliases": [], "client_metadata": {}, "cross_origin_authentication": false, "custom_login_page_on": true, "grant_types": [ + "authorization_code", + "implicit", + "refresh_token", "client_credentials" ], "is_first_party": true, @@ -1527,15 +1550,17 @@ "rotation_type": "non-rotating" }, "sso_disabled": false, - "token_endpoint_auth_method": "client_secret_post" + "token_endpoint_auth_method": "client_secret_post", + "web_origins": [] }, "status": 201, "response": { "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "API Explorer Application", + "name": "Node App", "allowed_clients": [], + "allowed_logout_urls": [], "callbacks": [], "client_metadata": {}, "cross_origin_authentication": false, @@ -1569,7 +1594,8 @@ "subject": "/CN=auth0-deploy-cli-e2e.us.auth0.com" } ], - "client_id": "uBlUMwvuOBoM3WMI3HmWP0LT4Wh0JgNV", + "allowed_origins": [], + "client_id": "1J0eYQOAdKR6mWk9X1NPNqDXVqzgdwXZ", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -1579,10 +1605,14 @@ }, "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", - "app_type": "non_interactive", + "app_type": "regular_web", "grant_types": [ + "authorization_code", + "implicit", + "refresh_token", "client_credentials" ], + "web_origins": [], "custom_login_page_on": true }, "rawHeaders": [], @@ -1593,20 +1623,14 @@ "method": "POST", "path": "/api/v2/clients", "body": { - "name": "Node App", - "allowed_clients": [], - "allowed_logout_urls": [], - "allowed_origins": [], - "app_type": "regular_web", - "callbacks": [], - "client_aliases": [], - "client_metadata": {}, + "name": "Quickstarts API (Test Application)", + "app_type": "non_interactive", + "client_metadata": { + "foo": "bar" + }, "cross_origin_authentication": false, "custom_login_page_on": true, "grant_types": [ - "authorization_code", - "implicit", - "refresh_token", "client_credentials" ], "is_first_party": true, @@ -1616,14 +1640,6 @@ "lifetime_in_seconds": 36000, "secret_encoded": false }, - "native_social_login": { - "apple": { - "enabled": false - }, - "facebook": { - "enabled": false - } - }, "oidc_conformant": true, "refresh_token": { "expiration_type": "non-expiring", @@ -1635,29 +1651,19 @@ "rotation_type": "non-rotating" }, "sso_disabled": false, - "token_endpoint_auth_method": "client_secret_post", - "web_origins": [] + "token_endpoint_auth_method": "client_secret_post" }, "status": 201, "response": { "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "Node App", - "allowed_clients": [], - "allowed_logout_urls": [], - "callbacks": [], - "client_metadata": {}, + "name": "Quickstarts API (Test Application)", + "client_metadata": { + "foo": "bar" + }, "cross_origin_authentication": false, "is_first_party": true, - "native_social_login": { - "apple": { - "enabled": false - }, - "facebook": { - "enabled": false - } - }, "oidc_conformant": true, "refresh_token": { "expiration_type": "non-expiring", @@ -1679,8 +1685,7 @@ "subject": "/CN=auth0-deploy-cli-e2e.us.auth0.com" } ], - "allowed_origins": [], - "client_id": "pplyWVYIrlso9wpmxRxLKCZi5IBruVv7", + "client_id": "YLxkngzwg8GRV4q93BtFqi0SIRreG0ef", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -1688,16 +1693,11 @@ "lifetime_in_seconds": 36000, "secret_encoded": false }, - "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", - "app_type": "regular_web", + "app_type": "non_interactive", "grant_types": [ - "authorization_code", - "implicit", - "refresh_token", "client_credentials" ], - "web_origins": [], "custom_login_page_on": true }, "rawHeaders": [], @@ -1764,7 +1764,7 @@ "subject": "/CN=auth0-deploy-cli-e2e.us.auth0.com" } ], - "client_id": "Iz6ck1jHvmCMNxU8rTDr3uGr1actAvcX", + "client_id": "JSpoWije4CKwUe6oUAGhtiP2b6qZVBoq", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -1787,9 +1787,15 @@ "method": "POST", "path": "/api/v2/clients", "body": { - "name": "The Default App", + "name": "Test SPA", "allowed_clients": [], - "callbacks": [], + "allowed_logout_urls": [ + "http://localhost:3000" + ], + "app_type": "spa", + "callbacks": [ + "http://localhost:3000" + ], "client_aliases": [], "client_metadata": {}, "cross_origin_authentication": false, @@ -1797,8 +1803,7 @@ "grant_types": [ "authorization_code", "implicit", - "refresh_token", - "client_credentials" + "refresh_token" ], "is_first_party": true, "is_token_endpoint_ip_header_trusted": false, @@ -1815,28 +1820,35 @@ "enabled": false } }, - "oidc_conformant": false, + "oidc_conformant": true, "refresh_token": { - "expiration_type": "non-expiring", + "expiration_type": "expiring", "leeway": 0, - "infinite_token_lifetime": true, - "infinite_idle_token_lifetime": true, "token_lifetime": 2592000, "idle_token_lifetime": 1296000, - "rotation_type": "non-rotating" + "infinite_token_lifetime": false, + "infinite_idle_token_lifetime": false, + "rotation_type": "rotating" }, - "sso": false, "sso_disabled": false, - "token_endpoint_auth_method": "client_secret_post" + "token_endpoint_auth_method": "none", + "web_origins": [ + "http://localhost:3000" + ] }, "status": 201, "response": { "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "The Default App", + "name": "Test SPA", "allowed_clients": [], - "callbacks": [], + "allowed_logout_urls": [ + "http://localhost:3000" + ], + "callbacks": [ + "http://localhost:3000" + ], "client_metadata": {}, "cross_origin_authentication": false, "is_first_party": true, @@ -1848,17 +1860,16 @@ "enabled": false } }, - "oidc_conformant": false, + "oidc_conformant": true, "refresh_token": { - "expiration_type": "non-expiring", + "expiration_type": "expiring", "leeway": 0, - "infinite_token_lifetime": true, - "infinite_idle_token_lifetime": true, "token_lifetime": 2592000, "idle_token_lifetime": 1296000, - "rotation_type": "non-rotating" + "infinite_token_lifetime": false, + "infinite_idle_token_lifetime": false, + "rotation_type": "rotating" }, - "sso": false, "sso_disabled": false, "cross_origin_auth": false, "encrypted": true, @@ -1870,7 +1881,7 @@ "subject": "/CN=auth0-deploy-cli-e2e.us.auth0.com" } ], - "client_id": "ESNQgEtm5yzlcvLljLjNCTCckHniGuxA", + "client_id": "ob4KTYmPNjtAxiUSFLuRlhhRtmWUuU9h", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -1879,12 +1890,15 @@ "secret_encoded": false }, "client_aliases": [], - "token_endpoint_auth_method": "client_secret_post", + "token_endpoint_auth_method": "none", + "app_type": "spa", "grant_types": [ "authorization_code", "implicit", - "refresh_token", - "client_credentials" + "refresh_token" + ], + "web_origins": [ + "http://localhost:3000" ], "custom_login_page_on": true }, @@ -1896,15 +1910,9 @@ "method": "POST", "path": "/api/v2/clients", "body": { - "name": "Test SPA", + "name": "The Default App", "allowed_clients": [], - "allowed_logout_urls": [ - "http://localhost:3000" - ], - "app_type": "spa", - "callbacks": [ - "http://localhost:3000" - ], + "callbacks": [], "client_aliases": [], "client_metadata": {}, "cross_origin_authentication": false, @@ -1912,7 +1920,8 @@ "grant_types": [ "authorization_code", "implicit", - "refresh_token" + "refresh_token", + "client_credentials" ], "is_first_party": true, "is_token_endpoint_ip_header_trusted": false, @@ -1929,35 +1938,28 @@ "enabled": false } }, - "oidc_conformant": true, + "oidc_conformant": false, "refresh_token": { - "expiration_type": "expiring", + "expiration_type": "non-expiring", "leeway": 0, + "infinite_token_lifetime": true, + "infinite_idle_token_lifetime": true, "token_lifetime": 2592000, "idle_token_lifetime": 1296000, - "infinite_token_lifetime": false, - "infinite_idle_token_lifetime": false, - "rotation_type": "rotating" + "rotation_type": "non-rotating" }, + "sso": false, "sso_disabled": false, - "token_endpoint_auth_method": "none", - "web_origins": [ - "http://localhost:3000" - ] + "token_endpoint_auth_method": "client_secret_post" }, "status": 201, "response": { "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "Test SPA", + "name": "The Default App", "allowed_clients": [], - "allowed_logout_urls": [ - "http://localhost:3000" - ], - "callbacks": [ - "http://localhost:3000" - ], + "callbacks": [], "client_metadata": {}, "cross_origin_authentication": false, "is_first_party": true, @@ -1969,16 +1971,17 @@ "enabled": false } }, - "oidc_conformant": true, + "oidc_conformant": false, "refresh_token": { - "expiration_type": "expiring", + "expiration_type": "non-expiring", "leeway": 0, + "infinite_token_lifetime": true, + "infinite_idle_token_lifetime": true, "token_lifetime": 2592000, "idle_token_lifetime": 1296000, - "infinite_token_lifetime": false, - "infinite_idle_token_lifetime": false, - "rotation_type": "rotating" + "rotation_type": "non-rotating" }, + "sso": false, "sso_disabled": false, "cross_origin_auth": false, "encrypted": true, @@ -1990,7 +1993,7 @@ "subject": "/CN=auth0-deploy-cli-e2e.us.auth0.com" } ], - "client_id": "Hp4aFX1YzW5bzxLZsAwftXbXvu396aRC", + "client_id": "xiWT8cVGT10UQcryJCU2HfMzRcNN0Exb", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -1999,15 +2002,12 @@ "secret_encoded": false }, "client_aliases": [], - "token_endpoint_auth_method": "none", - "app_type": "spa", + "token_endpoint_auth_method": "client_secret_post", "grant_types": [ "authorization_code", "implicit", - "refresh_token" - ], - "web_origins": [ - "http://localhost:3000" + "refresh_token", + "client_credentials" ], "custom_login_page_on": true }, @@ -2098,7 +2098,7 @@ "subject": "/CN=auth0-deploy-cli-e2e.us.auth0.com" } ], - "client_id": "giX56gECFgmZv2lRrlwNkd0g6YwsXCar", + "client_id": "u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -2134,7 +2134,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "PUT", - "path": "/api/v2/guardian/factors/webauthn-platform", + "path": "/api/v2/guardian/factors/email", "body": { "enabled": false }, @@ -2148,7 +2148,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "PUT", - "path": "/api/v2/guardian/factors/sms", + "path": "/api/v2/guardian/factors/otp", "body": { "enabled": false }, @@ -2176,13 +2176,13 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "PUT", - "path": "/api/v2/guardian/factors/push-notification", + "path": "/api/v2/guardian/factors/webauthn-platform", "body": { - "enabled": true + "enabled": false }, "status": 200, "response": { - "enabled": true + "enabled": false }, "rawHeaders": [], "responseIsBinary": false @@ -2190,7 +2190,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "PUT", - "path": "/api/v2/guardian/factors/otp", + "path": "/api/v2/guardian/factors/sms", "body": { "enabled": false }, @@ -2204,13 +2204,13 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "PUT", - "path": "/api/v2/guardian/factors/email", + "path": "/api/v2/guardian/factors/push-notification", "body": { - "enabled": false + "enabled": true }, "status": 200, "response": { - "enabled": false + "enabled": true }, "rawHeaders": [], "responseIsBinary": false @@ -2289,153 +2289,28 @@ }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "GET", - "path": "/api/v2/actions/actions?page=0&per_page=100", - "body": "", - "status": 200, - "response": { - "actions": [], - "per_page": 100 - }, - "rawHeaders": [], - "responseIsBinary": false - }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "POST", - "path": "/api/v2/actions/actions", + "method": "PATCH", + "path": "/api/v2/attack-protection/brute-force-protection", "body": { - "name": "My Custom Action", - "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", - "dependencies": [], - "runtime": "node18", - "secrets": [], - "supported_triggers": [ - { - "id": "post-login", - "version": "v2" - } - ] - }, - "status": 201, - "response": { - "id": "904bc668-0216-492c-bd3e-4bcddc69f411", - "name": "My Custom Action", - "supported_triggers": [ - { - "id": "post-login", - "version": "v2" - } - ], - "created_at": "2026-02-13T10:26:08.329157690Z", - "updated_at": "2026-02-13T10:26:08.344112736Z", - "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", - "dependencies": [], - "runtime": "node18", - "status": "pending", - "secrets": [], - "all_changes_deployed": false - }, - "rawHeaders": [], - "responseIsBinary": false - }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "GET", - "path": "/api/v2/actions/actions?page=0&per_page=100", - "body": "", - "status": 200, - "response": { - "actions": [ - { - "id": "904bc668-0216-492c-bd3e-4bcddc69f411", - "name": "My Custom Action", - "supported_triggers": [ - { - "id": "post-login", - "version": "v2" - } - ], - "created_at": "2026-02-13T10:26:08.329157690Z", - "updated_at": "2026-02-13T10:26:08.344112736Z", - "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", - "dependencies": [], - "runtime": "node18", - "status": "built", - "secrets": [], - "all_changes_deployed": false - } + "enabled": true, + "shields": [ + "block", + "user_notification" ], - "total": 1, - "per_page": 100 + "mode": "count_per_identifier_and_ip", + "allowlist": [], + "max_attempts": 66 }, - "rawHeaders": [], - "responseIsBinary": false - }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "POST", - "path": "/api/v2/actions/actions/904bc668-0216-492c-bd3e-4bcddc69f411/deploy", - "body": "", "status": 200, "response": { - "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", - "dependencies": [], - "id": "435970c3-9fc3-46c0-8386-de6162b6c9ff", - "deployed": false, - "number": 1, - "secrets": [], - "status": "built", - "created_at": "2026-02-13T10:26:09.377183902Z", - "updated_at": "2026-02-13T10:26:09.377183902Z", - "runtime": "node18", - "supported_triggers": [ - { - "id": "post-login", - "version": "v2" - } + "enabled": true, + "shields": [ + "block", + "user_notification" ], - "action": { - "id": "904bc668-0216-492c-bd3e-4bcddc69f411", - "name": "My Custom Action", - "supported_triggers": [ - { - "id": "post-login", - "version": "v2" - } - ], - "created_at": "2026-02-13T10:26:08.329157690Z", - "updated_at": "2026-02-13T10:26:08.329157690Z", - "all_changes_deployed": false - } - }, - "rawHeaders": [], - "responseIsBinary": false - }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "PATCH", - "path": "/api/v2/attack-protection/breached-password-detection", - "body": { - "enabled": false, - "shields": [], - "admin_notification_frequency": [], - "method": "standard" - }, - "status": 200, - "response": { - "enabled": false, - "shields": [], - "admin_notification_frequency": [], - "method": "standard", - "stage": { - "pre-user-registration": { - "shields": [] - }, - "pre-change-password": { - "shields": [] - } - } + "mode": "count_per_identifier_and_ip", + "allowlist": [], + "max_attempts": 66 }, "rawHeaders": [], "responseIsBinary": false @@ -2493,27 +2368,27 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "PATCH", - "path": "/api/v2/attack-protection/brute-force-protection", + "path": "/api/v2/attack-protection/breached-password-detection", "body": { - "enabled": true, - "shields": [ - "block", - "user_notification" - ], - "mode": "count_per_identifier_and_ip", - "allowlist": [], - "max_attempts": 66 + "enabled": false, + "shields": [], + "admin_notification_frequency": [], + "method": "standard" }, "status": 200, "response": { - "enabled": true, - "shields": [ - "block", - "user_notification" - ], - "mode": "count_per_identifier_and_ip", - "allowlist": [], - "max_attempts": 66 + "enabled": false, + "shields": [], + "admin_notification_frequency": [], + "method": "standard", + "stage": { + "pre-user-registration": { + "shields": [] + }, + "pre-change-password": { + "shields": [] + } + } }, "rawHeaders": [], "responseIsBinary": false @@ -2545,7 +2420,7 @@ } }, "created_at": "2026-01-29T08:17:51.522Z", - "updated_at": "2026-02-13T10:25:09.596Z", + "updated_at": "2026-02-13T10:31:11.400Z", "id": "acl_5EgHsY1h2Apnv4cvsM6Q9J" } ] @@ -2590,7 +2465,7 @@ } }, "created_at": "2026-01-29T08:17:51.522Z", - "updated_at": "2026-02-13T10:26:11.048Z", + "updated_at": "2026-02-16T17:04:05.972Z", "id": "acl_5EgHsY1h2Apnv4cvsM6Q9J" }, "rawHeaders": [], @@ -2742,57 +2617,140 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/connections?take=50&strategy=auth0", + "path": "/api/v2/actions/modules?page=0&per_page=100", + "body": "", + "status": 403, + "response": { + "statusCode": 403, + "error": "Forbidden", + "message": "This feature is not enabled for this tenant.", + "errorCode": "feature_not_enabled" + }, + "rawHeaders": [], + "responseIsBinary": false + }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "GET", + "path": "/api/v2/actions/actions?page=0&per_page=100", "body": "", "status": 200, "response": { - "connections": [ + "actions": [], + "per_page": 100 + }, + "rawHeaders": [], + "responseIsBinary": false + }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "POST", + "path": "/api/v2/actions/actions", + "body": { + "name": "My Custom Action", + "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", + "dependencies": [], + "runtime": "node18", + "secrets": [], + "supported_triggers": [ { - "id": "con_hs0JNGk6M5oYHR3T", - "options": { - "mfa": { - "active": true, - "return_enroll_settings": true - }, - "passwordPolicy": "good", - "passkey_options": { - "challenge_ui": "both", - "local_enrollment_enabled": true, - "progressive_enrollment_enabled": true - }, - "strategy_version": 2, - "authentication_methods": { - "passkey": { - "enabled": false - }, - "password": { - "enabled": true, - "api_behavior": "required", - "signup_behavior": "allow" - } - }, - "brute_force_protection": true, - "disable_self_service_change_password": false - }, - "strategy": "auth0", - "name": "Username-Password-Authentication", - "is_domain_connection": false, - "authentication": { - "active": true - }, - "connected_accounts": { - "active": false - }, - "realms": [ - "Username-Password-Authentication" - ], - "enabled_clients": [ - "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE", - "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4" - ] + "id": "post-login", + "version": "v2" } ] }, + "status": 201, + "response": { + "id": "0c2cd65a-2ab4-4874-84bb-5b11136cc9ba", + "name": "My Custom Action", + "supported_triggers": [ + { + "id": "post-login", + "version": "v2" + } + ], + "created_at": "2026-02-16T17:04:08.035726715Z", + "updated_at": "2026-02-16T17:04:08.043218401Z", + "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", + "dependencies": [], + "runtime": "node18", + "status": "pending", + "secrets": [], + "all_changes_deployed": false + }, + "rawHeaders": [], + "responseIsBinary": false + }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "GET", + "path": "/api/v2/actions/actions?page=0&per_page=100", + "body": "", + "status": 200, + "response": { + "actions": [ + { + "id": "0c2cd65a-2ab4-4874-84bb-5b11136cc9ba", + "name": "My Custom Action", + "supported_triggers": [ + { + "id": "post-login", + "version": "v2" + } + ], + "created_at": "2026-02-16T17:04:08.035726715Z", + "updated_at": "2026-02-16T17:04:08.043218401Z", + "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", + "dependencies": [], + "runtime": "node18", + "status": "built", + "secrets": [], + "all_changes_deployed": false + } + ], + "total": 1, + "per_page": 100 + }, + "rawHeaders": [], + "responseIsBinary": false + }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "POST", + "path": "/api/v2/actions/actions/0c2cd65a-2ab4-4874-84bb-5b11136cc9ba/deploy", + "body": "", + "status": 200, + "response": { + "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", + "dependencies": [], + "id": "f685c004-6924-462c-bdd1-d80b9c4d9c5d", + "deployed": false, + "number": 1, + "secrets": [], + "status": "built", + "created_at": "2026-02-16T17:04:08.815168038Z", + "updated_at": "2026-02-16T17:04:08.815168038Z", + "runtime": "node18", + "supported_triggers": [ + { + "id": "post-login", + "version": "v2" + } + ], + "action": { + "id": "0c2cd65a-2ab4-4874-84bb-5b11136cc9ba", + "name": "My Custom Action", + "supported_triggers": [ + { + "id": "post-login", + "version": "v2" + } + ], + "created_at": "2026-02-16T17:04:08.035726715Z", + "updated_at": "2026-02-16T17:04:08.035726715Z", + "all_changes_deployed": false + } + }, "rawHeaders": [], "responseIsBinary": false }, @@ -2805,7 +2763,7 @@ "response": { "actions": [ { - "id": "904bc668-0216-492c-bd3e-4bcddc69f411", + "id": "0c2cd65a-2ab4-4874-84bb-5b11136cc9ba", "name": "My Custom Action", "supported_triggers": [ { @@ -2813,34 +2771,34 @@ "version": "v2" } ], - "created_at": "2026-02-13T10:26:08.329157690Z", - "updated_at": "2026-02-13T10:26:08.344112736Z", + "created_at": "2026-02-16T17:04:08.035726715Z", + "updated_at": "2026-02-16T17:04:08.043218401Z", "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", "dependencies": [], "runtime": "node18", "status": "built", "secrets": [], "current_version": { - "id": "435970c3-9fc3-46c0-8386-de6162b6c9ff", + "id": "f685c004-6924-462c-bdd1-d80b9c4d9c5d", "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", "runtime": "node18", "status": "BUILT", "number": 1, - "build_time": "2026-02-13T10:26:09.470388341Z", - "created_at": "2026-02-13T10:26:09.377183902Z", - "updated_at": "2026-02-13T10:26:09.471895168Z" + "build_time": "2026-02-16T17:04:08.896675174Z", + "created_at": "2026-02-16T17:04:08.815168038Z", + "updated_at": "2026-02-16T17:04:08.897968815Z" }, "deployed_version": { "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", "dependencies": [], - "id": "435970c3-9fc3-46c0-8386-de6162b6c9ff", + "id": "f685c004-6924-462c-bdd1-d80b9c4d9c5d", "deployed": true, "number": 1, - "built_at": "2026-02-13T10:26:09.470388341Z", + "built_at": "2026-02-16T17:04:08.896675174Z", "secrets": [], "status": "built", - "created_at": "2026-02-13T10:26:09.377183902Z", - "updated_at": "2026-02-13T10:26:09.471895168Z", + "created_at": "2026-02-16T17:04:08.815168038Z", + "updated_at": "2026-02-16T17:04:08.897968815Z", "runtime": "node18", "supported_triggers": [ { @@ -2849,11 +2807,68 @@ } ] }, - "all_changes_deployed": true + "all_changes_deployed": true + } + ], + "total": 1, + "per_page": 100 + }, + "rawHeaders": [], + "responseIsBinary": false + }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "GET", + "path": "/api/v2/connections?take=50&strategy=auth0", + "body": "", + "status": 200, + "response": { + "connections": [ + { + "id": "con_4KyyGHwwixzZfOVY", + "options": { + "mfa": { + "active": true, + "return_enroll_settings": true + }, + "passwordPolicy": "good", + "passkey_options": { + "challenge_ui": "both", + "local_enrollment_enabled": true, + "progressive_enrollment_enabled": true + }, + "strategy_version": 2, + "authentication_methods": { + "passkey": { + "enabled": false + }, + "password": { + "enabled": true, + "api_behavior": "required", + "signup_behavior": "allow" + } + }, + "brute_force_protection": true, + "disable_self_service_change_password": false + }, + "strategy": "auth0", + "name": "Username-Password-Authentication", + "is_domain_connection": false, + "authentication": { + "active": true + }, + "connected_accounts": { + "active": false + }, + "realms": [ + "Username-Password-Authentication" + ], + "enabled_clients": [ + "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE", + "4R1cIUJb4tweu26ZLYAC8NGwhCzfPMcG" + ] } - ], - "total": 1, - "per_page": 100 + ] }, "rawHeaders": [], "responseIsBinary": false @@ -2951,7 +2966,7 @@ "subject": "deprecated" } ], - "client_id": "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4", + "client_id": "4R1cIUJb4tweu26ZLYAC8NGwhCzfPMcG", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -2971,12 +2986,20 @@ "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "Quickstarts API (Test Application)", - "client_metadata": { - "foo": "bar" - }, + "name": "API Explorer Application", + "allowed_clients": [], + "callbacks": [], + "client_metadata": {}, "cross_origin_authentication": false, "is_first_party": true, + "native_social_login": { + "apple": { + "enabled": false + }, + "facebook": { + "enabled": false + } + }, "oidc_conformant": true, "refresh_token": { "expiration_type": "non-expiring", @@ -2996,7 +3019,7 @@ "subject": "deprecated" } ], - "client_id": "A3DI3iNnJPuRBNAWAc0SggnvAiIj2K6o", + "client_id": "ILYi0cNQo9QFRhPu9x1LwaKpfJuxqvlQ", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -3004,6 +3027,7 @@ "lifetime_in_seconds": 36000, "secret_encoded": false }, + "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", "app_type": "non_interactive", "grant_types": [ @@ -3015,8 +3039,9 @@ "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "API Explorer Application", + "name": "Node App", "allowed_clients": [], + "allowed_logout_urls": [], "callbacks": [], "client_metadata": {}, "cross_origin_authentication": false, @@ -3048,7 +3073,8 @@ "subject": "deprecated" } ], - "client_id": "uBlUMwvuOBoM3WMI3HmWP0LT4Wh0JgNV", + "allowed_origins": [], + "client_id": "1J0eYQOAdKR6mWk9X1NPNqDXVqzgdwXZ", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -3058,31 +3084,26 @@ }, "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", - "app_type": "non_interactive", + "app_type": "regular_web", "grant_types": [ + "authorization_code", + "implicit", + "refresh_token", "client_credentials" ], + "web_origins": [], "custom_login_page_on": true }, { "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "Node App", - "allowed_clients": [], - "allowed_logout_urls": [], - "callbacks": [], - "client_metadata": {}, + "name": "Quickstarts API (Test Application)", + "client_metadata": { + "foo": "bar" + }, "cross_origin_authentication": false, "is_first_party": true, - "native_social_login": { - "apple": { - "enabled": false - }, - "facebook": { - "enabled": false - } - }, "oidc_conformant": true, "refresh_token": { "expiration_type": "non-expiring", @@ -3102,8 +3123,7 @@ "subject": "deprecated" } ], - "allowed_origins": [], - "client_id": "pplyWVYIrlso9wpmxRxLKCZi5IBruVv7", + "client_id": "YLxkngzwg8GRV4q93BtFqi0SIRreG0ef", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -3111,16 +3131,11 @@ "lifetime_in_seconds": 36000, "secret_encoded": false }, - "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", - "app_type": "regular_web", + "app_type": "non_interactive", "grant_types": [ - "authorization_code", - "implicit", - "refresh_token", "client_credentials" ], - "web_origins": [], "custom_login_page_on": true }, { @@ -3149,7 +3164,7 @@ "subject": "deprecated" } ], - "client_id": "Iz6ck1jHvmCMNxU8rTDr3uGr1actAvcX", + "client_id": "JSpoWije4CKwUe6oUAGhtiP2b6qZVBoq", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -3202,7 +3217,7 @@ "subject": "deprecated" } ], - "client_id": "ESNQgEtm5yzlcvLljLjNCTCckHniGuxA", + "client_id": "xiWT8cVGT10UQcryJCU2HfMzRcNN0Exb", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -3262,7 +3277,7 @@ "subject": "deprecated" } ], - "client_id": "Hp4aFX1YzW5bzxLZsAwftXbXvu396aRC", + "client_id": "ob4KTYmPNjtAxiUSFLuRlhhRtmWUuU9h", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -3320,7 +3335,7 @@ "subject": "deprecated" } ], - "client_id": "giX56gECFgmZv2lRrlwNkd0g6YwsXCar", + "client_id": "u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -3387,7 +3402,7 @@ "response": { "actions": [ { - "id": "904bc668-0216-492c-bd3e-4bcddc69f411", + "id": "0c2cd65a-2ab4-4874-84bb-5b11136cc9ba", "name": "My Custom Action", "supported_triggers": [ { @@ -3395,34 +3410,34 @@ "version": "v2" } ], - "created_at": "2026-02-13T10:26:08.329157690Z", - "updated_at": "2026-02-13T10:26:08.344112736Z", + "created_at": "2026-02-16T17:04:08.035726715Z", + "updated_at": "2026-02-16T17:04:08.043218401Z", "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", "dependencies": [], "runtime": "node18", "status": "built", "secrets": [], "current_version": { - "id": "435970c3-9fc3-46c0-8386-de6162b6c9ff", + "id": "f685c004-6924-462c-bdd1-d80b9c4d9c5d", "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", "runtime": "node18", "status": "BUILT", "number": 1, - "build_time": "2026-02-13T10:26:09.470388341Z", - "created_at": "2026-02-13T10:26:09.377183902Z", - "updated_at": "2026-02-13T10:26:09.471895168Z" + "build_time": "2026-02-16T17:04:08.896675174Z", + "created_at": "2026-02-16T17:04:08.815168038Z", + "updated_at": "2026-02-16T17:04:08.897968815Z" }, "deployed_version": { "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", "dependencies": [], - "id": "435970c3-9fc3-46c0-8386-de6162b6c9ff", + "id": "f685c004-6924-462c-bdd1-d80b9c4d9c5d", "deployed": true, "number": 1, - "built_at": "2026-02-13T10:26:09.470388341Z", + "built_at": "2026-02-16T17:04:08.896675174Z", "secrets": [], "status": "built", - "created_at": "2026-02-13T10:26:09.377183902Z", - "updated_at": "2026-02-13T10:26:09.471895168Z", + "created_at": "2026-02-16T17:04:08.815168038Z", + "updated_at": "2026-02-16T17:04:08.897968815Z", "runtime": "node18", "supported_triggers": [ { @@ -3449,7 +3464,7 @@ "response": { "connections": [ { - "id": "con_hs0JNGk6M5oYHR3T", + "id": "con_4KyyGHwwixzZfOVY", "options": { "mfa": { "active": true, @@ -3489,7 +3504,7 @@ ], "enabled_clients": [ "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE", - "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4" + "4R1cIUJb4tweu26ZLYAC8NGwhCzfPMcG" ] } ] @@ -3500,13 +3515,13 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/connections/con_hs0JNGk6M5oYHR3T/clients?take=50", + "path": "/api/v2/connections/con_4KyyGHwwixzZfOVY/clients?take=50", "body": "", "status": 200, "response": { "clients": [ { - "client_id": "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4" + "client_id": "4R1cIUJb4tweu26ZLYAC8NGwhCzfPMcG" }, { "client_id": "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE" @@ -3566,7 +3581,7 @@ }, "status": 201, "response": { - "id": "con_7P33d2zJIPCFXXbH", + "id": "con_BaKydp194pu6KeMY", "options": { "mfa": { "active": true, @@ -3644,7 +3659,7 @@ "response": { "connections": [ { - "id": "con_7P33d2zJIPCFXXbH", + "id": "con_BaKydp194pu6KeMY", "options": { "mfa": { "active": true, @@ -3718,14 +3733,14 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "PATCH", - "path": "/api/v2/connections/con_7P33d2zJIPCFXXbH/clients", + "path": "/api/v2/connections/con_BaKydp194pu6KeMY/clients", "body": [ { - "client_id": "pplyWVYIrlso9wpmxRxLKCZi5IBruVv7", + "client_id": "1J0eYQOAdKR6mWk9X1NPNqDXVqzgdwXZ", "status": true }, { - "client_id": "giX56gECFgmZv2lRrlwNkd0g6YwsXCar", + "client_id": "u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek", "status": true } ], @@ -3827,7 +3842,7 @@ "subject": "deprecated" } ], - "client_id": "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4", + "client_id": "4R1cIUJb4tweu26ZLYAC8NGwhCzfPMcG", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -3847,12 +3862,20 @@ "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "Quickstarts API (Test Application)", - "client_metadata": { - "foo": "bar" - }, + "name": "API Explorer Application", + "allowed_clients": [], + "callbacks": [], + "client_metadata": {}, "cross_origin_authentication": false, "is_first_party": true, + "native_social_login": { + "apple": { + "enabled": false + }, + "facebook": { + "enabled": false + } + }, "oidc_conformant": true, "refresh_token": { "expiration_type": "non-expiring", @@ -3872,7 +3895,7 @@ "subject": "deprecated" } ], - "client_id": "A3DI3iNnJPuRBNAWAc0SggnvAiIj2K6o", + "client_id": "ILYi0cNQo9QFRhPu9x1LwaKpfJuxqvlQ", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -3880,6 +3903,7 @@ "lifetime_in_seconds": 36000, "secret_encoded": false }, + "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", "app_type": "non_interactive", "grant_types": [ @@ -3891,8 +3915,9 @@ "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "API Explorer Application", + "name": "Node App", "allowed_clients": [], + "allowed_logout_urls": [], "callbacks": [], "client_metadata": {}, "cross_origin_authentication": false, @@ -3924,7 +3949,8 @@ "subject": "deprecated" } ], - "client_id": "uBlUMwvuOBoM3WMI3HmWP0LT4Wh0JgNV", + "allowed_origins": [], + "client_id": "1J0eYQOAdKR6mWk9X1NPNqDXVqzgdwXZ", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -3934,31 +3960,26 @@ }, "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", - "app_type": "non_interactive", + "app_type": "regular_web", "grant_types": [ + "authorization_code", + "implicit", + "refresh_token", "client_credentials" ], + "web_origins": [], "custom_login_page_on": true }, { "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "Node App", - "allowed_clients": [], - "allowed_logout_urls": [], - "callbacks": [], - "client_metadata": {}, + "name": "Quickstarts API (Test Application)", + "client_metadata": { + "foo": "bar" + }, "cross_origin_authentication": false, "is_first_party": true, - "native_social_login": { - "apple": { - "enabled": false - }, - "facebook": { - "enabled": false - } - }, "oidc_conformant": true, "refresh_token": { "expiration_type": "non-expiring", @@ -3978,8 +3999,7 @@ "subject": "deprecated" } ], - "allowed_origins": [], - "client_id": "pplyWVYIrlso9wpmxRxLKCZi5IBruVv7", + "client_id": "YLxkngzwg8GRV4q93BtFqi0SIRreG0ef", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -3987,16 +4007,11 @@ "lifetime_in_seconds": 36000, "secret_encoded": false }, - "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", - "app_type": "regular_web", + "app_type": "non_interactive", "grant_types": [ - "authorization_code", - "implicit", - "refresh_token", "client_credentials" ], - "web_origins": [], "custom_login_page_on": true }, { @@ -4025,7 +4040,7 @@ "subject": "deprecated" } ], - "client_id": "Iz6ck1jHvmCMNxU8rTDr3uGr1actAvcX", + "client_id": "JSpoWije4CKwUe6oUAGhtiP2b6qZVBoq", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -4078,7 +4093,7 @@ "subject": "deprecated" } ], - "client_id": "ESNQgEtm5yzlcvLljLjNCTCckHniGuxA", + "client_id": "xiWT8cVGT10UQcryJCU2HfMzRcNN0Exb", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -4138,7 +4153,7 @@ "subject": "deprecated" } ], - "client_id": "Hp4aFX1YzW5bzxLZsAwftXbXvu396aRC", + "client_id": "ob4KTYmPNjtAxiUSFLuRlhhRtmWUuU9h", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -4196,7 +4211,7 @@ "subject": "deprecated" } ], - "client_id": "giX56gECFgmZv2lRrlwNkd0g6YwsXCar", + "client_id": "u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -4263,7 +4278,7 @@ "response": { "connections": [ { - "id": "con_7P33d2zJIPCFXXbH", + "id": "con_BaKydp194pu6KeMY", "options": { "mfa": { "active": true, @@ -4328,39 +4343,12 @@ "boo-baz-db-connection-test" ], "enabled_clients": [ - "pplyWVYIrlso9wpmxRxLKCZi5IBruVv7", - "giX56gECFgmZv2lRrlwNkd0g6YwsXCar" - ] - }, - { - "id": "con_mgTe5EjBQeY95fZD", - "options": { - "email": true, - "scope": [ - "email", - "profile" - ], - "profile": true - }, - "strategy": "google-oauth2", - "name": "google-oauth2", - "is_domain_connection": false, - "authentication": { - "active": true - }, - "connected_accounts": { - "active": false - }, - "realms": [ - "google-oauth2" - ], - "enabled_clients": [ - "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE", - "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4" + "1J0eYQOAdKR6mWk9X1NPNqDXVqzgdwXZ", + "u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek" ] }, { - "id": "con_hs0JNGk6M5oYHR3T", + "id": "con_4KyyGHwwixzZfOVY", "options": { "mfa": { "active": true, @@ -4400,7 +4388,7 @@ ], "enabled_clients": [ "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE", - "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4" + "4R1cIUJb4tweu26ZLYAC8NGwhCzfPMcG" ] } ] @@ -4417,7 +4405,7 @@ "response": { "connections": [ { - "id": "con_7P33d2zJIPCFXXbH", + "id": "con_BaKydp194pu6KeMY", "options": { "mfa": { "active": true, @@ -4482,39 +4470,12 @@ "boo-baz-db-connection-test" ], "enabled_clients": [ - "pplyWVYIrlso9wpmxRxLKCZi5IBruVv7", - "giX56gECFgmZv2lRrlwNkd0g6YwsXCar" - ] - }, - { - "id": "con_mgTe5EjBQeY95fZD", - "options": { - "email": true, - "scope": [ - "email", - "profile" - ], - "profile": true - }, - "strategy": "google-oauth2", - "name": "google-oauth2", - "is_domain_connection": false, - "authentication": { - "active": true - }, - "connected_accounts": { - "active": false - }, - "realms": [ - "google-oauth2" - ], - "enabled_clients": [ - "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE", - "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4" + "1J0eYQOAdKR6mWk9X1NPNqDXVqzgdwXZ", + "u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek" ] }, { - "id": "con_hs0JNGk6M5oYHR3T", + "id": "con_4KyyGHwwixzZfOVY", "options": { "mfa": { "active": true, @@ -4554,7 +4515,7 @@ ], "enabled_clients": [ "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE", - "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4" + "4R1cIUJb4tweu26ZLYAC8NGwhCzfPMcG" ] } ] @@ -4579,28 +4540,11 @@ }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "GET", - "path": "/api/v2/connections/con_mgTe5EjBQeY95fZD/clients?take=50", - "body": "", - "status": 200, - "response": { - "clients": [ - { - "client_id": "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4" - }, - { - "client_id": "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE" - } - ] - }, - "rawHeaders": [], - "responseIsBinary": false - }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "PATCH", - "path": "/api/v2/connections/con_mgTe5EjBQeY95fZD", + "method": "POST", + "path": "/api/v2/connections", "body": { + "name": "google-oauth2", + "strategy": "google-oauth2", "is_domain_connection": false, "options": { "email": true, @@ -4611,9 +4555,9 @@ "profile": true } }, - "status": 200, + "status": 201, "response": { - "id": "con_mgTe5EjBQeY95fZD", + "id": "con_HqDvThofsvA7Ydc9", "options": { "email": true, "scope": [ @@ -4631,10 +4575,7 @@ "connected_accounts": { "active": false }, - "enabled_clients": [ - "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE", - "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4" - ], + "enabled_clients": [], "realms": [ "google-oauth2" ] @@ -4642,26 +4583,55 @@ "rawHeaders": [], "responseIsBinary": false }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "GET", + "path": "/api/v2/connections?take=1&name=google-oauth2&include_fields=true", + "body": "", + "status": 200, + "response": { + "connections": [ + { + "id": "con_HqDvThofsvA7Ydc9", + "options": { + "email": true, + "scope": [ + "email", + "profile" + ], + "profile": true + }, + "strategy": "google-oauth2", + "name": "google-oauth2", + "is_domain_connection": false, + "authentication": { + "active": true + }, + "connected_accounts": { + "active": false + }, + "realms": [ + "google-oauth2" + ], + "enabled_clients": [] + } + ] + }, + "rawHeaders": [], + "responseIsBinary": false + }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "PATCH", - "path": "/api/v2/connections/con_mgTe5EjBQeY95fZD/clients", + "path": "/api/v2/connections/con_HqDvThofsvA7Ydc9/clients", "body": [ { - "client_id": "ESNQgEtm5yzlcvLljLjNCTCckHniGuxA", + "client_id": "xiWT8cVGT10UQcryJCU2HfMzRcNN0Exb", "status": true }, { - "client_id": "giX56gECFgmZv2lRrlwNkd0g6YwsXCar", + "client_id": "u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek", "status": true - }, - { - "client_id": "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4", - "status": false - }, - { - "client_id": "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE", - "status": false } ], "status": 204, @@ -4799,7 +4769,7 @@ "subject": "deprecated" } ], - "client_id": "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4", + "client_id": "4R1cIUJb4tweu26ZLYAC8NGwhCzfPMcG", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -4819,12 +4789,20 @@ "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "Quickstarts API (Test Application)", - "client_metadata": { - "foo": "bar" - }, + "name": "API Explorer Application", + "allowed_clients": [], + "callbacks": [], + "client_metadata": {}, "cross_origin_authentication": false, "is_first_party": true, + "native_social_login": { + "apple": { + "enabled": false + }, + "facebook": { + "enabled": false + } + }, "oidc_conformant": true, "refresh_token": { "expiration_type": "non-expiring", @@ -4844,7 +4822,7 @@ "subject": "deprecated" } ], - "client_id": "A3DI3iNnJPuRBNAWAc0SggnvAiIj2K6o", + "client_id": "ILYi0cNQo9QFRhPu9x1LwaKpfJuxqvlQ", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -4852,6 +4830,7 @@ "lifetime_in_seconds": 36000, "secret_encoded": false }, + "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", "app_type": "non_interactive", "grant_types": [ @@ -4863,8 +4842,9 @@ "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "API Explorer Application", + "name": "Node App", "allowed_clients": [], + "allowed_logout_urls": [], "callbacks": [], "client_metadata": {}, "cross_origin_authentication": false, @@ -4896,7 +4876,8 @@ "subject": "deprecated" } ], - "client_id": "uBlUMwvuOBoM3WMI3HmWP0LT4Wh0JgNV", + "allowed_origins": [], + "client_id": "1J0eYQOAdKR6mWk9X1NPNqDXVqzgdwXZ", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -4906,31 +4887,26 @@ }, "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", - "app_type": "non_interactive", + "app_type": "regular_web", "grant_types": [ + "authorization_code", + "implicit", + "refresh_token", "client_credentials" ], + "web_origins": [], "custom_login_page_on": true }, { "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "Node App", - "allowed_clients": [], - "allowed_logout_urls": [], - "callbacks": [], - "client_metadata": {}, + "name": "Quickstarts API (Test Application)", + "client_metadata": { + "foo": "bar" + }, "cross_origin_authentication": false, "is_first_party": true, - "native_social_login": { - "apple": { - "enabled": false - }, - "facebook": { - "enabled": false - } - }, "oidc_conformant": true, "refresh_token": { "expiration_type": "non-expiring", @@ -4950,8 +4926,7 @@ "subject": "deprecated" } ], - "allowed_origins": [], - "client_id": "pplyWVYIrlso9wpmxRxLKCZi5IBruVv7", + "client_id": "YLxkngzwg8GRV4q93BtFqi0SIRreG0ef", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -4959,16 +4934,11 @@ "lifetime_in_seconds": 36000, "secret_encoded": false }, - "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", - "app_type": "regular_web", + "app_type": "non_interactive", "grant_types": [ - "authorization_code", - "implicit", - "refresh_token", "client_credentials" ], - "web_origins": [], "custom_login_page_on": true }, { @@ -4997,7 +4967,7 @@ "subject": "deprecated" } ], - "client_id": "Iz6ck1jHvmCMNxU8rTDr3uGr1actAvcX", + "client_id": "JSpoWije4CKwUe6oUAGhtiP2b6qZVBoq", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -5050,7 +5020,7 @@ "subject": "deprecated" } ], - "client_id": "ESNQgEtm5yzlcvLljLjNCTCckHniGuxA", + "client_id": "xiWT8cVGT10UQcryJCU2HfMzRcNN0Exb", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -5110,7 +5080,7 @@ "subject": "deprecated" } ], - "client_id": "Hp4aFX1YzW5bzxLZsAwftXbXvu396aRC", + "client_id": "ob4KTYmPNjtAxiUSFLuRlhhRtmWUuU9h", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -5168,7 +5138,7 @@ "subject": "deprecated" } ], - "client_id": "giX56gECFgmZv2lRrlwNkd0g6YwsXCar", + "client_id": "u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -5484,7 +5454,7 @@ "method": "POST", "path": "/api/v2/client-grants", "body": { - "client_id": "uBlUMwvuOBoM3WMI3HmWP0LT4Wh0JgNV", + "client_id": "ILYi0cNQo9QFRhPu9x1LwaKpfJuxqvlQ", "audience": "https://auth0-deploy-cli-e2e.us.auth0.com/api/v2/", "scope": [ "read:client_grants", @@ -5621,8 +5591,8 @@ }, "status": 201, "response": { - "id": "cgr_loIebn0hExrwMXUc", - "client_id": "uBlUMwvuOBoM3WMI3HmWP0LT4Wh0JgNV", + "id": "cgr_PtCL12zii7M5JOSk", + "client_id": "ILYi0cNQo9QFRhPu9x1LwaKpfJuxqvlQ", "audience": "https://auth0-deploy-cli-e2e.us.auth0.com/api/v2/", "scope": [ "read:client_grants", @@ -5766,7 +5736,7 @@ "method": "POST", "path": "/api/v2/client-grants", "body": { - "client_id": "Iz6ck1jHvmCMNxU8rTDr3uGr1actAvcX", + "client_id": "JSpoWije4CKwUe6oUAGhtiP2b6qZVBoq", "audience": "https://auth0-deploy-cli-e2e.us.auth0.com/api/v2/", "scope": [ "read:client_grants", @@ -5903,8 +5873,8 @@ }, "status": 201, "response": { - "id": "cgr_ZK4DSWMLDpUpVfOy", - "client_id": "Iz6ck1jHvmCMNxU8rTDr3uGr1actAvcX", + "id": "cgr_X9eWK7l92bqAY4ej", + "client_id": "JSpoWije4CKwUe6oUAGhtiP2b6qZVBoq", "audience": "https://auth0-deploy-cli-e2e.us.auth0.com/api/v2/", "scope": [ "read:client_grants", @@ -6063,14 +6033,14 @@ "method": "POST", "path": "/api/v2/roles", "body": { - "name": "Reader", - "description": "Can only read things" + "name": "Admin", + "description": "Can read and write things" }, "status": 200, "response": { - "id": "rol_fq36Rme7M2cVz7q0", - "name": "Reader", - "description": "Can only read things" + "id": "rol_PKvBKcfS2zcMAkgp", + "name": "Admin", + "description": "Can read and write things" }, "rawHeaders": [], "responseIsBinary": false @@ -6080,14 +6050,14 @@ "method": "POST", "path": "/api/v2/roles", "body": { - "name": "read_only", - "description": "Read Only" + "name": "Reader", + "description": "Can only read things" }, "status": 200, "response": { - "id": "rol_9O7TUijcmN9Y1M79", - "name": "read_only", - "description": "Read Only" + "id": "rol_cTfY9XEvtAmpFXPH", + "name": "Reader", + "description": "Can only read things" }, "rawHeaders": [], "responseIsBinary": false @@ -6097,14 +6067,14 @@ "method": "POST", "path": "/api/v2/roles", "body": { - "name": "Admin", - "description": "Can read and write things" + "name": "read_only", + "description": "Read Only" }, "status": 200, "response": { - "id": "rol_Vii7zMJYTr9j0ud1", - "name": "Admin", - "description": "Can read and write things" + "id": "rol_3WV3UtInVufuNfJi", + "name": "read_only", + "description": "Read Only" }, "rawHeaders": [], "responseIsBinary": false @@ -6119,7 +6089,7 @@ }, "status": 200, "response": { - "id": "rol_4jMbe1hbCYdIEFs7", + "id": "rol_DXCz3b7aZUyS2DM1", "name": "read_osnly", "description": "Readz Only" }, @@ -6155,7 +6125,7 @@ "okta" ], "created_at": "2024-11-26T11:58:18.962Z", - "updated_at": "2026-02-13T10:25:19.606Z", + "updated_at": "2026-02-13T10:31:29.709Z", "branding": { "colors": { "primary": "#19aecc" @@ -6231,7 +6201,7 @@ "okta" ], "created_at": "2024-11-26T11:58:18.962Z", - "updated_at": "2026-02-13T10:26:25.479Z", + "updated_at": "2026-02-16T17:04:23.454Z", "branding": { "colors": { "primary": "#19aecc" @@ -6295,6 +6265,18 @@ "rawHeaders": [], "responseIsBinary": false }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "GET", + "path": "/api/v2/organizations?take=50", + "body": "", + "status": 200, + "response": { + "organizations": [] + }, + "rawHeaders": [], + "responseIsBinary": false + }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", @@ -6388,7 +6370,7 @@ "subject": "deprecated" } ], - "client_id": "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4", + "client_id": "4R1cIUJb4tweu26ZLYAC8NGwhCzfPMcG", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -6408,12 +6390,20 @@ "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "Quickstarts API (Test Application)", - "client_metadata": { - "foo": "bar" - }, + "name": "API Explorer Application", + "allowed_clients": [], + "callbacks": [], + "client_metadata": {}, "cross_origin_authentication": false, "is_first_party": true, + "native_social_login": { + "apple": { + "enabled": false + }, + "facebook": { + "enabled": false + } + }, "oidc_conformant": true, "refresh_token": { "expiration_type": "non-expiring", @@ -6433,7 +6423,7 @@ "subject": "deprecated" } ], - "client_id": "A3DI3iNnJPuRBNAWAc0SggnvAiIj2K6o", + "client_id": "ILYi0cNQo9QFRhPu9x1LwaKpfJuxqvlQ", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -6441,6 +6431,7 @@ "lifetime_in_seconds": 36000, "secret_encoded": false }, + "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", "app_type": "non_interactive", "grant_types": [ @@ -6452,8 +6443,9 @@ "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "API Explorer Application", + "name": "Node App", "allowed_clients": [], + "allowed_logout_urls": [], "callbacks": [], "client_metadata": {}, "cross_origin_authentication": false, @@ -6485,7 +6477,8 @@ "subject": "deprecated" } ], - "client_id": "uBlUMwvuOBoM3WMI3HmWP0LT4Wh0JgNV", + "allowed_origins": [], + "client_id": "1J0eYQOAdKR6mWk9X1NPNqDXVqzgdwXZ", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -6495,31 +6488,26 @@ }, "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", - "app_type": "non_interactive", + "app_type": "regular_web", "grant_types": [ + "authorization_code", + "implicit", + "refresh_token", "client_credentials" ], + "web_origins": [], "custom_login_page_on": true }, { "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "Node App", - "allowed_clients": [], - "allowed_logout_urls": [], - "callbacks": [], - "client_metadata": {}, + "name": "Quickstarts API (Test Application)", + "client_metadata": { + "foo": "bar" + }, "cross_origin_authentication": false, "is_first_party": true, - "native_social_login": { - "apple": { - "enabled": false - }, - "facebook": { - "enabled": false - } - }, "oidc_conformant": true, "refresh_token": { "expiration_type": "non-expiring", @@ -6539,8 +6527,7 @@ "subject": "deprecated" } ], - "allowed_origins": [], - "client_id": "pplyWVYIrlso9wpmxRxLKCZi5IBruVv7", + "client_id": "YLxkngzwg8GRV4q93BtFqi0SIRreG0ef", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -6548,16 +6535,11 @@ "lifetime_in_seconds": 36000, "secret_encoded": false }, - "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", - "app_type": "regular_web", + "app_type": "non_interactive", "grant_types": [ - "authorization_code", - "implicit", - "refresh_token", "client_credentials" ], - "web_origins": [], "custom_login_page_on": true }, { @@ -6586,7 +6568,7 @@ "subject": "deprecated" } ], - "client_id": "Iz6ck1jHvmCMNxU8rTDr3uGr1actAvcX", + "client_id": "JSpoWije4CKwUe6oUAGhtiP2b6qZVBoq", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -6639,7 +6621,7 @@ "subject": "deprecated" } ], - "client_id": "ESNQgEtm5yzlcvLljLjNCTCckHniGuxA", + "client_id": "xiWT8cVGT10UQcryJCU2HfMzRcNN0Exb", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -6699,7 +6681,7 @@ "subject": "deprecated" } ], - "client_id": "Hp4aFX1YzW5bzxLZsAwftXbXvu396aRC", + "client_id": "ob4KTYmPNjtAxiUSFLuRlhhRtmWUuU9h", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -6757,7 +6739,7 @@ "subject": "deprecated" } ], - "client_id": "giX56gECFgmZv2lRrlwNkd0g6YwsXCar", + "client_id": "u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -6815,18 +6797,6 @@ "rawHeaders": [], "responseIsBinary": false }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "GET", - "path": "/api/v2/organizations?take=50", - "body": "", - "status": 200, - "response": { - "organizations": [] - }, - "rawHeaders": [], - "responseIsBinary": false - }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", @@ -6836,7 +6806,7 @@ "response": { "connections": [ { - "id": "con_7P33d2zJIPCFXXbH", + "id": "con_BaKydp194pu6KeMY", "options": { "mfa": { "active": true, @@ -6901,12 +6871,12 @@ "boo-baz-db-connection-test" ], "enabled_clients": [ - "pplyWVYIrlso9wpmxRxLKCZi5IBruVv7", - "giX56gECFgmZv2lRrlwNkd0g6YwsXCar" + "1J0eYQOAdKR6mWk9X1NPNqDXVqzgdwXZ", + "u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek" ] }, { - "id": "con_mgTe5EjBQeY95fZD", + "id": "con_HqDvThofsvA7Ydc9", "options": { "email": true, "scope": [ @@ -6928,12 +6898,12 @@ "google-oauth2" ], "enabled_clients": [ - "ESNQgEtm5yzlcvLljLjNCTCckHniGuxA", - "giX56gECFgmZv2lRrlwNkd0g6YwsXCar" + "xiWT8cVGT10UQcryJCU2HfMzRcNN0Exb", + "u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek" ] }, { - "id": "con_hs0JNGk6M5oYHR3T", + "id": "con_4KyyGHwwixzZfOVY", "options": { "mfa": { "active": true, @@ -6973,7 +6943,7 @@ ], "enabled_clients": [ "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE", - "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4" + "4R1cIUJb4tweu26ZLYAC8NGwhCzfPMcG" ] } ] @@ -6990,8 +6960,8 @@ "response": { "client_grants": [ { - "id": "cgr_ZK4DSWMLDpUpVfOy", - "client_id": "Iz6ck1jHvmCMNxU8rTDr3uGr1actAvcX", + "id": "cgr_PtCL12zii7M5JOSk", + "client_id": "ILYi0cNQo9QFRhPu9x1LwaKpfJuxqvlQ", "audience": "https://auth0-deploy-cli-e2e.us.auth0.com/api/v2/", "scope": [ "read:client_grants", @@ -7128,8 +7098,8 @@ "subject_type": "client" }, { - "id": "cgr_loIebn0hExrwMXUc", - "client_id": "uBlUMwvuOBoM3WMI3HmWP0LT4Wh0JgNV", + "id": "cgr_X9eWK7l92bqAY4ej", + "client_id": "JSpoWije4CKwUe6oUAGhtiP2b6qZVBoq", "audience": "https://auth0-deploy-cli-e2e.us.auth0.com/api/v2/", "scope": [ "read:client_grants", @@ -7603,7 +7573,7 @@ "subject": "deprecated" } ], - "client_id": "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4", + "client_id": "4R1cIUJb4tweu26ZLYAC8NGwhCzfPMcG", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -7623,12 +7593,20 @@ "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "Quickstarts API (Test Application)", - "client_metadata": { - "foo": "bar" - }, + "name": "API Explorer Application", + "allowed_clients": [], + "callbacks": [], + "client_metadata": {}, "cross_origin_authentication": false, "is_first_party": true, + "native_social_login": { + "apple": { + "enabled": false + }, + "facebook": { + "enabled": false + } + }, "oidc_conformant": true, "refresh_token": { "expiration_type": "non-expiring", @@ -7648,7 +7626,7 @@ "subject": "deprecated" } ], - "client_id": "A3DI3iNnJPuRBNAWAc0SggnvAiIj2K6o", + "client_id": "ILYi0cNQo9QFRhPu9x1LwaKpfJuxqvlQ", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -7656,6 +7634,7 @@ "lifetime_in_seconds": 36000, "secret_encoded": false }, + "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", "app_type": "non_interactive", "grant_types": [ @@ -7667,8 +7646,9 @@ "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "API Explorer Application", + "name": "Node App", "allowed_clients": [], + "allowed_logout_urls": [], "callbacks": [], "client_metadata": {}, "cross_origin_authentication": false, @@ -7700,7 +7680,8 @@ "subject": "deprecated" } ], - "client_id": "uBlUMwvuOBoM3WMI3HmWP0LT4Wh0JgNV", + "allowed_origins": [], + "client_id": "1J0eYQOAdKR6mWk9X1NPNqDXVqzgdwXZ", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -7710,31 +7691,26 @@ }, "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", - "app_type": "non_interactive", + "app_type": "regular_web", "grant_types": [ + "authorization_code", + "implicit", + "refresh_token", "client_credentials" ], + "web_origins": [], "custom_login_page_on": true }, { "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "Node App", - "allowed_clients": [], - "allowed_logout_urls": [], - "callbacks": [], - "client_metadata": {}, + "name": "Quickstarts API (Test Application)", + "client_metadata": { + "foo": "bar" + }, "cross_origin_authentication": false, "is_first_party": true, - "native_social_login": { - "apple": { - "enabled": false - }, - "facebook": { - "enabled": false - } - }, "oidc_conformant": true, "refresh_token": { "expiration_type": "non-expiring", @@ -7754,8 +7730,7 @@ "subject": "deprecated" } ], - "allowed_origins": [], - "client_id": "pplyWVYIrlso9wpmxRxLKCZi5IBruVv7", + "client_id": "YLxkngzwg8GRV4q93BtFqi0SIRreG0ef", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -7763,16 +7738,11 @@ "lifetime_in_seconds": 36000, "secret_encoded": false }, - "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", - "app_type": "regular_web", + "app_type": "non_interactive", "grant_types": [ - "authorization_code", - "implicit", - "refresh_token", "client_credentials" ], - "web_origins": [], "custom_login_page_on": true }, { @@ -7801,7 +7771,7 @@ "subject": "deprecated" } ], - "client_id": "Iz6ck1jHvmCMNxU8rTDr3uGr1actAvcX", + "client_id": "JSpoWije4CKwUe6oUAGhtiP2b6qZVBoq", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -7854,7 +7824,7 @@ "subject": "deprecated" } ], - "client_id": "ESNQgEtm5yzlcvLljLjNCTCckHniGuxA", + "client_id": "xiWT8cVGT10UQcryJCU2HfMzRcNN0Exb", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -7914,7 +7884,7 @@ "subject": "deprecated" } ], - "client_id": "Hp4aFX1YzW5bzxLZsAwftXbXvu396aRC", + "client_id": "ob4KTYmPNjtAxiUSFLuRlhhRtmWUuU9h", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -7972,7 +7942,7 @@ "subject": "deprecated" } ], - "client_id": "giX56gECFgmZv2lRrlwNkd0g6YwsXCar", + "client_id": "u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -8040,7 +8010,7 @@ }, "status": 201, "response": { - "id": "org_WeseaFOehx5sXauT", + "id": "org_EJAehbxTdxksCwoH", "display_name": "Organization2", "name": "org2" }, @@ -8063,7 +8033,7 @@ }, "status": 201, "response": { - "id": "org_19dkFpo1x6nSD6ir", + "id": "org_B2OPtUdlswlQ6G26", "display_name": "Organization", "name": "org1", "branding": { @@ -8100,7 +8070,7 @@ }, "status": 200, "response": { - "id": "lst_0000000000026538", + "id": "lst_0000000000026646", "name": "Suspended DD Log Stream", "type": "datadog", "status": "active", @@ -8165,14 +8135,14 @@ }, "status": 200, "response": { - "id": "lst_0000000000026539", + "id": "lst_0000000000026647", "name": "Amazon EventBridge", "type": "eventbridge", "status": "active", "sink": { "awsAccountId": "123456789012", "awsRegion": "us-east-2", - "awsPartnerEventSource": "aws.partner/auth0.com/auth0-deploy-cli-e2e-6ca641f9-0a06-48f0-9547-7d8053ce62a5/auth0.logs" + "awsPartnerEventSource": "aws.partner/auth0.com/auth0-deploy-cli-e2e-86b53d0c-327c-4b51-9536-89175a2b42ab/auth0.logs" }, "filters": [ { @@ -8235,22 +8205,14 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/forms?page=0&per_page=100&include_totals=true", + "path": "/api/v2/flows?page=0&per_page=100&include_totals=true", "body": "", "status": 200, "response": { "limit": 100, "start": 0, - "total": 1, - "forms": [ - { - "id": "ap_6JUSCU7qq1CravnoU6d6jr", - "name": "Blank-form", - "flow_count": 0, - "created_at": "2024-11-26T11:58:18.187Z", - "updated_at": "2026-02-13T10:25:30.223Z" - } - ] + "total": 0, + "flows": [] }, "rawHeaders": [], "responseIsBinary": false @@ -8258,14 +8220,22 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/flows?page=0&per_page=100&include_totals=true", + "path": "/api/v2/forms?page=0&per_page=100&include_totals=true", "body": "", "status": 200, "response": { "limit": 100, "start": 0, - "total": 0, - "flows": [] + "total": 1, + "forms": [ + { + "id": "ap_6JUSCU7qq1CravnoU6d6jr", + "name": "Blank-form", + "flow_count": 0, + "created_at": "2024-11-26T11:58:18.187Z", + "updated_at": "2026-02-13T17:00:51.107Z" + } + ] }, "rawHeaders": [], "responseIsBinary": false @@ -8334,7 +8304,7 @@ } }, "created_at": "2024-11-26T11:58:18.187Z", - "updated_at": "2026-02-13T10:25:30.223Z" + "updated_at": "2026-02-13T17:00:51.107Z" }, "rawHeaders": [], "responseIsBinary": false @@ -8459,7 +8429,7 @@ } }, "created_at": "2024-11-26T11:58:18.187Z", - "updated_at": "2026-02-13T10:26:33.201Z" + "updated_at": "2026-02-16T17:04:30.254Z" }, "rawHeaders": [], "responseIsBinary": false @@ -9761,7 +9731,7 @@ "subject": "deprecated" } ], - "client_id": "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4", + "client_id": "4R1cIUJb4tweu26ZLYAC8NGwhCzfPMcG", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -9781,12 +9751,20 @@ "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "Quickstarts API (Test Application)", - "client_metadata": { - "foo": "bar" - }, + "name": "API Explorer Application", + "allowed_clients": [], + "callbacks": [], + "client_metadata": {}, "cross_origin_authentication": false, "is_first_party": true, + "native_social_login": { + "apple": { + "enabled": false + }, + "facebook": { + "enabled": false + } + }, "oidc_conformant": true, "refresh_token": { "expiration_type": "non-expiring", @@ -9806,7 +9784,7 @@ "subject": "deprecated" } ], - "client_id": "A3DI3iNnJPuRBNAWAc0SggnvAiIj2K6o", + "client_id": "ILYi0cNQo9QFRhPu9x1LwaKpfJuxqvlQ", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -9814,6 +9792,7 @@ "lifetime_in_seconds": 36000, "secret_encoded": false }, + "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", "app_type": "non_interactive", "grant_types": [ @@ -9825,8 +9804,9 @@ "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "API Explorer Application", + "name": "Node App", "allowed_clients": [], + "allowed_logout_urls": [], "callbacks": [], "client_metadata": {}, "cross_origin_authentication": false, @@ -9858,7 +9838,8 @@ "subject": "deprecated" } ], - "client_id": "uBlUMwvuOBoM3WMI3HmWP0LT4Wh0JgNV", + "allowed_origins": [], + "client_id": "1J0eYQOAdKR6mWk9X1NPNqDXVqzgdwXZ", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -9868,31 +9849,26 @@ }, "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", - "app_type": "non_interactive", + "app_type": "regular_web", "grant_types": [ + "authorization_code", + "implicit", + "refresh_token", "client_credentials" ], + "web_origins": [], "custom_login_page_on": true }, { "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "Node App", - "allowed_clients": [], - "allowed_logout_urls": [], - "callbacks": [], - "client_metadata": {}, - "cross_origin_authentication": false, - "is_first_party": true, - "native_social_login": { - "apple": { - "enabled": false - }, - "facebook": { - "enabled": false - } + "name": "Quickstarts API (Test Application)", + "client_metadata": { + "foo": "bar" }, + "cross_origin_authentication": false, + "is_first_party": true, "oidc_conformant": true, "refresh_token": { "expiration_type": "non-expiring", @@ -9912,8 +9888,7 @@ "subject": "deprecated" } ], - "allowed_origins": [], - "client_id": "pplyWVYIrlso9wpmxRxLKCZi5IBruVv7", + "client_id": "YLxkngzwg8GRV4q93BtFqi0SIRreG0ef", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -9921,16 +9896,11 @@ "lifetime_in_seconds": 36000, "secret_encoded": false }, - "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", - "app_type": "regular_web", + "app_type": "non_interactive", "grant_types": [ - "authorization_code", - "implicit", - "refresh_token", "client_credentials" ], - "web_origins": [], "custom_login_page_on": true }, { @@ -9959,7 +9929,7 @@ "subject": "deprecated" } ], - "client_id": "Iz6ck1jHvmCMNxU8rTDr3uGr1actAvcX", + "client_id": "JSpoWije4CKwUe6oUAGhtiP2b6qZVBoq", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -10012,7 +9982,7 @@ "subject": "deprecated" } ], - "client_id": "ESNQgEtm5yzlcvLljLjNCTCckHniGuxA", + "client_id": "xiWT8cVGT10UQcryJCU2HfMzRcNN0Exb", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -10072,7 +10042,7 @@ "subject": "deprecated" } ], - "client_id": "Hp4aFX1YzW5bzxLZsAwftXbXvu396aRC", + "client_id": "ob4KTYmPNjtAxiUSFLuRlhhRtmWUuU9h", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -10130,7 +10100,7 @@ "subject": "deprecated" } ], - "client_id": "giX56gECFgmZv2lRrlwNkd0g6YwsXCar", + "client_id": "u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -10154,7 +10124,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "PATCH", - "path": "/api/v2/clients/i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4", + "path": "/api/v2/clients/4R1cIUJb4tweu26ZLYAC8NGwhCzfPMcG", "body": { "name": "Default App", "callbacks": [], @@ -10212,7 +10182,7 @@ "subject": "/CN=auth0-deploy-cli-e2e.us.auth0.com" } ], - "client_id": "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4", + "client_id": "4R1cIUJb4tweu26ZLYAC8NGwhCzfPMcG", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -10234,7 +10204,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "PUT", - "path": "/api/v2/guardian/factors/webauthn-roaming", + "path": "/api/v2/guardian/factors/duo", "body": { "enabled": false }, @@ -10276,7 +10246,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "PUT", - "path": "/api/v2/guardian/factors/sms", + "path": "/api/v2/guardian/factors/webauthn-roaming", "body": { "enabled": false }, @@ -10290,7 +10260,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "PUT", - "path": "/api/v2/guardian/factors/duo", + "path": "/api/v2/guardian/factors/sms", "body": { "enabled": false }, @@ -10304,7 +10274,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "PUT", - "path": "/api/v2/guardian/factors/webauthn-platform", + "path": "/api/v2/guardian/factors/push-notification", "body": { "enabled": false }, @@ -10318,7 +10288,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "PUT", - "path": "/api/v2/guardian/factors/push-notification", + "path": "/api/v2/guardian/factors/otp", "body": { "enabled": false }, @@ -10332,7 +10302,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "PUT", - "path": "/api/v2/guardian/factors/otp", + "path": "/api/v2/guardian/factors/webauthn-platform", "body": { "enabled": false }, @@ -10396,6 +10366,125 @@ "rawHeaders": [], "responseIsBinary": false }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "PATCH", + "path": "/api/v2/attack-protection/breached-password-detection", + "body": { + "enabled": false, + "shields": [], + "admin_notification_frequency": [], + "method": "standard" + }, + "status": 200, + "response": { + "enabled": false, + "shields": [], + "admin_notification_frequency": [], + "method": "standard", + "stage": { + "pre-user-registration": { + "shields": [] + }, + "pre-change-password": { + "shields": [] + } + } + }, + "rawHeaders": [], + "responseIsBinary": false + }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "PATCH", + "path": "/api/v2/attack-protection/brute-force-protection", + "body": { + "enabled": true, + "shields": [ + "block", + "user_notification" + ], + "mode": "count_per_identifier_and_ip", + "allowlist": [], + "max_attempts": 10 + }, + "status": 200, + "response": { + "enabled": true, + "shields": [ + "block", + "user_notification" + ], + "mode": "count_per_identifier_and_ip", + "allowlist": [], + "max_attempts": 10 + }, + "rawHeaders": [], + "responseIsBinary": false + }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "PATCH", + "path": "/api/v2/attack-protection/suspicious-ip-throttling", + "body": { + "enabled": true, + "shields": [ + "admin_notification", + "block" + ], + "allowlist": [], + "stage": { + "pre-login": { + "max_attempts": 100, + "rate": 864000 + }, + "pre-user-registration": { + "max_attempts": 50, + "rate": 1200 + } + } + }, + "status": 200, + "response": { + "enabled": true, + "shields": [ + "admin_notification", + "block" + ], + "allowlist": [], + "stage": { + "pre-login": { + "max_attempts": 100, + "rate": 864000 + }, + "pre-user-registration": { + "max_attempts": 50, + "rate": 1200 + }, + "pre-custom-token-exchange": { + "max_attempts": 10, + "rate": 600000 + } + } + }, + "rawHeaders": [], + "responseIsBinary": false + }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "GET", + "path": "/api/v2/actions/modules?page=0&per_page=100", + "body": "", + "status": 403, + "response": { + "statusCode": 403, + "error": "Forbidden", + "message": "This feature is not enabled for this tenant.", + "errorCode": "feature_not_enabled" + }, + "rawHeaders": [], + "responseIsBinary": false + }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", @@ -10405,7 +10494,7 @@ "response": { "actions": [ { - "id": "904bc668-0216-492c-bd3e-4bcddc69f411", + "id": "0c2cd65a-2ab4-4874-84bb-5b11136cc9ba", "name": "My Custom Action", "supported_triggers": [ { @@ -10413,34 +10502,34 @@ "version": "v2" } ], - "created_at": "2026-02-13T10:26:08.329157690Z", - "updated_at": "2026-02-13T10:26:08.344112736Z", + "created_at": "2026-02-16T17:04:08.035726715Z", + "updated_at": "2026-02-16T17:04:08.043218401Z", "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", "dependencies": [], "runtime": "node18", "status": "built", "secrets": [], "current_version": { - "id": "435970c3-9fc3-46c0-8386-de6162b6c9ff", + "id": "f685c004-6924-462c-bdd1-d80b9c4d9c5d", "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", "runtime": "node18", "status": "BUILT", "number": 1, - "build_time": "2026-02-13T10:26:09.470388341Z", - "created_at": "2026-02-13T10:26:09.377183902Z", - "updated_at": "2026-02-13T10:26:09.471895168Z" + "build_time": "2026-02-16T17:04:08.896675174Z", + "created_at": "2026-02-16T17:04:08.815168038Z", + "updated_at": "2026-02-16T17:04:08.897968815Z" }, "deployed_version": { "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", "dependencies": [], - "id": "435970c3-9fc3-46c0-8386-de6162b6c9ff", + "id": "f685c004-6924-462c-bdd1-d80b9c4d9c5d", "deployed": true, "number": 1, - "built_at": "2026-02-13T10:26:09.470388341Z", + "built_at": "2026-02-16T17:04:08.896675174Z", "secrets": [], "status": "built", - "created_at": "2026-02-13T10:26:09.377183902Z", - "updated_at": "2026-02-13T10:26:09.471895168Z", + "created_at": "2026-02-16T17:04:08.815168038Z", + "updated_at": "2026-02-16T17:04:08.897968815Z", "runtime": "node18", "supported_triggers": [ { @@ -10467,7 +10556,7 @@ "response": { "actions": [ { - "id": "904bc668-0216-492c-bd3e-4bcddc69f411", + "id": "0c2cd65a-2ab4-4874-84bb-5b11136cc9ba", "name": "My Custom Action", "supported_triggers": [ { @@ -10475,34 +10564,34 @@ "version": "v2" } ], - "created_at": "2026-02-13T10:26:08.329157690Z", - "updated_at": "2026-02-13T10:26:08.344112736Z", + "created_at": "2026-02-16T17:04:08.035726715Z", + "updated_at": "2026-02-16T17:04:08.043218401Z", "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", "dependencies": [], "runtime": "node18", "status": "built", "secrets": [], "current_version": { - "id": "435970c3-9fc3-46c0-8386-de6162b6c9ff", + "id": "f685c004-6924-462c-bdd1-d80b9c4d9c5d", "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", "runtime": "node18", "status": "BUILT", "number": 1, - "build_time": "2026-02-13T10:26:09.470388341Z", - "created_at": "2026-02-13T10:26:09.377183902Z", - "updated_at": "2026-02-13T10:26:09.471895168Z" + "build_time": "2026-02-16T17:04:08.896675174Z", + "created_at": "2026-02-16T17:04:08.815168038Z", + "updated_at": "2026-02-16T17:04:08.897968815Z" }, "deployed_version": { "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", "dependencies": [], - "id": "435970c3-9fc3-46c0-8386-de6162b6c9ff", + "id": "f685c004-6924-462c-bdd1-d80b9c4d9c5d", "deployed": true, "number": 1, - "built_at": "2026-02-13T10:26:09.470388341Z", + "built_at": "2026-02-16T17:04:08.896675174Z", "secrets": [], "status": "built", - "created_at": "2026-02-13T10:26:09.377183902Z", - "updated_at": "2026-02-13T10:26:09.471895168Z", + "created_at": "2026-02-16T17:04:08.815168038Z", + "updated_at": "2026-02-16T17:04:08.897968815Z", "runtime": "node18", "supported_triggers": [ { @@ -10522,104 +10611,62 @@ }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "PATCH", - "path": "/api/v2/attack-protection/suspicious-ip-throttling", - "body": { - "enabled": true, - "shields": [ - "admin_notification", - "block" - ], - "allowlist": [], - "stage": { - "pre-login": { - "max_attempts": 100, - "rate": 864000 - }, - "pre-user-registration": { - "max_attempts": 50, - "rate": 1200 - } - } - }, - "status": 200, - "response": { - "enabled": true, - "shields": [ - "admin_notification", - "block" - ], - "allowlist": [], - "stage": { - "pre-login": { - "max_attempts": 100, - "rate": 864000 - }, - "pre-user-registration": { - "max_attempts": 50, - "rate": 1200 - }, - "pre-custom-token-exchange": { - "max_attempts": 10, - "rate": 600000 - } - } - }, - "rawHeaders": [], - "responseIsBinary": false - }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "PATCH", - "path": "/api/v2/attack-protection/brute-force-protection", - "body": { - "enabled": true, - "shields": [ - "block", - "user_notification" - ], - "mode": "count_per_identifier_and_ip", - "allowlist": [], - "max_attempts": 10 - }, - "status": 200, - "response": { - "enabled": true, - "shields": [ - "block", - "user_notification" - ], - "mode": "count_per_identifier_and_ip", - "allowlist": [], - "max_attempts": 10 - }, - "rawHeaders": [], - "responseIsBinary": false - }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "PATCH", - "path": "/api/v2/attack-protection/breached-password-detection", - "body": { - "enabled": false, - "shields": [], - "admin_notification_frequency": [], - "method": "standard" - }, + "method": "GET", + "path": "/api/v2/actions/actions?page=0&per_page=100", + "body": "", "status": 200, "response": { - "enabled": false, - "shields": [], - "admin_notification_frequency": [], - "method": "standard", - "stage": { - "pre-user-registration": { - "shields": [] - }, - "pre-change-password": { - "shields": [] + "actions": [ + { + "id": "0c2cd65a-2ab4-4874-84bb-5b11136cc9ba", + "name": "My Custom Action", + "supported_triggers": [ + { + "id": "post-login", + "version": "v2" + } + ], + "created_at": "2026-02-16T17:04:08.035726715Z", + "updated_at": "2026-02-16T17:04:08.043218401Z", + "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", + "dependencies": [], + "runtime": "node18", + "status": "built", + "secrets": [], + "current_version": { + "id": "f685c004-6924-462c-bdd1-d80b9c4d9c5d", + "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", + "runtime": "node18", + "status": "BUILT", + "number": 1, + "build_time": "2026-02-16T17:04:08.896675174Z", + "created_at": "2026-02-16T17:04:08.815168038Z", + "updated_at": "2026-02-16T17:04:08.897968815Z" + }, + "deployed_version": { + "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", + "dependencies": [], + "id": "f685c004-6924-462c-bdd1-d80b9c4d9c5d", + "deployed": true, + "number": 1, + "built_at": "2026-02-16T17:04:08.896675174Z", + "secrets": [], + "status": "built", + "created_at": "2026-02-16T17:04:08.815168038Z", + "updated_at": "2026-02-16T17:04:08.897968815Z", + "runtime": "node18", + "supported_triggers": [ + { + "id": "post-login", + "version": "v2" + } + ] + }, + "all_changes_deployed": true } - } + ], + "total": 1, + "per_page": 100 }, "rawHeaders": [], "responseIsBinary": false @@ -10633,7 +10680,7 @@ "response": { "connections": [ { - "id": "con_7P33d2zJIPCFXXbH", + "id": "con_BaKydp194pu6KeMY", "options": { "mfa": { "active": true, @@ -10698,12 +10745,12 @@ "boo-baz-db-connection-test" ], "enabled_clients": [ - "pplyWVYIrlso9wpmxRxLKCZi5IBruVv7", - "giX56gECFgmZv2lRrlwNkd0g6YwsXCar" + "1J0eYQOAdKR6mWk9X1NPNqDXVqzgdwXZ", + "u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek" ] }, { - "id": "con_hs0JNGk6M5oYHR3T", + "id": "con_4KyyGHwwixzZfOVY", "options": { "mfa": { "active": true, @@ -10743,7 +10790,7 @@ ], "enabled_clients": [ "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE", - "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4" + "4R1cIUJb4tweu26ZLYAC8NGwhCzfPMcG" ] } ] @@ -10844,7 +10891,7 @@ "subject": "deprecated" } ], - "client_id": "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4", + "client_id": "4R1cIUJb4tweu26ZLYAC8NGwhCzfPMcG", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -10864,12 +10911,20 @@ "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "Quickstarts API (Test Application)", - "client_metadata": { - "foo": "bar" - }, + "name": "API Explorer Application", + "allowed_clients": [], + "callbacks": [], + "client_metadata": {}, "cross_origin_authentication": false, "is_first_party": true, + "native_social_login": { + "apple": { + "enabled": false + }, + "facebook": { + "enabled": false + } + }, "oidc_conformant": true, "refresh_token": { "expiration_type": "non-expiring", @@ -10889,7 +10944,7 @@ "subject": "deprecated" } ], - "client_id": "A3DI3iNnJPuRBNAWAc0SggnvAiIj2K6o", + "client_id": "ILYi0cNQo9QFRhPu9x1LwaKpfJuxqvlQ", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -10897,6 +10952,7 @@ "lifetime_in_seconds": 36000, "secret_encoded": false }, + "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", "app_type": "non_interactive", "grant_types": [ @@ -10908,8 +10964,9 @@ "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "API Explorer Application", + "name": "Node App", "allowed_clients": [], + "allowed_logout_urls": [], "callbacks": [], "client_metadata": {}, "cross_origin_authentication": false, @@ -10941,7 +10998,8 @@ "subject": "deprecated" } ], - "client_id": "uBlUMwvuOBoM3WMI3HmWP0LT4Wh0JgNV", + "allowed_origins": [], + "client_id": "1J0eYQOAdKR6mWk9X1NPNqDXVqzgdwXZ", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -10951,31 +11009,26 @@ }, "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", - "app_type": "non_interactive", + "app_type": "regular_web", "grant_types": [ + "authorization_code", + "implicit", + "refresh_token", "client_credentials" ], + "web_origins": [], "custom_login_page_on": true }, { "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "Node App", - "allowed_clients": [], - "allowed_logout_urls": [], - "callbacks": [], - "client_metadata": {}, + "name": "Quickstarts API (Test Application)", + "client_metadata": { + "foo": "bar" + }, "cross_origin_authentication": false, "is_first_party": true, - "native_social_login": { - "apple": { - "enabled": false - }, - "facebook": { - "enabled": false - } - }, "oidc_conformant": true, "refresh_token": { "expiration_type": "non-expiring", @@ -10995,8 +11048,7 @@ "subject": "deprecated" } ], - "allowed_origins": [], - "client_id": "pplyWVYIrlso9wpmxRxLKCZi5IBruVv7", + "client_id": "YLxkngzwg8GRV4q93BtFqi0SIRreG0ef", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -11004,16 +11056,11 @@ "lifetime_in_seconds": 36000, "secret_encoded": false }, - "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", - "app_type": "regular_web", + "app_type": "non_interactive", "grant_types": [ - "authorization_code", - "implicit", - "refresh_token", "client_credentials" ], - "web_origins": [], "custom_login_page_on": true }, { @@ -11042,7 +11089,7 @@ "subject": "deprecated" } ], - "client_id": "Iz6ck1jHvmCMNxU8rTDr3uGr1actAvcX", + "client_id": "JSpoWije4CKwUe6oUAGhtiP2b6qZVBoq", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -11095,7 +11142,7 @@ "subject": "deprecated" } ], - "client_id": "ESNQgEtm5yzlcvLljLjNCTCckHniGuxA", + "client_id": "xiWT8cVGT10UQcryJCU2HfMzRcNN0Exb", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -11155,7 +11202,7 @@ "subject": "deprecated" } ], - "client_id": "Hp4aFX1YzW5bzxLZsAwftXbXvu396aRC", + "client_id": "ob4KTYmPNjtAxiUSFLuRlhhRtmWUuU9h", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -11213,7 +11260,7 @@ "subject": "deprecated" } ], - "client_id": "giX56gECFgmZv2lRrlwNkd0g6YwsXCar", + "client_id": "u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -11280,69 +11327,7 @@ "response": { "actions": [ { - "id": "904bc668-0216-492c-bd3e-4bcddc69f411", - "name": "My Custom Action", - "supported_triggers": [ - { - "id": "post-login", - "version": "v2" - } - ], - "created_at": "2026-02-13T10:26:08.329157690Z", - "updated_at": "2026-02-13T10:26:08.344112736Z", - "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", - "dependencies": [], - "runtime": "node18", - "status": "built", - "secrets": [], - "current_version": { - "id": "435970c3-9fc3-46c0-8386-de6162b6c9ff", - "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", - "runtime": "node18", - "status": "BUILT", - "number": 1, - "build_time": "2026-02-13T10:26:09.470388341Z", - "created_at": "2026-02-13T10:26:09.377183902Z", - "updated_at": "2026-02-13T10:26:09.471895168Z" - }, - "deployed_version": { - "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", - "dependencies": [], - "id": "435970c3-9fc3-46c0-8386-de6162b6c9ff", - "deployed": true, - "number": 1, - "built_at": "2026-02-13T10:26:09.470388341Z", - "secrets": [], - "status": "built", - "created_at": "2026-02-13T10:26:09.377183902Z", - "updated_at": "2026-02-13T10:26:09.471895168Z", - "runtime": "node18", - "supported_triggers": [ - { - "id": "post-login", - "version": "v2" - } - ] - }, - "all_changes_deployed": true - } - ], - "total": 1, - "per_page": 100 - }, - "rawHeaders": [], - "responseIsBinary": false - }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "GET", - "path": "/api/v2/actions/actions?page=0&per_page=100", - "body": "", - "status": 200, - "response": { - "actions": [ - { - "id": "904bc668-0216-492c-bd3e-4bcddc69f411", + "id": "0c2cd65a-2ab4-4874-84bb-5b11136cc9ba", "name": "My Custom Action", "supported_triggers": [ { @@ -11350,34 +11335,34 @@ "version": "v2" } ], - "created_at": "2026-02-13T10:26:08.329157690Z", - "updated_at": "2026-02-13T10:26:08.344112736Z", + "created_at": "2026-02-16T17:04:08.035726715Z", + "updated_at": "2026-02-16T17:04:08.043218401Z", "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", "dependencies": [], "runtime": "node18", "status": "built", "secrets": [], "current_version": { - "id": "435970c3-9fc3-46c0-8386-de6162b6c9ff", + "id": "f685c004-6924-462c-bdd1-d80b9c4d9c5d", "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", "runtime": "node18", "status": "BUILT", "number": 1, - "build_time": "2026-02-13T10:26:09.470388341Z", - "created_at": "2026-02-13T10:26:09.377183902Z", - "updated_at": "2026-02-13T10:26:09.471895168Z" + "build_time": "2026-02-16T17:04:08.896675174Z", + "created_at": "2026-02-16T17:04:08.815168038Z", + "updated_at": "2026-02-16T17:04:08.897968815Z" }, "deployed_version": { "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", "dependencies": [], - "id": "435970c3-9fc3-46c0-8386-de6162b6c9ff", + "id": "f685c004-6924-462c-bdd1-d80b9c4d9c5d", "deployed": true, "number": 1, - "built_at": "2026-02-13T10:26:09.470388341Z", + "built_at": "2026-02-16T17:04:08.896675174Z", "secrets": [], "status": "built", - "created_at": "2026-02-13T10:26:09.377183902Z", - "updated_at": "2026-02-13T10:26:09.471895168Z", + "created_at": "2026-02-16T17:04:08.815168038Z", + "updated_at": "2026-02-16T17:04:08.897968815Z", "runtime": "node18", "supported_triggers": [ { @@ -11404,7 +11389,7 @@ "response": { "connections": [ { - "id": "con_7P33d2zJIPCFXXbH", + "id": "con_BaKydp194pu6KeMY", "options": { "mfa": { "active": true, @@ -11469,12 +11454,12 @@ "boo-baz-db-connection-test" ], "enabled_clients": [ - "pplyWVYIrlso9wpmxRxLKCZi5IBruVv7", - "giX56gECFgmZv2lRrlwNkd0g6YwsXCar" + "1J0eYQOAdKR6mWk9X1NPNqDXVqzgdwXZ", + "u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek" ] }, { - "id": "con_hs0JNGk6M5oYHR3T", + "id": "con_4KyyGHwwixzZfOVY", "options": { "mfa": { "active": true, @@ -11514,7 +11499,7 @@ ], "enabled_clients": [ "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE", - "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4" + "4R1cIUJb4tweu26ZLYAC8NGwhCzfPMcG" ] } ] @@ -11525,16 +11510,16 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/connections/con_7P33d2zJIPCFXXbH/clients?take=50", + "path": "/api/v2/connections/con_BaKydp194pu6KeMY/clients?take=50", "body": "", "status": 200, "response": { "clients": [ { - "client_id": "giX56gECFgmZv2lRrlwNkd0g6YwsXCar" + "client_id": "1J0eYQOAdKR6mWk9X1NPNqDXVqzgdwXZ" }, { - "client_id": "pplyWVYIrlso9wpmxRxLKCZi5IBruVv7" + "client_id": "u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek" } ] }, @@ -11544,13 +11529,13 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/connections/con_hs0JNGk6M5oYHR3T/clients?take=50", + "path": "/api/v2/connections/con_4KyyGHwwixzZfOVY/clients?take=50", "body": "", "status": 200, "response": { "clients": [ { - "client_id": "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4" + "client_id": "4R1cIUJb4tweu26ZLYAC8NGwhCzfPMcG" }, { "client_id": "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE" @@ -11563,11 +11548,11 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/connections/con_hs0JNGk6M5oYHR3T", + "path": "/api/v2/connections/con_4KyyGHwwixzZfOVY", "body": "", "status": 200, "response": { - "id": "con_hs0JNGk6M5oYHR3T", + "id": "con_4KyyGHwwixzZfOVY", "options": { "mfa": { "active": true, @@ -11604,7 +11589,7 @@ }, "enabled_clients": [ "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE", - "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4" + "4R1cIUJb4tweu26ZLYAC8NGwhCzfPMcG" ], "realms": [ "Username-Password-Authentication" @@ -11616,7 +11601,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "PATCH", - "path": "/api/v2/connections/con_hs0JNGk6M5oYHR3T", + "path": "/api/v2/connections/con_4KyyGHwwixzZfOVY", "body": { "is_domain_connection": false, "realms": [ @@ -11650,7 +11635,7 @@ }, "status": 200, "response": { - "id": "con_hs0JNGk6M5oYHR3T", + "id": "con_4KyyGHwwixzZfOVY", "options": { "mfa": { "active": true, @@ -11687,7 +11672,7 @@ }, "enabled_clients": [ "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE", - "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4" + "4R1cIUJb4tweu26ZLYAC8NGwhCzfPMcG" ], "realms": [ "Username-Password-Authentication" @@ -11789,7 +11774,7 @@ "subject": "deprecated" } ], - "client_id": "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4", + "client_id": "4R1cIUJb4tweu26ZLYAC8NGwhCzfPMcG", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -11809,12 +11794,20 @@ "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "Quickstarts API (Test Application)", - "client_metadata": { - "foo": "bar" - }, + "name": "API Explorer Application", + "allowed_clients": [], + "callbacks": [], + "client_metadata": {}, "cross_origin_authentication": false, "is_first_party": true, + "native_social_login": { + "apple": { + "enabled": false + }, + "facebook": { + "enabled": false + } + }, "oidc_conformant": true, "refresh_token": { "expiration_type": "non-expiring", @@ -11834,7 +11827,7 @@ "subject": "deprecated" } ], - "client_id": "A3DI3iNnJPuRBNAWAc0SggnvAiIj2K6o", + "client_id": "ILYi0cNQo9QFRhPu9x1LwaKpfJuxqvlQ", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -11842,6 +11835,7 @@ "lifetime_in_seconds": 36000, "secret_encoded": false }, + "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", "app_type": "non_interactive", "grant_types": [ @@ -11853,8 +11847,9 @@ "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "API Explorer Application", + "name": "Node App", "allowed_clients": [], + "allowed_logout_urls": [], "callbacks": [], "client_metadata": {}, "cross_origin_authentication": false, @@ -11886,7 +11881,8 @@ "subject": "deprecated" } ], - "client_id": "uBlUMwvuOBoM3WMI3HmWP0LT4Wh0JgNV", + "allowed_origins": [], + "client_id": "1J0eYQOAdKR6mWk9X1NPNqDXVqzgdwXZ", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -11896,31 +11892,26 @@ }, "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", - "app_type": "non_interactive", + "app_type": "regular_web", "grant_types": [ + "authorization_code", + "implicit", + "refresh_token", "client_credentials" ], + "web_origins": [], "custom_login_page_on": true }, { "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "Node App", - "allowed_clients": [], - "allowed_logout_urls": [], - "callbacks": [], - "client_metadata": {}, + "name": "Quickstarts API (Test Application)", + "client_metadata": { + "foo": "bar" + }, "cross_origin_authentication": false, "is_first_party": true, - "native_social_login": { - "apple": { - "enabled": false - }, - "facebook": { - "enabled": false - } - }, "oidc_conformant": true, "refresh_token": { "expiration_type": "non-expiring", @@ -11940,8 +11931,7 @@ "subject": "deprecated" } ], - "allowed_origins": [], - "client_id": "pplyWVYIrlso9wpmxRxLKCZi5IBruVv7", + "client_id": "YLxkngzwg8GRV4q93BtFqi0SIRreG0ef", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -11949,16 +11939,11 @@ "lifetime_in_seconds": 36000, "secret_encoded": false }, - "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", - "app_type": "regular_web", + "app_type": "non_interactive", "grant_types": [ - "authorization_code", - "implicit", - "refresh_token", "client_credentials" ], - "web_origins": [], "custom_login_page_on": true }, { @@ -11987,7 +11972,7 @@ "subject": "deprecated" } ], - "client_id": "Iz6ck1jHvmCMNxU8rTDr3uGr1actAvcX", + "client_id": "JSpoWije4CKwUe6oUAGhtiP2b6qZVBoq", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -12040,7 +12025,7 @@ "subject": "deprecated" } ], - "client_id": "ESNQgEtm5yzlcvLljLjNCTCckHniGuxA", + "client_id": "xiWT8cVGT10UQcryJCU2HfMzRcNN0Exb", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -12100,7 +12085,7 @@ "subject": "deprecated" } ], - "client_id": "Hp4aFX1YzW5bzxLZsAwftXbXvu396aRC", + "client_id": "ob4KTYmPNjtAxiUSFLuRlhhRtmWUuU9h", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -12158,7 +12143,7 @@ "subject": "deprecated" } ], - "client_id": "giX56gECFgmZv2lRrlwNkd0g6YwsXCar", + "client_id": "u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -12225,7 +12210,7 @@ "response": { "connections": [ { - "id": "con_7P33d2zJIPCFXXbH", + "id": "con_BaKydp194pu6KeMY", "options": { "mfa": { "active": true, @@ -12290,12 +12275,12 @@ "boo-baz-db-connection-test" ], "enabled_clients": [ - "pplyWVYIrlso9wpmxRxLKCZi5IBruVv7", - "giX56gECFgmZv2lRrlwNkd0g6YwsXCar" + "1J0eYQOAdKR6mWk9X1NPNqDXVqzgdwXZ", + "u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek" ] }, { - "id": "con_mgTe5EjBQeY95fZD", + "id": "con_HqDvThofsvA7Ydc9", "options": { "email": true, "scope": [ @@ -12317,12 +12302,12 @@ "google-oauth2" ], "enabled_clients": [ - "ESNQgEtm5yzlcvLljLjNCTCckHniGuxA", - "giX56gECFgmZv2lRrlwNkd0g6YwsXCar" + "xiWT8cVGT10UQcryJCU2HfMzRcNN0Exb", + "u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek" ] }, { - "id": "con_hs0JNGk6M5oYHR3T", + "id": "con_4KyyGHwwixzZfOVY", "options": { "mfa": { "active": true, @@ -12362,7 +12347,7 @@ ], "enabled_clients": [ "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE", - "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4" + "4R1cIUJb4tweu26ZLYAC8NGwhCzfPMcG" ] } ] @@ -12394,7 +12379,7 @@ "response": { "connections": [ { - "id": "con_7P33d2zJIPCFXXbH", + "id": "con_BaKydp194pu6KeMY", "options": { "mfa": { "active": true, @@ -12459,12 +12444,12 @@ "boo-baz-db-connection-test" ], "enabled_clients": [ - "pplyWVYIrlso9wpmxRxLKCZi5IBruVv7", - "giX56gECFgmZv2lRrlwNkd0g6YwsXCar" + "1J0eYQOAdKR6mWk9X1NPNqDXVqzgdwXZ", + "u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek" ] }, { - "id": "con_mgTe5EjBQeY95fZD", + "id": "con_HqDvThofsvA7Ydc9", "options": { "email": true, "scope": [ @@ -12486,12 +12471,12 @@ "google-oauth2" ], "enabled_clients": [ - "ESNQgEtm5yzlcvLljLjNCTCckHniGuxA", - "giX56gECFgmZv2lRrlwNkd0g6YwsXCar" + "xiWT8cVGT10UQcryJCU2HfMzRcNN0Exb", + "u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek" ] }, { - "id": "con_hs0JNGk6M5oYHR3T", + "id": "con_4KyyGHwwixzZfOVY", "options": { "mfa": { "active": true, @@ -12531,7 +12516,7 @@ ], "enabled_clients": [ "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE", - "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4" + "4R1cIUJb4tweu26ZLYAC8NGwhCzfPMcG" ] } ] @@ -12542,16 +12527,16 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/connections/con_mgTe5EjBQeY95fZD/clients?take=50", + "path": "/api/v2/connections/con_HqDvThofsvA7Ydc9/clients?take=50", "body": "", "status": 200, "response": { "clients": [ { - "client_id": "ESNQgEtm5yzlcvLljLjNCTCckHniGuxA" + "client_id": "u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek" }, { - "client_id": "giX56gECFgmZv2lRrlwNkd0g6YwsXCar" + "client_id": "xiWT8cVGT10UQcryJCU2HfMzRcNN0Exb" } ] }, @@ -12666,7 +12651,7 @@ "subject": "deprecated" } ], - "client_id": "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4", + "client_id": "4R1cIUJb4tweu26ZLYAC8NGwhCzfPMcG", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -12686,12 +12671,20 @@ "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "Quickstarts API (Test Application)", - "client_metadata": { - "foo": "bar" - }, + "name": "API Explorer Application", + "allowed_clients": [], + "callbacks": [], + "client_metadata": {}, "cross_origin_authentication": false, "is_first_party": true, + "native_social_login": { + "apple": { + "enabled": false + }, + "facebook": { + "enabled": false + } + }, "oidc_conformant": true, "refresh_token": { "expiration_type": "non-expiring", @@ -12711,7 +12704,7 @@ "subject": "deprecated" } ], - "client_id": "A3DI3iNnJPuRBNAWAc0SggnvAiIj2K6o", + "client_id": "ILYi0cNQo9QFRhPu9x1LwaKpfJuxqvlQ", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -12719,6 +12712,7 @@ "lifetime_in_seconds": 36000, "secret_encoded": false }, + "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", "app_type": "non_interactive", "grant_types": [ @@ -12730,8 +12724,9 @@ "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "API Explorer Application", + "name": "Node App", "allowed_clients": [], + "allowed_logout_urls": [], "callbacks": [], "client_metadata": {}, "cross_origin_authentication": false, @@ -12763,7 +12758,8 @@ "subject": "deprecated" } ], - "client_id": "uBlUMwvuOBoM3WMI3HmWP0LT4Wh0JgNV", + "allowed_origins": [], + "client_id": "1J0eYQOAdKR6mWk9X1NPNqDXVqzgdwXZ", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -12773,31 +12769,26 @@ }, "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", - "app_type": "non_interactive", + "app_type": "regular_web", "grant_types": [ + "authorization_code", + "implicit", + "refresh_token", "client_credentials" ], + "web_origins": [], "custom_login_page_on": true }, { "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "Node App", - "allowed_clients": [], - "allowed_logout_urls": [], - "callbacks": [], - "client_metadata": {}, + "name": "Quickstarts API (Test Application)", + "client_metadata": { + "foo": "bar" + }, "cross_origin_authentication": false, "is_first_party": true, - "native_social_login": { - "apple": { - "enabled": false - }, - "facebook": { - "enabled": false - } - }, "oidc_conformant": true, "refresh_token": { "expiration_type": "non-expiring", @@ -12817,8 +12808,7 @@ "subject": "deprecated" } ], - "allowed_origins": [], - "client_id": "pplyWVYIrlso9wpmxRxLKCZi5IBruVv7", + "client_id": "YLxkngzwg8GRV4q93BtFqi0SIRreG0ef", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -12826,16 +12816,11 @@ "lifetime_in_seconds": 36000, "secret_encoded": false }, - "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", - "app_type": "regular_web", + "app_type": "non_interactive", "grant_types": [ - "authorization_code", - "implicit", - "refresh_token", "client_credentials" ], - "web_origins": [], "custom_login_page_on": true }, { @@ -12864,7 +12849,7 @@ "subject": "deprecated" } ], - "client_id": "Iz6ck1jHvmCMNxU8rTDr3uGr1actAvcX", + "client_id": "JSpoWije4CKwUe6oUAGhtiP2b6qZVBoq", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -12917,7 +12902,7 @@ "subject": "deprecated" } ], - "client_id": "ESNQgEtm5yzlcvLljLjNCTCckHniGuxA", + "client_id": "xiWT8cVGT10UQcryJCU2HfMzRcNN0Exb", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -12977,7 +12962,7 @@ "subject": "deprecated" } ], - "client_id": "Hp4aFX1YzW5bzxLZsAwftXbXvu396aRC", + "client_id": "ob4KTYmPNjtAxiUSFLuRlhhRtmWUuU9h", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -13035,7 +13020,7 @@ "subject": "deprecated" } ], - "client_id": "giX56gECFgmZv2lRrlwNkd0g6YwsXCar", + "client_id": "u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -13102,8 +13087,8 @@ "response": { "client_grants": [ { - "id": "cgr_ZK4DSWMLDpUpVfOy", - "client_id": "Iz6ck1jHvmCMNxU8rTDr3uGr1actAvcX", + "id": "cgr_PtCL12zii7M5JOSk", + "client_id": "ILYi0cNQo9QFRhPu9x1LwaKpfJuxqvlQ", "audience": "https://auth0-deploy-cli-e2e.us.auth0.com/api/v2/", "scope": [ "read:client_grants", @@ -13240,8 +13225,8 @@ "subject_type": "client" }, { - "id": "cgr_loIebn0hExrwMXUc", - "client_id": "uBlUMwvuOBoM3WMI3HmWP0LT4Wh0JgNV", + "id": "cgr_X9eWK7l92bqAY4ej", + "client_id": "JSpoWije4CKwUe6oUAGhtiP2b6qZVBoq", "audience": "https://auth0-deploy-cli-e2e.us.auth0.com/api/v2/", "scope": [ "read:client_grants", @@ -13631,22 +13616,22 @@ "response": { "roles": [ { - "id": "rol_Vii7zMJYTr9j0ud1", + "id": "rol_PKvBKcfS2zcMAkgp", "name": "Admin", "description": "Can read and write things" }, { - "id": "rol_fq36Rme7M2cVz7q0", + "id": "rol_cTfY9XEvtAmpFXPH", "name": "Reader", "description": "Can only read things" }, { - "id": "rol_9O7TUijcmN9Y1M79", + "id": "rol_3WV3UtInVufuNfJi", "name": "read_only", "description": "Read Only" }, { - "id": "rol_4jMbe1hbCYdIEFs7", + "id": "rol_DXCz3b7aZUyS2DM1", "name": "read_osnly", "description": "Readz Only" } @@ -13661,7 +13646,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/roles/rol_Vii7zMJYTr9j0ud1/permissions?per_page=100&page=0&include_totals=true", + "path": "/api/v2/roles/rol_PKvBKcfS2zcMAkgp/permissions?per_page=100&page=0&include_totals=true", "body": "", "status": 200, "response": { @@ -13676,7 +13661,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/roles/rol_fq36Rme7M2cVz7q0/permissions?per_page=100&page=0&include_totals=true", + "path": "/api/v2/roles/rol_cTfY9XEvtAmpFXPH/permissions?per_page=100&page=0&include_totals=true", "body": "", "status": 200, "response": { @@ -13691,7 +13676,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/roles/rol_9O7TUijcmN9Y1M79/permissions?per_page=100&page=0&include_totals=true", + "path": "/api/v2/roles/rol_3WV3UtInVufuNfJi/permissions?per_page=100&page=0&include_totals=true", "body": "", "status": 200, "response": { @@ -13706,7 +13691,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/roles/rol_4jMbe1hbCYdIEFs7/permissions?per_page=100&page=0&include_totals=true", + "path": "/api/v2/roles/rol_DXCz3b7aZUyS2DM1/permissions?per_page=100&page=0&include_totals=true", "body": "", "status": 200, "response": { @@ -13727,7 +13712,12 @@ "response": { "organizations": [ { - "id": "org_19dkFpo1x6nSD6ir", + "id": "org_EJAehbxTdxksCwoH", + "name": "org2", + "display_name": "Organization2" + }, + { + "id": "org_B2OPtUdlswlQ6G26", "name": "org1", "display_name": "Organization", "branding": { @@ -13736,11 +13726,6 @@ "primary": "#57ddff" } } - }, - { - "id": "org_WeseaFOehx5sXauT", - "name": "org2", - "display_name": "Organization2" } ] }, @@ -13840,7 +13825,7 @@ "subject": "deprecated" } ], - "client_id": "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4", + "client_id": "4R1cIUJb4tweu26ZLYAC8NGwhCzfPMcG", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -13860,12 +13845,20 @@ "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "Quickstarts API (Test Application)", - "client_metadata": { - "foo": "bar" - }, + "name": "API Explorer Application", + "allowed_clients": [], + "callbacks": [], + "client_metadata": {}, "cross_origin_authentication": false, "is_first_party": true, + "native_social_login": { + "apple": { + "enabled": false + }, + "facebook": { + "enabled": false + } + }, "oidc_conformant": true, "refresh_token": { "expiration_type": "non-expiring", @@ -13885,7 +13878,7 @@ "subject": "deprecated" } ], - "client_id": "A3DI3iNnJPuRBNAWAc0SggnvAiIj2K6o", + "client_id": "ILYi0cNQo9QFRhPu9x1LwaKpfJuxqvlQ", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -13893,6 +13886,7 @@ "lifetime_in_seconds": 36000, "secret_encoded": false }, + "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", "app_type": "non_interactive", "grant_types": [ @@ -13904,8 +13898,9 @@ "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "API Explorer Application", + "name": "Node App", "allowed_clients": [], + "allowed_logout_urls": [], "callbacks": [], "client_metadata": {}, "cross_origin_authentication": false, @@ -13937,7 +13932,8 @@ "subject": "deprecated" } ], - "client_id": "uBlUMwvuOBoM3WMI3HmWP0LT4Wh0JgNV", + "allowed_origins": [], + "client_id": "1J0eYQOAdKR6mWk9X1NPNqDXVqzgdwXZ", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -13947,31 +13943,26 @@ }, "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", - "app_type": "non_interactive", + "app_type": "regular_web", "grant_types": [ + "authorization_code", + "implicit", + "refresh_token", "client_credentials" ], + "web_origins": [], "custom_login_page_on": true }, { "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "Node App", - "allowed_clients": [], - "allowed_logout_urls": [], - "callbacks": [], - "client_metadata": {}, + "name": "Quickstarts API (Test Application)", + "client_metadata": { + "foo": "bar" + }, "cross_origin_authentication": false, "is_first_party": true, - "native_social_login": { - "apple": { - "enabled": false - }, - "facebook": { - "enabled": false - } - }, "oidc_conformant": true, "refresh_token": { "expiration_type": "non-expiring", @@ -13991,8 +13982,7 @@ "subject": "deprecated" } ], - "allowed_origins": [], - "client_id": "pplyWVYIrlso9wpmxRxLKCZi5IBruVv7", + "client_id": "YLxkngzwg8GRV4q93BtFqi0SIRreG0ef", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -14000,16 +13990,11 @@ "lifetime_in_seconds": 36000, "secret_encoded": false }, - "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", - "app_type": "regular_web", + "app_type": "non_interactive", "grant_types": [ - "authorization_code", - "implicit", - "refresh_token", "client_credentials" ], - "web_origins": [], "custom_login_page_on": true }, { @@ -14038,7 +14023,7 @@ "subject": "deprecated" } ], - "client_id": "Iz6ck1jHvmCMNxU8rTDr3uGr1actAvcX", + "client_id": "JSpoWije4CKwUe6oUAGhtiP2b6qZVBoq", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -14091,7 +14076,7 @@ "subject": "deprecated" } ], - "client_id": "ESNQgEtm5yzlcvLljLjNCTCckHniGuxA", + "client_id": "xiWT8cVGT10UQcryJCU2HfMzRcNN0Exb", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -14151,7 +14136,7 @@ "subject": "deprecated" } ], - "client_id": "Hp4aFX1YzW5bzxLZsAwftXbXvu396aRC", + "client_id": "ob4KTYmPNjtAxiUSFLuRlhhRtmWUuU9h", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -14209,7 +14194,7 @@ "subject": "deprecated" } ], - "client_id": "giX56gECFgmZv2lRrlwNkd0g6YwsXCar", + "client_id": "u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -14270,7 +14255,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/organizations/org_19dkFpo1x6nSD6ir/enabled_connections?page=0&per_page=50&include_totals=true", + "path": "/api/v2/organizations/org_EJAehbxTdxksCwoH/enabled_connections?page=0&per_page=50&include_totals=true", "body": "", "status": 200, "response": { @@ -14285,7 +14270,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/organizations/org_19dkFpo1x6nSD6ir/client-grants?page=0&per_page=50&include_totals=true", + "path": "/api/v2/organizations/org_EJAehbxTdxksCwoH/client-grants?page=0&per_page=50&include_totals=true", "body": "", "status": 200, "response": { @@ -14300,7 +14285,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/organizations/org_19dkFpo1x6nSD6ir/discovery-domains?take=50", + "path": "/api/v2/organizations/org_EJAehbxTdxksCwoH/discovery-domains?take=50", "body": "", "status": 200, "response": { @@ -14312,7 +14297,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/organizations/org_WeseaFOehx5sXauT/enabled_connections?page=0&per_page=50&include_totals=true", + "path": "/api/v2/organizations/org_B2OPtUdlswlQ6G26/enabled_connections?page=0&per_page=50&include_totals=true", "body": "", "status": 200, "response": { @@ -14327,7 +14312,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/organizations/org_WeseaFOehx5sXauT/client-grants?page=0&per_page=50&include_totals=true", + "path": "/api/v2/organizations/org_B2OPtUdlswlQ6G26/client-grants?page=0&per_page=50&include_totals=true", "body": "", "status": 200, "response": { @@ -14342,7 +14327,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/organizations/org_WeseaFOehx5sXauT/discovery-domains?take=50", + "path": "/api/v2/organizations/org_B2OPtUdlswlQ6G26/discovery-domains?take=50", "body": "", "status": 200, "response": { @@ -14360,7 +14345,7 @@ "response": { "connections": [ { - "id": "con_7P33d2zJIPCFXXbH", + "id": "con_BaKydp194pu6KeMY", "options": { "mfa": { "active": true, @@ -14425,12 +14410,12 @@ "boo-baz-db-connection-test" ], "enabled_clients": [ - "pplyWVYIrlso9wpmxRxLKCZi5IBruVv7", - "giX56gECFgmZv2lRrlwNkd0g6YwsXCar" + "1J0eYQOAdKR6mWk9X1NPNqDXVqzgdwXZ", + "u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek" ] }, { - "id": "con_mgTe5EjBQeY95fZD", + "id": "con_HqDvThofsvA7Ydc9", "options": { "email": true, "scope": [ @@ -14452,12 +14437,12 @@ "google-oauth2" ], "enabled_clients": [ - "ESNQgEtm5yzlcvLljLjNCTCckHniGuxA", - "giX56gECFgmZv2lRrlwNkd0g6YwsXCar" + "xiWT8cVGT10UQcryJCU2HfMzRcNN0Exb", + "u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek" ] }, { - "id": "con_hs0JNGk6M5oYHR3T", + "id": "con_4KyyGHwwixzZfOVY", "options": { "mfa": { "active": true, @@ -14497,7 +14482,7 @@ ], "enabled_clients": [ "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE", - "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4" + "4R1cIUJb4tweu26ZLYAC8NGwhCzfPMcG" ] } ] @@ -14514,8 +14499,8 @@ "response": { "client_grants": [ { - "id": "cgr_ZK4DSWMLDpUpVfOy", - "client_id": "Iz6ck1jHvmCMNxU8rTDr3uGr1actAvcX", + "id": "cgr_PtCL12zii7M5JOSk", + "client_id": "ILYi0cNQo9QFRhPu9x1LwaKpfJuxqvlQ", "audience": "https://auth0-deploy-cli-e2e.us.auth0.com/api/v2/", "scope": [ "read:client_grants", @@ -14652,8 +14637,8 @@ "subject_type": "client" }, { - "id": "cgr_loIebn0hExrwMXUc", - "client_id": "uBlUMwvuOBoM3WMI3HmWP0LT4Wh0JgNV", + "id": "cgr_X9eWK7l92bqAY4ej", + "client_id": "JSpoWije4CKwUe6oUAGhtiP2b6qZVBoq", "audience": "https://auth0-deploy-cli-e2e.us.auth0.com/api/v2/", "scope": [ "read:client_grants", @@ -15127,7 +15112,7 @@ "subject": "deprecated" } ], - "client_id": "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4", + "client_id": "4R1cIUJb4tweu26ZLYAC8NGwhCzfPMcG", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -15147,12 +15132,20 @@ "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "Quickstarts API (Test Application)", - "client_metadata": { - "foo": "bar" - }, + "name": "API Explorer Application", + "allowed_clients": [], + "callbacks": [], + "client_metadata": {}, "cross_origin_authentication": false, "is_first_party": true, + "native_social_login": { + "apple": { + "enabled": false + }, + "facebook": { + "enabled": false + } + }, "oidc_conformant": true, "refresh_token": { "expiration_type": "non-expiring", @@ -15172,7 +15165,7 @@ "subject": "deprecated" } ], - "client_id": "A3DI3iNnJPuRBNAWAc0SggnvAiIj2K6o", + "client_id": "ILYi0cNQo9QFRhPu9x1LwaKpfJuxqvlQ", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -15180,6 +15173,7 @@ "lifetime_in_seconds": 36000, "secret_encoded": false }, + "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", "app_type": "non_interactive", "grant_types": [ @@ -15191,8 +15185,9 @@ "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "API Explorer Application", + "name": "Node App", "allowed_clients": [], + "allowed_logout_urls": [], "callbacks": [], "client_metadata": {}, "cross_origin_authentication": false, @@ -15224,7 +15219,8 @@ "subject": "deprecated" } ], - "client_id": "uBlUMwvuOBoM3WMI3HmWP0LT4Wh0JgNV", + "allowed_origins": [], + "client_id": "1J0eYQOAdKR6mWk9X1NPNqDXVqzgdwXZ", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -15234,31 +15230,26 @@ }, "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", - "app_type": "non_interactive", + "app_type": "regular_web", "grant_types": [ + "authorization_code", + "implicit", + "refresh_token", "client_credentials" ], + "web_origins": [], "custom_login_page_on": true }, { "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "Node App", - "allowed_clients": [], - "allowed_logout_urls": [], - "callbacks": [], - "client_metadata": {}, + "name": "Quickstarts API (Test Application)", + "client_metadata": { + "foo": "bar" + }, "cross_origin_authentication": false, "is_first_party": true, - "native_social_login": { - "apple": { - "enabled": false - }, - "facebook": { - "enabled": false - } - }, "oidc_conformant": true, "refresh_token": { "expiration_type": "non-expiring", @@ -15278,8 +15269,7 @@ "subject": "deprecated" } ], - "allowed_origins": [], - "client_id": "pplyWVYIrlso9wpmxRxLKCZi5IBruVv7", + "client_id": "YLxkngzwg8GRV4q93BtFqi0SIRreG0ef", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -15287,16 +15277,11 @@ "lifetime_in_seconds": 36000, "secret_encoded": false }, - "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", - "app_type": "regular_web", + "app_type": "non_interactive", "grant_types": [ - "authorization_code", - "implicit", - "refresh_token", "client_credentials" ], - "web_origins": [], "custom_login_page_on": true }, { @@ -15325,7 +15310,7 @@ "subject": "deprecated" } ], - "client_id": "Iz6ck1jHvmCMNxU8rTDr3uGr1actAvcX", + "client_id": "JSpoWije4CKwUe6oUAGhtiP2b6qZVBoq", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -15378,7 +15363,7 @@ "subject": "deprecated" } ], - "client_id": "ESNQgEtm5yzlcvLljLjNCTCckHniGuxA", + "client_id": "xiWT8cVGT10UQcryJCU2HfMzRcNN0Exb", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -15438,7 +15423,7 @@ "subject": "deprecated" } ], - "client_id": "Hp4aFX1YzW5bzxLZsAwftXbXvu396aRC", + "client_id": "ob4KTYmPNjtAxiUSFLuRlhhRtmWUuU9h", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -15496,7 +15481,7 @@ "subject": "deprecated" } ], - "client_id": "giX56gECFgmZv2lRrlwNkd0g6YwsXCar", + "client_id": "u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -15562,7 +15547,7 @@ "status": 200, "response": [ { - "id": "lst_0000000000026538", + "id": "lst_0000000000026646", "name": "Suspended DD Log Stream", "type": "datadog", "status": "active", @@ -15573,14 +15558,14 @@ "isPriority": false }, { - "id": "lst_0000000000026539", + "id": "lst_0000000000026647", "name": "Amazon EventBridge", "type": "eventbridge", "status": "active", "sink": { "awsAccountId": "123456789012", "awsRegion": "us-east-2", - "awsPartnerEventSource": "aws.partner/auth0.com/auth0-deploy-cli-e2e-6ca641f9-0a06-48f0-9547-7d8053ce62a5/auth0.logs" + "awsPartnerEventSource": "aws.partner/auth0.com/auth0-deploy-cli-e2e-86b53d0c-327c-4b51-9536-89175a2b42ab/auth0.logs" }, "filters": [ { @@ -17003,7 +16988,7 @@ "subject": "deprecated" } ], - "client_id": "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4", + "client_id": "4R1cIUJb4tweu26ZLYAC8NGwhCzfPMcG", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -17023,12 +17008,20 @@ "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "Quickstarts API (Test Application)", - "client_metadata": { - "foo": "bar" - }, + "name": "API Explorer Application", + "allowed_clients": [], + "callbacks": [], + "client_metadata": {}, "cross_origin_authentication": false, "is_first_party": true, + "native_social_login": { + "apple": { + "enabled": false + }, + "facebook": { + "enabled": false + } + }, "oidc_conformant": true, "refresh_token": { "expiration_type": "non-expiring", @@ -17048,7 +17041,7 @@ "subject": "deprecated" } ], - "client_id": "A3DI3iNnJPuRBNAWAc0SggnvAiIj2K6o", + "client_id": "ILYi0cNQo9QFRhPu9x1LwaKpfJuxqvlQ", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -17056,6 +17049,7 @@ "lifetime_in_seconds": 36000, "secret_encoded": false }, + "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", "app_type": "non_interactive", "grant_types": [ @@ -17067,8 +17061,9 @@ "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "API Explorer Application", + "name": "Node App", "allowed_clients": [], + "allowed_logout_urls": [], "callbacks": [], "client_metadata": {}, "cross_origin_authentication": false, @@ -17100,7 +17095,8 @@ "subject": "deprecated" } ], - "client_id": "uBlUMwvuOBoM3WMI3HmWP0LT4Wh0JgNV", + "allowed_origins": [], + "client_id": "1J0eYQOAdKR6mWk9X1NPNqDXVqzgdwXZ", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -17110,31 +17106,26 @@ }, "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", - "app_type": "non_interactive", + "app_type": "regular_web", "grant_types": [ + "authorization_code", + "implicit", + "refresh_token", "client_credentials" ], + "web_origins": [], "custom_login_page_on": true }, { "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "Node App", - "allowed_clients": [], - "allowed_logout_urls": [], - "callbacks": [], - "client_metadata": {}, + "name": "Quickstarts API (Test Application)", + "client_metadata": { + "foo": "bar" + }, "cross_origin_authentication": false, "is_first_party": true, - "native_social_login": { - "apple": { - "enabled": false - }, - "facebook": { - "enabled": false - } - }, "oidc_conformant": true, "refresh_token": { "expiration_type": "non-expiring", @@ -17154,8 +17145,7 @@ "subject": "deprecated" } ], - "allowed_origins": [], - "client_id": "pplyWVYIrlso9wpmxRxLKCZi5IBruVv7", + "client_id": "YLxkngzwg8GRV4q93BtFqi0SIRreG0ef", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -17163,16 +17153,11 @@ "lifetime_in_seconds": 36000, "secret_encoded": false }, - "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", - "app_type": "regular_web", + "app_type": "non_interactive", "grant_types": [ - "authorization_code", - "implicit", - "refresh_token", "client_credentials" ], - "web_origins": [], "custom_login_page_on": true }, { @@ -17201,7 +17186,7 @@ "subject": "deprecated" } ], - "client_id": "Iz6ck1jHvmCMNxU8rTDr3uGr1actAvcX", + "client_id": "JSpoWije4CKwUe6oUAGhtiP2b6qZVBoq", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -17254,7 +17239,7 @@ "subject": "deprecated" } ], - "client_id": "ESNQgEtm5yzlcvLljLjNCTCckHniGuxA", + "client_id": "xiWT8cVGT10UQcryJCU2HfMzRcNN0Exb", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -17314,7 +17299,7 @@ "subject": "deprecated" } ], - "client_id": "Hp4aFX1YzW5bzxLZsAwftXbXvu396aRC", + "client_id": "ob4KTYmPNjtAxiUSFLuRlhhRtmWUuU9h", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -17372,7 +17357,7 @@ "subject": "deprecated" } ], - "client_id": "giX56gECFgmZv2lRrlwNkd0g6YwsXCar", + "client_id": "u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -17393,68 +17378,6 @@ "rawHeaders": [], "responseIsBinary": false }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "GET", - "path": "/api/v2/actions/actions?page=0&per_page=100", - "body": "", - "status": 200, - "response": { - "actions": [ - { - "id": "904bc668-0216-492c-bd3e-4bcddc69f411", - "name": "My Custom Action", - "supported_triggers": [ - { - "id": "post-login", - "version": "v2" - } - ], - "created_at": "2026-02-13T10:26:08.329157690Z", - "updated_at": "2026-02-13T10:26:08.344112736Z", - "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", - "dependencies": [], - "runtime": "node18", - "status": "built", - "secrets": [], - "current_version": { - "id": "435970c3-9fc3-46c0-8386-de6162b6c9ff", - "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", - "runtime": "node18", - "status": "BUILT", - "number": 1, - "build_time": "2026-02-13T10:26:09.470388341Z", - "created_at": "2026-02-13T10:26:09.377183902Z", - "updated_at": "2026-02-13T10:26:09.471895168Z" - }, - "deployed_version": { - "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", - "dependencies": [], - "id": "435970c3-9fc3-46c0-8386-de6162b6c9ff", - "deployed": true, - "number": 1, - "built_at": "2026-02-13T10:26:09.470388341Z", - "secrets": [], - "status": "built", - "created_at": "2026-02-13T10:26:09.377183902Z", - "updated_at": "2026-02-13T10:26:09.471895168Z", - "runtime": "node18", - "supported_triggers": [ - { - "id": "post-login", - "version": "v2" - } - ] - }, - "all_changes_deployed": true - } - ], - "total": 1, - "per_page": 100 - }, - "rawHeaders": [], - "responseIsBinary": false - }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", @@ -17464,7 +17387,7 @@ "response": { "connections": [ { - "id": "con_7P33d2zJIPCFXXbH", + "id": "con_BaKydp194pu6KeMY", "options": { "mfa": { "active": true, @@ -17529,12 +17452,12 @@ "boo-baz-db-connection-test" ], "enabled_clients": [ - "pplyWVYIrlso9wpmxRxLKCZi5IBruVv7", - "giX56gECFgmZv2lRrlwNkd0g6YwsXCar" + "1J0eYQOAdKR6mWk9X1NPNqDXVqzgdwXZ", + "u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek" ] }, { - "id": "con_hs0JNGk6M5oYHR3T", + "id": "con_4KyyGHwwixzZfOVY", "options": { "mfa": { "active": true, @@ -17574,7 +17497,7 @@ ], "enabled_clients": [ "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE", - "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4" + "4R1cIUJb4tweu26ZLYAC8NGwhCzfPMcG" ] } ] @@ -17585,16 +17508,78 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/connections/con_7P33d2zJIPCFXXbH/clients?take=50", + "path": "/api/v2/actions/actions?page=0&per_page=100", + "body": "", + "status": 200, + "response": { + "actions": [ + { + "id": "0c2cd65a-2ab4-4874-84bb-5b11136cc9ba", + "name": "My Custom Action", + "supported_triggers": [ + { + "id": "post-login", + "version": "v2" + } + ], + "created_at": "2026-02-16T17:04:08.035726715Z", + "updated_at": "2026-02-16T17:04:08.043218401Z", + "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", + "dependencies": [], + "runtime": "node18", + "status": "built", + "secrets": [], + "current_version": { + "id": "f685c004-6924-462c-bdd1-d80b9c4d9c5d", + "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", + "runtime": "node18", + "status": "BUILT", + "number": 1, + "build_time": "2026-02-16T17:04:08.896675174Z", + "created_at": "2026-02-16T17:04:08.815168038Z", + "updated_at": "2026-02-16T17:04:08.897968815Z" + }, + "deployed_version": { + "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", + "dependencies": [], + "id": "f685c004-6924-462c-bdd1-d80b9c4d9c5d", + "deployed": true, + "number": 1, + "built_at": "2026-02-16T17:04:08.896675174Z", + "secrets": [], + "status": "built", + "created_at": "2026-02-16T17:04:08.815168038Z", + "updated_at": "2026-02-16T17:04:08.897968815Z", + "runtime": "node18", + "supported_triggers": [ + { + "id": "post-login", + "version": "v2" + } + ] + }, + "all_changes_deployed": true + } + ], + "total": 1, + "per_page": 100 + }, + "rawHeaders": [], + "responseIsBinary": false + }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "GET", + "path": "/api/v2/connections/con_BaKydp194pu6KeMY/clients?take=50", "body": "", "status": 200, "response": { "clients": [ { - "client_id": "giX56gECFgmZv2lRrlwNkd0g6YwsXCar" + "client_id": "1J0eYQOAdKR6mWk9X1NPNqDXVqzgdwXZ" }, { - "client_id": "pplyWVYIrlso9wpmxRxLKCZi5IBruVv7" + "client_id": "u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek" } ] }, @@ -17604,13 +17589,13 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/connections/con_hs0JNGk6M5oYHR3T/clients?take=50", + "path": "/api/v2/connections/con_4KyyGHwwixzZfOVY/clients?take=50", "body": "", "status": 200, "response": { "clients": [ { - "client_id": "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4" + "client_id": "4R1cIUJb4tweu26ZLYAC8NGwhCzfPMcG" }, { "client_id": "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE" @@ -17629,7 +17614,7 @@ "response": { "connections": [ { - "id": "con_7P33d2zJIPCFXXbH", + "id": "con_BaKydp194pu6KeMY", "options": { "mfa": { "active": true, @@ -17694,12 +17679,12 @@ "boo-baz-db-connection-test" ], "enabled_clients": [ - "pplyWVYIrlso9wpmxRxLKCZi5IBruVv7", - "giX56gECFgmZv2lRrlwNkd0g6YwsXCar" + "1J0eYQOAdKR6mWk9X1NPNqDXVqzgdwXZ", + "u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek" ] }, { - "id": "con_mgTe5EjBQeY95fZD", + "id": "con_HqDvThofsvA7Ydc9", "options": { "email": true, "scope": [ @@ -17721,12 +17706,12 @@ "google-oauth2" ], "enabled_clients": [ - "ESNQgEtm5yzlcvLljLjNCTCckHniGuxA", - "giX56gECFgmZv2lRrlwNkd0g6YwsXCar" + "xiWT8cVGT10UQcryJCU2HfMzRcNN0Exb", + "u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek" ] }, { - "id": "con_hs0JNGk6M5oYHR3T", + "id": "con_4KyyGHwwixzZfOVY", "options": { "mfa": { "active": true, @@ -17766,7 +17751,7 @@ ], "enabled_clients": [ "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE", - "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4" + "4R1cIUJb4tweu26ZLYAC8NGwhCzfPMcG" ] } ] @@ -17792,16 +17777,16 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/connections/con_mgTe5EjBQeY95fZD/clients?take=50", + "path": "/api/v2/connections/con_HqDvThofsvA7Ydc9/clients?take=50", "body": "", "status": 200, "response": { "clients": [ { - "client_id": "ESNQgEtm5yzlcvLljLjNCTCckHniGuxA" + "client_id": "u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek" }, { - "client_id": "giX56gECFgmZv2lRrlwNkd0g6YwsXCar" + "client_id": "xiWT8cVGT10UQcryJCU2HfMzRcNN0Exb" } ] }, @@ -17906,24 +17891,9 @@ "body": "\n \n \n \n \n
\n \n \n \n
\n \n \n

\n\n

Welcome to {{ application.name}}!

\n\n

\n Thank you for signing up. Please verify your email address by clicking the following\n link:\n

\n\n

Confirm my account

\n\n

\n If you are having any issues with your account, please don’t hesitate to contact us\n by replying to this mail.\n

\n\n
\n Haha!!!\n
\n\n {{ application.name }}\n\n

\n
\n \n If you did not make this request, please contact us by replying to this mail.\n

\n
\n \n \n \n
\n \n\n", "from": "", "subject": "", - "syntax": "liquid", - "urlLifetimeInSeconds": 432000, - "enabled": true - }, - "rawHeaders": [], - "responseIsBinary": false - }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "GET", - "path": "/api/v2/email-templates/stolen_credentials", - "body": "", - "status": 404, - "response": { - "statusCode": 404, - "error": "Not Found", - "message": "The template does not exist.", - "errorCode": "inexistent_email_template" + "syntax": "liquid", + "urlLifetimeInSeconds": 432000, + "enabled": true }, "rawHeaders": [], "responseIsBinary": false @@ -17946,7 +17916,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/email-templates/user_invitation", + "path": "/api/v2/email-templates/enrollment_email", "body": "", "status": 404, "response": { @@ -17961,7 +17931,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/email-templates/change_password", + "path": "/api/v2/email-templates/reset_email", "body": "", "status": 404, "response": { @@ -17976,7 +17946,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/email-templates/password_reset", + "path": "/api/v2/email-templates/blocked_account", "body": "", "status": 404, "response": { @@ -17991,7 +17961,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/email-templates/enrollment_email", + "path": "/api/v2/email-templates/stolen_credentials", "body": "", "status": 404, "response": { @@ -18006,7 +17976,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/email-templates/blocked_account", + "path": "/api/v2/email-templates/user_invitation", "body": "", "status": 404, "response": { @@ -18021,7 +17991,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/email-templates/reset_email_by_code", + "path": "/api/v2/email-templates/mfa_oob_code", "body": "", "status": 404, "response": { @@ -18036,7 +18006,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/email-templates/reset_email", + "path": "/api/v2/email-templates/password_reset", "body": "", "status": 404, "response": { @@ -18051,7 +18021,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/email-templates/mfa_oob_code", + "path": "/api/v2/email-templates/change_password", "body": "", "status": 404, "response": { @@ -18066,7 +18036,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/email-templates/async_approval", + "path": "/api/v2/email-templates/reset_email_by_code", "body": "", "status": 404, "response": { @@ -18097,6 +18067,21 @@ "rawHeaders": [], "responseIsBinary": false }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "GET", + "path": "/api/v2/email-templates/async_approval", + "body": "", + "status": 404, + "response": { + "statusCode": 404, + "error": "Not Found", + "message": "The template does not exist.", + "errorCode": "inexistent_email_template" + }, + "rawHeaders": [], + "responseIsBinary": false + }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", @@ -18106,8 +18091,8 @@ "response": { "client_grants": [ { - "id": "cgr_ZK4DSWMLDpUpVfOy", - "client_id": "Iz6ck1jHvmCMNxU8rTDr3uGr1actAvcX", + "id": "cgr_PtCL12zii7M5JOSk", + "client_id": "ILYi0cNQo9QFRhPu9x1LwaKpfJuxqvlQ", "audience": "https://auth0-deploy-cli-e2e.us.auth0.com/api/v2/", "scope": [ "read:client_grants", @@ -18244,8 +18229,8 @@ "subject_type": "client" }, { - "id": "cgr_loIebn0hExrwMXUc", - "client_id": "uBlUMwvuOBoM3WMI3HmWP0LT4Wh0JgNV", + "id": "cgr_X9eWK7l92bqAY4ej", + "client_id": "JSpoWije4CKwUe6oUAGhtiP2b6qZVBoq", "audience": "https://auth0-deploy-cli-e2e.us.auth0.com/api/v2/", "scope": [ "read:client_grants", @@ -18753,22 +18738,22 @@ "response": { "roles": [ { - "id": "rol_Vii7zMJYTr9j0ud1", + "id": "rol_PKvBKcfS2zcMAkgp", "name": "Admin", "description": "Can read and write things" }, { - "id": "rol_fq36Rme7M2cVz7q0", + "id": "rol_cTfY9XEvtAmpFXPH", "name": "Reader", "description": "Can only read things" }, { - "id": "rol_9O7TUijcmN9Y1M79", + "id": "rol_3WV3UtInVufuNfJi", "name": "read_only", "description": "Read Only" }, { - "id": "rol_4jMbe1hbCYdIEFs7", + "id": "rol_DXCz3b7aZUyS2DM1", "name": "read_osnly", "description": "Readz Only" } @@ -18783,7 +18768,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/roles/rol_Vii7zMJYTr9j0ud1/permissions?per_page=100&page=0&include_totals=true", + "path": "/api/v2/roles/rol_PKvBKcfS2zcMAkgp/permissions?per_page=100&page=0&include_totals=true", "body": "", "status": 200, "response": { @@ -18798,7 +18783,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/roles/rol_fq36Rme7M2cVz7q0/permissions?per_page=100&page=0&include_totals=true", + "path": "/api/v2/roles/rol_cTfY9XEvtAmpFXPH/permissions?per_page=100&page=0&include_totals=true", "body": "", "status": 200, "response": { @@ -18813,7 +18798,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/roles/rol_9O7TUijcmN9Y1M79/permissions?per_page=100&page=0&include_totals=true", + "path": "/api/v2/roles/rol_3WV3UtInVufuNfJi/permissions?per_page=100&page=0&include_totals=true", "body": "", "status": 200, "response": { @@ -18828,7 +18813,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/roles/rol_4jMbe1hbCYdIEFs7/permissions?per_page=100&page=0&include_totals=true", + "path": "/api/v2/roles/rol_DXCz3b7aZUyS2DM1/permissions?per_page=100&page=0&include_totals=true", "body": "", "status": 200, "response": { @@ -19232,7 +19217,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/mfa-voice/custom-text/en", + "path": "/api/v2/prompts/mfa-otp/custom-text/en", "body": "", "status": 200, "response": {}, @@ -19242,7 +19227,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/mfa-otp/custom-text/en", + "path": "/api/v2/prompts/mfa-voice/custom-text/en", "body": "", "status": 200, "response": {}, @@ -19332,7 +19317,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/email-verification/custom-text/en", + "path": "/api/v2/prompts/email-otp-challenge/custom-text/en", "body": "", "status": 200, "response": {}, @@ -19342,7 +19327,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/email-otp-challenge/custom-text/en", + "path": "/api/v2/prompts/email-verification/custom-text/en", "body": "", "status": 200, "response": {}, @@ -19352,7 +19337,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/invitation/custom-text/en", + "path": "/api/v2/prompts/common/custom-text/en", "body": "", "status": 200, "response": {}, @@ -19372,7 +19357,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/common/custom-text/en", + "path": "/api/v2/prompts/invitation/custom-text/en", "body": "", "status": 200, "response": {}, @@ -19382,7 +19367,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/captcha/custom-text/en", + "path": "/api/v2/prompts/passkeys/custom-text/en", "body": "", "status": 200, "response": {}, @@ -19392,7 +19377,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/passkeys/custom-text/en", + "path": "/api/v2/prompts/captcha/custom-text/en", "body": "", "status": 200, "response": {}, @@ -19442,7 +19427,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/signup/partials", + "path": "/api/v2/prompts/login-passwordless/partials", "body": "", "status": 200, "response": {}, @@ -19452,7 +19437,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/login-passwordless/partials", + "path": "/api/v2/prompts/signup/partials", "body": "", "status": 200, "response": {}, @@ -19503,7 +19488,7 @@ "response": { "actions": [ { - "id": "904bc668-0216-492c-bd3e-4bcddc69f411", + "id": "0c2cd65a-2ab4-4874-84bb-5b11136cc9ba", "name": "My Custom Action", "supported_triggers": [ { @@ -19511,34 +19496,34 @@ "version": "v2" } ], - "created_at": "2026-02-13T10:26:08.329157690Z", - "updated_at": "2026-02-13T10:26:08.344112736Z", + "created_at": "2026-02-16T17:04:08.035726715Z", + "updated_at": "2026-02-16T17:04:08.043218401Z", "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", "dependencies": [], "runtime": "node18", "status": "built", "secrets": [], "current_version": { - "id": "435970c3-9fc3-46c0-8386-de6162b6c9ff", + "id": "f685c004-6924-462c-bdd1-d80b9c4d9c5d", "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", "runtime": "node18", "status": "BUILT", "number": 1, - "build_time": "2026-02-13T10:26:09.470388341Z", - "created_at": "2026-02-13T10:26:09.377183902Z", - "updated_at": "2026-02-13T10:26:09.471895168Z" + "build_time": "2026-02-16T17:04:08.896675174Z", + "created_at": "2026-02-16T17:04:08.815168038Z", + "updated_at": "2026-02-16T17:04:08.897968815Z" }, "deployed_version": { "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", "dependencies": [], - "id": "435970c3-9fc3-46c0-8386-de6162b6c9ff", + "id": "f685c004-6924-462c-bdd1-d80b9c4d9c5d", "deployed": true, "number": 1, - "built_at": "2026-02-13T10:26:09.470388341Z", + "built_at": "2026-02-16T17:04:08.896675174Z", "secrets": [], "status": "built", - "created_at": "2026-02-13T10:26:09.377183902Z", - "updated_at": "2026-02-13T10:26:09.471895168Z", + "created_at": "2026-02-16T17:04:08.815168038Z", + "updated_at": "2026-02-16T17:04:08.897968815Z", "runtime": "node18", "supported_triggers": [ { @@ -19556,6 +19541,21 @@ "rawHeaders": [], "responseIsBinary": false }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "GET", + "path": "/api/v2/actions/modules?page=0&per_page=100", + "body": "", + "status": 403, + "response": { + "statusCode": 403, + "error": "Forbidden", + "message": "This feature is not enabled for this tenant.", + "errorCode": "feature_not_enabled" + }, + "rawHeaders": [], + "responseIsBinary": false + }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", @@ -19566,20 +19566,14 @@ "triggers": [ { "id": "post-login", - "version": "v3", - "status": "CURRENT", + "version": "v1", + "status": "DEPRECATED", "runtimes": [ - "node18-actions", "node22" ], - "default_runtime": "node22", + "default_runtime": "node12", "binding_policy": "trigger-bound", - "compatible_triggers": [ - { - "id": "post-login", - "version": "v2" - } - ] + "compatible_triggers": [] }, { "id": "post-login", @@ -19595,25 +19589,20 @@ }, { "id": "post-login", - "version": "v1", - "status": "DEPRECATED", - "runtimes": [ - "node22" - ], - "default_runtime": "node12", - "binding_policy": "trigger-bound", - "compatible_triggers": [] - }, - { - "id": "credentials-exchange", - "version": "v1", - "status": "DEPRECATED", + "version": "v3", + "status": "CURRENT", "runtimes": [ + "node18-actions", "node22" ], - "default_runtime": "node12", + "default_runtime": "node22", "binding_policy": "trigger-bound", - "compatible_triggers": [] + "compatible_triggers": [ + { + "id": "post-login", + "version": "v2" + } + ] }, { "id": "credentials-exchange", @@ -19628,7 +19617,7 @@ "compatible_triggers": [] }, { - "id": "pre-user-registration", + "id": "credentials-exchange", "version": "v1", "status": "DEPRECATED", "runtimes": [ @@ -19650,6 +19639,17 @@ "binding_policy": "trigger-bound", "compatible_triggers": [] }, + { + "id": "pre-user-registration", + "version": "v1", + "status": "DEPRECATED", + "runtimes": [ + "node22" + ], + "default_runtime": "node12", + "binding_policy": "trigger-bound", + "compatible_triggers": [] + }, { "id": "post-user-registration", "version": "v1", @@ -19983,7 +19983,12 @@ "response": { "organizations": [ { - "id": "org_19dkFpo1x6nSD6ir", + "id": "org_EJAehbxTdxksCwoH", + "name": "org2", + "display_name": "Organization2" + }, + { + "id": "org_B2OPtUdlswlQ6G26", "name": "org1", "display_name": "Organization", "branding": { @@ -19992,11 +19997,6 @@ "primary": "#57ddff" } } - }, - { - "id": "org_WeseaFOehx5sXauT", - "name": "org2", - "display_name": "Organization2" } ] }, @@ -20096,7 +20096,7 @@ "subject": "deprecated" } ], - "client_id": "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4", + "client_id": "4R1cIUJb4tweu26ZLYAC8NGwhCzfPMcG", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -20116,12 +20116,20 @@ "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "Quickstarts API (Test Application)", - "client_metadata": { - "foo": "bar" - }, + "name": "API Explorer Application", + "allowed_clients": [], + "callbacks": [], + "client_metadata": {}, "cross_origin_authentication": false, "is_first_party": true, + "native_social_login": { + "apple": { + "enabled": false + }, + "facebook": { + "enabled": false + } + }, "oidc_conformant": true, "refresh_token": { "expiration_type": "non-expiring", @@ -20141,7 +20149,7 @@ "subject": "deprecated" } ], - "client_id": "A3DI3iNnJPuRBNAWAc0SggnvAiIj2K6o", + "client_id": "ILYi0cNQo9QFRhPu9x1LwaKpfJuxqvlQ", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -20149,6 +20157,7 @@ "lifetime_in_seconds": 36000, "secret_encoded": false }, + "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", "app_type": "non_interactive", "grant_types": [ @@ -20160,8 +20169,9 @@ "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "API Explorer Application", + "name": "Node App", "allowed_clients": [], + "allowed_logout_urls": [], "callbacks": [], "client_metadata": {}, "cross_origin_authentication": false, @@ -20193,7 +20203,8 @@ "subject": "deprecated" } ], - "client_id": "uBlUMwvuOBoM3WMI3HmWP0LT4Wh0JgNV", + "allowed_origins": [], + "client_id": "1J0eYQOAdKR6mWk9X1NPNqDXVqzgdwXZ", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -20203,31 +20214,26 @@ }, "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", - "app_type": "non_interactive", + "app_type": "regular_web", "grant_types": [ + "authorization_code", + "implicit", + "refresh_token", "client_credentials" ], + "web_origins": [], "custom_login_page_on": true }, { "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "Node App", - "allowed_clients": [], - "allowed_logout_urls": [], - "callbacks": [], - "client_metadata": {}, + "name": "Quickstarts API (Test Application)", + "client_metadata": { + "foo": "bar" + }, "cross_origin_authentication": false, "is_first_party": true, - "native_social_login": { - "apple": { - "enabled": false - }, - "facebook": { - "enabled": false - } - }, "oidc_conformant": true, "refresh_token": { "expiration_type": "non-expiring", @@ -20247,8 +20253,7 @@ "subject": "deprecated" } ], - "allowed_origins": [], - "client_id": "pplyWVYIrlso9wpmxRxLKCZi5IBruVv7", + "client_id": "YLxkngzwg8GRV4q93BtFqi0SIRreG0ef", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -20256,16 +20261,11 @@ "lifetime_in_seconds": 36000, "secret_encoded": false }, - "client_aliases": [], "token_endpoint_auth_method": "client_secret_post", - "app_type": "regular_web", + "app_type": "non_interactive", "grant_types": [ - "authorization_code", - "implicit", - "refresh_token", "client_credentials" ], - "web_origins": [], "custom_login_page_on": true }, { @@ -20294,7 +20294,7 @@ "subject": "deprecated" } ], - "client_id": "Iz6ck1jHvmCMNxU8rTDr3uGr1actAvcX", + "client_id": "JSpoWije4CKwUe6oUAGhtiP2b6qZVBoq", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -20347,7 +20347,7 @@ "subject": "deprecated" } ], - "client_id": "ESNQgEtm5yzlcvLljLjNCTCckHniGuxA", + "client_id": "xiWT8cVGT10UQcryJCU2HfMzRcNN0Exb", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -20407,7 +20407,7 @@ "subject": "deprecated" } ], - "client_id": "Hp4aFX1YzW5bzxLZsAwftXbXvu396aRC", + "client_id": "ob4KTYmPNjtAxiUSFLuRlhhRtmWUuU9h", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -20465,7 +20465,7 @@ "subject": "deprecated" } ], - "client_id": "giX56gECFgmZv2lRrlwNkd0g6YwsXCar", + "client_id": "u3LDp0B8TiAvLrAicVBNE2ViOtH1rfek", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -20526,7 +20526,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/organizations/org_19dkFpo1x6nSD6ir/enabled_connections?page=0&per_page=50&include_totals=true", + "path": "/api/v2/organizations/org_EJAehbxTdxksCwoH/enabled_connections?page=0&per_page=50&include_totals=true", "body": "", "status": 200, "response": { @@ -20541,7 +20541,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/organizations/org_19dkFpo1x6nSD6ir/client-grants?page=0&per_page=50&include_totals=true", + "path": "/api/v2/organizations/org_EJAehbxTdxksCwoH/client-grants?page=0&per_page=50&include_totals=true", "body": "", "status": 200, "response": { @@ -20556,7 +20556,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/organizations/org_19dkFpo1x6nSD6ir/discovery-domains?take=50", + "path": "/api/v2/organizations/org_EJAehbxTdxksCwoH/discovery-domains?take=50", "body": "", "status": 200, "response": { @@ -20568,7 +20568,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/organizations/org_WeseaFOehx5sXauT/enabled_connections?page=0&per_page=50&include_totals=true", + "path": "/api/v2/organizations/org_B2OPtUdlswlQ6G26/enabled_connections?page=0&per_page=50&include_totals=true", "body": "", "status": 200, "response": { @@ -20583,7 +20583,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/organizations/org_WeseaFOehx5sXauT/client-grants?page=0&per_page=50&include_totals=true", + "path": "/api/v2/organizations/org_B2OPtUdlswlQ6G26/client-grants?page=0&per_page=50&include_totals=true", "body": "", "status": 200, "response": { @@ -20598,7 +20598,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/organizations/org_WeseaFOehx5sXauT/discovery-domains?take=50", + "path": "/api/v2/organizations/org_B2OPtUdlswlQ6G26/discovery-domains?take=50", "body": "", "status": 200, "response": { @@ -20626,6 +20626,29 @@ "rawHeaders": [], "responseIsBinary": false }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "GET", + "path": "/api/v2/attack-protection/breached-password-detection", + "body": "", + "status": 200, + "response": { + "enabled": false, + "shields": [], + "admin_notification_frequency": [], + "method": "standard", + "stage": { + "pre-user-registration": { + "shields": [] + }, + "pre-change-password": { + "shields": [] + } + } + }, + "rawHeaders": [], + "responseIsBinary": false + }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", @@ -20660,22 +20683,16 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/attack-protection/breached-password-detection", + "path": "/api/v2/attack-protection/bot-detection", "body": "", "status": 200, "response": { - "enabled": false, - "shields": [], - "admin_notification_frequency": [], - "method": "standard", - "stage": { - "pre-user-registration": { - "shields": [] - }, - "pre-change-password": { - "shields": [] - } - } + "challenge_password_policy": "never", + "challenge_passwordless_policy": "never", + "challenge_password_reset_policy": "never", + "allowlist": [], + "bot_detection_level": "medium", + "monitoring_mode_enabled": false }, "rawHeaders": [], "responseIsBinary": false @@ -20718,16 +20735,11 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/attack-protection/bot-detection", + "path": "/api/v2/risk-assessments/settings", "body": "", "status": 200, "response": { - "challenge_password_policy": "never", - "challenge_passwordless_policy": "never", - "challenge_password_reset_policy": "never", - "allowlist": [], - "bot_detection_level": "medium", - "monitoring_mode_enabled": false + "enabled": false }, "rawHeaders": [], "responseIsBinary": false @@ -20744,18 +20756,6 @@ "rawHeaders": [], "responseIsBinary": false }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "GET", - "path": "/api/v2/risk-assessments/settings", - "body": "", - "status": 200, - "response": { - "enabled": false - }, - "rawHeaders": [], - "responseIsBinary": false - }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", @@ -20764,7 +20764,7 @@ "status": 200, "response": [ { - "id": "lst_0000000000026538", + "id": "lst_0000000000026646", "name": "Suspended DD Log Stream", "type": "datadog", "status": "active", @@ -20775,14 +20775,14 @@ "isPriority": false }, { - "id": "lst_0000000000026539", + "id": "lst_0000000000026647", "name": "Amazon EventBridge", "type": "eventbridge", "status": "active", "sink": { "awsAccountId": "123456789012", "awsRegion": "us-east-2", - "awsPartnerEventSource": "aws.partner/auth0.com/auth0-deploy-cli-e2e-6ca641f9-0a06-48f0-9547-7d8053ce62a5/auth0.logs" + "awsPartnerEventSource": "aws.partner/auth0.com/auth0-deploy-cli-e2e-86b53d0c-327c-4b51-9536-89175a2b42ab/auth0.logs" }, "filters": [ { @@ -20884,7 +20884,7 @@ "name": "Blank-form", "flow_count": 0, "created_at": "2024-11-26T11:58:18.187Z", - "updated_at": "2026-02-13T10:26:33.201Z" + "updated_at": "2026-02-16T17:04:30.254Z" } ] }, @@ -20955,7 +20955,7 @@ } }, "created_at": "2024-11-26T11:58:18.187Z", - "updated_at": "2026-02-13T10:26:33.201Z" + "updated_at": "2026-02-16T17:04:30.254Z" }, "rawHeaders": [], "responseIsBinary": false @@ -20963,14 +20963,14 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/flows/vault/connections?page=0&per_page=50&include_totals=true", + "path": "/api/v2/flows?page=0&per_page=100&include_totals=true", "body": "", "status": 200, "response": { - "limit": 50, + "limit": 100, "start": 0, "total": 0, - "connections": [] + "flows": [] }, "rawHeaders": [], "responseIsBinary": false @@ -20978,14 +20978,14 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/flows?page=0&per_page=100&include_totals=true", + "path": "/api/v2/flows/vault/connections?page=0&per_page=50&include_totals=true", "body": "", "status": 200, "response": { - "limit": 100, + "limit": 50, "start": 0, "total": 0, - "flows": [] + "connections": [] }, "rawHeaders": [], "responseIsBinary": false @@ -21034,7 +21034,7 @@ "okta" ], "created_at": "2024-11-26T11:58:18.962Z", - "updated_at": "2026-02-13T10:26:25.479Z", + "updated_at": "2026-02-16T17:04:23.454Z", "branding": { "colors": { "primary": "#19aecc" @@ -21086,7 +21086,7 @@ } }, "created_at": "2026-01-29T08:17:51.522Z", - "updated_at": "2026-02-13T10:26:11.048Z", + "updated_at": "2026-02-16T17:04:05.972Z", "id": "acl_5EgHsY1h2Apnv4cvsM6Q9J" } ] @@ -21182,7 +21182,7 @@ "response": { "actions": [ { - "id": "904bc668-0216-492c-bd3e-4bcddc69f411", + "id": "0c2cd65a-2ab4-4874-84bb-5b11136cc9ba", "name": "My Custom Action", "supported_triggers": [ { @@ -21190,34 +21190,34 @@ "version": "v2" } ], - "created_at": "2026-02-13T10:26:08.329157690Z", - "updated_at": "2026-02-13T10:26:08.344112736Z", + "created_at": "2026-02-16T17:04:08.035726715Z", + "updated_at": "2026-02-16T17:04:08.043218401Z", "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", "dependencies": [], "runtime": "node18", "status": "built", "secrets": [], "current_version": { - "id": "435970c3-9fc3-46c0-8386-de6162b6c9ff", + "id": "f685c004-6924-462c-bdd1-d80b9c4d9c5d", "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", "runtime": "node18", "status": "BUILT", "number": 1, - "build_time": "2026-02-13T10:26:09.470388341Z", - "created_at": "2026-02-13T10:26:09.377183902Z", - "updated_at": "2026-02-13T10:26:09.471895168Z" + "build_time": "2026-02-16T17:04:08.896675174Z", + "created_at": "2026-02-16T17:04:08.815168038Z", + "updated_at": "2026-02-16T17:04:08.897968815Z" }, "deployed_version": { "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", "dependencies": [], - "id": "435970c3-9fc3-46c0-8386-de6162b6c9ff", + "id": "f685c004-6924-462c-bdd1-d80b9c4d9c5d", "deployed": true, "number": 1, - "built_at": "2026-02-13T10:26:09.470388341Z", + "built_at": "2026-02-16T17:04:08.896675174Z", "secrets": [], "status": "built", - "created_at": "2026-02-13T10:26:09.377183902Z", - "updated_at": "2026-02-13T10:26:09.471895168Z", + "created_at": "2026-02-16T17:04:08.815168038Z", + "updated_at": "2026-02-16T17:04:08.897968815Z", "runtime": "node18", "supported_triggers": [ { diff --git a/test/e2e/recordings/should-dump-and-deploy-without-throwing-an-error.json b/test/e2e/recordings/should-dump-and-deploy-without-throwing-an-error.json index 7219091a1..a9a59c425 100644 --- a/test/e2e/recordings/should-dump-and-deploy-without-throwing-an-error.json +++ b/test/e2e/recordings/should-dump-and-deploy-without-throwing-an-error.json @@ -1298,7 +1298,7 @@ "subject": "deprecated" } ], - "client_id": "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4", + "client_id": "45lhLMgSUCKLZoNp0TWgvSSre7JA1sDH", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -1328,7 +1328,7 @@ "response": { "connections": [ { - "id": "con_hs0JNGk6M5oYHR3T", + "id": "con_1FgEzcVAYCcRMVDZ", "options": { "mfa": { "active": true, @@ -1368,7 +1368,7 @@ ], "enabled_clients": [ "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE", - "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4" + "45lhLMgSUCKLZoNp0TWgvSSre7JA1sDH" ] } ] @@ -1392,13 +1392,13 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/connections/con_hs0JNGk6M5oYHR3T/clients?take=50", + "path": "/api/v2/connections/con_1FgEzcVAYCcRMVDZ/clients?take=50", "body": "", "status": 200, "response": { "clients": [ { - "client_id": "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4" + "client_id": "45lhLMgSUCKLZoNp0TWgvSSre7JA1sDH" }, { "client_id": "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE" @@ -1417,34 +1417,7 @@ "response": { "connections": [ { - "id": "con_mgTe5EjBQeY95fZD", - "options": { - "email": true, - "scope": [ - "email", - "profile" - ], - "profile": true - }, - "strategy": "google-oauth2", - "name": "google-oauth2", - "is_domain_connection": false, - "authentication": { - "active": true - }, - "connected_accounts": { - "active": false - }, - "realms": [ - "google-oauth2" - ], - "enabled_clients": [ - "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE", - "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4" - ] - }, - { - "id": "con_hs0JNGk6M5oYHR3T", + "id": "con_1FgEzcVAYCcRMVDZ", "options": { "mfa": { "active": true, @@ -1484,7 +1457,7 @@ ], "enabled_clients": [ "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE", - "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4" + "45lhLMgSUCKLZoNp0TWgvSSre7JA1sDH" ] } ] @@ -1507,25 +1480,6 @@ "rawHeaders": [], "responseIsBinary": false }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "GET", - "path": "/api/v2/connections/con_mgTe5EjBQeY95fZD/clients?take=50", - "body": "", - "status": 200, - "response": { - "clients": [ - { - "client_id": "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4" - }, - { - "client_id": "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE" - } - ] - }, - "rawHeaders": [], - "responseIsBinary": false - }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", @@ -1613,6 +1567,21 @@ "rawHeaders": [], "responseIsBinary": false }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "GET", + "path": "/api/v2/email-templates/verify_email_by_code", + "body": "", + "status": 404, + "response": { + "statusCode": 404, + "error": "Not Found", + "message": "The template does not exist.", + "errorCode": "inexistent_email_template" + }, + "rawHeaders": [], + "responseIsBinary": false + }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", @@ -1634,7 +1603,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/email-templates/verify_email_by_code", + "path": "/api/v2/email-templates/reset_email", "body": "", "status": 404, "response": { @@ -1649,14 +1618,18 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/email-templates/stolen_credentials", + "path": "/api/v2/email-templates/welcome_email", "body": "", - "status": 404, + "status": 200, "response": { - "statusCode": 404, - "error": "Not Found", - "message": "The template does not exist.", - "errorCode": "inexistent_email_template" + "template": "welcome_email", + "body": "\n \n

Welcome!

\n \n\n", + "from": "", + "resultUrl": "https://example.com/welcome", + "subject": "Welcome", + "syntax": "liquid", + "urlLifetimeInSeconds": 3600, + "enabled": false }, "rawHeaders": [], "responseIsBinary": false @@ -1664,7 +1637,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/email-templates/reset_email_by_code", + "path": "/api/v2/email-templates/blocked_account", "body": "", "status": 404, "response": { @@ -1679,7 +1652,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/email-templates/password_reset", + "path": "/api/v2/email-templates/user_invitation", "body": "", "status": 404, "response": { @@ -1694,7 +1667,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/email-templates/reset_email", + "path": "/api/v2/email-templates/mfa_oob_code", "body": "", "status": 404, "response": { @@ -1709,7 +1682,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/email-templates/change_password", + "path": "/api/v2/email-templates/async_approval", "body": "", "status": 404, "response": { @@ -1724,7 +1697,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/email-templates/enrollment_email", + "path": "/api/v2/email-templates/change_password", "body": "", "status": 404, "response": { @@ -1739,7 +1712,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/email-templates/blocked_account", + "path": "/api/v2/email-templates/password_reset", "body": "", "status": 404, "response": { @@ -1754,7 +1727,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/email-templates/user_invitation", + "path": "/api/v2/email-templates/stolen_credentials", "body": "", "status": 404, "response": { @@ -1769,26 +1742,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/email-templates/welcome_email", - "body": "", - "status": 200, - "response": { - "template": "welcome_email", - "body": "\n \n

Welcome!

\n \n\n", - "from": "", - "resultUrl": "https://example.com/welcome", - "subject": "Welcome", - "syntax": "liquid", - "urlLifetimeInSeconds": 3600, - "enabled": false - }, - "rawHeaders": [], - "responseIsBinary": false - }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "GET", - "path": "/api/v2/email-templates/async_approval", + "path": "/api/v2/email-templates/reset_email_by_code", "body": "", "status": 404, "response": { @@ -1803,7 +1757,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/email-templates/mfa_oob_code", + "path": "/api/v2/email-templates/enrollment_email", "body": "", "status": 404, "response": { @@ -2250,7 +2204,7 @@ }, "credentials": null, "created_at": "2025-12-09T12:24:00.604Z", - "updated_at": "2026-02-12T11:13:54.856Z" + "updated_at": "2026-02-13T10:25:18.286Z" } ] }, @@ -2266,68 +2220,68 @@ "response": { "templates": [ { - "id": "tem_qarYST5TTE5pbMNB5NHZAj", + "id": "tem_o4LBTt4NQyX8K4vC9dPafR", "tenant": "auth0-deploy-cli-e2e", "channel": "phone", - "type": "otp_enroll", + "type": "otp_verify", "disabled": false, - "created_at": "2025-12-09T12:26:25.327Z", - "updated_at": "2026-02-12T11:13:57.075Z", + "created_at": "2025-12-09T12:26:30.547Z", + "updated_at": "2026-02-13T10:25:20.475Z", "content": { "syntax": "liquid", "body": { - "text": "{{ code | escape }} is your verification code for {{ friendly_name | escape }}. Please enter this code to verify your enrollment.", + "text": "{{ code | escape }} is your verification code for {{ friendly_name | escape }}", "voice": "Hello. Your verification code for {{ friendly_name | escape }} is {{ pause }} {{ code | escape }}. I repeat, your verification code is {{ pause }} {{ code | escape }}" } } }, { - "id": "tem_dL83uTmWn8moGzm8UgAk4Q", + "id": "tem_xqbUSF83fpnRv8r8rqXFDZ", "tenant": "auth0-deploy-cli-e2e", "channel": "phone", - "type": "blocked_account", + "type": "change_password", "disabled": false, - "created_at": "2025-12-09T12:22:47.683Z", - "updated_at": "2026-02-12T11:13:57.370Z", + "created_at": "2025-12-09T12:26:20.243Z", + "updated_at": "2026-02-13T10:25:20.744Z", "content": { "syntax": "liquid", "body": { - "text": "We detected suspicious activity on your account from the ip {{user.source_ip}}{% if user.city %} from {{user.city}}, {{user.country}}{% elsif user.country %} from {{user.country}}{% endif %}. Logins from this IP have been blocked on your account. If this is your IP, please reset your password to unblock your account. Otherwise, disregard this message.", - "voice": "We detected suspicious activity on your account from the ip {{user.source_ip}}{% if user.city %} from {{user.city}}, {{user.country}}{% elsif user.country %} from {{user.country}}{% endif %}. Logins from this IP have been blocked on your account. If this is your IP, please reset your password to unblock your account. Otherwise, disregard this message." - }, - "from": "0032232323" + "text": "{{ code | escape }} is your password change code for {{ friendly_name | escape }}", + "voice": "Hello. Your password change code for {{ friendly_name | escape }} is {{ pause }} {{ code | escape }}. I repeat, your password change code is {{ pause }} {{ code | escape }}" + } } }, { - "id": "tem_o4LBTt4NQyX8K4vC9dPafR", + "id": "tem_qarYST5TTE5pbMNB5NHZAj", "tenant": "auth0-deploy-cli-e2e", "channel": "phone", - "type": "otp_verify", + "type": "otp_enroll", "disabled": false, - "created_at": "2025-12-09T12:26:30.547Z", - "updated_at": "2026-02-12T11:13:56.940Z", + "created_at": "2025-12-09T12:26:25.327Z", + "updated_at": "2026-02-13T10:25:20.350Z", "content": { "syntax": "liquid", "body": { - "text": "{{ code | escape }} is your verification code for {{ friendly_name | escape }}", + "text": "{{ code | escape }} is your verification code for {{ friendly_name | escape }}. Please enter this code to verify your enrollment.", "voice": "Hello. Your verification code for {{ friendly_name | escape }} is {{ pause }} {{ code | escape }}. I repeat, your verification code is {{ pause }} {{ code | escape }}" } } }, { - "id": "tem_xqbUSF83fpnRv8r8rqXFDZ", + "id": "tem_dL83uTmWn8moGzm8UgAk4Q", "tenant": "auth0-deploy-cli-e2e", "channel": "phone", - "type": "change_password", + "type": "blocked_account", "disabled": false, - "created_at": "2025-12-09T12:26:20.243Z", - "updated_at": "2026-02-12T11:13:56.954Z", + "created_at": "2025-12-09T12:22:47.683Z", + "updated_at": "2026-02-13T10:25:20.384Z", "content": { "syntax": "liquid", "body": { - "text": "{{ code | escape }} is your password change code for {{ friendly_name | escape }}", - "voice": "Hello. Your password change code for {{ friendly_name | escape }} is {{ pause }} {{ code | escape }}. I repeat, your password change code is {{ pause }} {{ code | escape }}" - } + "text": "We detected suspicious activity on your account from the ip {{user.source_ip}}{% if user.city %} from {{user.city}}, {{user.country}}{% elsif user.country %} from {{user.country}}{% endif %}. Logins from this IP have been blocked on your account. If this is your IP, please reset your password to unblock your account. Otherwise, disregard this message.", + "voice": "We detected suspicious activity on your account from the ip {{user.source_ip}}{% if user.city %} from {{user.city}}, {{user.country}}{% elsif user.country %} from {{user.country}}{% endif %}. Logins from this IP have been blocked on your account. If this is your IP, please reset your password to unblock your account. Otherwise, disregard this message." + }, + "from": "0032232323" } } ] @@ -2423,7 +2377,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/login-password/custom-text/en", + "path": "/api/v2/prompts/login-id/custom-text/en", "body": "", "status": 200, "response": {}, @@ -2433,7 +2387,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/login-id/custom-text/en", + "path": "/api/v2/prompts/login/custom-text/en", "body": "", "status": 200, "response": {}, @@ -2443,7 +2397,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/login/custom-text/en", + "path": "/api/v2/prompts/login-password/custom-text/en", "body": "", "status": 200, "response": {}, @@ -2493,7 +2447,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/phone-identifier-challenge/custom-text/en", + "path": "/api/v2/prompts/signup-password/custom-text/en", "body": "", "status": 200, "response": {}, @@ -2513,7 +2467,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/signup-password/custom-text/en", + "path": "/api/v2/prompts/email-identifier-challenge/custom-text/en", "body": "", "status": 200, "response": {}, @@ -2523,7 +2477,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/email-identifier-challenge/custom-text/en", + "path": "/api/v2/prompts/phone-identifier-challenge/custom-text/en", "body": "", "status": 200, "response": {}, @@ -2573,7 +2527,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/mfa-push/custom-text/en", + "path": "/api/v2/prompts/logout/custom-text/en", "body": "", "status": 200, "response": {}, @@ -2583,7 +2537,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/logout/custom-text/en", + "path": "/api/v2/prompts/mfa-push/custom-text/en", "body": "", "status": 200, "response": {}, @@ -2593,7 +2547,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/mfa-voice/custom-text/en", + "path": "/api/v2/prompts/mfa-otp/custom-text/en", "body": "", "status": 200, "response": {}, @@ -2603,7 +2557,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/mfa-otp/custom-text/en", + "path": "/api/v2/prompts/mfa-voice/custom-text/en", "body": "", "status": 200, "response": {}, @@ -2653,7 +2607,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/mfa/custom-text/en", + "path": "/api/v2/prompts/mfa-recovery-code/custom-text/en", "body": "", "status": 200, "response": {}, @@ -2663,7 +2617,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/mfa-recovery-code/custom-text/en", + "path": "/api/v2/prompts/mfa/custom-text/en", "body": "", "status": 200, "response": {}, @@ -2713,7 +2667,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/invitation/custom-text/en", + "path": "/api/v2/prompts/organizations/custom-text/en", "body": "", "status": 200, "response": {}, @@ -2723,7 +2677,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/organizations/custom-text/en", + "path": "/api/v2/prompts/invitation/custom-text/en", "body": "", "status": 200, "response": {}, @@ -2733,7 +2687,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/passkeys/custom-text/en", + "path": "/api/v2/prompts/common/custom-text/en", "body": "", "status": 200, "response": {}, @@ -2753,7 +2707,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/common/custom-text/en", + "path": "/api/v2/prompts/passkeys/custom-text/en", "body": "", "status": 200, "response": {}, @@ -2803,7 +2757,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/signup/partials", + "path": "/api/v2/prompts/login-passwordless/partials", "body": "", "status": 200, "response": {}, @@ -2813,7 +2767,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/login-passwordless/partials", + "path": "/api/v2/prompts/signup-id/partials", "body": "", "status": 200, "response": {}, @@ -2823,7 +2777,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/signup-id/partials", + "path": "/api/v2/prompts/signup/partials", "body": "", "status": 200, "response": {}, @@ -2868,6 +2822,21 @@ "rawHeaders": [], "responseIsBinary": false }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "GET", + "path": "/api/v2/actions/modules?page=0&per_page=100", + "body": "", + "status": 403, + "response": { + "statusCode": 403, + "error": "Forbidden", + "message": "This feature is not enabled for this tenant.", + "errorCode": "feature_not_enabled" + }, + "rawHeaders": [], + "responseIsBinary": false + }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", @@ -2887,6 +2856,18 @@ "binding_policy": "trigger-bound", "compatible_triggers": [] }, + { + "id": "post-login", + "version": "v2", + "status": "DEPRECATED", + "runtimes": [ + "node18", + "node22" + ], + "default_runtime": "node16", + "binding_policy": "trigger-bound", + "compatible_triggers": [] + }, { "id": "post-login", "version": "v3", @@ -2905,14 +2886,13 @@ ] }, { - "id": "post-login", - "version": "v2", + "id": "credentials-exchange", + "version": "v1", "status": "DEPRECATED", "runtimes": [ - "node18", "node22" ], - "default_runtime": "node16", + "default_runtime": "node12", "binding_policy": "trigger-bound", "compatible_triggers": [] }, @@ -2928,17 +2908,6 @@ "binding_policy": "trigger-bound", "compatible_triggers": [] }, - { - "id": "credentials-exchange", - "version": "v1", - "status": "DEPRECATED", - "runtimes": [ - "node22" - ], - "default_runtime": "node12", - "binding_policy": "trigger-bound", - "compatible_triggers": [] - }, { "id": "pre-user-registration", "version": "v2", @@ -2987,47 +2956,47 @@ }, { "id": "post-change-password", - "version": "v2", - "status": "CURRENT", + "version": "v1", + "status": "DEPRECATED", "runtimes": [ - "node18-actions", "node22" ], - "default_runtime": "node22", + "default_runtime": "node12", "binding_policy": "trigger-bound", "compatible_triggers": [] }, { "id": "post-change-password", - "version": "v1", - "status": "DEPRECATED", + "version": "v2", + "status": "CURRENT", "runtimes": [ + "node18-actions", "node22" ], - "default_runtime": "node12", + "default_runtime": "node22", "binding_policy": "trigger-bound", "compatible_triggers": [] }, { "id": "send-phone-message", - "version": "v1", - "status": "DEPRECATED", + "version": "v2", + "status": "CURRENT", "runtimes": [ + "node18-actions", "node22" ], - "default_runtime": "node12", + "default_runtime": "node22", "binding_policy": "trigger-bound", "compatible_triggers": [] }, { "id": "send-phone-message", - "version": "v2", - "status": "CURRENT", + "version": "v1", + "status": "DEPRECATED", "runtimes": [ - "node18-actions", "node22" ], - "default_runtime": "node22", + "default_runtime": "node12", "binding_policy": "trigger-bound", "compatible_triggers": [] }, @@ -3391,7 +3360,7 @@ "subject": "deprecated" } ], - "client_id": "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4", + "client_id": "45lhLMgSUCKLZoNp0TWgvSSre7JA1sDH", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -3452,7 +3421,26 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/attack-protection/breached-password-detection", + "path": "/api/v2/attack-protection/brute-force-protection", + "body": "", + "status": 200, + "response": { + "enabled": true, + "shields": [ + "block", + "user_notification" + ], + "mode": "count_per_identifier_and_ip", + "allowlist": [], + "max_attempts": 10 + }, + "rawHeaders": [], + "responseIsBinary": false + }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "GET", + "path": "/api/v2/attack-protection/breached-password-detection", "body": "", "status": 200, "response": { @@ -3503,42 +3491,6 @@ "rawHeaders": [], "responseIsBinary": false }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "GET", - "path": "/api/v2/attack-protection/brute-force-protection", - "body": "", - "status": 200, - "response": { - "enabled": true, - "shields": [ - "block", - "user_notification" - ], - "mode": "count_per_identifier_and_ip", - "allowlist": [], - "max_attempts": 10 - }, - "rawHeaders": [], - "responseIsBinary": false - }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "GET", - "path": "/api/v2/attack-protection/bot-detection", - "body": "", - "status": 200, - "response": { - "challenge_password_policy": "never", - "challenge_passwordless_policy": "never", - "challenge_password_reset_policy": "never", - "allowlist": [], - "bot_detection_level": "medium", - "monitoring_mode_enabled": false - }, - "rawHeaders": [], - "responseIsBinary": false - }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", @@ -3574,6 +3526,23 @@ "rawHeaders": [], "responseIsBinary": false }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "GET", + "path": "/api/v2/attack-protection/bot-detection", + "body": "", + "status": 200, + "response": { + "challenge_password_policy": "never", + "challenge_passwordless_policy": "never", + "challenge_password_reset_policy": "never", + "allowlist": [], + "bot_detection_level": "medium", + "monitoring_mode_enabled": false + }, + "rawHeaders": [], + "responseIsBinary": false + }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", @@ -3636,14 +3605,22 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/flows?page=0&per_page=100&include_totals=true", + "path": "/api/v2/forms?page=0&per_page=100&include_totals=true", "body": "", "status": 200, "response": { "limit": 100, "start": 0, - "total": 0, - "flows": [] + "total": 1, + "forms": [ + { + "id": "ap_6JUSCU7qq1CravnoU6d6jr", + "name": "Blank-form", + "flow_count": 0, + "created_at": "2024-11-26T11:58:18.187Z", + "updated_at": "2026-02-16T17:06:23.605Z" + } + ] }, "rawHeaders": [], "responseIsBinary": false @@ -3651,22 +3628,14 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/forms?page=0&per_page=100&include_totals=true", + "path": "/api/v2/flows?page=0&per_page=100&include_totals=true", "body": "", "status": 200, "response": { "limit": 100, "start": 0, - "total": 1, - "forms": [ - { - "id": "ap_6JUSCU7qq1CravnoU6d6jr", - "name": "Blank-form", - "flow_count": 0, - "created_at": "2024-11-26T11:58:18.187Z", - "updated_at": "2026-02-13T10:01:50.827Z" - } - ] + "total": 0, + "flows": [] }, "rawHeaders": [], "responseIsBinary": false @@ -3735,7 +3704,7 @@ } }, "created_at": "2024-11-26T11:58:18.187Z", - "updated_at": "2026-02-13T10:01:50.827Z" + "updated_at": "2026-02-16T17:06:23.605Z" }, "rawHeaders": [], "responseIsBinary": false @@ -3743,14 +3712,14 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/flows?page=0&per_page=100&include_totals=true", + "path": "/api/v2/flows/vault/connections?page=0&per_page=50&include_totals=true", "body": "", "status": 200, "response": { - "limit": 100, + "limit": 50, "start": 0, "total": 0, - "flows": [] + "connections": [] }, "rawHeaders": [], "responseIsBinary": false @@ -3758,14 +3727,14 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/flows/vault/connections?page=0&per_page=50&include_totals=true", + "path": "/api/v2/flows?page=0&per_page=100&include_totals=true", "body": "", "status": 200, "response": { - "limit": 50, + "limit": 100, "start": 0, "total": 0, - "connections": [] + "flows": [] }, "rawHeaders": [], "responseIsBinary": false @@ -3814,7 +3783,7 @@ "okta" ], "created_at": "2024-11-26T11:58:18.962Z", - "updated_at": "2026-02-12T11:13:56.058Z", + "updated_at": "2026-02-16T17:06:14.650Z", "branding": { "colors": { "primary": "#19aecc" @@ -3866,7 +3835,7 @@ } }, "created_at": "2026-01-29T08:17:51.522Z", - "updated_at": "2026-02-12T11:13:46.982Z", + "updated_at": "2026-02-16T17:06:00.743Z", "id": "acl_5EgHsY1h2Apnv4cvsM6Q9J" } ] @@ -5346,7 +5315,7 @@ "subject": "deprecated" } ], - "client_id": "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4", + "client_id": "45lhLMgSUCKLZoNp0TWgvSSre7JA1sDH", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -5370,7 +5339,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "PATCH", - "path": "/api/v2/clients/i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4", + "path": "/api/v2/clients/45lhLMgSUCKLZoNp0TWgvSSre7JA1sDH", "body": { "name": "Default App", "callbacks": [], @@ -5428,7 +5397,7 @@ "subject": "/CN=auth0-deploy-cli-e2e.us.auth0.com" } ], - "client_id": "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4", + "client_id": "45lhLMgSUCKLZoNp0TWgvSSre7JA1sDH", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -5464,7 +5433,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "PUT", - "path": "/api/v2/guardian/factors/webauthn-platform", + "path": "/api/v2/guardian/factors/email", "body": { "enabled": false }, @@ -5478,7 +5447,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "PUT", - "path": "/api/v2/guardian/factors/email", + "path": "/api/v2/guardian/factors/webauthn-roaming", "body": { "enabled": false }, @@ -5492,7 +5461,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "PUT", - "path": "/api/v2/guardian/factors/recovery-code", + "path": "/api/v2/guardian/factors/push-notification", "body": { "enabled": false }, @@ -5506,7 +5475,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "PUT", - "path": "/api/v2/guardian/factors/push-notification", + "path": "/api/v2/guardian/factors/recovery-code", "body": { "enabled": false }, @@ -5520,7 +5489,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "PUT", - "path": "/api/v2/guardian/factors/webauthn-roaming", + "path": "/api/v2/guardian/factors/otp", "body": { "enabled": false }, @@ -5534,7 +5503,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "PUT", - "path": "/api/v2/guardian/factors/otp", + "path": "/api/v2/guardian/factors/sms", "body": { "enabled": false }, @@ -5548,7 +5517,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "PUT", - "path": "/api/v2/guardian/factors/sms", + "path": "/api/v2/guardian/factors/webauthn-platform", "body": { "enabled": false }, @@ -5629,60 +5598,6 @@ "rawHeaders": [], "responseIsBinary": false }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "GET", - "path": "/api/v2/actions/actions?page=0&per_page=100", - "body": "", - "status": 200, - "response": { - "actions": [], - "per_page": 100 - }, - "rawHeaders": [], - "responseIsBinary": false - }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "GET", - "path": "/api/v2/actions/actions?page=0&per_page=100", - "body": "", - "status": 200, - "response": { - "actions": [], - "per_page": 100 - }, - "rawHeaders": [], - "responseIsBinary": false - }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "PATCH", - "path": "/api/v2/attack-protection/brute-force-protection", - "body": { - "enabled": true, - "shields": [ - "block", - "user_notification" - ], - "mode": "count_per_identifier_and_ip", - "allowlist": [], - "max_attempts": 10 - }, - "status": 200, - "response": { - "enabled": true, - "shields": [ - "block", - "user_notification" - ], - "mode": "count_per_identifier_and_ip", - "allowlist": [], - "max_attempts": 10 - }, - "rawHeaders": [], - "responseIsBinary": false - }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "PATCH", @@ -5723,6 +5638,34 @@ "rawHeaders": [], "responseIsBinary": false }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "PATCH", + "path": "/api/v2/attack-protection/brute-force-protection", + "body": { + "enabled": true, + "shields": [ + "block", + "user_notification" + ], + "mode": "count_per_identifier_and_ip", + "allowlist": [], + "max_attempts": 10 + }, + "status": 200, + "response": { + "enabled": true, + "shields": [ + "block", + "user_notification" + ], + "mode": "count_per_identifier_and_ip", + "allowlist": [], + "max_attempts": 10 + }, + "rawHeaders": [], + "responseIsBinary": false + }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "PATCH", @@ -5838,13 +5781,13 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "PATCH", - "path": "/api/v2/risk-assessments/settings/new-device", + "path": "/api/v2/risk-assessments/settings", "body": { - "remember_for": 30 + "enabled": false }, "status": 200, "response": { - "remember_for": 30 + "enabled": false }, "rawHeaders": [], "responseIsBinary": false @@ -5852,13 +5795,13 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "PATCH", - "path": "/api/v2/risk-assessments/settings", + "path": "/api/v2/risk-assessments/settings/new-device", "body": { - "enabled": false + "remember_for": 30 }, "status": 200, "response": { - "enabled": false + "remember_for": 30 }, "rawHeaders": [], "responseIsBinary": false @@ -5900,7 +5843,7 @@ } }, "created_at": "2026-01-29T08:17:51.522Z", - "updated_at": "2026-02-12T11:13:46.982Z", + "updated_at": "2026-02-16T17:06:00.743Z", "id": "acl_5EgHsY1h2Apnv4cvsM6Q9J" } ] @@ -5945,7 +5888,7 @@ } }, "created_at": "2026-01-29T08:17:51.522Z", - "updated_at": "2026-02-13T10:25:09.596Z", + "updated_at": "2026-02-16T17:08:23.785Z", "id": "acl_5EgHsY1h2Apnv4cvsM6Q9J" }, "rawHeaders": [], @@ -6119,34 +6062,145 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/clients?page=0&per_page=100&include_totals=true", + "path": "/api/v2/actions/modules?page=0&per_page=100", + "body": "", + "status": 403, + "response": { + "statusCode": 403, + "error": "Forbidden", + "message": "This feature is not enabled for this tenant.", + "errorCode": "feature_not_enabled" + }, + "rawHeaders": [], + "responseIsBinary": false + }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "GET", + "path": "/api/v2/actions/actions?page=0&per_page=100", "body": "", "status": 200, "response": { - "total": 3, - "start": 0, - "limit": 100, - "clients": [ - { - "tenant": "auth0-deploy-cli-e2e", - "global": false, - "is_token_endpoint_ip_header_trusted": false, - "name": "Deploy CLI", - "is_first_party": true, - "oidc_conformant": true, - "sso_disabled": false, - "cross_origin_auth": false, - "refresh_token": { - "expiration_type": "non-expiring", - "leeway": 0, - "infinite_token_lifetime": true, - "infinite_idle_token_lifetime": true, - "token_lifetime": 31557600, - "idle_token_lifetime": 2592000, - "rotation_type": "non-rotating" - }, - "cross_origin_authentication": false, - "allowed_clients": [], + "actions": [], + "per_page": 100 + }, + "rawHeaders": [], + "responseIsBinary": false + }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "GET", + "path": "/api/v2/actions/actions?page=0&per_page=100", + "body": "", + "status": 200, + "response": { + "actions": [], + "per_page": 100 + }, + "rawHeaders": [], + "responseIsBinary": false + }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "GET", + "path": "/api/v2/actions/actions?page=0&per_page=100", + "body": "", + "status": 200, + "response": { + "actions": [], + "per_page": 100 + }, + "rawHeaders": [], + "responseIsBinary": false + }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "GET", + "path": "/api/v2/connections?take=50&strategy=auth0", + "body": "", + "status": 200, + "response": { + "connections": [ + { + "id": "con_1FgEzcVAYCcRMVDZ", + "options": { + "mfa": { + "active": true, + "return_enroll_settings": true + }, + "passwordPolicy": "good", + "passkey_options": { + "challenge_ui": "both", + "local_enrollment_enabled": true, + "progressive_enrollment_enabled": true + }, + "strategy_version": 2, + "authentication_methods": { + "passkey": { + "enabled": false + }, + "password": { + "enabled": true, + "api_behavior": "required", + "signup_behavior": "allow" + } + }, + "brute_force_protection": true, + "disable_self_service_change_password": false + }, + "strategy": "auth0", + "name": "Username-Password-Authentication", + "is_domain_connection": false, + "authentication": { + "active": true + }, + "connected_accounts": { + "active": false + }, + "realms": [ + "Username-Password-Authentication" + ], + "enabled_clients": [ + "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE", + "45lhLMgSUCKLZoNp0TWgvSSre7JA1sDH" + ] + } + ] + }, + "rawHeaders": [], + "responseIsBinary": false + }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "GET", + "path": "/api/v2/clients?page=0&per_page=100&include_totals=true", + "body": "", + "status": 200, + "response": { + "total": 3, + "start": 0, + "limit": 100, + "clients": [ + { + "tenant": "auth0-deploy-cli-e2e", + "global": false, + "is_token_endpoint_ip_header_trusted": false, + "name": "Deploy CLI", + "is_first_party": true, + "oidc_conformant": true, + "sso_disabled": false, + "cross_origin_auth": false, + "refresh_token": { + "expiration_type": "non-expiring", + "leeway": 0, + "infinite_token_lifetime": true, + "infinite_idle_token_lifetime": true, + "token_lifetime": 31557600, + "idle_token_lifetime": 2592000, + "rotation_type": "non-rotating" + }, + "cross_origin_authentication": false, + "allowed_clients": [], "callbacks": [], "native_social_login": { "apple": { @@ -6209,7 +6263,7 @@ "subject": "deprecated" } ], - "client_id": "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4", + "client_id": "45lhLMgSUCKLZoNp0TWgvSSre7JA1sDH", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -6289,7 +6343,7 @@ "response": { "connections": [ { - "id": "con_hs0JNGk6M5oYHR3T", + "id": "con_1FgEzcVAYCcRMVDZ", "options": { "mfa": { "active": true, @@ -6329,7 +6383,7 @@ ], "enabled_clients": [ "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE", - "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4" + "45lhLMgSUCKLZoNp0TWgvSSre7JA1sDH" ] } ] @@ -6340,83 +6394,13 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/connections?take=50&strategy=auth0", - "body": "", - "status": 200, - "response": { - "connections": [ - { - "id": "con_hs0JNGk6M5oYHR3T", - "options": { - "mfa": { - "active": true, - "return_enroll_settings": true - }, - "passwordPolicy": "good", - "passkey_options": { - "challenge_ui": "both", - "local_enrollment_enabled": true, - "progressive_enrollment_enabled": true - }, - "strategy_version": 2, - "authentication_methods": { - "passkey": { - "enabled": false - }, - "password": { - "enabled": true, - "api_behavior": "required", - "signup_behavior": "allow" - } - }, - "brute_force_protection": true, - "disable_self_service_change_password": false - }, - "strategy": "auth0", - "name": "Username-Password-Authentication", - "is_domain_connection": false, - "authentication": { - "active": true - }, - "connected_accounts": { - "active": false - }, - "realms": [ - "Username-Password-Authentication" - ], - "enabled_clients": [ - "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE", - "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4" - ] - } - ] - }, - "rawHeaders": [], - "responseIsBinary": false - }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "GET", - "path": "/api/v2/actions/actions?page=0&per_page=100", - "body": "", - "status": 200, - "response": { - "actions": [], - "per_page": 100 - }, - "rawHeaders": [], - "responseIsBinary": false - }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "GET", - "path": "/api/v2/connections/con_hs0JNGk6M5oYHR3T/clients?take=50", + "path": "/api/v2/connections/con_1FgEzcVAYCcRMVDZ/clients?take=50", "body": "", "status": 200, "response": { "clients": [ { - "client_id": "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4" + "client_id": "45lhLMgSUCKLZoNp0TWgvSSre7JA1sDH" }, { "client_id": "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE" @@ -6429,11 +6413,11 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/connections/con_hs0JNGk6M5oYHR3T", + "path": "/api/v2/connections/con_1FgEzcVAYCcRMVDZ", "body": "", "status": 200, "response": { - "id": "con_hs0JNGk6M5oYHR3T", + "id": "con_1FgEzcVAYCcRMVDZ", "options": { "mfa": { "active": true, @@ -6470,7 +6454,7 @@ }, "enabled_clients": [ "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE", - "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4" + "45lhLMgSUCKLZoNp0TWgvSSre7JA1sDH" ], "realms": [ "Username-Password-Authentication" @@ -6482,7 +6466,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "PATCH", - "path": "/api/v2/connections/con_hs0JNGk6M5oYHR3T", + "path": "/api/v2/connections/con_1FgEzcVAYCcRMVDZ", "body": { "authentication": { "active": true @@ -6522,7 +6506,7 @@ }, "status": 200, "response": { - "id": "con_hs0JNGk6M5oYHR3T", + "id": "con_1FgEzcVAYCcRMVDZ", "options": { "mfa": { "active": true, @@ -6559,7 +6543,7 @@ }, "enabled_clients": [ "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE", - "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4" + "45lhLMgSUCKLZoNp0TWgvSSre7JA1sDH" ], "realms": [ "Username-Password-Authentication" @@ -6661,7 +6645,7 @@ "subject": "deprecated" } ], - "client_id": "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4", + "client_id": "45lhLMgSUCKLZoNp0TWgvSSre7JA1sDH", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -6728,34 +6712,7 @@ "response": { "connections": [ { - "id": "con_mgTe5EjBQeY95fZD", - "options": { - "email": true, - "scope": [ - "email", - "profile" - ], - "profile": true - }, - "strategy": "google-oauth2", - "name": "google-oauth2", - "is_domain_connection": false, - "authentication": { - "active": true - }, - "connected_accounts": { - "active": false - }, - "realms": [ - "google-oauth2" - ], - "enabled_clients": [ - "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE", - "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4" - ] - }, - { - "id": "con_hs0JNGk6M5oYHR3T", + "id": "con_1FgEzcVAYCcRMVDZ", "options": { "mfa": { "active": true, @@ -6795,7 +6752,7 @@ ], "enabled_clients": [ "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE", - "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4" + "45lhLMgSUCKLZoNp0TWgvSSre7JA1sDH" ] } ] @@ -6827,34 +6784,7 @@ "response": { "connections": [ { - "id": "con_mgTe5EjBQeY95fZD", - "options": { - "email": true, - "scope": [ - "email", - "profile" - ], - "profile": true - }, - "strategy": "google-oauth2", - "name": "google-oauth2", - "is_domain_connection": false, - "authentication": { - "active": true - }, - "connected_accounts": { - "active": false - }, - "realms": [ - "google-oauth2" - ], - "enabled_clients": [ - "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE", - "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4" - ] - }, - { - "id": "con_hs0JNGk6M5oYHR3T", + "id": "con_1FgEzcVAYCcRMVDZ", "options": { "mfa": { "active": true, @@ -6894,7 +6824,7 @@ ], "enabled_clients": [ "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE", - "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4" + "45lhLMgSUCKLZoNp0TWgvSSre7JA1sDH" ] } ] @@ -6902,77 +6832,6 @@ "rawHeaders": [], "responseIsBinary": false }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "GET", - "path": "/api/v2/connections/con_mgTe5EjBQeY95fZD/clients?take=50", - "body": "", - "status": 200, - "response": { - "clients": [ - { - "client_id": "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4" - }, - { - "client_id": "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE" - } - ] - }, - "rawHeaders": [], - "responseIsBinary": false - }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "PATCH", - "path": "/api/v2/connections/con_mgTe5EjBQeY95fZD", - "body": { - "authentication": { - "active": true - }, - "connected_accounts": { - "active": false - }, - "is_domain_connection": false, - "options": { - "email": true, - "scope": [ - "email", - "profile" - ], - "profile": true - } - }, - "status": 200, - "response": { - "id": "con_mgTe5EjBQeY95fZD", - "options": { - "email": true, - "scope": [ - "email", - "profile" - ], - "profile": true - }, - "strategy": "google-oauth2", - "name": "google-oauth2", - "is_domain_connection": false, - "authentication": { - "active": true - }, - "connected_accounts": { - "active": false - }, - "enabled_clients": [ - "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE", - "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4" - ], - "realms": [ - "google-oauth2" - ] - }, - "rawHeaders": [], - "responseIsBinary": false - }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", @@ -7103,7 +6962,7 @@ "subject": "deprecated" } ], - "client_id": "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4", + "client_id": "45lhLMgSUCKLZoNp0TWgvSSre7JA1sDH", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -7452,7 +7311,7 @@ }, "credentials": null, "created_at": "2025-12-09T12:24:00.604Z", - "updated_at": "2026-02-12T11:13:54.856Z" + "updated_at": "2026-02-13T10:25:18.286Z" } ] }, @@ -7492,7 +7351,7 @@ ] }, "created_at": "2025-12-09T12:24:00.604Z", - "updated_at": "2026-02-13T10:25:18.286Z" + "updated_at": "2026-02-16T17:08:32.070Z" }, "rawHeaders": [], "responseIsBinary": false @@ -7526,7 +7385,7 @@ "okta" ], "created_at": "2024-11-26T11:58:18.962Z", - "updated_at": "2026-02-12T11:13:56.058Z", + "updated_at": "2026-02-16T17:06:14.650Z", "branding": { "colors": { "primary": "#19aecc" @@ -7602,7 +7461,7 @@ "okta" ], "created_at": "2024-11-26T11:58:18.962Z", - "updated_at": "2026-02-13T10:25:19.606Z", + "updated_at": "2026-02-16T17:08:33.324Z", "branding": { "colors": { "primary": "#19aecc" @@ -7621,68 +7480,68 @@ "response": { "templates": [ { - "id": "tem_qarYST5TTE5pbMNB5NHZAj", + "id": "tem_o4LBTt4NQyX8K4vC9dPafR", "tenant": "auth0-deploy-cli-e2e", "channel": "phone", - "type": "otp_enroll", + "type": "otp_verify", "disabled": false, - "created_at": "2025-12-09T12:26:25.327Z", - "updated_at": "2026-02-12T11:13:57.075Z", + "created_at": "2025-12-09T12:26:30.547Z", + "updated_at": "2026-02-13T10:25:20.475Z", "content": { "syntax": "liquid", "body": { - "text": "{{ code | escape }} is your verification code for {{ friendly_name | escape }}. Please enter this code to verify your enrollment.", + "text": "{{ code | escape }} is your verification code for {{ friendly_name | escape }}", "voice": "Hello. Your verification code for {{ friendly_name | escape }} is {{ pause }} {{ code | escape }}. I repeat, your verification code is {{ pause }} {{ code | escape }}" } } }, { - "id": "tem_dL83uTmWn8moGzm8UgAk4Q", + "id": "tem_xqbUSF83fpnRv8r8rqXFDZ", "tenant": "auth0-deploy-cli-e2e", "channel": "phone", - "type": "blocked_account", + "type": "change_password", "disabled": false, - "created_at": "2025-12-09T12:22:47.683Z", - "updated_at": "2026-02-12T11:13:57.370Z", + "created_at": "2025-12-09T12:26:20.243Z", + "updated_at": "2026-02-13T10:25:20.744Z", "content": { "syntax": "liquid", "body": { - "text": "We detected suspicious activity on your account from the ip {{user.source_ip}}{% if user.city %} from {{user.city}}, {{user.country}}{% elsif user.country %} from {{user.country}}{% endif %}. Logins from this IP have been blocked on your account. If this is your IP, please reset your password to unblock your account. Otherwise, disregard this message.", - "voice": "We detected suspicious activity on your account from the ip {{user.source_ip}}{% if user.city %} from {{user.city}}, {{user.country}}{% elsif user.country %} from {{user.country}}{% endif %}. Logins from this IP have been blocked on your account. If this is your IP, please reset your password to unblock your account. Otherwise, disregard this message." - }, - "from": "0032232323" + "text": "{{ code | escape }} is your password change code for {{ friendly_name | escape }}", + "voice": "Hello. Your password change code for {{ friendly_name | escape }} is {{ pause }} {{ code | escape }}. I repeat, your password change code is {{ pause }} {{ code | escape }}" + } } }, { - "id": "tem_o4LBTt4NQyX8K4vC9dPafR", + "id": "tem_qarYST5TTE5pbMNB5NHZAj", "tenant": "auth0-deploy-cli-e2e", "channel": "phone", - "type": "otp_verify", + "type": "otp_enroll", "disabled": false, - "created_at": "2025-12-09T12:26:30.547Z", - "updated_at": "2026-02-12T11:13:56.940Z", + "created_at": "2025-12-09T12:26:25.327Z", + "updated_at": "2026-02-13T10:25:20.350Z", "content": { "syntax": "liquid", "body": { - "text": "{{ code | escape }} is your verification code for {{ friendly_name | escape }}", + "text": "{{ code | escape }} is your verification code for {{ friendly_name | escape }}. Please enter this code to verify your enrollment.", "voice": "Hello. Your verification code for {{ friendly_name | escape }} is {{ pause }} {{ code | escape }}. I repeat, your verification code is {{ pause }} {{ code | escape }}" } } }, { - "id": "tem_xqbUSF83fpnRv8r8rqXFDZ", + "id": "tem_dL83uTmWn8moGzm8UgAk4Q", "tenant": "auth0-deploy-cli-e2e", "channel": "phone", - "type": "change_password", + "type": "blocked_account", "disabled": false, - "created_at": "2025-12-09T12:26:20.243Z", - "updated_at": "2026-02-12T11:13:56.954Z", + "created_at": "2025-12-09T12:22:47.683Z", + "updated_at": "2026-02-13T10:25:20.384Z", "content": { "syntax": "liquid", "body": { - "text": "{{ code | escape }} is your password change code for {{ friendly_name | escape }}", - "voice": "Hello. Your password change code for {{ friendly_name | escape }} is {{ pause }} {{ code | escape }}. I repeat, your password change code is {{ pause }} {{ code | escape }}" - } + "text": "We detected suspicious activity on your account from the ip {{user.source_ip}}{% if user.city %} from {{user.city}}, {{user.country}}{% elsif user.country %} from {{user.country}}{% endif %}. Logins from this IP have been blocked on your account. If this is your IP, please reset your password to unblock your account. Otherwise, disregard this message.", + "voice": "We detected suspicious activity on your account from the ip {{user.source_ip}}{% if user.city %} from {{user.city}}, {{user.country}}{% elsif user.country %} from {{user.country}}{% endif %}. Logins from this IP have been blocked on your account. If this is your IP, please reset your password to unblock your account. Otherwise, disregard this message." + }, + "from": "0032232323" } } ] @@ -7693,11 +7552,11 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "PATCH", - "path": "/api/v2/branding/phone/templates/tem_qarYST5TTE5pbMNB5NHZAj", + "path": "/api/v2/branding/phone/templates/tem_o4LBTt4NQyX8K4vC9dPafR", "body": { "content": { "body": { - "text": "{{ code | escape }} is your verification code for {{ friendly_name | escape }}. Please enter this code to verify your enrollment.", + "text": "{{ code | escape }} is your verification code for {{ friendly_name | escape }}", "voice": "Hello. Your verification code for {{ friendly_name | escape }} is {{ pause }} {{ code | escape }}. I repeat, your verification code is {{ pause }} {{ code | escape }}" } }, @@ -7705,17 +7564,17 @@ }, "status": 200, "response": { - "id": "tem_qarYST5TTE5pbMNB5NHZAj", + "id": "tem_o4LBTt4NQyX8K4vC9dPafR", "tenant": "auth0-deploy-cli-e2e", "channel": "phone", - "type": "otp_enroll", + "type": "otp_verify", "disabled": false, - "created_at": "2025-12-09T12:26:25.327Z", - "updated_at": "2026-02-13T10:25:20.350Z", + "created_at": "2025-12-09T12:26:30.547Z", + "updated_at": "2026-02-16T17:08:34.049Z", "content": { "syntax": "liquid", "body": { - "text": "{{ code | escape }} is your verification code for {{ friendly_name | escape }}. Please enter this code to verify your enrollment.", + "text": "{{ code | escape }} is your verification code for {{ friendly_name | escape }}", "voice": "Hello. Your verification code for {{ friendly_name | escape }} is {{ pause }} {{ code | escape }}. I repeat, your verification code is {{ pause }} {{ code | escape }}" } } @@ -7726,33 +7585,31 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "PATCH", - "path": "/api/v2/branding/phone/templates/tem_dL83uTmWn8moGzm8UgAk4Q", + "path": "/api/v2/branding/phone/templates/tem_xqbUSF83fpnRv8r8rqXFDZ", "body": { "content": { - "from": "0032232323", "body": { - "text": "We detected suspicious activity on your account from the ip {{user.source_ip}}{% if user.city %} from {{user.city}}, {{user.country}}{% elsif user.country %} from {{user.country}}{% endif %}. Logins from this IP have been blocked on your account. If this is your IP, please reset your password to unblock your account. Otherwise, disregard this message.", - "voice": "We detected suspicious activity on your account from the ip {{user.source_ip}}{% if user.city %} from {{user.city}}, {{user.country}}{% elsif user.country %} from {{user.country}}{% endif %}. Logins from this IP have been blocked on your account. If this is your IP, please reset your password to unblock your account. Otherwise, disregard this message." + "text": "{{ code | escape }} is your password change code for {{ friendly_name | escape }}", + "voice": "Hello. Your password change code for {{ friendly_name | escape }} is {{ pause }} {{ code | escape }}. I repeat, your password change code is {{ pause }} {{ code | escape }}" } }, "disabled": false }, "status": 200, "response": { - "id": "tem_dL83uTmWn8moGzm8UgAk4Q", + "id": "tem_xqbUSF83fpnRv8r8rqXFDZ", "tenant": "auth0-deploy-cli-e2e", "channel": "phone", - "type": "blocked_account", + "type": "change_password", "disabled": false, - "created_at": "2025-12-09T12:22:47.683Z", - "updated_at": "2026-02-13T10:25:20.384Z", + "created_at": "2025-12-09T12:26:20.243Z", + "updated_at": "2026-02-16T17:08:34.067Z", "content": { "syntax": "liquid", "body": { - "text": "We detected suspicious activity on your account from the ip {{user.source_ip}}{% if user.city %} from {{user.city}}, {{user.country}}{% elsif user.country %} from {{user.country}}{% endif %}. Logins from this IP have been blocked on your account. If this is your IP, please reset your password to unblock your account. Otherwise, disregard this message.", - "voice": "We detected suspicious activity on your account from the ip {{user.source_ip}}{% if user.city %} from {{user.city}}, {{user.country}}{% elsif user.country %} from {{user.country}}{% endif %}. Logins from this IP have been blocked on your account. If this is your IP, please reset your password to unblock your account. Otherwise, disregard this message." - }, - "from": "0032232323" + "text": "{{ code | escape }} is your password change code for {{ friendly_name | escape }}", + "voice": "Hello. Your password change code for {{ friendly_name | escape }} is {{ pause }} {{ code | escape }}. I repeat, your password change code is {{ pause }} {{ code | escape }}" + } } }, "rawHeaders": [], @@ -7761,11 +7618,11 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "PATCH", - "path": "/api/v2/branding/phone/templates/tem_o4LBTt4NQyX8K4vC9dPafR", + "path": "/api/v2/branding/phone/templates/tem_qarYST5TTE5pbMNB5NHZAj", "body": { "content": { "body": { - "text": "{{ code | escape }} is your verification code for {{ friendly_name | escape }}", + "text": "{{ code | escape }} is your verification code for {{ friendly_name | escape }}. Please enter this code to verify your enrollment.", "voice": "Hello. Your verification code for {{ friendly_name | escape }} is {{ pause }} {{ code | escape }}. I repeat, your verification code is {{ pause }} {{ code | escape }}" } }, @@ -7773,17 +7630,17 @@ }, "status": 200, "response": { - "id": "tem_o4LBTt4NQyX8K4vC9dPafR", + "id": "tem_qarYST5TTE5pbMNB5NHZAj", "tenant": "auth0-deploy-cli-e2e", "channel": "phone", - "type": "otp_verify", + "type": "otp_enroll", "disabled": false, - "created_at": "2025-12-09T12:26:30.547Z", - "updated_at": "2026-02-13T10:25:20.475Z", + "created_at": "2025-12-09T12:26:25.327Z", + "updated_at": "2026-02-16T17:08:34.144Z", "content": { "syntax": "liquid", "body": { - "text": "{{ code | escape }} is your verification code for {{ friendly_name | escape }}", + "text": "{{ code | escape }} is your verification code for {{ friendly_name | escape }}. Please enter this code to verify your enrollment.", "voice": "Hello. Your verification code for {{ friendly_name | escape }} is {{ pause }} {{ code | escape }}. I repeat, your verification code is {{ pause }} {{ code | escape }}" } } @@ -7794,31 +7651,33 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "PATCH", - "path": "/api/v2/branding/phone/templates/tem_xqbUSF83fpnRv8r8rqXFDZ", + "path": "/api/v2/branding/phone/templates/tem_dL83uTmWn8moGzm8UgAk4Q", "body": { "content": { + "from": "0032232323", "body": { - "text": "{{ code | escape }} is your password change code for {{ friendly_name | escape }}", - "voice": "Hello. Your password change code for {{ friendly_name | escape }} is {{ pause }} {{ code | escape }}. I repeat, your password change code is {{ pause }} {{ code | escape }}" + "text": "We detected suspicious activity on your account from the ip {{user.source_ip}}{% if user.city %} from {{user.city}}, {{user.country}}{% elsif user.country %} from {{user.country}}{% endif %}. Logins from this IP have been blocked on your account. If this is your IP, please reset your password to unblock your account. Otherwise, disregard this message.", + "voice": "We detected suspicious activity on your account from the ip {{user.source_ip}}{% if user.city %} from {{user.city}}, {{user.country}}{% elsif user.country %} from {{user.country}}{% endif %}. Logins from this IP have been blocked on your account. If this is your IP, please reset your password to unblock your account. Otherwise, disregard this message." } }, "disabled": false }, "status": 200, "response": { - "id": "tem_xqbUSF83fpnRv8r8rqXFDZ", + "id": "tem_dL83uTmWn8moGzm8UgAk4Q", "tenant": "auth0-deploy-cli-e2e", "channel": "phone", - "type": "change_password", + "type": "blocked_account", "disabled": false, - "created_at": "2025-12-09T12:26:20.243Z", - "updated_at": "2026-02-13T10:25:20.744Z", + "created_at": "2025-12-09T12:22:47.683Z", + "updated_at": "2026-02-16T17:08:34.420Z", "content": { "syntax": "liquid", "body": { - "text": "{{ code | escape }} is your password change code for {{ friendly_name | escape }}", - "voice": "Hello. Your password change code for {{ friendly_name | escape }} is {{ pause }} {{ code | escape }}. I repeat, your password change code is {{ pause }} {{ code | escape }}" - } + "text": "We detected suspicious activity on your account from the ip {{user.source_ip}}{% if user.city %} from {{user.city}}, {{user.country}}{% elsif user.country %} from {{user.country}}{% endif %}. Logins from this IP have been blocked on your account. If this is your IP, please reset your password to unblock your account. Otherwise, disregard this message.", + "voice": "We detected suspicious activity on your account from the ip {{user.source_ip}}{% if user.city %} from {{user.city}}, {{user.country}}{% elsif user.country %} from {{user.country}}{% endif %}. Logins from this IP have been blocked on your account. If this is your IP, please reset your password to unblock your account. Otherwise, disregard this message." + }, + "from": "0032232323" } }, "rawHeaders": [], @@ -8018,7 +7877,7 @@ "subject": "deprecated" } ], - "client_id": "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4", + "client_id": "45lhLMgSUCKLZoNp0TWgvSSre7JA1sDH", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -8097,34 +7956,7 @@ "response": { "connections": [ { - "id": "con_mgTe5EjBQeY95fZD", - "options": { - "email": true, - "scope": [ - "email", - "profile" - ], - "profile": true - }, - "strategy": "google-oauth2", - "name": "google-oauth2", - "is_domain_connection": false, - "authentication": { - "active": true - }, - "connected_accounts": { - "active": false - }, - "realms": [ - "google-oauth2" - ], - "enabled_clients": [ - "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE", - "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4" - ] - }, - { - "id": "con_hs0JNGk6M5oYHR3T", + "id": "con_1FgEzcVAYCcRMVDZ", "options": { "mfa": { "active": true, @@ -8164,7 +7996,7 @@ ], "enabled_clients": [ "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE", - "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4" + "45lhLMgSUCKLZoNp0TWgvSSre7JA1sDH" ] } ] @@ -8518,7 +8350,7 @@ "subject": "deprecated" } ], - "client_id": "i2pfYKB8LBPBUfXRV8c0acfhdUStxoj4", + "client_id": "45lhLMgSUCKLZoNp0TWgvSSre7JA1sDH", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -8692,7 +8524,7 @@ "name": "Blank-form", "flow_count": 0, "created_at": "2024-11-26T11:58:18.187Z", - "updated_at": "2026-02-13T10:01:50.827Z" + "updated_at": "2026-02-16T17:06:23.605Z" } ] }, @@ -8763,7 +8595,7 @@ } }, "created_at": "2024-11-26T11:58:18.187Z", - "updated_at": "2026-02-13T10:01:50.827Z" + "updated_at": "2026-02-16T17:06:23.605Z" }, "rawHeaders": [], "responseIsBinary": false @@ -8888,7 +8720,7 @@ } }, "created_at": "2024-11-26T11:58:18.187Z", - "updated_at": "2026-02-13T10:25:30.223Z" + "updated_at": "2026-02-16T17:08:42.571Z" }, "rawHeaders": [], "responseIsBinary": false diff --git a/test/e2e/recordings/should-dump-without-throwing-an-error.json b/test/e2e/recordings/should-dump-without-throwing-an-error.json index 4bdfe33c0..05a209ba9 100644 --- a/test/e2e/recordings/should-dump-without-throwing-an-error.json +++ b/test/e2e/recordings/should-dump-without-throwing-an-error.json @@ -793,6 +793,22 @@ "description": "Delete SCIM token", "value": "delete:scim_token" }, + { + "description": "Read directory provisioning configurations", + "value": "read:directory_provisionings" + }, + { + "description": "Create directory provisioning configurations", + "value": "create:directory_provisionings" + }, + { + "description": "Update directory provisioning configurations", + "value": "update:directory_provisionings" + }, + { + "description": "Delete directory provisioning configurations", + "value": "delete:directory_provisionings" + }, { "description": "Delete a Phone Notification Provider", "value": "delete:phone_providers" @@ -1180,22 +1196,6 @@ { "value": "create:connections_keys", "description": "Create connection keys" - }, - { - "value": "create:directory_provisionings", - "description": "Create Directory Provisionings" - }, - { - "value": "read:directory_provisionings", - "description": "Read Directory Provisionings" - }, - { - "value": "update:directory_provisionings", - "description": "Update Directory Provisionings" - }, - { - "value": "delete:directory_provisionings", - "description": "Delete Directory Provisionings" } ], "is_system": true @@ -1212,7 +1212,7 @@ "body": "", "status": 200, "response": { - "total": 9, + "total": 2, "start": 0, "limit": 100, "clients": [ @@ -1298,7 +1298,7 @@ "subject": "deprecated" } ], - "client_id": "a8Jvp120Vl4iLr9OYHemhKC6JlvVkosx", + "client_id": "4R1cIUJb4tweu26ZLYAC8NGwhCzfPMcG", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -1313,375 +1313,167 @@ "client_credentials" ], "custom_login_page_on": true - }, + } + ] + }, + "rawHeaders": [], + "responseIsBinary": false + }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "GET", + "path": "/api/v2/connections?take=50&strategy=auth0", + "body": "", + "status": 200, + "response": { + "connections": [ { - "tenant": "auth0-deploy-cli-e2e", - "global": false, - "is_token_endpoint_ip_header_trusted": false, - "name": "API Explorer Application", - "allowed_clients": [], - "callbacks": [], - "client_metadata": {}, - "cross_origin_authentication": false, - "is_first_party": true, - "native_social_login": { - "apple": { - "enabled": false + "id": "con_4KyyGHwwixzZfOVY", + "options": { + "mfa": { + "active": true, + "return_enroll_settings": true }, - "facebook": { - "enabled": false - } + "passwordPolicy": "good", + "passkey_options": { + "challenge_ui": "both", + "local_enrollment_enabled": true, + "progressive_enrollment_enabled": true + }, + "strategy_version": 2, + "authentication_methods": { + "passkey": { + "enabled": false + }, + "password": { + "enabled": true, + "api_behavior": "required", + "signup_behavior": "allow" + } + }, + "brute_force_protection": true, + "disable_self_service_change_password": false }, - "oidc_conformant": true, - "refresh_token": { - "expiration_type": "non-expiring", - "leeway": 0, - "infinite_token_lifetime": true, - "infinite_idle_token_lifetime": true, - "token_lifetime": 31557600, - "idle_token_lifetime": 2592000, - "rotation_type": "non-rotating" + "strategy": "auth0", + "name": "Username-Password-Authentication", + "is_domain_connection": false, + "authentication": { + "active": true }, - "sso_disabled": false, - "cross_origin_auth": false, - "signing_keys": [ - { - "cert": "[REDACTED]", - "pkcs7": "[REDACTED]", - "subject": "deprecated" - } - ], - "client_id": "OEDCYHi5EKhExoxO1JnjbszEmYeYHS6Y", - "callback_url_template": false, - "client_secret": "[REDACTED]", - "jwt_configuration": { - "alg": "RS256", - "lifetime_in_seconds": 36000, - "secret_encoded": false + "connected_accounts": { + "active": false }, - "client_aliases": [], - "token_endpoint_auth_method": "client_secret_post", - "app_type": "non_interactive", - "grant_types": [ - "client_credentials" + "realms": [ + "Username-Password-Authentication" ], - "custom_login_page_on": true + "enabled_clients": [ + "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE", + "4R1cIUJb4tweu26ZLYAC8NGwhCzfPMcG" + ] + } + ] + }, + "rawHeaders": [], + "responseIsBinary": false + }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "GET", + "path": "/api/v2/actions/actions?page=0&per_page=100", + "body": "", + "status": 200, + "response": { + "actions": [], + "per_page": 100 + }, + "rawHeaders": [], + "responseIsBinary": false + }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "GET", + "path": "/api/v2/connections/con_4KyyGHwwixzZfOVY/clients?take=50", + "body": "", + "status": 200, + "response": { + "clients": [ + { + "client_id": "4R1cIUJb4tweu26ZLYAC8NGwhCzfPMcG" }, { - "tenant": "auth0-deploy-cli-e2e", - "global": false, - "is_token_endpoint_ip_header_trusted": false, - "name": "Node App", - "allowed_clients": [], - "allowed_logout_urls": [], - "callbacks": [], - "client_metadata": {}, - "cross_origin_authentication": false, - "is_first_party": true, - "native_social_login": { - "apple": { - "enabled": false + "client_id": "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE" + } + ] + }, + "rawHeaders": [], + "responseIsBinary": false + }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "GET", + "path": "/api/v2/connections-directory-provisionings?take=50", + "body": "", + "status": 403, + "response": { + "statusCode": 403, + "error": "Forbidden", + "message": "Insufficient scope, expected any of: read:directory_provisionings", + "errorCode": "insufficient_scope" + }, + "rawHeaders": [], + "responseIsBinary": false + }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "GET", + "path": "/api/v2/connections?take=50", + "body": "", + "status": 200, + "response": { + "connections": [ + { + "id": "con_4KyyGHwwixzZfOVY", + "options": { + "mfa": { + "active": true, + "return_enroll_settings": true }, - "facebook": { - "enabled": false - } + "passwordPolicy": "good", + "passkey_options": { + "challenge_ui": "both", + "local_enrollment_enabled": true, + "progressive_enrollment_enabled": true + }, + "strategy_version": 2, + "authentication_methods": { + "passkey": { + "enabled": false + }, + "password": { + "enabled": true, + "api_behavior": "required", + "signup_behavior": "allow" + } + }, + "brute_force_protection": true, + "disable_self_service_change_password": false }, - "oidc_conformant": true, - "refresh_token": { - "expiration_type": "non-expiring", - "leeway": 0, - "infinite_token_lifetime": true, - "infinite_idle_token_lifetime": true, - "token_lifetime": 31557600, - "idle_token_lifetime": 2592000, - "rotation_type": "non-rotating" + "strategy": "auth0", + "name": "Username-Password-Authentication", + "is_domain_connection": false, + "authentication": { + "active": true }, - "sso_disabled": false, - "cross_origin_auth": false, - "signing_keys": [ - { - "cert": "[REDACTED]", - "pkcs7": "[REDACTED]", - "subject": "deprecated" - } - ], - "allowed_origins": [], - "client_id": "6E2BOYzV1O8msYFLaQan7WzKXyu4zKQ0", - "callback_url_template": false, - "client_secret": "[REDACTED]", - "jwt_configuration": { - "alg": "RS256", - "lifetime_in_seconds": 36000, - "secret_encoded": false + "connected_accounts": { + "active": false }, - "client_aliases": [], - "token_endpoint_auth_method": "client_secret_post", - "app_type": "regular_web", - "grant_types": [ - "authorization_code", - "implicit", - "refresh_token", - "client_credentials" + "realms": [ + "Username-Password-Authentication" ], - "web_origins": [], - "custom_login_page_on": true - }, - { - "tenant": "auth0-deploy-cli-e2e", - "global": false, - "is_token_endpoint_ip_header_trusted": false, - "name": "Quickstarts API (Test Application)", - "client_metadata": { - "foo": "bar" - }, - "cross_origin_authentication": false, - "is_first_party": true, - "oidc_conformant": true, - "refresh_token": { - "expiration_type": "non-expiring", - "leeway": 0, - "infinite_token_lifetime": true, - "infinite_idle_token_lifetime": true, - "token_lifetime": 31557600, - "idle_token_lifetime": 2592000, - "rotation_type": "non-rotating" - }, - "sso_disabled": false, - "cross_origin_auth": false, - "signing_keys": [ - { - "cert": "[REDACTED]", - "pkcs7": "[REDACTED]", - "subject": "deprecated" - } - ], - "client_id": "WnPPuRbTXT1o4qFBLT2Je0XrdVV6BA3k", - "callback_url_template": false, - "client_secret": "[REDACTED]", - "jwt_configuration": { - "alg": "RS256", - "lifetime_in_seconds": 36000, - "secret_encoded": false - }, - "token_endpoint_auth_method": "client_secret_post", - "app_type": "non_interactive", - "grant_types": [ - "client_credentials" - ], - "custom_login_page_on": true - }, - { - "tenant": "auth0-deploy-cli-e2e", - "global": false, - "is_token_endpoint_ip_header_trusted": false, - "name": "Terraform Provider", - "cross_origin_authentication": false, - "is_first_party": true, - "oidc_conformant": true, - "refresh_token": { - "expiration_type": "non-expiring", - "leeway": 0, - "infinite_token_lifetime": true, - "infinite_idle_token_lifetime": true, - "token_lifetime": 31557600, - "idle_token_lifetime": 2592000, - "rotation_type": "non-rotating" - }, - "sso_disabled": false, - "cross_origin_auth": false, - "signing_keys": [ - { - "cert": "[REDACTED]", - "pkcs7": "[REDACTED]", - "subject": "deprecated" - } - ], - "client_id": "0qyT7HsinUybfiatUqogGKfkVH9hJ5RR", - "callback_url_template": false, - "client_secret": "[REDACTED]", - "jwt_configuration": { - "alg": "RS256", - "lifetime_in_seconds": 36000, - "secret_encoded": false - }, - "token_endpoint_auth_method": "client_secret_post", - "app_type": "non_interactive", - "grant_types": [ - "client_credentials" - ], - "custom_login_page_on": true - }, - { - "tenant": "auth0-deploy-cli-e2e", - "global": false, - "is_token_endpoint_ip_header_trusted": false, - "name": "The Default App", - "allowed_clients": [], - "callbacks": [], - "client_metadata": {}, - "cross_origin_authentication": false, - "is_first_party": true, - "native_social_login": { - "apple": { - "enabled": false - }, - "facebook": { - "enabled": false - } - }, - "oidc_conformant": false, - "refresh_token": { - "expiration_type": "non-expiring", - "leeway": 0, - "infinite_token_lifetime": true, - "infinite_idle_token_lifetime": true, - "token_lifetime": 2592000, - "idle_token_lifetime": 1296000, - "rotation_type": "non-rotating" - }, - "sso": false, - "sso_disabled": false, - "cross_origin_auth": false, - "signing_keys": [ - { - "cert": "[REDACTED]", - "pkcs7": "[REDACTED]", - "subject": "deprecated" - } - ], - "client_id": "ZEAWUup6vAZAJeS0MHgpyt8owSeVVt08", - "callback_url_template": false, - "client_secret": "[REDACTED]", - "jwt_configuration": { - "alg": "RS256", - "lifetime_in_seconds": 36000, - "secret_encoded": false - }, - "client_aliases": [], - "token_endpoint_auth_method": "client_secret_post", - "grant_types": [ - "authorization_code", - "implicit", - "refresh_token", - "client_credentials" - ], - "custom_login_page_on": true - }, - { - "tenant": "auth0-deploy-cli-e2e", - "global": false, - "is_token_endpoint_ip_header_trusted": false, - "name": "Test SPA", - "allowed_clients": [], - "allowed_logout_urls": [ - "http://localhost:3000" - ], - "callbacks": [ - "http://localhost:3000" - ], - "client_metadata": {}, - "cross_origin_authentication": false, - "is_first_party": true, - "native_social_login": { - "apple": { - "enabled": false - }, - "facebook": { - "enabled": false - } - }, - "oidc_conformant": true, - "refresh_token": { - "expiration_type": "expiring", - "leeway": 0, - "token_lifetime": 2592000, - "idle_token_lifetime": 1296000, - "infinite_token_lifetime": false, - "infinite_idle_token_lifetime": false, - "rotation_type": "rotating" - }, - "sso_disabled": false, - "cross_origin_auth": false, - "signing_keys": [ - { - "cert": "[REDACTED]", - "pkcs7": "[REDACTED]", - "subject": "deprecated" - } - ], - "client_id": "co2HWyXAwPonebcAmKyYONy4FixiN52S", - "callback_url_template": false, - "client_secret": "[REDACTED]", - "jwt_configuration": { - "alg": "RS256", - "lifetime_in_seconds": 36000, - "secret_encoded": false - }, - "client_aliases": [], - "token_endpoint_auth_method": "none", - "app_type": "spa", - "grant_types": [ - "authorization_code", - "implicit", - "refresh_token" - ], - "web_origins": [ - "http://localhost:3000" - ], - "custom_login_page_on": true - }, - { - "tenant": "auth0-deploy-cli-e2e", - "global": false, - "is_token_endpoint_ip_header_trusted": false, - "name": "auth0-deploy-cli-extension", - "allowed_clients": [], - "callbacks": [], - "client_metadata": {}, - "cross_origin_authentication": false, - "is_first_party": true, - "native_social_login": { - "apple": { - "enabled": false - }, - "facebook": { - "enabled": false - } - }, - "oidc_conformant": true, - "refresh_token": { - "expiration_type": "non-expiring", - "leeway": 0, - "infinite_token_lifetime": true, - "infinite_idle_token_lifetime": true, - "token_lifetime": 31557600, - "idle_token_lifetime": 2592000, - "rotation_type": "non-rotating" - }, - "sso_disabled": false, - "cross_origin_auth": false, - "signing_keys": [ - { - "cert": "[REDACTED]", - "pkcs7": "[REDACTED]", - "subject": "deprecated" - } - ], - "client_id": "QP3eQtPGl14IUVBp3AewvaKJF1XKbhGF", - "callback_url_template": false, - "client_secret": "[REDACTED]", - "jwt_configuration": { - "alg": "RS256", - "lifetime_in_seconds": 36000, - "secret_encoded": false - }, - "client_aliases": [], - "token_endpoint_auth_method": "client_secret_post", - "app_type": "non_interactive", - "grant_types": [ - "client_credentials" - ], - "custom_login_page_on": true + "enabled_clients": [ + "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE", + "4R1cIUJb4tweu26ZLYAC8NGwhCzfPMcG" + ] } ] }, @@ -1691,418 +1483,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/connections?take=50&strategy=auth0", - "body": "", - "status": 200, - "response": { - "connections": [ - { - "id": "con_kVFZpeo22LiRkuZX", - "options": { - "mfa": { - "active": true, - "return_enroll_settings": true - }, - "import_mode": false, - "customScripts": { - "login": "function login(email, password, callback) {\n // This script should authenticate a user against the credentials stored in\n // your database.\n // It is executed when a user attempts to log in or immediately after signing\n // up (as a verification that the user was successfully signed up).\n //\n // Everything returned by this script will be set as part of the user profile\n // and will be visible by any of the tenant admins. Avoid adding attributes\n // with values such as passwords, keys, secrets, etc.\n //\n // The `password` parameter of this function is in plain text. It must be\n // hashed/salted to match whatever is stored in your database. For example:\n //\n // var bcrypt = require('bcrypt@0.8.5');\n // bcrypt.compare(password, dbPasswordHash, function(err, res)) { ... }\n //\n // There are three ways this script can finish:\n // 1. The user's credentials are valid. The returned user profile should be in\n // the following format: https://auth0.com/docs/users/normalized/auth0/normalized-user-profile-schema\n // var profile = {\n // user_id: ..., // user_id is mandatory\n // email: ...,\n // [...]\n // };\n // callback(null, profile);\n // 2. The user's credentials are invalid\n // callback(new WrongUsernameOrPasswordError(email, \"my error message\"));\n // 3. Something went wrong while trying to reach your database\n // callback(new Error(\"my error message\"));\n //\n // A list of Node.js modules which can be referenced is available here:\n //\n // https://tehsis.github.io/webtaskio-canirequire/\n console.log('AYYYYYE');\n\n const msg =\n 'Please implement the Login script for this database connection ' +\n 'at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n", - "create": "function create(user, callback) {\n // This script should create a user entry in your existing database. It will\n // be executed when a user attempts to sign up, or when a user is created\n // through the Auth0 dashboard or API.\n // When this script has finished executing, the Login script will be\n // executed immediately afterwards, to verify that the user was created\n // successfully.\n //\n // The user object will always contain the following properties:\n // * email: the user's email\n // * password: the password entered by the user, in plain text\n // * tenant: the name of this Auth0 account\n // * client_id: the client ID of the application where the user signed up, or\n // API key if created through the API or Auth0 dashboard\n // * connection: the name of this database connection\n //\n // There are three ways this script can finish:\n // 1. A user was successfully created\n // callback(null);\n // 2. This user already exists in your database\n // callback(new ValidationError(\"user_exists\", \"my error message\"));\n // 3. Something went wrong while trying to reach your database\n // callback(new Error(\"my error message\"));\n\n const msg =\n 'Please implement the Create script for this database connection ' +\n 'at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n", - "delete": "function remove(id, callback) {\n // This script remove a user from your existing database.\n // It is executed whenever a user is deleted from the API or Auth0 dashboard.\n //\n // There are two ways that this script can finish:\n // 1. The user was removed successfully:\n // callback(null);\n // 2. Something went wrong while trying to reach your database:\n // callback(new Error(\"my error message\"));\n\n const msg =\n 'Please implement the Delete script for this database ' +\n 'connection at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n", - "verify": "function verify(email, callback) {\n // This script should mark the current user's email address as verified in\n // your database.\n // It is executed whenever a user clicks the verification link sent by email.\n // These emails can be customized at https://manage.auth0.com/#/emails.\n // It is safe to assume that the user's email already exists in your database,\n // because verification emails, if enabled, are sent immediately after a\n // successful signup.\n //\n // There are two ways that this script can finish:\n // 1. The user's email was verified successfully\n // callback(null, true);\n // 2. Something went wrong while trying to reach your database:\n // callback(new Error(\"my error message\"));\n //\n // If an error is returned, it will be passed to the query string of the page\n // where the user is being redirected to after clicking the verification link.\n // For example, returning `callback(new Error(\"error\"))` and redirecting to\n // https://example.com would redirect to the following URL:\n // https://example.com?email=alice%40example.com&message=error&success=false\n\n const msg =\n 'Please implement the Verify script for this database connection ' +\n 'at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n", - "get_user": "function getByEmail(email, callback) {\n // This script should retrieve a user profile from your existing database,\n // without authenticating the user.\n // It is used to check if a user exists before executing flows that do not\n // require authentication (signup and password reset).\n //\n // There are three ways this script can finish:\n // 1. A user was successfully found. The profile should be in the following\n // format: https://auth0.com/docs/users/normalized/auth0/normalized-user-profile-schema.\n // callback(null, profile);\n // 2. A user was not found\n // callback(null);\n // 3. Something went wrong while trying to reach your database:\n // callback(new Error(\"my error message\"));\n\n const msg =\n 'Please implement the Get User script for this database connection ' +\n 'at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n", - "change_password": "function changePassword(email, newPassword, callback) {\n // This script should change the password stored for the current user in your\n // database. It is executed when the user clicks on the confirmation link\n // after a reset password request.\n // The content and behavior of password confirmation emails can be customized\n // here: https://manage.auth0.com/#/emails\n // The `newPassword` parameter of this function is in plain text. It must be\n // hashed/salted to match whatever is stored in your database.\n //\n // There are three ways that this script can finish:\n // 1. The user's password was updated successfully:\n // callback(null, true);\n // 2. The user's password was not updated:\n // callback(null, false);\n // 3. Something went wrong while trying to reach your database:\n // callback(new Error(\"my error message\"));\n //\n // If an error is returned, it will be passed to the query string of the page\n // where the user is being redirected to after clicking the confirmation link.\n // For example, returning `callback(new Error(\"error\"))` and redirecting to\n // https://example.com would redirect to the following URL:\n // https://example.com?email=alice%40example.com&message=error&success=false\n\n const msg =\n 'Please implement the Change Password script for this database ' +\n 'connection at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n" - }, - "disable_signup": false, - "passwordPolicy": "low", - "passkey_options": { - "challenge_ui": "both", - "local_enrollment_enabled": true, - "progressive_enrollment_enabled": true - }, - "password_history": { - "size": 5, - "enable": false - }, - "strategy_version": 2, - "requires_username": true, - "password_dictionary": { - "enable": true, - "dictionary": [] - }, - "authentication_methods": { - "passkey": { - "enabled": false - }, - "password": { - "enabled": true, - "api_behavior": "required" - } - }, - "brute_force_protection": true, - "password_no_personal_info": { - "enable": true - }, - "password_complexity_options": { - "min_length": 8 - }, - "enabledDatabaseCustomization": true, - "disable_self_service_change_password": false - }, - "strategy": "auth0", - "name": "boo-baz-db-connection-test", - "is_domain_connection": false, - "authentication": { - "active": true - }, - "connected_accounts": { - "active": false - }, - "realms": [ - "boo-baz-db-connection-test" - ], - "enabled_clients": [ - "6E2BOYzV1O8msYFLaQan7WzKXyu4zKQ0", - "QP3eQtPGl14IUVBp3AewvaKJF1XKbhGF" - ] - }, - { - "id": "con_MRA4eGO9o9D9p6B8", - "options": { - "mfa": { - "active": true, - "return_enroll_settings": true - }, - "passwordPolicy": "good", - "passkey_options": { - "challenge_ui": "both", - "local_enrollment_enabled": true, - "progressive_enrollment_enabled": true - }, - "strategy_version": 2, - "authentication_methods": { - "passkey": { - "enabled": false - }, - "password": { - "enabled": true, - "api_behavior": "required" - } - }, - "brute_force_protection": true, - "disable_self_service_change_password": false - }, - "strategy": "auth0", - "name": "Username-Password-Authentication", - "is_domain_connection": false, - "authentication": { - "active": true - }, - "connected_accounts": { - "active": false - }, - "realms": [ - "Username-Password-Authentication" - ], - "enabled_clients": [ - "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE", - "a8Jvp120Vl4iLr9OYHemhKC6JlvVkosx" - ] - } - ] - }, - "rawHeaders": [], - "responseIsBinary": false - }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "GET", - "path": "/api/v2/actions/actions?page=0&per_page=100", - "body": "", - "status": 200, - "response": { - "actions": [ - { - "id": "de79b7e4-3d92-4f84-b215-ed506bdac09d", - "name": "My Custom Action", - "supported_triggers": [ - { - "id": "post-login", - "version": "v2" - } - ], - "created_at": "2026-01-29T08:22:57.593938583Z", - "updated_at": "2026-01-29T08:22:57.600269544Z", - "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", - "dependencies": [], - "runtime": "node18", - "status": "built", - "secrets": [], - "current_version": { - "id": "9c396565-368c-4901-b718-b28d07bbfae1", - "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", - "runtime": "node18", - "status": "BUILT", - "number": 1, - "build_time": "2026-01-29T08:22:58.678829844Z", - "created_at": "2026-01-29T08:22:58.612060855Z", - "updated_at": "2026-01-29T08:22:58.679766962Z" - }, - "deployed_version": { - "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", - "dependencies": [], - "id": "9c396565-368c-4901-b718-b28d07bbfae1", - "deployed": true, - "number": 1, - "built_at": "2026-01-29T08:22:58.678829844Z", - "secrets": [], - "status": "built", - "created_at": "2026-01-29T08:22:58.612060855Z", - "updated_at": "2026-01-29T08:22:58.679766962Z", - "runtime": "node18", - "supported_triggers": [ - { - "id": "post-login", - "version": "v2" - } - ] - }, - "all_changes_deployed": true - } - ], - "total": 1, - "per_page": 100 - }, - "rawHeaders": [], - "responseIsBinary": false - }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "GET", - "path": "/api/v2/connections/con_kVFZpeo22LiRkuZX/clients?take=50", - "body": "", - "status": 200, - "response": { - "clients": [ - { - "client_id": "6E2BOYzV1O8msYFLaQan7WzKXyu4zKQ0" - }, - { - "client_id": "QP3eQtPGl14IUVBp3AewvaKJF1XKbhGF" - } - ] - }, - "rawHeaders": [], - "responseIsBinary": false - }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "GET", - "path": "/api/v2/connections/con_MRA4eGO9o9D9p6B8/clients?take=50", - "body": "", - "status": 200, - "response": { - "clients": [ - { - "client_id": "a8Jvp120Vl4iLr9OYHemhKC6JlvVkosx" - }, - { - "client_id": "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE" - } - ] - }, - "rawHeaders": [], - "responseIsBinary": false - }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "GET", - "path": "/api/v2/connections-directory-provisionings?take=50", - "body": "", - "status": 403, - "response": { - "statusCode": 403, - "error": "Forbidden", - "message": "Insufficient scope, expected any of: read:directory_provisionings", - "errorCode": "insufficient_scope" - }, - "rawHeaders": [], - "responseIsBinary": false - }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "GET", - "path": "/api/v2/connections?take=50", - "body": "", - "status": 200, - "response": { - "connections": [ - { - "id": "con_kVFZpeo22LiRkuZX", - "options": { - "mfa": { - "active": true, - "return_enroll_settings": true - }, - "import_mode": false, - "customScripts": { - "login": "function login(email, password, callback) {\n // This script should authenticate a user against the credentials stored in\n // your database.\n // It is executed when a user attempts to log in or immediately after signing\n // up (as a verification that the user was successfully signed up).\n //\n // Everything returned by this script will be set as part of the user profile\n // and will be visible by any of the tenant admins. Avoid adding attributes\n // with values such as passwords, keys, secrets, etc.\n //\n // The `password` parameter of this function is in plain text. It must be\n // hashed/salted to match whatever is stored in your database. For example:\n //\n // var bcrypt = require('bcrypt@0.8.5');\n // bcrypt.compare(password, dbPasswordHash, function(err, res)) { ... }\n //\n // There are three ways this script can finish:\n // 1. The user's credentials are valid. The returned user profile should be in\n // the following format: https://auth0.com/docs/users/normalized/auth0/normalized-user-profile-schema\n // var profile = {\n // user_id: ..., // user_id is mandatory\n // email: ...,\n // [...]\n // };\n // callback(null, profile);\n // 2. The user's credentials are invalid\n // callback(new WrongUsernameOrPasswordError(email, \"my error message\"));\n // 3. Something went wrong while trying to reach your database\n // callback(new Error(\"my error message\"));\n //\n // A list of Node.js modules which can be referenced is available here:\n //\n // https://tehsis.github.io/webtaskio-canirequire/\n console.log('AYYYYYE');\n\n const msg =\n 'Please implement the Login script for this database connection ' +\n 'at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n", - "create": "function create(user, callback) {\n // This script should create a user entry in your existing database. It will\n // be executed when a user attempts to sign up, or when a user is created\n // through the Auth0 dashboard or API.\n // When this script has finished executing, the Login script will be\n // executed immediately afterwards, to verify that the user was created\n // successfully.\n //\n // The user object will always contain the following properties:\n // * email: the user's email\n // * password: the password entered by the user, in plain text\n // * tenant: the name of this Auth0 account\n // * client_id: the client ID of the application where the user signed up, or\n // API key if created through the API or Auth0 dashboard\n // * connection: the name of this database connection\n //\n // There are three ways this script can finish:\n // 1. A user was successfully created\n // callback(null);\n // 2. This user already exists in your database\n // callback(new ValidationError(\"user_exists\", \"my error message\"));\n // 3. Something went wrong while trying to reach your database\n // callback(new Error(\"my error message\"));\n\n const msg =\n 'Please implement the Create script for this database connection ' +\n 'at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n", - "delete": "function remove(id, callback) {\n // This script remove a user from your existing database.\n // It is executed whenever a user is deleted from the API or Auth0 dashboard.\n //\n // There are two ways that this script can finish:\n // 1. The user was removed successfully:\n // callback(null);\n // 2. Something went wrong while trying to reach your database:\n // callback(new Error(\"my error message\"));\n\n const msg =\n 'Please implement the Delete script for this database ' +\n 'connection at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n", - "verify": "function verify(email, callback) {\n // This script should mark the current user's email address as verified in\n // your database.\n // It is executed whenever a user clicks the verification link sent by email.\n // These emails can be customized at https://manage.auth0.com/#/emails.\n // It is safe to assume that the user's email already exists in your database,\n // because verification emails, if enabled, are sent immediately after a\n // successful signup.\n //\n // There are two ways that this script can finish:\n // 1. The user's email was verified successfully\n // callback(null, true);\n // 2. Something went wrong while trying to reach your database:\n // callback(new Error(\"my error message\"));\n //\n // If an error is returned, it will be passed to the query string of the page\n // where the user is being redirected to after clicking the verification link.\n // For example, returning `callback(new Error(\"error\"))` and redirecting to\n // https://example.com would redirect to the following URL:\n // https://example.com?email=alice%40example.com&message=error&success=false\n\n const msg =\n 'Please implement the Verify script for this database connection ' +\n 'at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n", - "get_user": "function getByEmail(email, callback) {\n // This script should retrieve a user profile from your existing database,\n // without authenticating the user.\n // It is used to check if a user exists before executing flows that do not\n // require authentication (signup and password reset).\n //\n // There are three ways this script can finish:\n // 1. A user was successfully found. The profile should be in the following\n // format: https://auth0.com/docs/users/normalized/auth0/normalized-user-profile-schema.\n // callback(null, profile);\n // 2. A user was not found\n // callback(null);\n // 3. Something went wrong while trying to reach your database:\n // callback(new Error(\"my error message\"));\n\n const msg =\n 'Please implement the Get User script for this database connection ' +\n 'at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n", - "change_password": "function changePassword(email, newPassword, callback) {\n // This script should change the password stored for the current user in your\n // database. It is executed when the user clicks on the confirmation link\n // after a reset password request.\n // The content and behavior of password confirmation emails can be customized\n // here: https://manage.auth0.com/#/emails\n // The `newPassword` parameter of this function is in plain text. It must be\n // hashed/salted to match whatever is stored in your database.\n //\n // There are three ways that this script can finish:\n // 1. The user's password was updated successfully:\n // callback(null, true);\n // 2. The user's password was not updated:\n // callback(null, false);\n // 3. Something went wrong while trying to reach your database:\n // callback(new Error(\"my error message\"));\n //\n // If an error is returned, it will be passed to the query string of the page\n // where the user is being redirected to after clicking the confirmation link.\n // For example, returning `callback(new Error(\"error\"))` and redirecting to\n // https://example.com would redirect to the following URL:\n // https://example.com?email=alice%40example.com&message=error&success=false\n\n const msg =\n 'Please implement the Change Password script for this database ' +\n 'connection at https://manage.auth0.com/#/connections/database';\n return callback(new Error(msg));\n}\n" - }, - "disable_signup": false, - "passwordPolicy": "low", - "passkey_options": { - "challenge_ui": "both", - "local_enrollment_enabled": true, - "progressive_enrollment_enabled": true - }, - "password_history": { - "size": 5, - "enable": false - }, - "strategy_version": 2, - "requires_username": true, - "password_dictionary": { - "enable": true, - "dictionary": [] - }, - "authentication_methods": { - "passkey": { - "enabled": false - }, - "password": { - "enabled": true, - "api_behavior": "required" - } - }, - "brute_force_protection": true, - "password_no_personal_info": { - "enable": true - }, - "password_complexity_options": { - "min_length": 8 - }, - "enabledDatabaseCustomization": true, - "disable_self_service_change_password": false - }, - "strategy": "auth0", - "name": "boo-baz-db-connection-test", - "is_domain_connection": false, - "authentication": { - "active": true - }, - "connected_accounts": { - "active": false - }, - "realms": [ - "boo-baz-db-connection-test" - ], - "enabled_clients": [ - "6E2BOYzV1O8msYFLaQan7WzKXyu4zKQ0", - "QP3eQtPGl14IUVBp3AewvaKJF1XKbhGF" - ] - }, - { - "id": "con_ofYLTrH65uc11uHU", - "options": { - "email": true, - "scope": [ - "email", - "profile" - ], - "profile": true - }, - "strategy": "google-oauth2", - "name": "google-oauth2", - "is_domain_connection": false, - "authentication": { - "active": true - }, - "connected_accounts": { - "active": false - }, - "realms": [ - "google-oauth2" - ], - "enabled_clients": [ - "QP3eQtPGl14IUVBp3AewvaKJF1XKbhGF", - "ZEAWUup6vAZAJeS0MHgpyt8owSeVVt08" - ] - }, - { - "id": "con_MRA4eGO9o9D9p6B8", - "options": { - "mfa": { - "active": true, - "return_enroll_settings": true - }, - "passwordPolicy": "good", - "passkey_options": { - "challenge_ui": "both", - "local_enrollment_enabled": true, - "progressive_enrollment_enabled": true - }, - "strategy_version": 2, - "authentication_methods": { - "passkey": { - "enabled": false - }, - "password": { - "enabled": true, - "api_behavior": "required" - } - }, - "brute_force_protection": true, - "disable_self_service_change_password": false - }, - "strategy": "auth0", - "name": "Username-Password-Authentication", - "is_domain_connection": false, - "authentication": { - "active": true - }, - "connected_accounts": { - "active": false - }, - "realms": [ - "Username-Password-Authentication" - ], - "enabled_clients": [ - "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE", - "a8Jvp120Vl4iLr9OYHemhKC6JlvVkosx" - ] - } - ] - }, - "rawHeaders": [], - "responseIsBinary": false - }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "GET", - "path": "/api/v2/connections/con_ofYLTrH65uc11uHU/clients?take=50", - "body": "", - "status": 200, - "response": { - "clients": [ - { - "client_id": "QP3eQtPGl14IUVBp3AewvaKJF1XKbhGF" - }, - { - "client_id": "ZEAWUup6vAZAJeS0MHgpyt8owSeVVt08" - } - ] - }, - "rawHeaders": [], - "responseIsBinary": false - }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "GET", - "path": "/api/v2/tenants/settings", + "path": "/api/v2/tenants/settings", "body": "", "status": 200, "response": { @@ -2222,7 +1603,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/email-templates/reset_email_by_code", + "path": "/api/v2/email-templates/user_invitation", "body": "", "status": 404, "response": { @@ -2237,7 +1618,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/email-templates/async_approval", + "path": "/api/v2/email-templates/change_password", "body": "", "status": 404, "response": { @@ -2252,7 +1633,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/email-templates/change_password", + "path": "/api/v2/email-templates/blocked_account", "body": "", "status": 404, "response": { @@ -2267,7 +1648,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/email-templates/user_invitation", + "path": "/api/v2/email-templates/password_reset", "body": "", "status": 404, "response": { @@ -2282,7 +1663,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/email-templates/blocked_account", + "path": "/api/v2/email-templates/stolen_credentials", "body": "", "status": 404, "response": { @@ -2297,7 +1678,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/email-templates/reset_email", + "path": "/api/v2/email-templates/async_approval", "body": "", "status": 404, "response": { @@ -2312,7 +1693,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/email-templates/stolen_credentials", + "path": "/api/v2/email-templates/reset_email", "body": "", "status": 404, "response": { @@ -2327,7 +1708,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/email-templates/password_reset", + "path": "/api/v2/email-templates/mfa_oob_code", "body": "", "status": 404, "response": { @@ -2376,7 +1757,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/email-templates/mfa_oob_code", + "path": "/api/v2/email-templates/reset_email_by_code", "body": "", "status": 404, "response": { @@ -2397,146 +1778,8 @@ "response": { "client_grants": [ { - "id": "cgr_iPFkIWsW1niwPulu", - "client_id": "OEDCYHi5EKhExoxO1JnjbszEmYeYHS6Y", - "audience": "https://auth0-deploy-cli-e2e.us.auth0.com/api/v2/", - "scope": [ - "read:client_grants", - "create:client_grants", - "delete:client_grants", - "update:client_grants", - "read:users", - "update:users", - "delete:users", - "create:users", - "read:users_app_metadata", - "update:users_app_metadata", - "delete:users_app_metadata", - "create:users_app_metadata", - "read:user_custom_blocks", - "create:user_custom_blocks", - "delete:user_custom_blocks", - "create:user_tickets", - "read:clients", - "update:clients", - "delete:clients", - "create:clients", - "read:client_keys", - "update:client_keys", - "delete:client_keys", - "create:client_keys", - "read:connections", - "update:connections", - "delete:connections", - "create:connections", - "read:resource_servers", - "update:resource_servers", - "delete:resource_servers", - "create:resource_servers", - "read:device_credentials", - "update:device_credentials", - "delete:device_credentials", - "create:device_credentials", - "read:rules", - "update:rules", - "delete:rules", - "create:rules", - "read:rules_configs", - "update:rules_configs", - "delete:rules_configs", - "read:hooks", - "update:hooks", - "delete:hooks", - "create:hooks", - "read:actions", - "update:actions", - "delete:actions", - "create:actions", - "read:email_provider", - "update:email_provider", - "delete:email_provider", - "create:email_provider", - "blacklist:tokens", - "read:stats", - "read:insights", - "read:tenant_settings", - "update:tenant_settings", - "read:logs", - "read:logs_users", - "read:shields", - "create:shields", - "update:shields", - "delete:shields", - "read:anomaly_blocks", - "delete:anomaly_blocks", - "update:triggers", - "read:triggers", - "read:grants", - "delete:grants", - "read:guardian_factors", - "update:guardian_factors", - "read:guardian_enrollments", - "delete:guardian_enrollments", - "create:guardian_enrollment_tickets", - "read:user_idp_tokens", - "create:passwords_checking_job", - "delete:passwords_checking_job", - "read:custom_domains", - "delete:custom_domains", - "create:custom_domains", - "update:custom_domains", - "read:email_templates", - "create:email_templates", - "update:email_templates", - "read:mfa_policies", - "update:mfa_policies", - "read:roles", - "create:roles", - "delete:roles", - "update:roles", - "read:prompts", - "update:prompts", - "read:branding", - "update:branding", - "delete:branding", - "read:log_streams", - "create:log_streams", - "delete:log_streams", - "update:log_streams", - "create:signing_keys", - "read:signing_keys", - "update:signing_keys", - "read:limits", - "update:limits", - "create:role_members", - "read:role_members", - "delete:role_members", - "read:entitlements", - "read:attack_protection", - "update:attack_protection", - "read:organizations", - "update:organizations", - "create:organizations", - "delete:organizations", - "create:organization_members", - "read:organization_members", - "delete:organization_members", - "create:organization_connections", - "read:organization_connections", - "update:organization_connections", - "delete:organization_connections", - "create:organization_member_roles", - "read:organization_member_roles", - "delete:organization_member_roles", - "create:organization_invitations", - "read:organization_invitations", - "delete:organization_invitations" - ], - "subject_type": "client" - }, - { - "id": "cgr_mM8jzwNihrFtx89p", - "client_id": "0qyT7HsinUybfiatUqogGKfkVH9hJ5RR", + "id": "cgr_pbwejzhwoujrsNE8", + "client_id": "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE", "audience": "https://auth0-deploy-cli-e2e.us.auth0.com/api/v2/", "scope": [ "read:client_grants", @@ -2563,6 +1806,10 @@ "update:client_keys", "delete:client_keys", "create:client_keys", + "read:client_credentials", + "update:client_credentials", + "delete:client_credentials", + "create:client_credentials", "read:connections", "update:connections", "delete:connections", @@ -2652,10 +1899,19 @@ "read:entitlements", "read:attack_protection", "update:attack_protection", + "read:organizations_summary", + "create:authentication_methods", + "read:authentication_methods", + "update:authentication_methods", + "delete:authentication_methods", "read:organizations", "update:organizations", "create:organizations", "delete:organizations", + "read:organization_discovery_domains", + "update:organization_discovery_domains", + "create:organization_discovery_domains", + "delete:organization_discovery_domains", "create:organization_members", "read:organization_members", "delete:organization_members", @@ -2668,247 +1924,96 @@ "delete:organization_member_roles", "create:organization_invitations", "read:organization_invitations", - "delete:organization_invitations" - ], - "subject_type": "client" - }, - { - "id": "cgr_pbwejzhwoujrsNE8", - "client_id": "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE", - "audience": "https://auth0-deploy-cli-e2e.us.auth0.com/api/v2/", - "scope": [ - "read:client_grants", - "create:client_grants", - "delete:client_grants", - "update:client_grants", - "read:users", - "update:users", - "delete:users", - "create:users", - "read:users_app_metadata", - "update:users_app_metadata", - "delete:users_app_metadata", - "create:users_app_metadata", - "read:user_custom_blocks", - "create:user_custom_blocks", - "delete:user_custom_blocks", - "create:user_tickets", - "read:clients", - "update:clients", - "delete:clients", - "create:clients", - "read:client_keys", - "update:client_keys", - "delete:client_keys", - "create:client_keys", - "read:client_credentials", - "update:client_credentials", - "delete:client_credentials", - "create:client_credentials", - "read:connections", - "update:connections", - "delete:connections", - "create:connections", - "read:resource_servers", - "update:resource_servers", - "delete:resource_servers", - "create:resource_servers", - "read:device_credentials", - "update:device_credentials", - "delete:device_credentials", - "create:device_credentials", - "read:rules", - "update:rules", - "delete:rules", - "create:rules", - "read:rules_configs", - "update:rules_configs", - "delete:rules_configs", - "read:hooks", - "update:hooks", - "delete:hooks", - "create:hooks", - "read:actions", - "update:actions", - "delete:actions", - "create:actions", - "read:email_provider", - "update:email_provider", - "delete:email_provider", - "create:email_provider", - "blacklist:tokens", - "read:stats", - "read:insights", - "read:tenant_settings", - "update:tenant_settings", - "read:logs", - "read:logs_users", - "read:shields", - "create:shields", - "update:shields", - "delete:shields", - "read:anomaly_blocks", - "delete:anomaly_blocks", - "update:triggers", - "read:triggers", - "read:grants", - "delete:grants", - "read:guardian_factors", - "update:guardian_factors", - "read:guardian_enrollments", - "delete:guardian_enrollments", - "create:guardian_enrollment_tickets", - "read:user_idp_tokens", - "create:passwords_checking_job", - "delete:passwords_checking_job", - "read:custom_domains", - "delete:custom_domains", - "create:custom_domains", - "update:custom_domains", - "read:email_templates", - "create:email_templates", - "update:email_templates", - "read:mfa_policies", - "update:mfa_policies", - "read:roles", - "create:roles", - "delete:roles", - "update:roles", - "read:prompts", - "update:prompts", - "read:branding", - "update:branding", - "delete:branding", - "read:log_streams", - "create:log_streams", - "delete:log_streams", - "update:log_streams", - "create:signing_keys", - "read:signing_keys", - "update:signing_keys", - "read:limits", - "update:limits", - "create:role_members", - "read:role_members", - "delete:role_members", - "read:entitlements", - "read:attack_protection", - "update:attack_protection", - "read:organizations_summary", - "create:authentication_methods", - "read:authentication_methods", - "update:authentication_methods", - "delete:authentication_methods", - "read:organizations", - "update:organizations", - "create:organizations", - "delete:organizations", - "read:organization_discovery_domains", - "update:organization_discovery_domains", - "create:organization_discovery_domains", - "delete:organization_discovery_domains", - "create:organization_members", - "read:organization_members", - "delete:organization_members", - "create:organization_connections", - "read:organization_connections", - "update:organization_connections", - "delete:organization_connections", - "create:organization_member_roles", - "read:organization_member_roles", - "delete:organization_member_roles", - "create:organization_invitations", - "read:organization_invitations", - "delete:organization_invitations", - "read:scim_config", - "create:scim_config", - "update:scim_config", - "delete:scim_config", - "create:scim_token", - "read:scim_token", - "delete:scim_token", - "delete:phone_providers", - "create:phone_providers", - "read:phone_providers", - "update:phone_providers", - "delete:phone_templates", - "create:phone_templates", - "read:phone_templates", - "update:phone_templates", - "create:encryption_keys", - "read:encryption_keys", - "update:encryption_keys", - "delete:encryption_keys", - "read:sessions", - "update:sessions", - "delete:sessions", - "read:refresh_tokens", - "update:refresh_tokens", - "delete:refresh_tokens", - "create:self_service_profiles", - "read:self_service_profiles", - "update:self_service_profiles", - "delete:self_service_profiles", - "create:sso_access_tickets", - "delete:sso_access_tickets", - "read:forms", - "update:forms", - "delete:forms", - "create:forms", - "read:flows", - "update:flows", - "delete:flows", - "create:flows", - "read:flows_vault", - "read:flows_vault_connections", - "update:flows_vault_connections", - "delete:flows_vault_connections", - "create:flows_vault_connections", - "read:flows_executions", - "delete:flows_executions", - "read:connections_options", - "update:connections_options", - "read:self_service_profile_custom_texts", - "update:self_service_profile_custom_texts", - "create:network_acls", - "update:network_acls", - "read:network_acls", - "delete:network_acls", - "delete:vdcs_templates", - "read:vdcs_templates", - "create:vdcs_templates", - "update:vdcs_templates", - "create:custom_signing_keys", - "read:custom_signing_keys", - "update:custom_signing_keys", - "delete:custom_signing_keys", - "read:federated_connections_tokens", - "delete:federated_connections_tokens", - "create:user_attribute_profiles", - "read:user_attribute_profiles", - "update:user_attribute_profiles", - "delete:user_attribute_profiles", - "read:event_streams", - "create:event_streams", - "delete:event_streams", - "update:event_streams", - "read:event_deliveries", - "update:event_deliveries", - "create:connection_profiles", - "read:connection_profiles", - "update:connection_profiles", - "delete:connection_profiles", - "read:organization_client_grants", - "create:organization_client_grants", - "delete:organization_client_grants", - "create:token_exchange_profiles", - "read:token_exchange_profiles", - "update:token_exchange_profiles", - "delete:token_exchange_profiles", - "read:security_metrics", - "read:connections_keys", - "update:connections_keys", - "create:connections_keys" + "delete:organization_invitations", + "read:scim_config", + "create:scim_config", + "update:scim_config", + "delete:scim_config", + "create:scim_token", + "read:scim_token", + "delete:scim_token", + "delete:phone_providers", + "create:phone_providers", + "read:phone_providers", + "update:phone_providers", + "delete:phone_templates", + "create:phone_templates", + "read:phone_templates", + "update:phone_templates", + "create:encryption_keys", + "read:encryption_keys", + "update:encryption_keys", + "delete:encryption_keys", + "read:sessions", + "update:sessions", + "delete:sessions", + "read:refresh_tokens", + "update:refresh_tokens", + "delete:refresh_tokens", + "create:self_service_profiles", + "read:self_service_profiles", + "update:self_service_profiles", + "delete:self_service_profiles", + "create:sso_access_tickets", + "delete:sso_access_tickets", + "read:forms", + "update:forms", + "delete:forms", + "create:forms", + "read:flows", + "update:flows", + "delete:flows", + "create:flows", + "read:flows_vault", + "read:flows_vault_connections", + "update:flows_vault_connections", + "delete:flows_vault_connections", + "create:flows_vault_connections", + "read:flows_executions", + "delete:flows_executions", + "read:connections_options", + "update:connections_options", + "read:self_service_profile_custom_texts", + "update:self_service_profile_custom_texts", + "create:network_acls", + "update:network_acls", + "read:network_acls", + "delete:network_acls", + "delete:vdcs_templates", + "read:vdcs_templates", + "create:vdcs_templates", + "update:vdcs_templates", + "create:custom_signing_keys", + "read:custom_signing_keys", + "update:custom_signing_keys", + "delete:custom_signing_keys", + "read:federated_connections_tokens", + "delete:federated_connections_tokens", + "create:user_attribute_profiles", + "read:user_attribute_profiles", + "update:user_attribute_profiles", + "delete:user_attribute_profiles", + "read:event_streams", + "create:event_streams", + "delete:event_streams", + "update:event_streams", + "read:event_deliveries", + "update:event_deliveries", + "create:connection_profiles", + "read:connection_profiles", + "update:connection_profiles", + "delete:connection_profiles", + "read:organization_client_grants", + "create:organization_client_grants", + "delete:organization_client_grants", + "create:token_exchange_profiles", + "read:token_exchange_profiles", + "update:token_exchange_profiles", + "delete:token_exchange_profiles", + "read:security_metrics", + "read:connections_keys", + "update:connections_keys", + "create:connections_keys" ], "subject_type": "client" } @@ -2971,7 +2076,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/guardian/factors/push-notification/providers/sns", + "path": "/api/v2/guardian/factors/sms/providers/twilio", "body": "", "status": 200, "response": {}, @@ -2981,7 +2086,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/guardian/factors/sms/providers/twilio", + "path": "/api/v2/guardian/factors/push-notification/providers/sns", "body": "", "status": 200, "response": {}, @@ -3042,31 +2147,10 @@ "body": "", "status": 200, "response": { - "roles": [ - { - "id": "rol_KuqJfEaHcrAOSaWr", - "name": "Admin", - "description": "Can read and write things" - }, - { - "id": "rol_XrPBqiiUpBMrQ1Co", - "name": "Reader", - "description": "Can only read things" - }, - { - "id": "rol_Q1OogAZSOXBxR0mS", - "name": "read_only", - "description": "Read Only" - }, - { - "id": "rol_8cl9Rbs5GmO6L8O1", - "name": "read_osnly", - "description": "Readz Only" - } - ], + "roles": [], "start": 0, "limit": 100, - "total": 4 + "total": 0 }, "rawHeaders": [], "responseIsBinary": false @@ -3074,67 +2158,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/roles/rol_KuqJfEaHcrAOSaWr/permissions?per_page=100&page=0&include_totals=true", - "body": "", - "status": 200, - "response": { - "permissions": [], - "start": 0, - "limit": 100, - "total": 0 - }, - "rawHeaders": [], - "responseIsBinary": false - }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "GET", - "path": "/api/v2/roles/rol_XrPBqiiUpBMrQ1Co/permissions?per_page=100&page=0&include_totals=true", - "body": "", - "status": 200, - "response": { - "permissions": [], - "start": 0, - "limit": 100, - "total": 0 - }, - "rawHeaders": [], - "responseIsBinary": false - }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "GET", - "path": "/api/v2/roles/rol_Q1OogAZSOXBxR0mS/permissions?per_page=100&page=0&include_totals=true", - "body": "", - "status": 200, - "response": { - "permissions": [], - "start": 0, - "limit": 100, - "total": 0 - }, - "rawHeaders": [], - "responseIsBinary": false - }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "GET", - "path": "/api/v2/roles/rol_8cl9Rbs5GmO6L8O1/permissions?per_page=100&page=0&include_totals=true", - "body": "", - "status": 200, - "response": { - "permissions": [], - "start": 0, - "limit": 100, - "total": 0 - }, - "rawHeaders": [], - "responseIsBinary": false - }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "GET", - "path": "/api/v2/branding", + "path": "/api/v2/branding", "body": "", "status": 200, "response": { @@ -3180,7 +2204,7 @@ }, "credentials": null, "created_at": "2025-12-09T12:24:00.604Z", - "updated_at": "2026-01-29T08:16:37.178Z" + "updated_at": "2026-02-13T10:25:18.286Z" } ] }, @@ -3196,20 +2220,19 @@ "response": { "templates": [ { - "id": "tem_dL83uTmWn8moGzm8UgAk4Q", + "id": "tem_o4LBTt4NQyX8K4vC9dPafR", "tenant": "auth0-deploy-cli-e2e", "channel": "phone", - "type": "blocked_account", + "type": "otp_verify", "disabled": false, - "created_at": "2025-12-09T12:22:47.683Z", - "updated_at": "2026-01-29T08:16:39.526Z", + "created_at": "2025-12-09T12:26:30.547Z", + "updated_at": "2026-02-13T10:25:20.475Z", "content": { "syntax": "liquid", "body": { - "text": "We detected suspicious activity on your account from the ip {{user.source_ip}}{% if user.city %} from {{user.city}}, {{user.country}}{% elsif user.country %} from {{user.country}}{% endif %}. Logins from this IP have been blocked on your account. If this is your IP, please reset your password to unblock your account. Otherwise, disregard this message.", - "voice": "We detected suspicious activity on your account from the ip {{user.source_ip}}{% if user.city %} from {{user.city}}, {{user.country}}{% elsif user.country %} from {{user.country}}{% endif %}. Logins from this IP have been blocked on your account. If this is your IP, please reset your password to unblock your account. Otherwise, disregard this message." - }, - "from": "0032232323" + "text": "{{ code | escape }} is your verification code for {{ friendly_name | escape }}", + "voice": "Hello. Your verification code for {{ friendly_name | escape }} is {{ pause }} {{ code | escape }}. I repeat, your verification code is {{ pause }} {{ code | escape }}" + } } }, { @@ -3219,7 +2242,7 @@ "type": "change_password", "disabled": false, "created_at": "2025-12-09T12:26:20.243Z", - "updated_at": "2026-01-29T08:16:39.875Z", + "updated_at": "2026-02-13T10:25:20.744Z", "content": { "syntax": "liquid", "body": { @@ -3229,35 +2252,36 @@ } }, { - "id": "tem_o4LBTt4NQyX8K4vC9dPafR", + "id": "tem_qarYST5TTE5pbMNB5NHZAj", "tenant": "auth0-deploy-cli-e2e", "channel": "phone", - "type": "otp_verify", + "type": "otp_enroll", "disabled": false, - "created_at": "2025-12-09T12:26:30.547Z", - "updated_at": "2026-01-29T08:16:39.493Z", + "created_at": "2025-12-09T12:26:25.327Z", + "updated_at": "2026-02-13T10:25:20.350Z", "content": { "syntax": "liquid", "body": { - "text": "{{ code | escape }} is your verification code for {{ friendly_name | escape }}", + "text": "{{ code | escape }} is your verification code for {{ friendly_name | escape }}. Please enter this code to verify your enrollment.", "voice": "Hello. Your verification code for {{ friendly_name | escape }} is {{ pause }} {{ code | escape }}. I repeat, your verification code is {{ pause }} {{ code | escape }}" } } }, { - "id": "tem_qarYST5TTE5pbMNB5NHZAj", + "id": "tem_dL83uTmWn8moGzm8UgAk4Q", "tenant": "auth0-deploy-cli-e2e", "channel": "phone", - "type": "otp_enroll", + "type": "blocked_account", "disabled": false, - "created_at": "2025-12-09T12:26:25.327Z", - "updated_at": "2026-01-29T08:16:39.523Z", + "created_at": "2025-12-09T12:22:47.683Z", + "updated_at": "2026-02-13T10:25:20.384Z", "content": { "syntax": "liquid", "body": { - "text": "{{ code | escape }} is your verification code for {{ friendly_name | escape }}. Please enter this code to verify your enrollment.", - "voice": "Hello. Your verification code for {{ friendly_name | escape }} is {{ pause }} {{ code | escape }}. I repeat, your verification code is {{ pause }} {{ code | escape }}" - } + "text": "We detected suspicious activity on your account from the ip {{user.source_ip}}{% if user.city %} from {{user.city}}, {{user.country}}{% elsif user.country %} from {{user.country}}{% endif %}. Logins from this IP have been blocked on your account. If this is your IP, please reset your password to unblock your account. Otherwise, disregard this message.", + "voice": "We detected suspicious activity on your account from the ip {{user.source_ip}}{% if user.city %} from {{user.city}}, {{user.country}}{% elsif user.country %} from {{user.country}}{% endif %}. Logins from this IP have been blocked on your account. If this is your IP, please reset your password to unblock your account. Otherwise, disregard this message." + }, + "from": "0032232323" } } ] @@ -3353,7 +2377,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/login/custom-text/en", + "path": "/api/v2/prompts/login-id/custom-text/en", "body": "", "status": 200, "response": {}, @@ -3363,7 +2387,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/login-password/custom-text/en", + "path": "/api/v2/prompts/login/custom-text/en", "body": "", "status": 200, "response": {}, @@ -3373,7 +2397,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/login-passwordless/custom-text/en", + "path": "/api/v2/prompts/login-password/custom-text/en", "body": "", "status": 200, "response": {}, @@ -3383,7 +2407,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/login-email-verification/custom-text/en", + "path": "/api/v2/prompts/login-passwordless/custom-text/en", "body": "", "status": 200, "response": {}, @@ -3393,7 +2417,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/login-id/custom-text/en", + "path": "/api/v2/prompts/login-email-verification/custom-text/en", "body": "", "status": 200, "response": {}, @@ -3413,7 +2437,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/signup-id/custom-text/en", + "path": "/api/v2/prompts/signup-password/custom-text/en", "body": "", "status": 200, "response": {}, @@ -3423,7 +2447,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/signup-password/custom-text/en", + "path": "/api/v2/prompts/signup-id/custom-text/en", "body": "", "status": 200, "response": {}, @@ -3473,7 +2497,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/custom-form/custom-text/en", + "path": "/api/v2/prompts/consent/custom-text/en", "body": "", "status": 200, "response": {}, @@ -3483,7 +2507,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/customized-consent/custom-text/en", + "path": "/api/v2/prompts/custom-form/custom-text/en", "body": "", "status": 200, "response": {}, @@ -3493,7 +2517,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/consent/custom-text/en", + "path": "/api/v2/prompts/customized-consent/custom-text/en", "body": "", "status": 200, "response": {}, @@ -3563,7 +2587,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/mfa-email/custom-text/en", + "path": "/api/v2/prompts/mfa-sms/custom-text/en", "body": "", "status": 200, "response": {}, @@ -3573,7 +2597,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/mfa-sms/custom-text/en", + "path": "/api/v2/prompts/mfa-email/custom-text/en", "body": "", "status": 200, "response": {}, @@ -3673,7 +2697,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/passkeys/custom-text/en", + "path": "/api/v2/prompts/captcha/custom-text/en", "body": "", "status": 200, "response": {}, @@ -3683,7 +2707,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/captcha/custom-text/en", + "path": "/api/v2/prompts/passkeys/custom-text/en", "body": "", "status": 200, "response": {}, @@ -3703,7 +2727,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/login-id/partials", + "path": "/api/v2/prompts/login-password/partials", "body": "", "status": 200, "response": {}, @@ -3713,7 +2737,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/login/partials", + "path": "/api/v2/prompts/login-id/partials", "body": "", "status": 200, "response": {}, @@ -3723,7 +2747,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/login-password/partials", + "path": "/api/v2/prompts/login/partials", "body": "", "status": 200, "response": {}, @@ -3743,7 +2767,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/login-passwordless/partials", + "path": "/api/v2/prompts/signup-id/partials", "body": "", "status": 200, "response": {}, @@ -3753,7 +2777,7 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/prompts/signup-id/partials", + "path": "/api/v2/prompts/login-passwordless/partials", "body": "", "status": 200, "response": {}, @@ -3792,61 +2816,27 @@ "body": "", "status": 200, "response": { - "actions": [ - { - "id": "de79b7e4-3d92-4f84-b215-ed506bdac09d", - "name": "My Custom Action", - "supported_triggers": [ - { - "id": "post-login", - "version": "v2" - } - ], - "created_at": "2026-01-29T08:22:57.593938583Z", - "updated_at": "2026-01-29T08:22:57.600269544Z", - "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", - "dependencies": [], - "runtime": "node18", - "status": "built", - "secrets": [], - "current_version": { - "id": "9c396565-368c-4901-b718-b28d07bbfae1", - "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", - "runtime": "node18", - "status": "BUILT", - "number": 1, - "build_time": "2026-01-29T08:22:58.678829844Z", - "created_at": "2026-01-29T08:22:58.612060855Z", - "updated_at": "2026-01-29T08:22:58.679766962Z" - }, - "deployed_version": { - "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", - "dependencies": [], - "id": "9c396565-368c-4901-b718-b28d07bbfae1", - "deployed": true, - "number": 1, - "built_at": "2026-01-29T08:22:58.678829844Z", - "secrets": [], - "status": "built", - "created_at": "2026-01-29T08:22:58.612060855Z", - "updated_at": "2026-01-29T08:22:58.679766962Z", - "runtime": "node18", - "supported_triggers": [ - { - "id": "post-login", - "version": "v2" - } - ] - }, - "all_changes_deployed": true - } - ], - "total": 1, + "actions": [], "per_page": 100 }, "rawHeaders": [], "responseIsBinary": false }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "GET", + "path": "/api/v2/actions/modules?page=0&per_page=100", + "body": "", + "status": 403, + "response": { + "statusCode": 403, + "error": "Forbidden", + "message": "This feature is not enabled for this tenant.", + "errorCode": "feature_not_enabled" + }, + "rawHeaders": [], + "responseIsBinary": false + }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", @@ -3920,47 +2910,47 @@ }, { "id": "pre-user-registration", - "version": "v2", - "status": "CURRENT", + "version": "v1", + "status": "DEPRECATED", "runtimes": [ - "node18-actions", "node22" ], - "default_runtime": "node22", + "default_runtime": "node12", "binding_policy": "trigger-bound", "compatible_triggers": [] }, { "id": "pre-user-registration", - "version": "v1", - "status": "DEPRECATED", + "version": "v2", + "status": "CURRENT", "runtimes": [ + "node18-actions", "node22" ], - "default_runtime": "node12", + "default_runtime": "node22", "binding_policy": "trigger-bound", "compatible_triggers": [] }, { "id": "post-user-registration", - "version": "v1", - "status": "DEPRECATED", + "version": "v2", + "status": "CURRENT", "runtimes": [ + "node18-actions", "node22" ], - "default_runtime": "node12", + "default_runtime": "node22", "binding_policy": "trigger-bound", "compatible_triggers": [] }, { "id": "post-user-registration", - "version": "v2", - "status": "CURRENT", + "version": "v1", + "status": "DEPRECATED", "runtimes": [ - "node18-actions", "node22" ], - "default_runtime": "node22", + "default_runtime": "node12", "binding_policy": "trigger-bound", "compatible_triggers": [] }, @@ -3989,24 +2979,24 @@ }, { "id": "send-phone-message", - "version": "v2", - "status": "CURRENT", + "version": "v1", + "status": "DEPRECATED", "runtimes": [ - "node18-actions", "node22" ], - "default_runtime": "node22", + "default_runtime": "node12", "binding_policy": "trigger-bound", "compatible_triggers": [] }, { "id": "send-phone-message", - "version": "v1", - "status": "DEPRECATED", + "version": "v2", + "status": "CURRENT", "runtimes": [ + "node18-actions", "node22" ], - "default_runtime": "node12", + "default_runtime": "node22", "binding_policy": "trigger-bound", "compatible_triggers": [] }, @@ -4272,24 +3262,7 @@ "body": "", "status": 200, "response": { - "organizations": [ - { - "id": "org_xWa07kdbbwu2lRcF", - "name": "org1", - "display_name": "Organization", - "branding": { - "colors": { - "page_background": "#fff5f5", - "primary": "#57ddff" - } - } - }, - { - "id": "org_gDr714haDt65Zd3H", - "name": "org2", - "display_name": "Organization2" - } - ] + "organizations": [] }, "rawHeaders": [], "responseIsBinary": false @@ -4301,376 +3274,31 @@ "body": "", "status": 200, "response": { - "total": 10, + "total": 3, "start": 0, "limit": 100, "clients": [ { "tenant": "auth0-deploy-cli-e2e", "global": false, - "is_token_endpoint_ip_header_trusted": false, - "name": "Deploy CLI", - "is_first_party": true, - "oidc_conformant": true, - "sso_disabled": false, - "cross_origin_auth": false, - "refresh_token": { - "expiration_type": "non-expiring", - "leeway": 0, - "infinite_token_lifetime": true, - "infinite_idle_token_lifetime": true, - "token_lifetime": 31557600, - "idle_token_lifetime": 2592000, - "rotation_type": "non-rotating" - }, - "cross_origin_authentication": false, - "allowed_clients": [], - "callbacks": [], - "native_social_login": { - "apple": { - "enabled": false - }, - "facebook": { - "enabled": false - } - }, - "signing_keys": [ - { - "cert": "[REDACTED]", - "pkcs7": "[REDACTED]", - "subject": "deprecated" - } - ], - "client_id": "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE", - "callback_url_template": false, - "client_secret": "[REDACTED]", - "jwt_configuration": { - "alg": "RS256", - "lifetime_in_seconds": 36000, - "secret_encoded": false - }, - "client_aliases": [], - "token_endpoint_auth_method": "client_secret_post", - "app_type": "non_interactive", - "grant_types": [ - "client_credentials", - "implicit", - "authorization_code", - "refresh_token" - ], - "custom_login_page_on": true - }, - { - "tenant": "auth0-deploy-cli-e2e", - "global": false, - "is_token_endpoint_ip_header_trusted": false, - "name": "Default App", - "callbacks": [], - "cross_origin_authentication": false, - "is_first_party": true, - "oidc_conformant": true, - "refresh_token": { - "expiration_type": "non-expiring", - "leeway": 0, - "infinite_token_lifetime": true, - "infinite_idle_token_lifetime": true, - "token_lifetime": 2592000, - "idle_token_lifetime": 1296000, - "rotation_type": "non-rotating" - }, - "sso_disabled": false, - "cross_origin_auth": false, - "signing_keys": [ - { - "cert": "[REDACTED]", - "pkcs7": "[REDACTED]", - "subject": "deprecated" - } - ], - "client_id": "a8Jvp120Vl4iLr9OYHemhKC6JlvVkosx", - "callback_url_template": false, - "client_secret": "[REDACTED]", - "jwt_configuration": { - "alg": "RS256", - "lifetime_in_seconds": 36000, - "secret_encoded": false - }, - "grant_types": [ - "authorization_code", - "implicit", - "refresh_token", - "client_credentials" - ], - "custom_login_page_on": true - }, - { - "tenant": "auth0-deploy-cli-e2e", - "global": false, - "is_token_endpoint_ip_header_trusted": false, - "name": "API Explorer Application", - "allowed_clients": [], - "callbacks": [], - "client_metadata": {}, - "cross_origin_authentication": false, - "is_first_party": true, - "native_social_login": { - "apple": { - "enabled": false - }, - "facebook": { - "enabled": false - } - }, - "oidc_conformant": true, - "refresh_token": { - "expiration_type": "non-expiring", - "leeway": 0, - "infinite_token_lifetime": true, - "infinite_idle_token_lifetime": true, - "token_lifetime": 31557600, - "idle_token_lifetime": 2592000, - "rotation_type": "non-rotating" - }, - "sso_disabled": false, - "cross_origin_auth": false, - "signing_keys": [ - { - "cert": "[REDACTED]", - "pkcs7": "[REDACTED]", - "subject": "deprecated" - } - ], - "client_id": "OEDCYHi5EKhExoxO1JnjbszEmYeYHS6Y", - "callback_url_template": false, - "client_secret": "[REDACTED]", - "jwt_configuration": { - "alg": "RS256", - "lifetime_in_seconds": 36000, - "secret_encoded": false - }, - "client_aliases": [], - "token_endpoint_auth_method": "client_secret_post", - "app_type": "non_interactive", - "grant_types": [ - "client_credentials" - ], - "custom_login_page_on": true - }, - { - "tenant": "auth0-deploy-cli-e2e", - "global": false, - "is_token_endpoint_ip_header_trusted": false, - "name": "Node App", - "allowed_clients": [], - "allowed_logout_urls": [], - "callbacks": [], - "client_metadata": {}, - "cross_origin_authentication": false, - "is_first_party": true, - "native_social_login": { - "apple": { - "enabled": false - }, - "facebook": { - "enabled": false - } - }, - "oidc_conformant": true, - "refresh_token": { - "expiration_type": "non-expiring", - "leeway": 0, - "infinite_token_lifetime": true, - "infinite_idle_token_lifetime": true, - "token_lifetime": 31557600, - "idle_token_lifetime": 2592000, - "rotation_type": "non-rotating" - }, - "sso_disabled": false, - "cross_origin_auth": false, - "signing_keys": [ - { - "cert": "[REDACTED]", - "pkcs7": "[REDACTED]", - "subject": "deprecated" - } - ], - "allowed_origins": [], - "client_id": "6E2BOYzV1O8msYFLaQan7WzKXyu4zKQ0", - "callback_url_template": false, - "client_secret": "[REDACTED]", - "jwt_configuration": { - "alg": "RS256", - "lifetime_in_seconds": 36000, - "secret_encoded": false - }, - "client_aliases": [], - "token_endpoint_auth_method": "client_secret_post", - "app_type": "regular_web", - "grant_types": [ - "authorization_code", - "implicit", - "refresh_token", - "client_credentials" - ], - "web_origins": [], - "custom_login_page_on": true - }, - { - "tenant": "auth0-deploy-cli-e2e", - "global": false, - "is_token_endpoint_ip_header_trusted": false, - "name": "Quickstarts API (Test Application)", - "client_metadata": { - "foo": "bar" - }, - "cross_origin_authentication": false, - "is_first_party": true, - "oidc_conformant": true, - "refresh_token": { - "expiration_type": "non-expiring", - "leeway": 0, - "infinite_token_lifetime": true, - "infinite_idle_token_lifetime": true, - "token_lifetime": 31557600, - "idle_token_lifetime": 2592000, - "rotation_type": "non-rotating" - }, - "sso_disabled": false, - "cross_origin_auth": false, - "signing_keys": [ - { - "cert": "[REDACTED]", - "pkcs7": "[REDACTED]", - "subject": "deprecated" - } - ], - "client_id": "WnPPuRbTXT1o4qFBLT2Je0XrdVV6BA3k", - "callback_url_template": false, - "client_secret": "[REDACTED]", - "jwt_configuration": { - "alg": "RS256", - "lifetime_in_seconds": 36000, - "secret_encoded": false - }, - "token_endpoint_auth_method": "client_secret_post", - "app_type": "non_interactive", - "grant_types": [ - "client_credentials" - ], - "custom_login_page_on": true - }, - { - "tenant": "auth0-deploy-cli-e2e", - "global": false, - "is_token_endpoint_ip_header_trusted": false, - "name": "Terraform Provider", - "cross_origin_authentication": false, - "is_first_party": true, - "oidc_conformant": true, - "refresh_token": { - "expiration_type": "non-expiring", - "leeway": 0, - "infinite_token_lifetime": true, - "infinite_idle_token_lifetime": true, - "token_lifetime": 31557600, - "idle_token_lifetime": 2592000, - "rotation_type": "non-rotating" - }, - "sso_disabled": false, - "cross_origin_auth": false, - "signing_keys": [ - { - "cert": "[REDACTED]", - "pkcs7": "[REDACTED]", - "subject": "deprecated" - } - ], - "client_id": "0qyT7HsinUybfiatUqogGKfkVH9hJ5RR", - "callback_url_template": false, - "client_secret": "[REDACTED]", - "jwt_configuration": { - "alg": "RS256", - "lifetime_in_seconds": 36000, - "secret_encoded": false - }, - "token_endpoint_auth_method": "client_secret_post", - "app_type": "non_interactive", - "grant_types": [ - "client_credentials" - ], - "custom_login_page_on": true - }, - { - "tenant": "auth0-deploy-cli-e2e", - "global": false, - "is_token_endpoint_ip_header_trusted": false, - "name": "The Default App", - "allowed_clients": [], - "callbacks": [], - "client_metadata": {}, - "cross_origin_authentication": false, - "is_first_party": true, - "native_social_login": { - "apple": { - "enabled": false - }, - "facebook": { - "enabled": false - } - }, - "oidc_conformant": false, - "refresh_token": { - "expiration_type": "non-expiring", - "leeway": 0, - "infinite_token_lifetime": true, - "infinite_idle_token_lifetime": true, - "token_lifetime": 2592000, - "idle_token_lifetime": 1296000, - "rotation_type": "non-rotating" - }, - "sso": false, - "sso_disabled": false, - "cross_origin_auth": false, - "signing_keys": [ - { - "cert": "[REDACTED]", - "pkcs7": "[REDACTED]", - "subject": "deprecated" - } - ], - "client_id": "ZEAWUup6vAZAJeS0MHgpyt8owSeVVt08", - "callback_url_template": false, - "client_secret": "[REDACTED]", - "jwt_configuration": { - "alg": "RS256", - "lifetime_in_seconds": 36000, - "secret_encoded": false - }, - "client_aliases": [], - "token_endpoint_auth_method": "client_secret_post", - "grant_types": [ - "authorization_code", - "implicit", - "refresh_token", - "client_credentials" - ], - "custom_login_page_on": true - }, - { - "tenant": "auth0-deploy-cli-e2e", - "global": false, - "is_token_endpoint_ip_header_trusted": false, - "name": "Test SPA", - "allowed_clients": [], - "allowed_logout_urls": [ - "http://localhost:3000" - ], - "callbacks": [ - "http://localhost:3000" - ], - "client_metadata": {}, - "cross_origin_authentication": false, + "is_token_endpoint_ip_header_trusted": false, + "name": "Deploy CLI", "is_first_party": true, + "oidc_conformant": true, + "sso_disabled": false, + "cross_origin_auth": false, + "refresh_token": { + "expiration_type": "non-expiring", + "leeway": 0, + "infinite_token_lifetime": true, + "infinite_idle_token_lifetime": true, + "token_lifetime": 31557600, + "idle_token_lifetime": 2592000, + "rotation_type": "non-rotating" + }, + "cross_origin_authentication": false, + "allowed_clients": [], + "callbacks": [], "native_social_login": { "apple": { "enabled": false @@ -4679,18 +3307,6 @@ "enabled": false } }, - "oidc_conformant": true, - "refresh_token": { - "expiration_type": "expiring", - "leeway": 0, - "token_lifetime": 2592000, - "idle_token_lifetime": 1296000, - "infinite_token_lifetime": false, - "infinite_idle_token_lifetime": false, - "rotation_type": "rotating" - }, - "sso_disabled": false, - "cross_origin_auth": false, "signing_keys": [ { "cert": "[REDACTED]", @@ -4698,7 +3314,7 @@ "subject": "deprecated" } ], - "client_id": "co2HWyXAwPonebcAmKyYONy4FixiN52S", + "client_id": "Vp0gMRF8PtMzekil38qWoj4Fjw2VjRZE", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -4707,44 +3323,32 @@ "secret_encoded": false }, "client_aliases": [], - "token_endpoint_auth_method": "none", - "app_type": "spa", + "token_endpoint_auth_method": "client_secret_post", + "app_type": "non_interactive", "grant_types": [ - "authorization_code", + "client_credentials", "implicit", + "authorization_code", "refresh_token" ], - "web_origins": [ - "http://localhost:3000" - ], "custom_login_page_on": true }, { "tenant": "auth0-deploy-cli-e2e", "global": false, "is_token_endpoint_ip_header_trusted": false, - "name": "auth0-deploy-cli-extension", - "allowed_clients": [], + "name": "Default App", "callbacks": [], - "client_metadata": {}, "cross_origin_authentication": false, "is_first_party": true, - "native_social_login": { - "apple": { - "enabled": false - }, - "facebook": { - "enabled": false - } - }, "oidc_conformant": true, "refresh_token": { "expiration_type": "non-expiring", "leeway": 0, "infinite_token_lifetime": true, "infinite_idle_token_lifetime": true, - "token_lifetime": 31557600, - "idle_token_lifetime": 2592000, + "token_lifetime": 2592000, + "idle_token_lifetime": 1296000, "rotation_type": "non-rotating" }, "sso_disabled": false, @@ -4756,7 +3360,7 @@ "subject": "deprecated" } ], - "client_id": "QP3eQtPGl14IUVBp3AewvaKJF1XKbhGF", + "client_id": "4R1cIUJb4tweu26ZLYAC8NGwhCzfPMcG", "callback_url_template": false, "client_secret": "[REDACTED]", "jwt_configuration": { @@ -4764,10 +3368,10 @@ "lifetime_in_seconds": 36000, "secret_encoded": false }, - "client_aliases": [], - "token_endpoint_auth_method": "client_secret_post", - "app_type": "non_interactive", "grant_types": [ + "authorization_code", + "implicit", + "refresh_token", "client_credentials" ], "custom_login_page_on": true @@ -4817,83 +3421,22 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/organizations/org_xWa07kdbbwu2lRcF/enabled_connections?page=0&per_page=50&include_totals=true", - "body": "", - "status": 200, - "response": { - "enabled_connections": [], - "start": 0, - "limit": 0, - "total": 0 - }, - "rawHeaders": [], - "responseIsBinary": false - }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "GET", - "path": "/api/v2/organizations/org_xWa07kdbbwu2lRcF/client-grants?page=0&per_page=50&include_totals=true", - "body": "", - "status": 200, - "response": { - "client_grants": [], - "start": 0, - "limit": 50, - "total": 0 - }, - "rawHeaders": [], - "responseIsBinary": false - }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "GET", - "path": "/api/v2/organizations/org_xWa07kdbbwu2lRcF/discovery-domains?take=50", - "body": "", - "status": 200, - "response": { - "domains": [] - }, - "rawHeaders": [], - "responseIsBinary": false - }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "GET", - "path": "/api/v2/organizations/org_gDr714haDt65Zd3H/enabled_connections?page=0&per_page=50&include_totals=true", - "body": "", - "status": 200, - "response": { - "enabled_connections": [], - "start": 0, - "limit": 0, - "total": 0 - }, - "rawHeaders": [], - "responseIsBinary": false - }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "GET", - "path": "/api/v2/organizations/org_gDr714haDt65Zd3H/client-grants?page=0&per_page=50&include_totals=true", - "body": "", - "status": 200, - "response": { - "client_grants": [], - "start": 0, - "limit": 50, - "total": 0 - }, - "rawHeaders": [], - "responseIsBinary": false - }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "GET", - "path": "/api/v2/organizations/org_gDr714haDt65Zd3H/discovery-domains?take=50", + "path": "/api/v2/attack-protection/breached-password-detection", "body": "", "status": 200, "response": { - "domains": [] + "enabled": false, + "shields": [], + "admin_notification_frequency": [], + "method": "standard", + "stage": { + "pre-user-registration": { + "shields": [] + }, + "pre-change-password": { + "shields": [] + } + } }, "rawHeaders": [], "responseIsBinary": false @@ -4917,29 +3460,6 @@ "rawHeaders": [], "responseIsBinary": false }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "GET", - "path": "/api/v2/attack-protection/breached-password-detection", - "body": "", - "status": 200, - "response": { - "enabled": false, - "shields": [], - "admin_notification_frequency": [], - "method": "standard", - "stage": { - "pre-user-registration": { - "shields": [] - }, - "pre-change-password": { - "shields": [] - } - } - }, - "rawHeaders": [], - "responseIsBinary": false - }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", @@ -4971,6 +3491,23 @@ "rawHeaders": [], "responseIsBinary": false }, + { + "scope": "https://deploy-cli-dev.eu.auth0.com:443", + "method": "GET", + "path": "/api/v2/attack-protection/bot-detection", + "body": "", + "status": 200, + "response": { + "challenge_password_policy": "never", + "challenge_passwordless_policy": "never", + "challenge_password_reset_policy": "never", + "allowlist": [], + "bot_detection_level": "medium", + "monitoring_mode_enabled": false + }, + "rawHeaders": [], + "responseIsBinary": false + }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", @@ -5009,16 +3546,11 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/attack-protection/bot-detection", + "path": "/api/v2/risk-assessments/settings", "body": "", "status": 200, "response": { - "challenge_password_policy": "never", - "challenge_passwordless_policy": "never", - "challenge_password_reset_policy": "never", - "allowlist": [], - "bot_detection_level": "medium", - "monitoring_mode_enabled": false + "enabled": false }, "rawHeaders": [], "responseIsBinary": false @@ -5035,87 +3567,13 @@ "rawHeaders": [], "responseIsBinary": false }, - { - "scope": "https://deploy-cli-dev.eu.auth0.com:443", - "method": "GET", - "path": "/api/v2/risk-assessments/settings", - "body": "", - "status": 200, - "response": { - "enabled": false - }, - "rawHeaders": [], - "responseIsBinary": false - }, { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", "path": "/api/v2/log-streams", "body": "", "status": 200, - "response": [ - { - "id": "lst_0000000000026038", - "name": "Suspended DD Log Stream", - "type": "datadog", - "status": "active", - "sink": { - "datadogApiKey": "some-sensitive-api-key", - "datadogRegion": "us" - }, - "isPriority": false - }, - { - "id": "lst_0000000000026039", - "name": "Amazon EventBridge", - "type": "eventbridge", - "status": "active", - "sink": { - "awsAccountId": "123456789012", - "awsRegion": "us-east-2", - "awsPartnerEventSource": "aws.partner/auth0.com/auth0-deploy-cli-e2e-988b6f71-63f1-41c3-9367-a83c0be14ece/auth0.logs" - }, - "filters": [ - { - "type": "category", - "name": "auth.login.success" - }, - { - "type": "category", - "name": "auth.login.notification" - }, - { - "type": "category", - "name": "auth.login.fail" - }, - { - "type": "category", - "name": "auth.signup.success" - }, - { - "type": "category", - "name": "auth.logout.success" - }, - { - "type": "category", - "name": "auth.logout.fail" - }, - { - "type": "category", - "name": "auth.silent_auth.fail" - }, - { - "type": "category", - "name": "auth.silent_auth.success" - }, - { - "type": "category", - "name": "auth.token_exchange.fail" - } - ], - "isPriority": false - } - ], + "response": [], "rawHeaders": [], "responseIsBinary": false }, @@ -5147,22 +3605,14 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/forms?page=0&per_page=100&include_totals=true", + "path": "/api/v2/flows?page=0&per_page=100&include_totals=true", "body": "", "status": 200, "response": { "limit": 100, "start": 0, - "total": 1, - "forms": [ - { - "id": "ap_6JUSCU7qq1CravnoU6d6jr", - "name": "Blank-form", - "flow_count": 0, - "created_at": "2024-11-26T11:58:18.187Z", - "updated_at": "2026-01-30T07:08:24.723Z" - } - ] + "total": 0, + "flows": [] }, "rawHeaders": [], "responseIsBinary": false @@ -5170,14 +3620,22 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/flows?page=0&per_page=100&include_totals=true", + "path": "/api/v2/forms?page=0&per_page=100&include_totals=true", "body": "", "status": 200, "response": { "limit": 100, "start": 0, - "total": 0, - "flows": [] + "total": 1, + "forms": [ + { + "id": "ap_6JUSCU7qq1CravnoU6d6jr", + "name": "Blank-form", + "flow_count": 0, + "created_at": "2024-11-26T11:58:18.187Z", + "updated_at": "2026-02-13T17:00:51.107Z" + } + ] }, "rawHeaders": [], "responseIsBinary": false @@ -5246,7 +3704,7 @@ } }, "created_at": "2024-11-26T11:58:18.187Z", - "updated_at": "2026-01-30T07:08:24.723Z" + "updated_at": "2026-02-13T17:00:51.107Z" }, "rawHeaders": [], "responseIsBinary": false @@ -5254,14 +3712,14 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/flows/vault/connections?page=0&per_page=50&include_totals=true", + "path": "/api/v2/flows?page=0&per_page=100&include_totals=true", "body": "", "status": 200, "response": { - "limit": 50, + "limit": 100, "start": 0, "total": 0, - "connections": [] + "flows": [] }, "rawHeaders": [], "responseIsBinary": false @@ -5269,14 +3727,14 @@ { "scope": "https://deploy-cli-dev.eu.auth0.com:443", "method": "GET", - "path": "/api/v2/flows?page=0&per_page=100&include_totals=true", + "path": "/api/v2/flows/vault/connections?page=0&per_page=50&include_totals=true", "body": "", "status": 200, "response": { - "limit": 100, + "limit": 50, "start": 0, "total": 0, - "flows": [] + "connections": [] }, "rawHeaders": [], "responseIsBinary": false @@ -5325,7 +3783,7 @@ "okta" ], "created_at": "2024-11-26T11:58:18.962Z", - "updated_at": "2026-01-29T08:23:17.397Z", + "updated_at": "2026-02-13T10:31:29.709Z", "branding": { "colors": { "primary": "#19aecc" @@ -5377,7 +3835,7 @@ } }, "created_at": "2026-01-29T08:17:51.522Z", - "updated_at": "2026-01-29T08:23:00.514Z", + "updated_at": "2026-02-13T10:31:11.400Z", "id": "acl_5EgHsY1h2Apnv4cvsM6Q9J" } ] @@ -5471,56 +3929,7 @@ "body": "", "status": 200, "response": { - "actions": [ - { - "id": "de79b7e4-3d92-4f84-b215-ed506bdac09d", - "name": "My Custom Action", - "supported_triggers": [ - { - "id": "post-login", - "version": "v2" - } - ], - "created_at": "2026-01-29T08:22:57.593938583Z", - "updated_at": "2026-01-29T08:22:57.600269544Z", - "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", - "dependencies": [], - "runtime": "node18", - "status": "built", - "secrets": [], - "current_version": { - "id": "9c396565-368c-4901-b718-b28d07bbfae1", - "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", - "runtime": "node18", - "status": "BUILT", - "number": 1, - "build_time": "2026-01-29T08:22:58.678829844Z", - "created_at": "2026-01-29T08:22:58.612060855Z", - "updated_at": "2026-01-29T08:22:58.679766962Z" - }, - "deployed_version": { - "code": "/**\n * Handler that will be called during the execution of a PostLogin flow.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\nexports.onExecutePostLogin = async (event, api) => {\n console.log('Some custom action!');\n};\n\n/**\n * Handler that will be invoked when this action is resuming after an external redirect. If your\n * onExecutePostLogin function does not perform a redirect, this function can be safely ignored.\n *\n * @param {Event} event - Details about the user and the context in which they are logging in.\n * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.\n */\n// exports.onContinuePostLogin = async (event, api) => {\n// };\n", - "dependencies": [], - "id": "9c396565-368c-4901-b718-b28d07bbfae1", - "deployed": true, - "number": 1, - "built_at": "2026-01-29T08:22:58.678829844Z", - "secrets": [], - "status": "built", - "created_at": "2026-01-29T08:22:58.612060855Z", - "updated_at": "2026-01-29T08:22:58.679766962Z", - "runtime": "node18", - "supported_triggers": [ - { - "id": "post-login", - "version": "v2" - } - ] - }, - "all_changes_deployed": true - } - ], - "total": 1, + "actions": [], "per_page": 100 }, "rawHeaders": [], diff --git a/test/tools/auth0/handlers/actionModules.tests.ts b/test/tools/auth0/handlers/actionModules.tests.ts new file mode 100644 index 000000000..e8e0c47e0 --- /dev/null +++ b/test/tools/auth0/handlers/actionModules.tests.ts @@ -0,0 +1,308 @@ +import { expect } from 'chai'; +import ActionModulesHandler from '../../../../src/tools/auth0/handlers/actionModules'; +import pageClient from '../../../../src/tools/auth0/client'; +import { mockPagedData } from '../../../utils'; + +const pool = { + addEachTask: (data: any) => { + if (data.data && data.data.length) { + data.generator(data.data[0]); + } + return { promise: () => null }; + }, +}; + +describe('#actionModules handler', () => { + const config = function (key: string) { + return config.data && config.data[key]; + }; + + config.data = { + AUTH0_ALLOW_DELETE: true, + }; + + describe('#ActionModules validate', () => { + it('should not allow same names', (done) => { + const auth0 = { + actions: { + modules: { + list: () => Promise.resolve({ data: [] }), + }, + }, + pool, + }; + + const handler = new ActionModulesHandler({ client: pageClient(auth0), config }); + const stageFn = Object.getPrototypeOf(handler).validate; + const data = [ + { + name: 'module-one', + code: 'module.exports = {};', + }, + { + name: 'module-one', + code: 'module.exports = {};', + }, + ]; + + stageFn + .apply(handler, [{ actionModules: data }]) + .then(() => done(new Error('Expecting error'))) + .catch((err: Error) => { + expect(err).to.be.an('object'); + expect(err.message).to.include('Names must be unique'); + done(); + }); + }); + + it('should pass validation', async () => { + const auth0 = { + actions: { + modules: { + list: () => Promise.resolve({ data: [] }), + }, + }, + pool, + }; + + const handler = new ActionModulesHandler({ client: pageClient(auth0), config }); + const stageFn = Object.getPrototypeOf(handler).validate; + const data = [ + { + name: 'module-one', + code: 'module.exports = {};', + dependencies: [], + secrets: [], + }, + { + name: 'module-two', + code: 'module.exports = {};', + dependencies: [], + secrets: [], + }, + ]; + + await stageFn.apply(handler, [{ actionModules: data }]); + }); + }); + + describe('#actionModule process', () => { + it('should create action module', async () => { + const moduleId = 'new-module-id'; + const module = { + name: 'module-test', + code: 'module.exports = {};', + dependencies: [ + { + name: 'lodash', + version: '4.17.21', + }, + ], + secrets: [], + }; + + let listCalled = false; + + const auth0 = { + actions: { + modules: { + create: function (data: any) { + expect(data).to.be.an('object'); + expect(data.name).to.equal('module-test'); + expect(data.code).to.equal('module.exports = {};'); + return Promise.resolve({ data: { ...data, id: moduleId } }); + }, + update: () => Promise.resolve({ data: [] }), + delete: () => Promise.resolve({ data: [] }), + list: () => { + if (!listCalled) { + listCalled = true; + return mockPagedData({ paginate: true }, 'modules', []); + } + return mockPagedData({ paginate: true }, 'modules', [ + { + name: module.name, + code: module.code, + id: moduleId, + }, + ]); + }, + }, + }, + pool, + }; + + const handler = new ActionModulesHandler({ client: pageClient(auth0), config }); + const stageFn = Object.getPrototypeOf(handler).processChanges; + + await stageFn.apply(handler, [{ actionModules: [module] }]); + }); + + it('should get action modules', async () => { + const code = 'module.exports = {};'; + + const modulesData = [ + { + id: 'module-id-1', + name: 'module-test-1', + code: code, + dependencies: [], + secrets: [], + actions_using_module_total: 0, + all_changes_published: true, + latest_version_number: 1, + }, + ]; + + const auth0 = { + actions: { + modules: { + list: () => mockPagedData({ paginate: true }, 'modules', modulesData), + }, + }, + pool, + }; + + const handler = new ActionModulesHandler({ client: pageClient(auth0), config }); + const data = await handler.getType(); + expect(data).to.be.an('array'); + expect(data).to.have.lengthOf(1); + expect(data?.[0]).to.deep.include(modulesData[0]); + }); + + it('should update action module', async () => { + const moduleId = 'existing-module-id'; + const existingModule = { + id: moduleId, + name: 'module-test', + code: 'module.exports = { old: true };', + dependencies: [], + secrets: [], + }; + + const updatedModule = { + name: 'module-test', + code: 'module.exports = { new: true };', + dependencies: [ + { + name: 'lodash', + version: '4.17.21', + }, + ], + secrets: [], + }; + + const auth0 = { + actions: { + modules: { + create: () => Promise.resolve({ data: [] }), + update: function (id: string, data: any) { + expect(id).to.equal(moduleId); + expect(data).to.be.an('object'); + expect(data.code).to.equal('module.exports = { new: true };'); + return Promise.resolve({ data: { ...updatedModule, id: moduleId } }); + }, + delete: () => Promise.resolve({ data: [] }), + list: () => mockPagedData({ paginate: true }, 'modules', [existingModule]), + }, + }, + pool, + }; + + const handler = new ActionModulesHandler({ client: pageClient(auth0), config }); + const stageFn = Object.getPrototypeOf(handler).processChanges; + + await stageFn.apply(handler, [{ actionModules: [updatedModule] }]); + }); + + it('should remove action module', async () => { + const auth0 = { + actions: { + modules: { + create: () => Promise.resolve({ data: [] }), + update: () => Promise.resolve({ data: [] }), + delete: (id: string) => { + expect(id).to.be.a('string'); + expect(id).to.equal('module-1'); + return Promise.resolve({ data: id }); + }, + list: () => + mockPagedData({ paginate: true }, 'modules', [ + { + id: 'module-1', + name: 'module-test', + code: 'module.exports = {};', + dependencies: [], + secrets: [], + }, + ]), + }, + }, + pool, + }; + + const handler = new ActionModulesHandler({ client: pageClient(auth0), config }); + const stageFn = Object.getPrototypeOf(handler).processChanges; + + await stageFn.apply(handler, [{ actionModules: [] }]); + }); + + it('should return null for 404 status code', async () => { + const auth0 = { + actions: { + modules: { + list: () => { + const error: any = new Error('Not found'); + error.statusCode = 404; + throw error; + }, + }, + }, + pool, + }; + + const handler = new ActionModulesHandler({ client: pageClient(auth0), config }); + const data = await handler.getType(); + expect(data).to.deep.equal(null); + }); + + it('should return null for 501 status code', async () => { + const auth0 = { + actions: { + modules: { + list: () => { + const error: any = new Error('Feature is not yet implemented'); + error.statusCode = 501; + throw error; + }, + }, + }, + pool, + }; + + const handler = new ActionModulesHandler({ client: pageClient(auth0), config }); + const data = await handler.getType(); + expect(data).to.deep.equal(null); + }); + + it('should return null when the feature flag is disabled', async () => { + const auth0 = { + actions: { + modules: { + list: () => { + const error: any = new Error('Not enabled'); + error.statusCode = 403; + error.errorCode = 'feature_not_enabled'; + throw error; + }, + }, + }, + pool, + }; + + const handler = new ActionModulesHandler({ client: pageClient(auth0), config }); + const data = await handler.getType(); + expect(data).to.deep.equal(null); + }); + }); +}); diff --git a/test/tools/auth0/handlers/actions.tests.js b/test/tools/auth0/handlers/actions.tests.js index 4b45af888..74e79f1a3 100644 --- a/test/tools/auth0/handlers/actions.tests.js +++ b/test/tools/auth0/handlers/actions.tests.js @@ -463,5 +463,152 @@ describe('#actions handler', () => { expect(wasDeleteCalled).to.equal(false); }); + + it('should enrich actions with module IDs and version IDs', async () => { + const actionId = 'action-with-modules-id'; + const moduleId = 'module-id-1'; + const moduleVersionId = 'version-id-1'; + + const action = { + name: 'action-with-modules', + supported_triggers: [ + { + id: 'post-login', + version: 'v1', + }, + ], + modules: [ + { + module_name: 'test-module', + module_version_number: 1, + }, + ], + }; + + const auth0 = { + actions: { + get: () => Promise.resolve({ data: { ...action, id: actionId } }), + create: (data) => Promise.resolve({ data: { ...data, id: actionId } }), + update: () => Promise.resolve({ data: [] }), + delete: () => Promise.resolve({ data: [] }), + list: () => { + if (!auth0.listCalled) { + auth0.listCalled = true; + return mockPagedData({ include_totals: true }, 'actions', []); + } + return mockPagedData({ include_totals: true }, 'actions', [ + { + name: action.name, + supported_triggers: action.supported_triggers, + id: actionId, + }, + ]); + }, + createVersion: () => + Promise.resolve({ + data: { + code: 'action-code', + dependencies: [], + id: 'version-id', + runtime: 'node12', + secrets: [], + }, + }), + modules: { + list: () => + mockPagedData({ paginate: true }, 'modules', [ + { + id: moduleId, + name: 'test-module', + code: 'module.exports = {};', + }, + ]), + versions: { + list: () => + Promise.resolve( + mockPagedData({ paginate: true }, 'versions', [ + { + id: moduleVersionId, + version_number: 1, + }, + ]) + ), + }, + }, + }, + pool: { + addEachTask: (data) => { + const results = data.data.map(data.generator); + return { promise: () => Promise.all(results) }; + }, + }, + listCalled: false, + }; + + const handler = new actions.default({ client: pageClient(auth0), config }); + const stageFn = Object.getPrototypeOf(handler).processChanges; + + await stageFn.apply(handler, [{ actions: [action] }]); + }); + + it('should handle actions without modules', async () => { + const actionId = 'action-no-modules-id'; + const action = { + name: 'action-no-modules', + supported_triggers: [ + { + id: 'post-login', + version: 'v1', + }, + ], + }; + + const auth0 = { + actions: { + get: () => Promise.resolve({ data: { ...action, id: actionId } }), + create: (data) => Promise.resolve({ data: { ...data, id: actionId } }), + update: () => Promise.resolve({ data: [] }), + delete: () => Promise.resolve({ data: [] }), + list: () => { + if (!auth0.listCalled) { + auth0.listCalled = true; + return mockPagedData({ include_totals: true }, 'actions', []); + } + return mockPagedData({ include_totals: true }, 'actions', [ + { + name: action.name, + supported_triggers: action.supported_triggers, + id: actionId, + }, + ]); + }, + createVersion: () => + Promise.resolve({ + data: { + code: 'action-code', + dependencies: [], + id: 'version-id', + runtime: 'node12', + secrets: [], + }, + }), + modules: { + list: () => mockPagedData({ paginate: true }, 'modules', []), + }, + }, + pool: { + addEachTask: (data) => { + const results = data.data.map(data.generator); + return { promise: () => Promise.all(results) }; + }, + }, + listCalled: false, + }; + + const handler = new actions.default({ client: pageClient(auth0), config }); + const stageFn = Object.getPrototypeOf(handler).processChanges; + + await stageFn.apply(handler, [{ actions: [action] }]); + }); }); }); diff --git a/test/utils.js b/test/utils.js index d1e09beca..9fe3597f0 100644 --- a/test/utils.js +++ b/test/utils.js @@ -49,6 +49,9 @@ export function mockMgmtClient() { hooks: { list: (params) => mockPagedData(params, 'hooks', []) }, actions: { list: () => mockPagedData({ include_totals: true }, 'actions', []), + modules: { + list: (params) => mockPagedData(params, 'modules', []), + }, triggers: { list: () => {}, bindings: {