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

# Comment répertorier et rechercher des utilisateurs à l’aide de requêtes de recherche

> Récupérez la liste de tous les profils utilisateur et filtrez les résultats à l’aide de chaînes de requête de recherche Lucene.

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

export const AuthCodeBlock = ({filename, icon, language, highlight, children}) => {
  const [displayText, setDisplayText] = useState(children);
  const [copyText, setCopyText] = useState(children);
  const wrapperRef = React.useRef(null);
  useEffect(() => {
    let unsubscribe = null;
    function init() {
      if (!window.autorun || !window.rootStore) {
        return;
      }
      unsubscribe = window.autorun(() => {
        let processedChildrenForDisplay = children;
        let processedChildrenForCopy = children;
        for (const [key, value] of window.rootStore.variableStore.values.entries()) {
          const escapedKey = key.replaceAll(/[.*+?^${}()|[\]\\]/g, (String.raw)`\$&`);
          let displayValue = value;
          if (key === "{yourClientSecret}" && value !== "{yourClientSecret}") {
            displayValue = value.substring(0, 3) + "*****MASQUÉ*****";
          }
          processedChildrenForDisplay = processedChildrenForDisplay.replaceAll(new RegExp(escapedKey, "g"), displayValue);
          processedChildrenForCopy = processedChildrenForCopy.replaceAll(new RegExp(escapedKey, "g"), value);
        }
        setDisplayText(processedChildrenForDisplay);
        setCopyText(processedChildrenForCopy);
      });
    }
    if (window.rootStore) {
      init();
    } else {
      window.addEventListener("adu:storeReady", init);
    }
    return () => {
      window.removeEventListener("adu:storeReady", init);
      unsubscribe?.();
    };
  }, [children]);
  useEffect(() => {
    if (!wrapperRef.current) return;
    const originalWriteText = navigator.clipboard.writeText.bind(navigator.clipboard);
    let isOverriding = false;
    const handleClick = e => {
      const button = e.target.closest('[data-testid="copy-code-button"]');
      if (!button || !wrapperRef.current.contains(button)) return;
      isOverriding = true;
      navigator.clipboard.writeText = text => {
        if (isOverriding) {
          isOverriding = false;
          navigator.clipboard.writeText = originalWriteText;
          return originalWriteText(copyText);
        }
        return originalWriteText(text);
      };
      setTimeout(() => {
        if (isOverriding) {
          isOverriding = false;
          navigator.clipboard.writeText = originalWriteText;
        }
      }, 100);
    };
    const wrapper = wrapperRef.current;
    wrapper.addEventListener('click', handleClick, true);
    return () => {
      wrapper.removeEventListener('click', handleClick, true);
      if (navigator.clipboard.writeText !== originalWriteText) {
        navigator.clipboard.writeText = originalWriteText;
      }
    };
  }, [copyText]);
  return <div ref={wrapperRef}>
      <CodeBlock filename={filename} icon={icon} language={language} lines highlight={highlight}>
        {displayText}
      </CodeBlock>
    </div>;
};

À l’aide du Auth0 Dashboard ou de la Management API, vous pouvez récupérer une liste d’utilisateurs et filtrer les résultats selon les critères de recherche de votre choix.

<h2 id="list-and-search-for-users">
  Lister et rechercher des utilisateurs
</h2>

