> ## Documentation Index
> Fetch the complete documentation index at: https://translations.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Describe cómo usar los módulos de Actions en Auth0

# Crea tu primer módulo de Action

export const AuthCodeGroup = ({children, dropdown}) => {
  const [processedChildren, setProcessedChildren] = useState(children);
  useEffect(() => {
    let unsubscribe = null;
    function init() {
      unsubscribe = window.autorun(() => {
        const processChildren = node => {
          if (typeof node === "string") {
            let processedNode = node;
            for (const [key, value] of window.rootStore.variableStore.values.entries()) {
              const escapedKey = key.replaceAll(/[.*+?^${}()|[\]\\]/g, (String.raw)`\$&`);
              processedNode = processedNode.replaceAll(new RegExp(escapedKey, "g"), value);
            }
            return processedNode;
          } else if (Array.isArray(node)) {
            return node.map(processChildren);
          } else if (node && node.props && node.props.children) {
            return {
              ...node,
              props: {
                ...node.props,
                children: processChildren(node.props.children)
              }
            };
          }
          return node;
        };
        setProcessedChildren(processChildren(children));
      });
    }
    if (window.rootStore) {
      init();
    } else {
      window.addEventListener("adu:storeReady", init);
    }
    return () => {
      window.removeEventListener("adu:storeReady", init);
      unsubscribe?.();
    };
  }, [children]);
  return <CodeGroup dropdown={dropdown}>{processedChildren}</CodeGroup>;
};

<div id="get-started">
  ## Primeros pasos
</div>

Use la guía de inicio rápido para escribir un módulo de Action y usarlo desde una Action para enviar registros a un servicio externo.

