= Gerrit Code Review - Searching Accounts

== Basic Account Search

Similar to many popular search engines on the web, just enter some
text and let Gerrit figure out the meaning:

[options="header"]
|=============================================================
|Description                      | Examples
|Name                             | John
|Email address                    | jdoe@example.com
|Username                         | jdoe
|Account-Id                       | 1000096
|Own account                      | self
|=============================================================

[[search-operators]]
== Search Operators

Operators act as restrictions on the search. As more operators
are added to the same query string, they further restrict the
returned results. Search can also be performed by typing only a
text with no operator, which will match against a variety of fields.

[[cansee]]
cansee:'CHANGE'::
+
Matches accounts that can see the change 'CHANGE'. If the change is private,
this operator will match with the owner/reviewers/ccs of the change if the
caller is in owner/reviewers/ccs of the change. Otherwise, the request will fail
with 404 `Bad Request` with "change not found" message.

[[email]]
email:'EMAIL'::
+
Matches accounts that have the email address 'EMAIL' or an email
address that starts with 'EMAIL'.
+
If 'EMAIL' contains a domain and that domain matches one in the configured
link:config-gerrit.html#accounts.caseInsensitiveLocalPart[accounts.caseInsensitiveLocalPart]
list, the local part of the email will be treated as case-insensitive.
For example, if `example.com` is configured as case-insensitive, then `User@example.com`
and `user@example.com` will be treated as equivalent.
For domains not listed, the matching will remain case-sensitive.

[[is]]
[[is-active]]
is:active::
+
Matches accounts that are active.

[[is-inactive]]
is:inactive::
+
Matches accounts that are inactive.

[[name]]
name:'NAME'::
+
Matches accounts that have any name part 'NAME'. The name parts consist
of any part of the full name and the email addresses.

[[username]]
username:'USERNAME'::
+
Matches accounts that have the username 'USERNAME'.

== Magical Operators

[[is-visible]]
is:visible::
+
Magical internal flag to prove the current user has access to read
the account. This flag is always added to any query.

[[is-active-magic]]
is:active::
+
Matches accounts that are active. If neither link:#is-active[is:active]
nor link:#is-inactive[is:inactive] is contained in a query, `is:active`
is automatically added so that by default only active accounts are
matched.

[[limit]]
limit:'CNT'::
+
Limit the returned results to no more than 'CNT' records. This is
automatically set to the page size configured in the current user's
preferences. Including it in a web query may lead to unpredictable
results with regards to pagination.

GERRIT
------
Part of link:index.html[Gerrit Code Review]

SEARCHBOX
---------
