Za pomocą metody users.list() interfejsu Directory API możesz wyszukiwać użytkowników, którzy pasują do określonych atrybutów. Ta metoda akceptuje parametr query, który jest zapytaniem wyszukiwania zawierającym co najmniej 1 klauzulę wyszukiwania. Każda klauzula wyszukiwania składa się z 3 części:
- Pole
- Atrybut użytkownika, który jest wyszukiwany. Na przykład: givenName.
- Operator
- Test wykonywany na danych w celu zapewnienia dopasowania. Na przykład operator :sprawdza, czy atrybut tekstowy zawiera wartość.
- Wartość
- Treści atrybutu, który jest testowany. Na przykład: Jane.
Aby wyszukać w zapytaniu wiele pól, dodaj każdą klauzulę wyszukiwania oddzieloną spacjami. Operacja jest domyślną operacją AND.
Pola
| Pole | Typ wartości | Operatory | Opis | 
|---|---|---|---|
| Nie określono | ciąg znaków | Porównaj z wartością w givenName,familyNamelubemail. | |
| name | ciąg znaków | =, : | Wartość utworzona przez złączenie parametrów givenNameifamilyName. | 
| email | ciąg znaków | =,:,:{PREFIX}* | adresy e-mail użytkownika, w tym aliasy; | 
| givenName | ciąg znaków | =,:,:{PREFIX}* | Imię użytkownika. | 
| familyName | ciąg znaków | =,:,:{PREFIX}* | Nazwisko lub nazwa użytkownika. | 
| isAdmin | wartość logiczna | = | Określa, czy użytkownik ma uprawnienia superadministratora. | 
| isDelegatedAdmin | wartość logiczna | = | Czy użytkownik ma delegowane uprawnienia administratora. | 
| isSuspended | wartość logiczna | = | czy konto użytkownika jest zawieszone. | 
| isArchived | wartość logiczna | = | czy konto użytkownika jest zarchiwizowane. | 
| im | ciąg znaków | =, : | Identyfikator sieci do obsługi komunikatora. | 
| externalId | ciąg znaków | =, : | Wartość identyfikatora zewnętrznego. | 
| manager | ciąg znaków | = | Adres e-mail menedżera użytkownika, bezpośrednio lub wyżej w łańcuchu zarządzania. | 
| managerId | ciąg znaków | = | Identyfikator menedżera użytkownika, bezpośrednio lub w łańcuchu zarządzania. | 
| directManager | ciąg znaków | = | Adres e-mail bezpośredniego przełożonego użytkownika. | 
| directManagerId | ciąg znaków | = | Identyfikator bezpośredniego menedżera użytkownika. | 
| address | ciąg znaków | : | Dopasowuje wszystkie pola adresu. | 
| addressPoBox | ciąg znaków | =, : | Skrzynka pocztowa. | 
| addressExtended | ciąg znaków | =, : | Rozszerzony adres, np. zawierający podregion. | 
| addressStreet | ciąg znaków | =, : | Ulica i numer. | 
| addressLocality | ciąg znaków | =, : | Miasto lub miejscowość z adresu. | 
| addressRegion | ciąg znaków | =, : | Skrót nazwy prowincji lub stanu. | 
| addressPostalCode | ciąg znaków | =, : | Kod pocztowy. | 
| addressCountry | ciąg znaków | =, : | kraj, | 
| orgName | ciąg znaków | =, : | Nazwa organizacji. | 
| orgTitle | ciąg znaków | =, : | Tytuł użytkownika w organizacji. | 
| orgDepartment | ciąg znaków | =, : | Dział w organizacji. | 
| orgDescription | ciąg znaków | =, : | Opis organizacji. | 
| orgCostCenter | ciąg znaków | =, : | Centrum kosztów organizacji. | 
| phone | ciąg znaków | = | Numer telefonu użytkownika. | 
| orgUnitPath | ciąg znaków | = | Pełna ścieżka jednostki organizacyjnej. Dopasowuje wszystkie łańcuchy jednostek organizacyjnych podrzędnych do docelowej jednostki. Na przykład 'orgUnitPath=/'zwraca wszystkich użytkowników w organizacji. Z tego pola można korzystać tylko wtedy, gdyviewType=admin_view. | 
| isEnrolledIn2Sv | wartość logiczna | = | Określa, czy użytkownik korzysta z weryfikacji dwuetapowej. | 
| isEnforcedIn2Sv | wartość logiczna | = | Określa, czy weryfikacja dwuetapowa jest wymuszana na koncie użytkownika. | 
| schemaName.fieldName | ? | ? | Atrybut niestandardowy użytkownika, na który wskazuje jego schemat i nazwa pola. Właściwość indexedpola musi mieć wartośćtrue. | 
Typy wartości
| Typ wartości | Odpowiednik w schemacie fieldType | Uwagi | 
|---|---|---|
| ciąg znaków | STRING,EMAIL,PHONE | Jeśli zapytanie zawiera spacje, ująć je w cudzysłowie '. W zapytaniach należy stosować cudzysłów pojedynczy z użyciem znaku\', np.'Valentine\'s Day'. | 
| wartość logiczna | BOOL | Wartość musi wynosić truelubfalse. Obsługuje tylko operator=. | 
| liczba | INT64,DOUBLE | Jako separatora dziesiętnego należy używać kropki, a nie separatora tysięcy, na przykład 150430.25. | 
| data | DATE | W formacie RRRR-MM-DD, np. 2001-02-15. | 
Operatory
| Operator | Obsługiwane typy wartości | Uwagi | 
|---|---|---|
| = | string, boolean, number, date | Pole i wartość dokładnie pasują do siebie. Na przykład reguła givenName=Janepasuje do wszystkich użytkowników z atrybutemgivenNameo wartości"Jane", ale nie"Jane Ann". Obsługiwane w większości pól ciągu znaków (patrz wyżej). | 
| : | ciąg znaków | Pole zawiera w wartości pełne słowa w kolejności. Na przykład zapytanie z wartością givenName:Janepasuje do użytkowników z wartościągivenName="Jane"i"Jane Ann", ale nie"Janet". Zapytanie wielowyrazowe dotyczące'givenName:Mary Ann'pasuje do wartości"Mary Ann Evans"i"Sarah Mary Ann", ale nie do"Ann Mary". Obsługiwane w większości pól ciągu znaków (patrz wyżej). | 
| :{PREFIX}* | ciąg znaków | Pole zaczyna się od wartości. Na przykład zapytanie z wartością givenName:Jane*pasuje do użytkowników z wartościągivenName="Jane","Jane Ann"="Janet", ale nie"Sarah Jane". Obsługiwane tylko w przypadku ograniczonego zbioru pól ciągu znaków (patrz wyżej). Nieobsługiwane w przypadku atrybutów niestandardowych. | 
| :[{MIN},{MAX}] | liczba, data | Pole mieści się w zakresie. Aby dopasowanie było możliwe, wartość pola musi być większa lub równa {MIN}i mniejsza niż{MAX}. Aby obsługiwać ten operator, niestandardowe atrybuty numeru muszą zawierać wartośćnumericIndexingSpec. | 
| > | liczba, data | Pole jest większe niż wartość. Aby obsługiwać ten operator, niestandardowe atrybuty numeru muszą zawierać wartość numericIndexingSpec. | 
| >= | liczba, data | Pole jest większe lub równe wartości. Aby obsługiwać ten operator, niestandardowe atrybuty numeru muszą zawierać wartość numericIndexingSpec. | 
| < | liczba, data | Pole jest mniejsze niż wartość. Aby obsługiwać ten operator, niestandardowe atrybuty numeru muszą zawierać wartość numericIndexingSpec. | 
| <= | liczba, data | Pole jest mniejsze lub równe wartości. Aby obsługiwać ten operator, niestandardowe atrybuty numeru muszą zawierać wartość numericIndexingSpec. | 
Przykłady
Wszystkie zapytania używają metody users.list, która ma żądanie HTTP podobne do tego (przerwy w wierszach w celu ułatwienia czytelności):
GET https://admin.googleapis.com/admin/directory/v1/users?domain=DOMAIN_NAME&query=QUERY_PARAMETERS
Wyszukiwanie użytkownika według nazwy
Pole zapytania name jest testowane na podstawie wartości utworzonej przez złączenie wartości pól givenName i familyName. Zapytanie name='Jane' nie zwraca żadnych wyników dla użytkownika z adresem givenName='Jane' i familyName='Smith'.
name='Jane Smith'
Wyszukiwanie użytkowników na podstawie pola givenName LUB familyName zawierającego wartość
name:'Jane'
Wyszukiwanie użytkowników pasujących do prefiksu adresu e-mail
email:admin*
Wyszukiwanie wszystkich superadministratorów
isAdmin=true
Szukaj użytkowników, których orgTitles zawiera „Menedżer”
orgTitle:Manager
Wyszukiwanie użytkowników, którzy mają wspólnego menedżera w łańcuchu raportowania
manager='janesmith@example.com'
Wyszukiwanie użytkowników mających tego samego bezpośredniego menedżera
directManager='bobjones@example.com'
Wyszukiwanie użytkowników w danym kraju
addressCountry='Sweden'
Wyszukiwanie użytkowników w określonej organizacji
orgName='Human Resources'
Wyszukiwanie menedżerów w określonej organizacji
orgName=Engineering orgTitle:Manager
Wyszukiwanie niestandardowych atrybutów użytkowników
Wyszukiwanie wszystkich pracowników, którzy pracują nad konkretnym projektem
EmploymentData.projects:'GeneGnomes'
Wyszukiwanie wszystkich pracowników w określonej lokalizacji
EmploymentData.location='Atlanta'
Wyszukiwanie wszystkich pracowników powyżej poziomu stanowiska 7
EmploymentData.jobLevel>=7
Wyszukiwanie wszystkich pracowników o poziomie stanowiska >= 5 i < 8
EmploymentData.jobLevel:[5,8]
Wyszukiwanie wszystkich pracowników, którzy korzystają z weryfikacji dwuetapowej
isEnrolledIn2Sv=true
Wyszukiwanie wszystkich pracowników, którzy muszą korzystać z weryfikacji dwuetapowej
isEnforcedIn2Sv=true