These eight operations use the dedicated publicapi.v1.RecordSearch service,
not the individual CRUD services. Required scopes by resource are customer:read,
problem:read, work_order:read, catalog:read, member:read, team:read,
role:read, and inventory:read, respectively.
Every path below is a POST under /public-api/publicapi.v1.RecordSearch/.
All accept the same request shape and return the indicated collection plus
nextCursor.
Method
Matched fields, in addition to the resource UUID
Response collection
SearchCustomers
Title, reference number; never contacts or custom fields
customers
SearchProblems
Non-archived problem title
problems
SearchWorkOrders
Owner-workspace work-order title
workOrders
SearchProducts
Product name and SKU, including inactive products
products
SearchMembers
Workspace member names and account email, not global accounts
members
SearchTeams
Team name
teams
SearchRoles
Role name
roles
SearchInventoryLocations
Location name and code, including inactive locations
query: at most 200 characters of valid text, without NUL characters. Leading
and trailing whitespace is trimmed. Empty or whitespace-only input browses a
bounded page; it does not return the whole workspace.
match: RECORD_SEARCH_MATCH_EXACT, RECORD_SEARCH_MATCH_PREFIX, or
RECORD_SEARCH_MATCH_CONTAINS. Omitted or unspecified means contains.
Matching is literal, generally case-insensitive. Exact customer reference,
SKU, and location code comparisons are case-sensitive. %, _, backslashes,
and regex-like text are literal input, not wildcard or regex syntax. There is
no full-text engine, stemming, accent folding, arbitrary SQL, or JSON-path search.
A complete standard UUID looks up the resource ID exactly regardless of match
mode. For members, this means the member ID, not the account ID.
pageSize: omitted or zero means 25; maximum 50. Larger or negative values
fail validation. Results are bounded in SQL, with at most one extra row read
to determine whether a next page exists.
cursor: opaque continuation, at most 2048 bytes. Pass the returned
nextCursor with the same resource, workspace, actor, query, and match mode.
Malformed or mismatched cursors fail rather than restarting the search.
Results are ordered by resource UUID ascending, not relevance. Continue until
nextCursor is absent or empty. Pages observe current records and authorization,
not a historical snapshot. Never interpret a timeout or authorization failure as
an empty result. Search has a two-second execution/SQL timeout; narrow the query
or use an exact record ID after deadline_exceeded.
Customer access is applied before pagination. Problem discovery additionally
uses reporter/assignee visibility; work orders are restricted to readable
customers in the owner workspace, not partner or executor records. Each search
also enforces the actor’s corresponding workspace permission. Product search
requires settings or inventory read access. A key scope alone is insufficient.
Summaries return stable IDs and bounded core fields, not descriptions, task
bodies, or arbitrary JSON. Text is bounded to 200 characters, email to 254.
Member id is the workspace member ID; accountId is the assignment identity
used by problem creation. accessExpired does not confer active membership.
Role discovery is not permission to assign or delegate that role. Inventory
location discovery is not a stock read or mutation API.
Searches customer title and reference only; never contacts or custom fields.
RequestSearchRecordsRequest
ResponseSearchCustomersResponse
SearchRecordsRequest
Field
Type
Description
query
string
Empty/whitespace means bounded browse. Otherwise literal, case-insensitive text matching: no regex, wildcard syntax, stemming, or accent folding. A complete UUID looks up that resource ID exactly, regardless of match. Customer reference, SKU, and location code EXACT matches are case-sensitive.
match
RecordSearchMatch
page_size
int32
Defaults to 25. Results are ordered by stable resource UUID ascending, not relevance. Search may time out; an error is not an empty result.
cursor
string
Opaque continuation bound to resource, workspace, actor, query, and match. Pages observe current data and authorization, not a historical snapshot.
Searches non-archived problem titles using customer/reporter/assignee access.
RequestSearchRecordsRequest
ResponseSearchProblemsResponse
SearchRecordsRequest
Field
Type
Description
query
string
Empty/whitespace means bounded browse. Otherwise literal, case-insensitive text matching: no regex, wildcard syntax, stemming, or accent folding. A complete UUID looks up that resource ID exactly, regardless of match. Customer reference, SKU, and location code EXACT matches are case-sensitive.
match
RecordSearchMatch
page_size
int32
Defaults to 25. Results are ordered by stable resource UUID ascending, not relevance. Search may time out; an error is not an empty result.
cursor
string
Opaque continuation bound to resource, workspace, actor, query, and match. Pages observe current data and authorization, not a historical snapshot.
Searches titles of readable, workspace-owned work orders.
RequestSearchRecordsRequest
ResponseSearchWorkOrdersResponse
SearchRecordsRequest
Field
Type
Description
query
string
Empty/whitespace means bounded browse. Otherwise literal, case-insensitive text matching: no regex, wildcard syntax, stemming, or accent folding. A complete UUID looks up that resource ID exactly, regardless of match. Customer reference, SKU, and location code EXACT matches are case-sensitive.
match
RecordSearchMatch
page_size
int32
Defaults to 25. Results are ordered by stable resource UUID ascending, not relevance. Search may time out; an error is not an empty result.
cursor
string
Opaque continuation bound to resource, workspace, actor, query, and match. Pages observe current data and authorization, not a historical snapshot.
Searches product names and SKUs, including inactive products.
RequestSearchRecordsRequest
ResponseSearchProductsResponse
SearchRecordsRequest
Field
Type
Description
query
string
Empty/whitespace means bounded browse. Otherwise literal, case-insensitive text matching: no regex, wildcard syntax, stemming, or accent folding. A complete UUID looks up that resource ID exactly, regardless of match. Customer reference, SKU, and location code EXACT matches are case-sensitive.
match
RecordSearchMatch
page_size
int32
Defaults to 25. Results are ordered by stable resource UUID ascending, not relevance. Search may time out; an error is not an empty result.
cursor
string
Opaque continuation bound to resource, workspace, actor, query, and match. Pages observe current data and authorization, not a historical snapshot.
Searches effective workspace member names and account email, not global users.
RequestSearchRecordsRequest
ResponseSearchMembersResponse
SearchRecordsRequest
Field
Type
Description
query
string
Empty/whitespace means bounded browse. Otherwise literal, case-insensitive text matching: no regex, wildcard syntax, stemming, or accent folding. A complete UUID looks up that resource ID exactly, regardless of match. Customer reference, SKU, and location code EXACT matches are case-sensitive.
match
RecordSearchMatch
page_size
int32
Defaults to 25. Results are ordered by stable resource UUID ascending, not relevance. Search may time out; an error is not an empty result.
cursor
string
Opaque continuation bound to resource, workspace, actor, query, and match. Pages observe current data and authorization, not a historical snapshot.
Empty/whitespace means bounded browse. Otherwise literal, case-insensitive text matching: no regex, wildcard syntax, stemming, or accent folding. A complete UUID looks up that resource ID exactly, regardless of match. Customer reference, SKU, and location code EXACT matches are case-sensitive.
match
RecordSearchMatch
page_size
int32
Defaults to 25. Results are ordered by stable resource UUID ascending, not relevance. Search may time out; an error is not an empty result.
cursor
string
Opaque continuation bound to resource, workspace, actor, query, and match. Pages observe current data and authorization, not a historical snapshot.
Discovery does not imply permission to delegate or assign a role.
RequestSearchRecordsRequest
ResponseSearchRolesResponse
SearchRecordsRequest
Field
Type
Description
query
string
Empty/whitespace means bounded browse. Otherwise literal, case-insensitive text matching: no regex, wildcard syntax, stemming, or accent folding. A complete UUID looks up that resource ID exactly, regardless of match. Customer reference, SKU, and location code EXACT matches are case-sensitive.
match
RecordSearchMatch
page_size
int32
Defaults to 25. Results are ordered by stable resource UUID ascending, not relevance. Search may time out; an error is not an empty result.
cursor
string
Opaque continuation bound to resource, workspace, actor, query, and match. Pages observe current data and authorization, not a historical snapshot.
Searches location names and codes, including inactive locations.
RequestSearchRecordsRequest
ResponseSearchInventoryLocationsResponse
SearchRecordsRequest
Field
Type
Description
query
string
Empty/whitespace means bounded browse. Otherwise literal, case-insensitive text matching: no regex, wildcard syntax, stemming, or accent folding. A complete UUID looks up that resource ID exactly, regardless of match. Customer reference, SKU, and location code EXACT matches are case-sensitive.
match
RecordSearchMatch
page_size
int32
Defaults to 25. Results are ordered by stable resource UUID ascending, not relevance. Search may time out; an error is not an empty result.
cursor
string
Opaque continuation bound to resource, workspace, actor, query, and match. Pages observe current data and authorization, not a historical snapshot.