You can search for users matching certain attributes with the users.list()
method of the
Directory API. This method accepts the query
parameter which is a search
query combining one or more search clauses. Each search clause is made up of
3 parts:
- Field
- User attribute that is searched. For example,
givenName
. - Operator
- Test that is performed on the data to provide a match. For example, the
:
operator tests if a text attribute contains a value. - Value
- The content of the attribute that is tested. For example,
Jane
.
To search multiple fields in a query, add each search clause, separated by a
space. The operation is an implicit AND
.
Fields
Field | Value Type | Operators | Description |
---|---|---|---|
None specified
|
string | Compare against the value in givenName
, familyName
, or email
. |
|
name
|
string | =, :
|
The concatenated value of givenName
and familyName
. |
email
|
string | =
, :
, :{PREFIX}*
|
The user's email addresses, including aliases. |
givenName
|
string | =
, :
, :{PREFIX}*
|
A user's given or first name. |
familyName
|
string | =
, :
, :{PREFIX}*
|
A user's family or last name. |
isAdmin
|
boolean | =
|
Whether a user has super administrator privileges. |
isDelegatedAdmin
|
boolean | =
|
Whether a user has delegated administrator privileges. |
isSuspended
|
boolean | =
|
Whether a user's account is suspended. |
isArchived
|
boolean | =
|
Whether a user's account is archived. |
im
|
string | =, :
|
IM network ID. |
externalId
|
string | =, :
|
External ID value. |
manager
|
string | =
|
The email address of a user's manager either directly or up the management chain. |
managerId
|
string | =
|
The ID of a user's manager either directly or up the management chain. |
directManager
|
string | =
|
The email address of a user's direct manager. |
directManagerId
|
string | =
|
The ID of a user's direct manager. |
address
|
string | :
|
Matches all address fields. |
addressPoBox
|
string | =, :
|
A post office box. |
addressExtended
|
string | =, :
|
An extended address, such as one including a sub-region. |
addressStreet
|
string | =, :
|
A street address. |
addressLocality
|
string | =, :
|
A town or city of the address. |
addressRegion
|
string | =, :
|
An abbreviated province or state. |
addressPostalCode
|
string | =, :
|
A ZIP or postal code. |
addressCountry
|
string | =, :
|
A country. |
orgName
|
string | =, :
|
An organization name. |
orgTitle
|
string | =, :
|
A user's title within the organization. |
orgDepartment
|
string | =, :
|
A department within the organization. |
orgDescription
|
string | =, :
|
An organization's description. |
orgCostCenter
|
string | =, :
|
The cost center of an organization. |
phone
|
string | =
|
A user's phone number. |
orgUnitPath
|
string | =
|
The full path of an org unit. This matches all org unit chains under the target. For example, 'orgUnitPath=/'
returns all users in the organization. This field can only be used when viewType=admin_view
. |
isEnrolledIn2Sv
|
boolean | =
|
Whether a user is enrolled in 2-Step Verification. |
isEnforcedIn2Sv
|
boolean | =
|
Whether 2-Step Verification is enforced for the user. |
schemaName.fieldName
|
? | ? | A custom user attribute
, referenced by its schema and field name. The field must have its indexed
property set to true
. |
Value Types
Value Type | Equivalent Schema fieldType | Notes |
---|---|---|
string
|
STRING
, EMAIL
, PHONE
|
Surround with single quotes '
if the query contains whitespace. Escape single quotes in queries with \'
, for example 'Valentine\'s Day'
. |
boolean
|
BOOL
|
Must have a value of true
or false
. Only supports the =
operator. |
number
|
INT64
, DOUBLE
|
Must use a period as a decimal separator and no thousands separator, for example 150430.25
. |
date
|
DATE
|
Specified in YYYY-MM-DD format, for example 2001-02-15
. |
Operators
Operator | Supported Value Types | Notes |
---|---|---|
=
|
string, boolean, number, date | The field and the value match exactly. For example, givenName=Jane
matches all users with the givenName
attribute "Jane"
, but not "Jane Ann"
. Supported on most string fields ( see above
). |
:
|
string | The field contains the whole words within the value, in order. For example, a query with givenName:Jane
matches users with givenName
values of "Jane"
and "Jane Ann"
, but not "Janet"
. A multi-word query for 'givenName:Mary Ann'
would match values of "Mary Ann Evans"
and "Sarah Mary Ann"
but not "Ann Mary"
. Supported on most string fields ( see above
). |
:{PREFIX}*
|
string | The field starts with the value. For example, a query with givenName:Jane*
matches users with givenName
values of "Jane"
, "Jane Ann"
, and "Janet"
but not "Sarah Jane"
. Only supported on a limited set of string fields ( see above
). Not supported on custom attributes. |
:[{MIN},{MAX}]
|
number, date | The field is within a range. To match, the field's value must be greater than or equal to {MIN}
and less than {MAX}
. Custom number attributes must specify a numericIndexingSpec
in order to support this operator. |
>
|
number, date | The field is greater than the value. Custom number attributes must specify a numericIndexingSpec
in order to support this operator. |
>=
|
number, date | The field is greater than or equal to the value. Custom number attributes must specify a numericIndexingSpec
in order to support this operator. |
<
|
number, date | The field is less than the value. Custom number attributes must specify a numericIndexingSpec
in order to support this operator. |
<=
|
number, date | The field is less than or equal to the value. Custom number attributes must specify a numericIndexingSpec
in order to support this operator. |
Examples
All queries use the users.list
method, which has an HTTP request similar to the following (line breaks included for readability):
GET https://admin.googleapis.com/admin/directory/v1/users?domain= DOMAIN_NAME
&query= QUERY_PARAMETERS
Search for a user by name
The name
query field tests on the concatenated value of givenName
and familyName
. A query for name='Jane'
returns no results for a user with givenName='Jane'
and familyName='Smith'
.
name='Jane Smith'
Search for users with a givenName
OR familyName
that contains a value
name:'Jane'
Search for users matching an email prefix
email
:
admin
*
Search for all super administrators
isAdmin=true
Search for users with orgTitles
containing "Manager"
orgTitle
:
Manager
Search for users with a common manager in their reporting chain
manager
=
'janesmith@example.com'
Search for users with the same direct manager
directManager
=
'bobjones@example.com'
Search for users in a given country
addressCountry
=
'
Sweden
'
Search for users in a specific organization
orgName='Human Resources'
Search for managers in a specific organization
orgName=Engineering orgTitle:Manager
Search custom user attributes
Search for all employees that work on a specific project
EmploymentData.projects:'GeneGnomes'
Search for all employees in a specific location
EmploymentData.location='Atlanta'
Search for all employees above job level 7
EmploymentData.jobLevel>=7
Search for all employees with job levels that are >= 5 and < 8
EmploymentData.jobLevel:[5,8]
Search for all employees who are enrolled in 2-Step vVerification
isEnrolledIn2Sv=true
Search for all employees who have 2-Step Verification enforced
isEnforcedIn2Sv=true