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

# Personnaliser la gestion des courriels et des tickets avec Management API

> Utilisez Management API pour envoyer des courriels en dehors des flux standard, créer des tickets à la demande et personnaliser le comportement des tickets.

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

Le <Tooltip tip="Management API : un produit qui permet aux clients d’effectuer des tâches administratives." cta="Voir le glossaire" href="/fr-CA/docs/glossary?term=Management+API">Management API</Tooltip> comporte plusieurs points de terminaison liés aux courriels que vous pouvez utiliser pour bonifier les flux de courriel standard. Par exemple, vous pouvez :

* Envoyer certains types de courriels (comme les courriels d’inscription MFA) sur demande

* Créer des tickets, c’est-à-dire des URL générées pour des actions liées aux flux de courriel (comme les réinitialisations de mot de passe), sur demande

* Personnaliser le comportement des tickets, par exemple en définissant des URL **Return To** différentes pour les courriels de vérification ou en configurant des tickets de réinitialisation du mot de passe pour vérifier l’adresse de courriel de l’utilisateur.

<div id="verification-email-endpoints">
  ## Points de terminaison des courriels de vérification
</div>

En dehors du processus de vérification du courriel, vous pouvez utiliser le [point de terminaison d’envoi d’un courriel de vérification d’adresse de courriel](https://auth0.com/docs/api/management/v2/jobs/post_verification_email) pour envoyer ces courriels à la demande.

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

De plus, vous pouvez utiliser le point de terminaison [Créer un ticket de vérification du courriel](https://auth0.com/docs/api/management/v2/tickets/post-email-verification) pour générer des tickets de vérification du courriel.

<div id="password-change-endpoints">
  ## Points de terminaison de changement de mot de passe
</div>

En dehors du flux de lien de changement de mot de passe, vous pouvez utiliser le point de terminaison [Créer un ticket de changement de mot de passe](https://auth0.com/docs/api/management/v2/tickets/post-password-change) pour générer des tickets de changement de mot de passe.

Le modèle de lien de changement de mot de passe comporte un champ **Rediriger vers** qui prend en charge des variables, comme l’ID de l’utilisateur. Pour un contrôle plus précis, vous pouvez envoyer par courriel à l’utilisateur un ticket de réinitialisation du mot de passe que vous générez à l’aide de ce point de terminaison et définir le `result_url` en fonction de vos propres critères.

Ce point de terminaison vous permet également de choisir si le courriel de l’utilisateur doit être vérifié ou si l’adresse de courriel doit être incluse dans le `return_url`.

<div id="mfa-enrollment-endpoints">
  ## Points de terminaison pour l'inscription MFA
</div>

En dehors du flux d'inscription MFA, vous pouvez utiliser le point de terminaison [Create a multi-factor authentication enrollment ticket](https://auth0.com/docs/api/management/v2/guardian/post-ticket) pour générer des tickets d'inscription MFA et, au besoin, envoyer un courriel contenant le ticket créé.

Lorsque vous utilisez Universal Login, ce point de terminaison vous permet aussi de préciser le facteur avec lequel l'utilisateur doit s'inscrire et si un utilisateur ayant déjà effectué son inscription MFA peut ajouter des facteurs supplémentaires.
