> ## 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.

# Personaliza la gestión de correos electrónicos y tickets con la Management API

> Usa la Management API para enviar correos electrónicos fuera de los flujos de trabajo estándar, crear tickets según sea necesario y personalizar su comportamiento.

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>;
};

La <Tooltip tip="Management API: Un producto que permite a los clientes realizar tareas administrativas." cta="Ver glosario" href="/es/docs/glossary?term=Management+API">Management API</Tooltip> incluye varios endpoints relacionados con el correo electrónico que puede usar para complementar los flujos de correo electrónico estándar. Por ejemplo, puede:

* Enviar algunos tipos de correo electrónico (como los correos de inscripción en MFA) cuando lo necesite

* Crear tickets, que son URL generadas para acciones de flujos de correo electrónico (como el restablecimiento de contraseña), cuando lo necesite

* Personalizar el comportamiento de los tickets, por ejemplo, definiendo distintas URL de **Return To** para los correos electrónicos de verificación o configurando tickets de restablecimiento de contraseña para verificar la dirección de correo electrónico del usuario.

<div id="verification-email-endpoints">
  ## Endpoints de verificación por correo electrónico
</div>

Fuera del flujo de verificación por correo electrónico, puede usar el [endpoint para enviar un correo electrónico de verificación de dirección de correo electrónico](https://auth0.com/docs/api/management/v2/jobs/post_verification_email) para enviar estos correos electrónicos cuando sea necesario.

<AuthCodeGroup>
  ```bash cURL theme={null}
  curl --request POST \
    --url 'https://{yourDomain}/api/v2/jobs/verification-email' \
    --header 'authorization: Bearer <YOUR_MANAGEMENT_API_TOKEN>' \
    --header 'content-type: application/json' \
    --data '{ "user_id": "{USER_ID_OF_EMAIL_RECIPIENT}", "client_id": "{YOUR_APP_CLIENT_ID}","identity": {"user_id": "5457edea1b8f22891a000004","provider": "google-oauth2"}, "organization_id": "{YOUR_ORGANIZATION_ID}" }'
  ```

  ```csharp C# theme={null}
  var client = new RestClient("https://{yourDomain}/api/v2/jobs/verification-email");
  var request = new RestRequest(Method.POST);
  request.AddHeader("content-type", "application/json");
  request.AddHeader("authorization", "Bearer {YOUR_MANAGEMENT_API_TOKEN}");
  request.AddParameter("application/json", "{ "user_id": "{USER_ID_OF_EMAIL_RECIPIENT}", "client_id": "{YOUR_APP_CLIENT_ID}","identity": {"user_id": "5457edea1b8f22891a000004","provider": "google-oauth2"}, "organization_id": "{YOUR_ORGANIZATION_ID}" }", ParameterType.RequestBody);
  IRestResponse response = client.Execute(request);
  ```

  ```go Go theme={null}
  package main

  import (
      "fmt"
      "strings"
      "net/http"
      "io/ioutil"
  )

  func main() {
      url := "https://{yourDomain}/api/v2/jobs/verification-email"
      payload := strings.NewReader("{ "user_id": "{USER_ID_OF_EMAIL_RECIPIENT}", "client_id": "{YOUR_APP_CLIENT_ID}","identity": {"user_id": "5457edea1b8f22891a000004","provider": "google-oauth2"}, "organization_id": "{YOUR_ORGANIZATION_ID}" }")

      req, _ := http.NewRequest("POST", url, payload)
      req.Header.Add("content-type", "application/json")
      req.Header.Add("authorization", "Bearer {YOUR_MANAGEMENT_API_TOKEN}")

      res, _ := http.DefaultClient.Do(req)
      defer res.Body.Close()
      body, _ := ioutil.ReadAll(res.Body)

      fmt.Println(res)
      fmt.Println(string(body))
  }
  ```

  ```java Java theme={null}
  HttpResponse<String> response = Unirest.post("https://{yourDomain}/api/v2/jobs/verification-email")
      .header("content-type", "application/json")
      .header("authorization", "Bearer <YOUR_MANAGEMENT_API_TOKEN>")
      .body("{ "user_id": "{USER_ID_OF_EMAIL_RECIPIENT}", "client_id": "{YOUR_APP_CLIENT_ID}","identity": {"user_id": "5457edea1b8f22891a000004","provider": "google-oauth2"}, "organization_id": "{YOUR_ORGANIZATION_ID}" }")
      .asString();
  ```

  ```javascript Node.JS theme={null}
  var axios = require("axios").default;

  var options = {
      method: 'POST',
      url: 'https://{yourDomain}/api/v2/jobs/verification-email',
      headers: {
          'content-type': 'application/json',
          authorization: 'Bearer {YOUR_MANAGEMENT_API_TOKEN}'
      },
      data: {
          user_id: '{USER_ID_OF_EMAIL_RECIPIENT}',
          client_id: '{YOUR_APP_CLIENT_ID}',
          identity: {user_id: '5457edea1b8f22891a000004', provider: 'google-oauth2'},
          organization_id: '{YOUR_ORGANIZATION_ID}'
      }
  };

  axios.request(options).then(function (response) {
      console.log(response.data);
  }).catch(function (error) {
      console.error(error);
  });
  ```

  ```objc Obj-C theme={null}
  #import <Foundation/Foundation.h>

  NSDictionary *headers = @{ @"content-type": @"application/json",
                             @"authorization": @"Bearer {YOUR_MANAGEMENT_API_TOKEN}" };
  NSDictionary *parameters = @{ @"user_id": @"{USER_ID_OF_EMAIL_RECIPIENT}",
                                @"client_id": @"{YOUR_APP_CLIENT_ID}",
                                @"identity": @{ @"user_id": @"5457edea1b8f22891a000004", @"provider": @"google-oauth2" },
                                @"organization_id": @"{YOUR_ORGANIZATION_ID}" };

  NSData *postData = [NSJSONSerialization dataWithJSONObject:parameters options:0 error:nil];

  NSMutableURLRequest *request = [NSMutableURLRequest
      requestWithURL:[NSURL URLWithString:@"https://{yourDomain}/api/v2/jobs/verification-email"]
      cachePolicy:NSURLRequestUseProtocolCachePolicy
      timeoutInterval:10.0
  ];

  [request setHTTPMethod:@"POST"];
  [request setAllHTTPHeaderFields:headers];
  [request setHTTPBody:postData];

  NSURLSession *session = [NSURLSession sharedSession];
  NSURLSessionDataTask *dataTask = [
      session dataTaskWithRequest:request
      completionHandler:^( NSData *data, NSURLResponse *response, NSError *error) {
          if (error) {
              NSLog(@"%@", error);
          } else {
              NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;
              NSLog(@"%@", httpResponse);
          }
      }
  ];
  [dataTask resume];
  ```

  ```php PHP theme={null}
  $curl = curl_init();

  curl_setopt_array($curl, [
      CURLOPT_URL => "https://{yourDomain}/api/v2/jobs/verification-email",
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_ENCODING => "",
      CURLOPT_MAXREDIRS => 10,
      CURLOPT_TIMEOUT => 30,
      CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
      CURLOPT_CUSTOMREQUEST => "POST",
      CURLOPT_POSTFIELDS => "{ "user_id": "{USER_ID_OF_EMAIL_RECIPIENT}", "client_id": "{YOUR_APP_CLIENT_ID}","identity": {"user_id": "5457edea1b8f22891a000004","provider": "google-oauth2"}, "organization_id": "{YOUR_ORGANIZATION_ID}" }",
      CURLOPT_HTTPHEADER => [
          "authorization: Bearer {YOUR_MANAGEMENT_API_TOKEN}",
          "content-type: application/json"
      ],
  ]);

  $response = curl_exec($curl);
  $err = curl_error($curl);

  curl_close($curl);

  if ($err) {
      echo "cURL Error #:" . $err;
  } else {
      echo $response;
  }
  ```

  ```python Python theme={null}
  import http.client

  conn = http.client.HTTPSConnection("")
  payload = "{ "user_id": "{USER_ID_OF_EMAIL_RECIPIENT}", "client_id": "{YOUR_APP_CLIENT_ID}","identity": {"user_id": "5457edea1b8f22891a000004","provider": "google-oauth2"}, "organization_id": "{YOUR_ORGANIZATION_ID}" }"
  headers = {
      'content-type': "application/json",
      'authorization': "Bearer {YOUR_MANAGEMENT_API_TOKEN}"
  }

  conn.request("POST", "/{yourDomain}/api/v2/jobs/verification-email", payload, headers)

  res = conn.getresponse()
  data = res.read()

  print(data.decode("utf-8"))
  ```

  ```ruby Ruby theme={null}
  require 'uri'
  require 'net/http'
  require 'openssl'

  url = URI("https://{yourDomain}/api/v2/jobs/verification-email")

  http = Net::HTTP.new(url.host, url.port)
  http.use_ssl = true
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE

  request = Net::HTTP::Post.new(url)
  request["content-type"] = 'application/json'
  request["authorization"] = 'Bearer {YOUR_MANAGEMENT_API_TOKEN}'
  request.body = "{ "user_id": "{USER_ID_OF_EMAIL_RECIPIENT}", "client_id": "{YOUR_APP_CLIENT_ID}","identity": {"user_id": "5457edea1b8f22891a000004","provider": "google-oauth2"}, "organization_id": "{YOUR_ORGANIZATION_ID}" }"

  response = http.request(request)
  puts response.read_body
  ```

  ```swift Swift theme={null}
  import Foundation

  let headers = [
      "content-type": "application/json",
      "authorization": "Bearer {YOUR_MANAGEMENT_API_TOKEN}"
  ]
  let parameters = [
      "user_id": "{USER_ID_OF_EMAIL_RECIPIENT}",
      "client_id": "{YOUR_APP_CLIENT_ID}",
      "identity": [
          "user_id": "5457edea1b8f22891a000004",
          "provider": "google-oauth2"
      ],
      "organization_id": "{YOUR_ORGANIZATION_ID}"
  ] as [String : Any]

  let postData = JSONSerialization.data(withJSONObject: parameters, options: [])
  let request = NSMutableURLRequest(
      url: NSURL(string: "https://{yourDomain}/api/v2/jobs/verification-email")! as URL,
      cachePolicy: .useProtocolCachePolicy,
      timeoutInterval: 10.0
  )

  request.httpMethod = "POST"
  request.allHTTPHeaderFields = headers
  request.httpBody = postData as Data

  let session = URLSession.shared
  let dataTask = session.dataTask(
      with: request as URLRequest,
      completionHandler: { (data, response, error) -> Void in
          if (error != nil) {
              print(error)
          } else {
              let httpResponse = response as? HTTPURLResponse
              print(httpResponse)
          }
      }
  )

  dataTask.resume()
  ```
</AuthCodeGroup>

Además, puede usar el endpoint [Create an email verification ticket](https://auth0.com/docs/api/management/v2/tickets/post-email-verification) para generar tickets de verificación de correo electrónico.

<div id="password-change-endpoints">
  ## Endpoints de cambio de contraseña
</div>

Además del flujo del enlace de cambio de contraseña, puede usar el endpoint [Create a password change ticket](https://auth0.com/docs/api/management/v2/tickets/post-password-change) para generar tickets de cambio de contraseña.

La plantilla del enlace de cambio de contraseña tiene un campo **Redirect To** que admite variables, como el id del usuario. Para un control más preciso, puede enviar al usuario por correo electrónico un ticket de restablecimiento de contraseña generado con este endpoint y establecer la `result_url` según sus propios criterios.

Este endpoint también le permite personalizar si se debe verificar el correo electrónico del usuario o incluir la dirección de correo electrónico como parte de la `return_url`.

<div id="mfa-enrollment-endpoints">
  ## Endpoints de inscripción en MFA
</div>

Fuera del flujo de inscripción en MFA, puede usar el endpoint [Crear un ticket de inscripción en autenticación multifactor](https://auth0.com/docs/api/management/v2/guardian/post-ticket) para generar tickets de inscripción en MFA y, opcionalmente, enviar un correo electrónico con el ticket generado.

Al usar Universal Login, este endpoint también le permite especificar con qué factor debe inscribirse el usuario y si un usuario que ya está inscrito en MFA puede inscribirse en factores adicionales.