<Steps>
  <Step title="Crear un módulo para una Action" titleSize="h3" stepNumber={1}>
    Para usar un módulo de Action en una Action específica, primero debes crear el módulo de Action y luego agregarlo o usarlo en una Action.

    <Tabs>
      <Tab title="Dashboard">
        1. Ve a [Auth0 Dashboard > Actions > Library](https://manage.auth0.com/#/actions/library) y luego selecciona **Modules**.
        2. Selecciona **Create Module**.
        3. Introduce un **Name**.
        4. Selecciona **Create**.

        Auth0 muestra el editor de código

        <Frame>
          <img src="https://mintcdn.com/translations/xwVvTWJUElMm5YAK/docs/images/customize/actions/modules/actions-modules-new-module.png?fit=max&auto=format&n=xwVvTWJUElMm5YAK&q=85&s=67daedf547f0fc7311d40c080fb8b3fb" alt="Módulos de Actions: nuevo módulo de Action" width="1414" height="669" data-path="docs/images/customize/actions/modules/actions-modules-new-module.png" />
        </Frame>
      </Tab>
    </Tabs>
  </Step>

  <Step title="Agregar un secreto" titleSize="h3" stepNumber={2}>
    Cada Action Module puede contener pares clave/valor de secretos. Úsalos para almacenar información confidencial, como claves de API, certificados y valores que pueden variar entre entornos.

    <Tabs>
      <Tab title="Dashboard">
        Almacenemos la URL del servicio externo como un Secret.

        1. Selecciona el ícono **<svg style={{ display: 'inline' }} width="20" height="20" viewBox="0 0 24 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="sc-kJNqSH"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.573 2.06l1.409 1.42-1.192 1.182L22.65 7.5l-4.756 4.72-2.86-2.838-2.783 2.764a6.196 6.196 0 011.196 3.63 6.172 6.172 0 01-1.832 4.41 6.277 6.277 0 01-8.853-.03l-.007-.008A6.183 6.183 0 011 15.782a6.184 6.184 0 011.831-4.335 6.271 6.271 0 017.987-.696l8.755-8.691zm-9.335 10.798l-.045-.043a4.264 4.264 0 00-2.987-1.182 4.262 4.262 0 00-2.966 1.233A4.184 4.184 0 003 15.8a4.183 4.183 0 001.185 2.95 4.276 4.276 0 006.022.016 4.2 4.2 0 001.24-2.984 4.171 4.171 0 00-1.21-2.924zm6.216-4.885l1.44 1.43L19.811 7.5l-1.44-1.43-1.917 1.903z" fill="inherit" /></svg>** en la barra lateral izquierda del editor de código.
        2. Selecciona **Add Secret**.
        3. Introduce `SERVICE_URL` como **nombre**.
        4. Introduce la URL del servicio externo en el campo **Value**.
        5. Selecciona **Create**.

        <Frame>
          <img src="https://mintcdn.com/translations/xwVvTWJUElMm5YAK/docs/images/customize/actions/modules/actions-modules-secret.png?fit=max&auto=format&n=xwVvTWJUElMm5YAK&q=85&s=0575d00f98c2919bdb74252317b5e79a" alt="Módulos de Actions: Secret agregado" width="1411" height="736" data-path="docs/images/customize/actions/modules/actions-modules-secret.png" />
        </Frame>

        Auth0 agrega el Secret a la lista de Secrets del Action Module.
      </Tab>
    </Tabs>

    **Paso adicional:** Repite los pasos para almacenar un `API_KEY` como Secret que enviarás en los encabezados al servicio externo con cada solicitud.

    <Callout icon="file-lines" color="#0EA5E9" iconType="regular">
      Una vez que creas un Secret, Auth0 nunca vuelve a mostrar su valor. Auth0 cifra todos los Secrets y los almacena de forma segura.
    </Callout>

    <Warning>
      Cada **Action Module Secret** es independiente de los **Actions Modules** y **Actions Secrets**.
    </Warning>

    <Callout icon="file-lines" color="#0EA5E9" iconType="regular">
      Usa **Secrets** en el Action Module escribiendo `actions.secrets.[secret_key]`.
    </Callout>
  </Step>

  <Step title="Añadir lógica personalizada" titleSize="h3" stepNumber={3}>
    Ahora, añada el siguiente código a su módulo de Action.

    <Tabs>
      <Tab title="Dashboard">
        Añada el siguiente código a su módulo de Action:

        ```javascript lines theme={null}
        module.exports = {
          sendLog: async (code, message) => {
            try {
              await fetch(actions.secrets.SERVICE_URL, {
                method: 'POST',
                headers: {
                  'X-API-Key': actions.secrets.API_KEY,
                },
                body: JSON.stringify({
                  code,
                  message
                }),
              });

              console.log({
                code,
                message
              });
            } catch (err) {
              throw new Error('External service failure');
            }

            return;
          }
        };
        ```
      </Tab>
    </Tabs>

    <Callout icon="file-lines" color="#0EA5E9" iconType="regular">
      Tenga en cuenta:

      * [Pautas de codificación](/es/docs/customize/actions/action-coding-guidelines#actions-modules)
      * [Limitaciones](/es/docs/customize/actions/limitations#actions-modules)
    </Callout>
  </Step>

  <Step title="Guardar el borrador" titleSize="h3" stepNumber={4}>
    Puedes guardar un borrador de tu módulo de Action.

    <Tabs>
      <Tab title="Dashboard">
        1. Selecciona **Save Draft**.

        <Frame>
          <img src="https://mintcdn.com/translations/xwVvTWJUElMm5YAK/docs/images/customize/actions/modules/actions-modules-draft.png?fit=max&auto=format&n=xwVvTWJUElMm5YAK&q=85&s=44d6d4a54d1c27138c3800b08235adea" alt="Módulos de Actions: borrador guardado" width="1417" height="733" data-path="docs/images/customize/actions/modules/actions-modules-draft.png" />
        </Frame>
      </Tab>
    </Tabs>

    Esto guarda el módulo de Action como borrador sin publicar una nueva versión, por lo que no afecta a las Actions que lo usan.
  </Step>

  <Step title="Publica el módulo de Action" titleSize="h3" stepNumber={5}>
    Una vez que estés conforme con el código del Action Module, es momento de **publicarlo**.

    <Tabs>
      <Tab title="Dashboard">
        1. Selecciona **Publicar**.

        <Callout icon="file-lines" color="#0EA5E9" iconType="regular">
          Al publicar un Action Module, se crea una instantánea de ese momento y se registra como una **versión del Action Module**.
        </Callout>

        2. Selecciona **Ver historial de versiones**.

        <Frame>
          <img src="https://mintcdn.com/translations/xwVvTWJUElMm5YAK/docs/images/customize/actions/modules/actions-modules-published-version.png?fit=max&auto=format&n=xwVvTWJUElMm5YAK&q=85&s=c5bd3cb6b2724ffc8b8054a21ae42f65" alt="Módulos de Actions - Historial de versiones" width="1431" height="735" data-path="docs/images/customize/actions/modules/actions-modules-published-version.png" />
        </Frame>

        Auth0 muestra la lista de versiones del Action Module, incluido el borrador.
      </Tab>
    </Tabs>

    Ahora puedes empezar a usar el Action Module en una Action.

    <Warning>
      Cada **Action** debe hacer referencia explícitamente a la **versión del Action Module**, lo que evita actualizaciones automáticas que podrían introducir errores inesperados.
    </Warning>
  </Step>

  <Step title="Agregar el módulo de Action en una Action" titleSize="h3" stepNumber={6}>
    Agreguemos el módulo de Action en una Action.

    <Tabs>
      <Tab title="Dashboard">
        1. Vaya a [Auth0 Dashboard > Actions > Library](https://manage.auth0.com/#/actions/library) y, a continuación, seleccione una **Action** específica.
        2. Una vez en el editor de Action, selecciona el ícono **<svg style={{ display: 'inline' }} width="20" height="20" viewBox="0 0 24 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="sc-hQYogJ"><path fill-rule="evenodd" clip-rule="evenodd" d="M9.388 4.07A3.717 3.717 0 0112 3c.977 0 1.917.383 2.612 1.07A3.65 3.65 0 0115.7 6.667a3.65 3.65 0 01-1.028 2.537l1.683 2.778-1.71 1.036-1.701-2.806a3.733 3.733 0 01-3.556-.948A3.65 3.65 0 018.3 6.667c0-.977.393-1.91 1.088-2.597zM12 5c-.455 0-.889.179-1.207.493a1.65 1.65 0 00-.493 1.174c0 .438.176.86.493 1.174.318.314.752.492 1.207.492.455 0 .889-.178 1.207-.492a1.65 1.65 0 00.493-1.174c0-.438-.176-.86-.493-1.174A1.717 1.717 0 0012 5zM6.697 13.802l1.98-2.87 1.646 1.136-1.911 2.77c.633.677.988 1.567.988 2.495a3.65 3.65 0 01-1.088 2.597A3.717 3.717 0 015.7 21a3.717 3.717 0 01-2.612-1.07A3.65 3.65 0 012 17.333c0-.976.393-1.91 1.088-2.597a3.717 3.717 0 013.61-.934zM5.7 15.667c-.455 0-.889.178-1.206.492A1.65 1.65 0 004 17.333c0 .438.176.86.494 1.175.317.313.751.492 1.206.492.455 0 .889-.179 1.206-.492a1.65 1.65 0 00.494-1.175c0-.438-.176-.86-.494-1.174a1.717 1.717 0 00-1.206-.492zM15.688 14.736a3.717 3.717 0 012.612-1.07c.977 0 1.917.384 2.612 1.07A3.65 3.65 0 0122 17.333a3.65 3.65 0 01-1.088 2.597A3.717 3.717 0 0118.3 21a3.717 3.717 0 01-2.612-1.07 3.66 3.66 0 01-.948-1.597H11v-2h3.74c.172-.6.496-1.15.948-1.597zm2.612.93c-.455 0-.889.18-1.207.493a1.65 1.65 0 00-.493 1.174c0 .438.176.86.493 1.175.318.313.752.492 1.207.492.455 0 .889-.179 1.206-.492A1.65 1.65 0 0020 17.332c0-.438-.176-.86-.494-1.174a1.717 1.717 0 00-1.206-.492z" fill="inherit" /></svg>** en la barra lateral izquierda.
        3. Seleccione **Add Module**.
        4. Seleccione el **nombre** y la **versión** del módulo.
        5. Selecciona **Agregar**.

        <Frame>
          <img src="https://mintcdn.com/translations/xwVvTWJUElMm5YAK/docs/images/customize/actions/modules/actions-modules-add-module.png?fit=max&auto=format&n=xwVvTWJUElMm5YAK&q=85&s=edfe210217e6d875a10eacea0dd2d213" alt="Actions - Agregar módulo de Action" width="1418" height="716" data-path="docs/images/customize/actions/modules/actions-modules-add-module.png" />
        </Frame>
      </Tab>
    </Tabs>
  </Step>

  <Step title="Usa el módulo de Action en Action" titleSize="h3" stepNumber={7}>
    Ahora, usemos el Action Module en la Action.

    <Tabs>
      <Tab title="Dashboard">
        1. Agrega la instrucción **require**.

        ```javascript lines theme={null}
        const logger = require('actions:logger');
        ```

        <Callout icon="file-lines" color="#0EA5E9" iconType="regular">
          La instrucción **require** hace referencia al Action Module con el formato **actions:\[module-name]**.
        </Callout>

        2. Agrega la llamada a `logger.sendLog` en la **función Action**, donde quieras enviar registros.

        ```javascript lines theme={null}
        await logger.sendLog('logger_success', 'Your Action was able to use the Logger Action Module');
        ```

        3. Selecciona **Deploy** para la Action.

        <Frame>
          <img src="https://mintcdn.com/translations/xwVvTWJUElMm5YAK/docs/images/customize/actions/modules/actions-modules-use-module.png?fit=max&auto=format&n=xwVvTWJUElMm5YAK&q=85&s=6b0d36fea2bfb8b4eeef8c46ec8b4b82" alt="Actions - Use Action Module" width="1418" height="674" data-path="docs/images/customize/actions/modules/actions-modules-use-module.png" />
        </Frame>
      </Tab>
    </Tabs>

    <Warning>
      Recuerda vincular la Action a un Trigger.
    </Warning>
  </Step>
</Steps>

<Check>
  **Punto de control**

  Ahora debería tener un **módulo de Action** completamente funcional que ya utiliza una **Action**.
</Check>

***

<div id="advanced-usage">
  ## Uso avanzado
</div>

<Accordion title="Dependencias de NPM">
  Cada **módulo de Action** puede agregar y usar **[dependencias de NPM](https://www.npmjs.com/)**.

  <Tabs>
    <Tab title="Dashboard">
      1. Selecciona el icono **<svg style={{ display: 'inline' }} width="20" height="20" viewBox="0 0 24 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="sc-lgWczb"><path fill-rule="evenodd" clip-rule="evenodd" d="M3.543 5.02l7.197-3.715h.003a2.75 2.75 0 012.514 0h.003l7.197 3.715h.002A2.864 2.864 0 0122 7.573v8.853a2.866 2.866 0 01-1.543 2.553l-7.197 3.714a2.75 2.75 0 01-2.529 0l-7.2-3.715-.002-.002A2.865 2.865 0 012 16.413v-8.84A2.865 2.865 0 013.543 5.02zm8.113-1.937l-1.97 1.018L16.5 7.618l2.315-1.195-6.47-3.34h-.001a.75.75 0 00-.688 0zM20 8.063l-7 3.611v8.902l6.542-3.377h.003a.865.865 0 00.455-.774V8.062zM11 20.58v-8.905L4 8.062v8.36a.866.866 0 00.45.778h.001L11 20.58zM5.185 6.423L12 9.94l2.32-1.197-6.815-3.517-2.32 1.197z" fill="inherit" /></svg>** de la barra lateral izquierda del editor de código.
      2. Selecciona **Agregar dependencia**.
      3. Introduce el **nombre** del **paquete NPM**.
      4. Introduce la **versión** del **paquete NPM**.
      5. Selecciona **Crear**.

      <Frame>
        <img src="https://mintcdn.com/translations/xwVvTWJUElMm5YAK/docs/images/customize/actions/modules/actions-modules-dependency.png?fit=max&auto=format&n=xwVvTWJUElMm5YAK&q=85&s=8446218fe5bd61de06e54c22d0d058a0" alt="Módulos de Actions: dependencia agregada" width="1414" height="730" data-path="docs/images/customize/actions/modules/actions-modules-dependency.png" />
      </Frame>

      Auth0 agrega la dependencia a la lista de dependencias del módulo de Action.
    </Tab>
  </Tabs>

  <Callout icon="file-lines" color="#0EA5E9" iconType="regular">
    Usa las **dependencias** de la lista en el módulo de Action importándolas con `require('[package-name]')`.
  </Callout>

  <Warning>
    Cuando guardas esta Action, Auth0 resuelve la versión más reciente de tu dependencia y la sustituye por un número de versión específico para evitar que futuras actualizaciones del paquete hagan que tu Action deje de funcionar.

    Puedes indicar una versión específica en lugar de la más reciente.
  </Warning>
</Accordion>
