Syntaxe de la requête de recherche de l’utilisateur
Lors de la recherche d’utilisateurs, vous pouvez créer des requêtes en utilisant la syntaxe de requête Lucene pour affiner votre recherche.
La chaîne de requête est analysée en séries de termes et d’opérateurs :
Un terme peut être un mot unique tel que
jane
ousmith
.Il peut s’agir d’une phrase entourée de guillemets (
"green apple"
), qui correspondra à tous les mots de la phrase dans le même ordre.Un terme sans nom de champ ne correspondra pas au texte des champs métadonnées utilisateur.
Plusieurs termes peuvent être regroupés entre parenthèses pour former des sous-requêtes.
Les valeurs de recherche pour les champs utilisateur normalisés (
email
,name
,given_name
,family_name
, etnickname
) sont insensibles à la casse. Tous les autres champs (y compris tous les champsapp_metadata
/user_metadata
) sont sensibles à la casse.Les opérateurs (
AND
,OR
,NOT
) fonctionnent sur tous les champs utilisateur normalisés et les champs de métadonnées racine.Les opérateurs doivent toujours être mis en majuscules.
Champs pouvant être recherchés
Vous pouvez rechercher des utilisateurs à l’aide de tous les champs de profil utilisateur normalisé et des champs ci-dessous :
Rercherche Champ | Type de données | Description |
---|---|---|
phone_number |
texte | Le numéro de téléphone de l’utilisateur. Valide uniquement pour les utilisateurs disposant d’un appareil compatible SMS. |
phone_verified |
booléen | La valeur true/false (« vrai/faux ») indique si le numéro de téléphone de l’utilisateur a été vérifié. Valide uniquement pour les utilisateurs disposant d’un appareil compatible SMS. |
logins_count |
entier | Le nombre de fois où l’utilisateur s’est connecté. Si un utilisateur est bloqué et se connecte, la session bloquée est comptabilisée dans logins_count et met à jour la valeur last_login . |
created_at |
date time | Horodatage de la création du profil utilisateur. |
updated_at |
date time | Horodatage de la dernière mise à jour/modification du profil de l’utilisateur. |
last_login |
date time | L’horodatage de la dernière connexion de l’utilisateur. Dans le cas où cette propriété est exécutée à l’intérieur d’une Rule (Règle avec l’objet user , la valeur sera employée pour la connexion qui a déclenché la règle (puisque les Règles s’exécutent après la connexion réelle). |
last_ip |
texte (adresse IP valide) | L’adresse IP employée lors de la dernière connexion de l’utilisateur. |
blocked |
booléen | La valeur true (vrai) ou false (faux) indique si l’utilisateur a été bloqué. Remarque : true rapporte seulement les utilisateurs bloqués via le tableau de bord de l’administrateur et Management API; il ne rapporte pas les utilisateurs bloqués par la détection d’anomalie par force brute. |
email.domain |
texte | La partie domaine du courriel de l’utilisateur. |
organization_id |
text (identifiant d’organization valide) | L’organization dont l’utilisateur est membre. |
Les champs de métadonnées peuvent être utilisés avec :
booléen
numériques : entiers ou doubles
texte
objets : pour rechercher une valeur scalaire imbriquée dans un autre objet, utilisez le chemin d’accès au champ. Par exemple,
app_metadata.subscription.plan:"gold"
tableaux : pour rechercher des champs dans des objets imbriqués dans des tableaux, utilisez le chemin d’accès au champ et ignorez le niveau du tableau. Par exemple,
user_metadata.addresses.city:"Paris"
Les champs de métadonnées qui contiennent un tableau vide, un objet vide ou une valeur null
ne sont pas indexés et ne peuvent pas être recherchés.
Les recherches par plage et par caractères de remplacement ne sont pas utilisables sur les champs user_metadata
.
Correspondance exacte
Pour trouver des correspondances exactes, utilisez des guillemets doubles : name:"jane smith"
.
Par exemple, pour trouver les utilisateurs portant le nom jane smith
, utilisez q=name:"jane smith"
:
curl --request GET \
--url 'https://{yourDomain}/api/v2/users?q=name%3A%22jane%20smith%22&search_engine=v3' \
--header 'authorization: Bearer {yourMgmtApiAccessToken}'
Was this helpful?
var client = new RestClient("https://{yourDomain}/api/v2/users?q=name%3A%22jane%20smith%22&search_engine=v3");
var request = new RestRequest(Method.GET);
request.AddHeader("authorization", "Bearer {yourMgmtApiAccessToken}");
IRestResponse response = client.Execute(request);
Was this helpful?
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://{yourDomain}/api/v2/users?q=name%3A%22jane%20smith%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))
}
Was this helpful?
HttpResponse<String> response = Unirest.get("https://{yourDomain}/api/v2/users?q=name%3A%22jane%20smith%22&search_engine=v3")
.header("authorization", "Bearer {yourMgmtApiAccessToken}")
.asString();
Was this helpful?
var axios = require("axios").default;
var options = {
method: 'GET',
url: 'https://{yourDomain}/api/v2/users',
params: {q: 'name:"jane smith"', search_engine: 'v3'},
headers: {authorization: 'Bearer {yourMgmtApiAccessToken}'}
};
axios.request(options).then(function (response) {
console.log(response.data);
}).catch(function (error) {
console.error(error);
});
Was this helpful?
#import <Foundation/Foundation.h>
NSDictionary *headers = @{ @"authorization": @"Bearer {yourMgmtApiAccessToken}" };
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://{yourDomain}/api/v2/users?q=name%3A%22jane%20smith%22&search_engine=v3"]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:10.0];
[request setHTTPMethod:@"GET"];
[request setAllHTTPHeaderFields:headers];
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];
Was this helpful?
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{yourDomain}/api/v2/users?q=name%3A%22jane%20smith%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;
}
Was this helpful?
import http.client
conn = http.client.HTTPSConnection("")
headers = { 'authorization': "Bearer {yourMgmtApiAccessToken}" }
conn.request("GET", "/{yourDomain}/api/v2/users?q=name%3A%22jane%20smith%22&search_engine=v3", headers=headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
Was this helpful?
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://{yourDomain}/api/v2/users?q=name%3A%22jane%20smith%22&search_engine=v3")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(url)
request["authorization"] = 'Bearer {yourMgmtApiAccessToken}'
response = http.request(request)
puts response.read_body
Was this helpful?
import Foundation
let headers = ["authorization": "Bearer {yourMgmtApiAccessToken}"]
let request = NSMutableURLRequest(url: NSURL(string: "https://{yourDomain}/api/v2/users?q=name%3A%22jane%20smith%22&search_engine=v3")! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers
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()
Was this helpful?
Recherche générique
Les recherches par caractères de remplacement peuvent être effectuées sur les termes en utilisant le caractère astérisque (*
) pour remplacer zéro ou plusieurs caractères. Les recherches par caractères de remplacement ne sont pas utilisables pour les champs user_metadata
.
Exemples
name:john*
renvoie tous les utilisateurs dont le nom commence parjohn
.name:j*
renvoie tous les utilisateurs dont le nom commence parj
.q=name:john*
renvoie tous les utilisateurs dont le nom commence parjohn
.Pour la correspondance des suffixes, les éléments littéraux doivent comporter trois caractères ou plus. Par exemple,
name:*usa
est autorisé, maisname:*sa
ne l’est pas.
curl --request GET \
--url 'https://{yourDomain}/api/v2/users?q=name%3Ajohn*&search_engine=v3' \
--header 'authorization: Bearer {yourMgmtApiAccessToken}'
Was this helpful?
var client = new RestClient("https://{yourDomain}/api/v2/users?q=name%3Ajohn*&search_engine=v3");
var request = new RestRequest(Method.GET);
request.AddHeader("authorization", "Bearer {yourMgmtApiAccessToken}");
IRestResponse response = client.Execute(request);
Was this helpful?
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://{yourDomain}/api/v2/users?q=name%3Ajohn*&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))
}
Was this helpful?
HttpResponse<String> response = Unirest.get("https://{yourDomain}/api/v2/users?q=name%3Ajohn*&search_engine=v3")
.header("authorization", "Bearer {yourMgmtApiAccessToken}")
.asString();
Was this helpful?
var axios = require("axios").default;
var options = {
method: 'GET',
url: 'https://{yourDomain}/api/v2/users',
params: {q: 'name:john*', search_engine: 'v3'},
headers: {authorization: 'Bearer {yourMgmtApiAccessToken}'}
};
axios.request(options).then(function (response) {
console.log(response.data);
}).catch(function (error) {
console.error(error);
});
Was this helpful?
#import <Foundation/Foundation.h>
NSDictionary *headers = @{ @"authorization": @"Bearer {yourMgmtApiAccessToken}" };
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://{yourDomain}/api/v2/users?q=name%3Ajohn*&search_engine=v3"]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:10.0];
[request setHTTPMethod:@"GET"];
[request setAllHTTPHeaderFields:headers];
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];
Was this helpful?
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{yourDomain}/api/v2/users?q=name%3Ajohn*&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;
}
Was this helpful?
import http.client
conn = http.client.HTTPSConnection("")
headers = { 'authorization': "Bearer {yourMgmtApiAccessToken}" }
conn.request("GET", "/{yourDomain}/api/v2/users?q=name%3Ajohn*&search_engine=v3", headers=headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
Was this helpful?
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://{yourDomain}/api/v2/users?q=name%3Ajohn*&search_engine=v3")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(url)
request["authorization"] = 'Bearer {yourMgmtApiAccessToken}'
response = http.request(request)
puts response.read_body
Was this helpful?
import Foundation
let headers = ["authorization": "Bearer {yourMgmtApiAccessToken}"]
let request = NSMutableURLRequest(url: NSURL(string: "https://{yourDomain}/api/v2/users?q=name%3Ajohn*&search_engine=v3")! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers
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()
Was this helpful?
Plages
Vous pouvez utiliser des plages dans vos requêtes de recherche d’utilisateurs. Les recherches par plage ne sont pas utilisables pour les champs de métadonnées utilisateur.
Pour les plages inclusives, utilisez des crochets :
[min TO max]
.Pour les plages exclusives, utilisez des crochets :
{min TO max}
.Les crochets et les apostrophes courbes peuvent être combinés dans la même expression de plage :
logins_count:[100 TO 200}
.Utilisez les plages en combinaison avec des caractères de remplacement. Par exemple, pour trouver tous les utilisateurs ayant plus de 100 connexions, utilisez
q=logins_count:{100 TO *]
.
curl --request GET \
--url 'https://{yourDomain}/api/v2/users?q=logins_count%3A%7B100%20TO%20*%5D&search_engine=v3' \
--header 'authorization: Bearer {yourMgmtApiAccessToken}'
Was this helpful?
var client = new RestClient("https://{yourDomain}/api/v2/users?q=logins_count%3A%7B100%20TO%20*%5D&search_engine=v3");
var request = new RestRequest(Method.GET);
request.AddHeader("authorization", "Bearer {yourMgmtApiAccessToken}");
IRestResponse response = client.Execute(request);
Was this helpful?
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://{yourDomain}/api/v2/users?q=logins_count%3A%7B100%20TO%20*%5D&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))
}
Was this helpful?
HttpResponse<String> response = Unirest.get("https://{yourDomain}/api/v2/users?q=logins_count%3A%7B100%20TO%20*%5D&search_engine=v3")
.header("authorization", "Bearer {yourMgmtApiAccessToken}")
.asString();
Was this helpful?
var axios = require("axios").default;
var options = {
method: 'GET',
url: 'https://{yourDomain}/api/v2/users',
params: {q: 'logins_count:{100 TO *]', search_engine: 'v3'},
headers: {authorization: 'Bearer {yourMgmtApiAccessToken}'}
};
axios.request(options).then(function (response) {
console.log(response.data);
}).catch(function (error) {
console.error(error);
});
Was this helpful?
#import <Foundation/Foundation.h>
NSDictionary *headers = @{ @"authorization": @"Bearer {yourMgmtApiAccessToken}" };
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://{yourDomain}/api/v2/users?q=logins_count%3A%7B100%20TO%20*%5D&search_engine=v3"]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:10.0];
[request setHTTPMethod:@"GET"];
[request setAllHTTPHeaderFields:headers];
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];
Was this helpful?
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{yourDomain}/api/v2/users?q=logins_count%3A%7B100%20TO%20*%5D&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;
}
Was this helpful?
import http.client
conn = http.client.HTTPSConnection("")
headers = { 'authorization': "Bearer {yourMgmtApiAccessToken}" }
conn.request("GET", "/{yourDomain}/api/v2/users?q=logins_count%3A%7B100%20TO%20*%5D&search_engine=v3", headers=headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
Was this helpful?
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://{yourDomain}/api/v2/users?q=logins_count%3A%7B100%20TO%20*%5D&search_engine=v3")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(url)
request["authorization"] = 'Bearer {yourMgmtApiAccessToken}'
response = http.request(request)
puts response.read_body
Was this helpful?
import Foundation
let headers = ["authorization": "Bearer {yourMgmtApiAccessToken}"]
let request = NSMutableURLRequest(url: NSURL(string: "https://{yourDomain}/api/v2/users?q=logins_count%3A%7B100%20TO%20*%5D&search_engine=v3")! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers
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()
Was this helpful?
Exemples d’attributs de profil pouvant faire l’objet d’une recherche
Lorsque vous recherchez des utilisateurs dans Management API Auth0, vous pouvez filtrer les utilisateurs par user_metadata
ou app_metadata
. Pour ce faire, vous pouvez utiliser la syntaxe de recherche Lucene avec le paramètre q
.
La liste de Management API Auth0 ou le point de terminaison de recherche des utilisateurs étant limité à 1 000 résultats (10 pages de 100 enregistrements), le filtrage est un moyen utile de s’assurer que les résultats les plus pertinents sont renvoyés.
Vous trouverez ci-dessous un exemple de profil utilisateur user_metadata
:
{
"favorite_color": "blue",
"approved": false,
"preferredLanguage": "en",
"preferences": {
"fontSize": 13
},
"addresses":{
"city":["Paris","Seattle"]
}
}
Was this helpful?
Filtrer les attributs de métadonnées
Pour renvoyer une valeur user_metadata
, mettez à jour la requête q
avec un filtre pour l’attribut.
Pour les valeurs user_metadata
vous pouvez interroger le profil directement :
q: _exists_:user_metadata.fav_color
Cette requête renvoie tous les profils utilisateurs dont l’attribut fav_color
figure dans les métadonnées user_metadata
.
Filtrer les attributs et les valeurs des objets imbriqués des métadonnées
Vous pouvez également effectuer une recherche sur les objets imbriqués dans user_metadata
:
q: _exists_:user_metadata.preferences.fontSize
Ceci permet d’interroger tous les profils utilisateurs dont les preferences.fontSize
sont configurés dans les métadonnées user_metadata
.
Pour rechercher les valeurs d’un objet imbriqué à partir d’un autre objet, examinez la requête ci-dessous :
q: user_metadata.preferences.fontSize:13
Cette requête renvoie tous les profils utilisateurs qui correspondent à l’attribut fontSize
avec la valeur 13
.
Filtrer les valeurs des tableaux imbriqués de métadonnées
Vous pouvez utiliser la requête ci-dessous pour rechercher des champs dans des tableaux imbriqués :
q: user_metadata.addresses.city:"Seattle"
Cette requête renvoie tous les profils utilisateurs qui renvoient la valeur Seattle
à partir des attributs adress.city
dans les user_metadata
.