<Tabs>
  <Tab title="Auth0 Dashboard">
    Pour afficher la liste des utilisateurs, accédez à [Dashboard > User Management > Users](https://manage.auth0.com/#/users).

    <Frame>
      <img src="https://mintlify.s3.us-west-1.amazonaws.com/auth0-automated-translations-update/images/users/users.png" alt="La page Users dans l’Auth0 Dashboard" />
    </Frame>

    Le champ de recherche et le menu déroulant situés en haut de la page vous permettent d’effectuer une recherche selon les propriétés suivantes :

    * Utilisateur
    * Courriel
    * Fournisseur d’identité
    * Connexion
    * ID d’organisation
    * Nombre de connexions
    * Dernière connexion
    * Numéro de téléphone

    Vous pouvez également sélectionner **Lucene Syntax (Advanced)** pour définir des critères de recherche. La [référence de la syntaxe des requêtes de recherche](./user-search-query-syntax) contient davantage d’information sur les fonctionnalités de recherche prises en charge et des exemples de requêtes.
  </Tab>

  <Tab title="Management API">
    Pour obtenir la liste de tous les utilisateurs avec la Management API, effectuez une requête à l’[endpoint List or Search Users](/docs/fr-ca/api/management/v2/users/get-users) (`GET /users`). Pour rechercher des utilisateurs, précisez les critères de recherche à l’aide du [query parameter `q`](/docs/fr-ca/api/management/v2/users/get-users#parameter-q) et d’une [query string de recherche Lucene](./user-search-query-syntax).

    <Warning>
      **Le terminal List or Search Users ne convient pas aux chemins sensibles à la latence ou pour lesquels l’exactitude est essentielle.**

      Ce terminal est à cohérence éventuelle et impose une courte limite de durée aux requêtes. Apprenez-en davantage sur les [solutions de rechange pour la recherche d’utilisateurs, les limites et les pratiques exemplaires en matière de performance](/docs/fr-ca/manage-users/user-search/user-search-best-practices).
    </Warning>

    Par exemple, pour rechercher un utilisateur dont le nom est exactement `example` :

    <Callout icon="file-lines" color="#0EA5E9" iconType="regular">Vous utilisez l'Auth0 CLI? Si ce n'est pas déjà fait, [configurez et authentifiez votre session CLI](/docs/fr-ca/deploy-monitor/auth0-cli) avant d'exécuter cette commande.</Callout>

    <AuthCodeGroup>
      ```bash Auth0 CLI theme={null}
      auth0 api get "users" \
        -q "q=name%3A%22example%22" \
        -q "search_engine=v3"
      ```

      ```bash curl theme={null}
      curl --request GET \
        --url 'https://{yourDomain}/api/v2/users?q=name%3A%22example%22&search_engine=v3' \
        --header 'authorization: Bearer {yourMgmtApiAccessToken}'
      ```

      ```csharp C# theme={null}
      var client = new RestClient("https://{yourDomain}/api/v2/users?q=name%3A%22example%22&search_engine=v3");
      var request = new RestRequest(Method.GET);
      request.AddHeader("authorization", "Bearer {yourMgmtApiAccessToken}");
      IRestResponse response = client.Execute(request);
      ```

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

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

      func main() {
      	url := "https://{yourDomain}/api/v2/users?q=name%3A%22example%22&search_engine=v3"
      	req, _ := http.NewRequest("GET", url, nil)
      	req.Header.Add("authorization", "Bearer {yourMgmtApiAccessToken}")

      	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.get("https://{yourDomain}/api/v2/users?q=name%3A%22example%22&search_engine=v3")
        .header("authorization", "Bearer {yourMgmtApiAccessToken}")
        .asString();
      ```

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

      var options = {
        method: 'GET',
        url: 'https://{yourDomain}/api/v2/users',
        params: {q: 'name:"example"', search_engine: 'v3'},
        headers: {authorization: 'Bearer {yourMgmtApiAccessToken}'}
      };

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

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

      curl_setopt_array($curl, [
        CURLOPT_URL => "https://{yourDomain}/api/v2/users?q=name%3A%22example%22&search_engine=v3",
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_ENCODING => "",
        CURLOPT_MAXREDIRS => 10,
        CURLOPT_TIMEOUT => 30,
        CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
        CURLOPT_CUSTOMREQUEST => "GET",
        CURLOPT_HTTPHEADER => [
          "authorization: Bearer {yourMgmtApiAccessToken}"
        ],
      ]);

      $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("")
      headers = { 'authorization': "Bearer {yourMgmtApiAccessToken}" }
      conn.request("GET", "/{yourDomain}/api/v2/users?q=name%3A%22example%22&search_engine=v3", headers=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/users?q=name%3A%22example%22&search_engine=v3")

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

      request = Net::HTTP::Get.new(url)
      request["authorization"] = 'Bearer {yourMgmtApiAccessToken}'

      response = http.request(request)
      puts response.read_body
      ```
    </AuthCodeGroup>

    Les requêtes de recherche expirent (code d’état HTTP 503) si elles ne se terminent pas en deux secondes ou moins. Si votre requête de recherche expire, il se peut qu’elle soit trop coûteuse ou qu’elle comporte une erreur qui l’empêche de se terminer à temps.

    L'erreur `414 Request-URI Too Large` signifie que votre query string dépasse la longueur prise en charge. Dans ce cas, affinez votre recherche.

    La [référence de la syntaxe des requêtes de recherche](./user-search-query-syntax) contient davantage d’information sur les fonctionnalités de recherche prises en charge et des exemples de requêtes.
  </Tab>
</Tabs>

<h2 id="sort-results">
  Trier les résultats
</h2>

<Tabs>
  <Tab title="Auth0 Dashboard">
    Dans l’Auth0 Dashboard, vous pouvez trier les résultats en sélectionnant les colonnes disponibles dans la table des utilisateurs :

    * Nom
    * ID utilisateur
    * Connection
    * Connexions
    * Dernière connexion

    Sélectionnez une fois le titre d’une colonne pour trier par ordre croissant, puis une deuxième fois pour trier par ordre décroissant. Pour trier les résultats selon d’autres champs, utilisez la Management API.
  </Tab>

  <Tab title="Management API">
    Pour trier les résultats de la recherche d’utilisateurs, attribuez au [paramètre de requête `sort`](/docs/fr-ca/api/management/v2/users/get-users#parameter-sort) la valeur `field:order`, où :

    * `field` est le nom du champ selon lequel effectuer le tri
    * `order` vaut `1` pour l’ordre croissant ou `-1` pour l’ordre décroissant.

    Par exemple, pour trier les utilisateurs en ordre croissant selon leur date de création, attribuez au paramètre `sort` la valeur `created_at:1` :

    <AuthCodeGroup>
      ```bash Auth0 CLI theme={null}
      auth0 api get "users" \
        -q "q=logins_count%3A%5B100%20TO%20200%5D" \
        -q "sort=created_at%3A1" \
        -q "search_engine=v3"
      ```

      ```bash curl theme={null}
      curl --request GET \
        --url 'https://{yourDomain}/api/v2/users?q=logins_count%3A%5B100%20TO%20200%5D&sort=created_at%3A1&search_engine=v3' \
        --header 'authorization: Bearer {yourMgmtApiAccessToken}'
      ```

      ```csharp C# theme={null}
      var client = new RestClient("https://{yourDomain}/api/v2/users?q=logins_count%3A%5B100%20TO%20200%5D&sort=created_at%3A1&search_engine=v3");
      var request = new RestRequest(Method.GET);
      request.AddHeader("authorization", "Bearer {yourMgmtApiAccessToken}");
      IRestResponse response = client.Execute(request);
      ```

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

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

      func main() {
      	url := "https://{yourDomain}/api/v2/users?q=logins_count%3A%5B100%20TO%20200%5D&sort=created_at%3A1&search_engine=v3"
      	req, _ := http.NewRequest("GET", url, nil)
      	req.Header.Add("authorization", "Bearer {yourMgmtApiAccessToken}")

      	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.get("https://{yourDomain}/api/v2/users?q=logins_count%3A%5B100%20TO%20200%5D&sort=created_at%3A1&search_engine=v3")
        .header("authorization", "Bearer {yourMgmtApiAccessToken}")
        .asString();
      ```

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

      var options = {
        method: 'GET',
        url: 'https://{yourDomain}/api/v2/users',
        params: {q: 'logins_count:[100 TO 200]', sort: 'created_at:1', search_engine: 'v3'},
        headers: {authorization: 'Bearer {yourMgmtApiAccessToken}'}
      };

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

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

      curl_setopt_array($curl, [
        CURLOPT_URL => "https://{yourDomain}/api/v2/users?q=logins_count%3A%5B100%20TO%20200%5D&sort=created_at%3A1&search_engine=v3",
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_ENCODING => "",
        CURLOPT_MAXREDIRS => 10,
        CURLOPT_TIMEOUT => 30,
        CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
        CURLOPT_CUSTOMREQUEST => "GET",
        CURLOPT_HTTPHEADER => [
          "authorization: Bearer {yourMgmtApiAccessToken}"
        ],
      ]);

      $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("")
      headers = { 'authorization': "Bearer {yourMgmtApiAccessToken}" }
      conn.request("GET", "/{yourDomain}/api/v2/users?q=logins_count%3A%5B100%20TO%20200%5D&sort=created_at%3A1&search_engine=v3", headers=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/users?q=logins_count%3A%5B100%20TO%20200%5D&sort=created_at%3A1&search_engine=v3")

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

      request = Net::HTTP::Get.new(url)
      request["authorization"] = 'Bearer {yourMgmtApiAccessToken}'

      response = http.request(request)
      puts response.read_body
      ```
    </AuthCodeGroup>
  </Tab>
</Tabs>


## Related topics

- [How to Get Specific Users by Auth0 ID or Email](/docs/manage-users/user-search/get-users-by-id-or-email.md)
- [Limits and Best Practices for User Search](/docs/manage-users/user-search/user-search-best-practices.md)
