Search API¶
Prepares a search result set using criteria provided in XML format. The search is executed server-side and the results are stored in the user's session. Use GetNextSearchPage and GetPreviousSearchPage to page through the results after calling Search.
Endpoint¶
Methods¶
-
GET
/srv.asmx/Search?authenticationTicket=...&xmlcriteria=...&SortBy=...&AscendingOrder=... -
POST
/srv.asmx/Search(form data) -
SOAP Action:
http://tempuri.org/Search
Parameters¶
| Parameter | Type | Required | Description |
|---|---|---|---|
authenticationTicket |
string | Yes | Authentication ticket obtained from AuthenticateUser. |
xmlcriteria |
string | Yes | XML document describing the search criteria. See the XML Criteria Reference section below for all supported elements. Pass an empty string to return all accessible documents. |
SortBy |
string | Yes | Field by which results are sorted. See Sort Field Values below. Pass an empty string to use the default sort order. |
AscendingOrder |
bool | Yes | true to sort ascending, false to sort descending. |
Sort Field Values¶
| Value | Description |
|---|---|
DOCUMENTNAME |
Sort by document or folder name |
DOCUMENTSIZE |
Sort by file size |
MIMETYPEDESCRIPTION |
Sort by MIME type / file format description |
MODIFICATIONDATE |
Sort by last modification date |
STATUSCODE |
Sort by approval/completion status code |
FOLDERNAME |
Sort by parent folder name |
LASTVERSIONNUMBER |
Sort by latest version number |
PERCENTCOMPLETE |
Sort by percent complete |
CREATIONDATE |
Sort by creation date |
MODIFIEDBYNAME |
Sort by the name of the user who last modified the item |
DESCRIPTION |
Sort by description |
OWNERNAME |
Sort by owner name |
FLOWNAME |
Sort by workflow name |
VIEW |
Sort by last view date |
CHECKEDOUTBYNAME |
Sort by the name of the user who checked out the document |
COMPLETIONDATE |
Sort by completion date |
IMPORTANCE |
Sort by importance level |
RDDEFID |
Sort by Retention & Disposition definition ID |
CLEVEL |
Sort by classification level |
DECLASSIFYON |
Sort by declassification date |
DOWNGRADEON |
Sort by downgrade date |
DISPOSITIONDATE |
Sort by disposition date |
LASTISOREVIEW |
Sort by last ISO review date |
NEXTISOREVIEW |
Sort by next ISO review date |
STEPNUMBER |
Sort by workflow step number |
STEPNAME |
Sort by workflow step name |
PROPERTSETNAME.FIELDNAME |
Sort by a custom property set field (use dot notation, e.g. MyPSet.MyField) |
XML Criteria Reference¶
The xmlcriteria parameter must be a well-formed XML document. The root element may have any name; each child <criteria> element defines one search condition.
Envelope:
Each element uses three attributes:
| Attribute | Description |
|---|---|
NAME |
The criterion name (case-insensitive, see table below). |
OPERATOR |
Comparison operator -" only required for criteria that support it. |
VALUE |
The criterion value. |
Supported Criteria Elements¶
| NAME | OPERATOR | VALUE | Description |
|---|---|---|---|
SEARCHSCOPE |
-" | ONLINE / ALL / ARCHIVE / ONLINE-HIDDENS |
Limits search to online, all, archived, or online-including-hidden libraries. Default: ONLINE. |
KEYWORDS |
-" | Full-text search string | Searches document content and metadata keywords. |
DOCUMENTNAME |
-" | Document or folder name (may include wildcards) | Filters by name. |
DOCUMENTID |
-" | Comma-separated integer document IDs | Retrieves specific documents by ID. |
FOLDERBYID |
-" | Comma-separated integer folder IDs | Retrieves specific folders by ID. |
FOLDERDESCRIPTION |
-" | Text string | Filters folders by description. |
DOCUMENTFORMAT |
-" | MIME type or extension string | Filters by file format/MIME type. |
SEARCHFOR / OBJECTTYPENAME |
-" | DOCUMENTSONLY / FOLDERSONLY / <DocumentTypeName> |
Limits results to documents, folders, or a specific document type. |
DOCTYPE |
-" | Document type name | Alias -" limits to a specific document type. |
FOLDER |
-" | Full infoRouter folder path | Limits search to a specific folder. |
INCLUDESUBFOLDERS |
-" | true / false |
When used with FOLDER, controls whether sub-folders are included. |
VIEWCRITERIA |
-" | NOVIEW / UPDATED / SAW |
Filters by view state. Add USERNAME="username" attribute to filter by another user's view state. |
CHECKOUTSTATUS |
-" | CHECKEDOUT / NOTCHECKEDOUT / CHECKEDOUTBYME / CHECKEDOUTBYUSER |
Filters by checkout status. CHECKEDOUTBYUSER also requires a USERNAME="username" attribute on the element. |
USERNAME |
-" | infoRouter username | Filters documents by author (owner). An unknown user name is refused with 4041. |
SIZEIS |
EQLT (at most) / EQGT (at least) |
Size in bytes | Filters by file size. |
IMPORTANCE |
EQ / GT-EQ / GT / LT / LT-EQ |
LOW / NORMAL / HIGH / VITAL |
Filters by document importance. |
CLEVEL |
-" | NOMARKINGS / DECLASSIFIED / CONFIDENTIAL / SECRET / TOPSECRET |
Filters by classification level. |
DATECRITERIA |
EQ / EQLT / EQGT / BETWEEN |
Date string yyyy-MM-dd; for BETWEEN use date1|date2 |
Filters by a date field. Add SUBTYPE attribute to specify which date field (see Date Criteria Subtypes below). |
DOCSRC |
-" | Source string | Filters by document source. |
DOCLANG |
-" | Language code (see Document Language Values below) | Filters by document language. |
DOCAUTHOR |
-" | Author name string | Filters by document author metadata field. |
RDDEFID |
-" | Integer Retention & Disposition definition ID | Filters by retention schedule definition. |
PUBLISHSTATUS |
-" | 0 (ignore) / 1 (unpublished) / 2 (published) |
Filters by publish status. |
AIENHANCED |
-" | ANY / ALL / NONE, or a comma-separated list of attribute names (see AI Enhanced Criteria below) |
Filters by which of a document's attributes infoRouter Connect produced. Documents only. |
SUBSCRIPTIONSOF |
-" | infoRouter username | Returns items (documents and folders) that the specified user is subscribed to. |
FAVORITESOF |
-" | infoRouter username | Returns items in the specified user's favorites list. |
RECENTDOCUMENTS |
-" | -" | Returns the current user's recent documents. No VALUE attribute is required; the presence of this element is sufficient. |
DOWNLOADQUEOF |
-" | infoRouter username | Returns items currently in the specified user's download queue. |
TEMPLATEPATH |
-" | Full infoRouter document path of the template, or ~D<id> short form. Use ~D999 for HTML documents. |
Filters documents rendered from the specified template. Use ~D999 to find all HTML form documents. |
PROPERTYSETNAME |
-" | Property set name (child elements define field criteria) | Filters by custom property set values. See Property Set Criteria below. |
AI Enhanced Criteria¶
AIENHANCED filters on which of a document's attributes infoRouter Connect produced. Everything
is said in VALUE; there is no OPERATOR.
VALUE |
Matches |
|---|---|
ANY |
Documents where Connect produced at least one attribute. |
ALL |
Documents where Connect produced every attribute it can produce. |
NONE |
Documents where Connect produced nothing. |
| A list of attribute names | Documents carrying all of the named attributes. |
The attribute names are the ones the AIEnhanced attribute reports on each document -
SUMMARY, DESCRIPTION, KEYWORDS, OCRTEXT, DOCUMENTTYPE, ABSTRACT, EXTRACTEDDATA,
MARKDOWN, REDACTEDTEXT. See AIEnhanced for what each one means.
Case and spacing do not matter.
<!-- documents a model has touched at all -->
<criteria NAME="AIENHANCED" VALUE="ANY" />
<!-- documents no model has touched -->
<criteria NAME="AIENHANCED" VALUE="NONE" />
<!-- documents whose summary Connect wrote -->
<criteria NAME="AIENHANCED" VALUE="SUMMARY" />
<!-- documents carrying both a generated summary and a generated abstract -->
<criteria NAME="AIENHANCED" VALUE="SUMMARY,ABSTRACT" />
Notes:
- Documents only. The flag lives on documents, so a search carrying this criterion returns
no folders and no shortcuts, in the same way
DOCTYPEandIMPORTANCEalready do. - A list means all of the names, not any of them.
SUMMARY,ABSTRACTis a document carrying both. To find documents with either, run the two searches. ANY,ALLandNONEcover every attribute, including ones added in later releases, so a search written today keeps meaning what it says.- A
VALUEthat is neither one of the three words nor a known attribute name is rejected, and the error lists what it could have been. A misspelt attribute fails rather than quietly narrowing the search.
Date Criteria Subtypes¶
The DATECRITERIA element requires a SUBTYPE attribute to specify which date field to filter by:
| SUBTYPE value | Description |
|---|---|
REGISTERDATE |
Date the document was registered/added to the system |
CREATED |
Document creation date |
MODIFIED |
Last modification date |
CREATED OR MODIFIED |
Either the creation or modification date |
COMPLETED ON |
Workflow completion date |
DECLASSIFY ON |
Scheduled declassification date |
DOWNGRADE ON |
Scheduled downgrade date |
DOWNGRADE DATE |
Actual downgrade date |
RETAIN UNTIL |
Retention expiration date |
LAST ISO REVIEW DATE |
Date of the last ISO compliance review |
NEXT ISO REVIEW DATE |
Date of the next scheduled ISO compliance review |
DISPOSITION DATE |
Scheduled disposition date |
EXPIRATION DATE |
Document expiration date |
CUTOFF DATE |
Records cutoff date |
Example:
<criteria NAME="DATECRITERIA" OPERATOR="EQGT" SUBTYPE="CREATED" VALUE="2025-01-01" />
<criteria NAME="DATECRITERIA" OPERATOR="BETWEEN" SUBTYPE="MODIFIED" VALUE="2024-01-01|2024-12-31" />
Document Language Values¶
The DOCLANG criterion accepts the following ISO 639-1 language codes:
en, de, es, fr, da, el, et, he, hi, hu, id, it, ja, ko, nl, no, pl, pt, ro, ru, sv, tk, tr, uk, ur, uz, vi, zh
Property Set Criteria¶
To filter by the values of a custom property set, add a PROPERTYSETNAME element whose VALUE is the
property set name, with one child element per field to filter on:
<criteria NAME="PROPERTYSETNAME" VALUE="Invoice">
<criteria NAME="Customer" OPERATOR="LIKE" VALUE="Acme" />
<criteria NAME="Amount" OPERATOR="BETWEEN" VALUE="1000|5000" />
<criteria NAME="DueOn" OPERATOR="BETWEEN" VALUE="2026-01-01|2026-03-31" />
<criteria NAME="Paid" OPERATOR="EQ" VALUE="false" />
</criteria>
A document matches only if it meets every field condition (they are combined with AND). Field names are not case sensitive. A field of the set that has no child element puts no condition on the search.
Operators by field type¶
| Field type | OPERATOR |
VALUE |
Matches |
|---|---|---|---|
Text (CHAR) |
LIKE (or CONTAINS) |
text | the field contains the text |
NOTCONTAINS |
text | the field does not contain the text | |
EQ |
text | the field is exactly the text | |
NEQ |
text | the field is anything but the text | |
NOTNULL |
empty | the field has a value | |
NULL |
empty | the field has no value | |
Number (NUMBER) |
EQ |
number | equal to |
NOTEQ (or NEQ) |
number | not equal to | |
GT / LT |
number | greater than / less than | |
EQGT / EQLT |
number | at least / at most | |
BETWEEN |
low|high |
from low to high, both included |
|
NOTNULL |
empty | the field has a value | |
NULL |
empty | the field has no value | |
Date (DATE) |
EQ |
date | on that day |
EQGT / EQLT |
date | on or after / on or before that day | |
BETWEEN |
start|end |
from start to end, both days included |
|
TODAY, YESTERDAY |
empty | relative to today | |
LAST7DAYS, NEXT7DAYS |
empty | the 7 days before / after today | |
LASTWEEK, THISWEEK, NEXTWEEK |
empty | the calendar week | |
LASTMONTH, THISMONTH, NEXTMONTH |
empty | the calendar month | |
ANYTIME |
empty | the field has a date | |
NULL |
empty | the field has no date | |
Yes/No (BOOLEAN) |
EQ |
true / false |
the field has that value |
NOTNULL |
empty | the field has a value | |
NULL |
empty | the field has no value |
- Operators are not case sensitive.
BETWEENtakes two values separated by|, asDATECRITERIAdoes;;is accepted as well. Both ends are included. For a date written without a time, the end date counts as the whole day:2026-01-01|2026-03-31includes documents dated 31 March. An end date with a time is taken at that time.- Write dates as
yyyy-MM-dd.EQ,EQGTandEQLTcompare whole days; a time in the value is ignored. - An operator that does not exist for the field's type is refused, for example
BETWEENon a text field orNOTNULLon a date field (useANYTIME). - An operator that takes no value (
NULL,NOTNULL,ANYTIME,TODAY, ...) must be sent with an emptyVALUE; a value is refused.
Examples by field type¶
The examples use a property set Invoice with a text field Customer, a number field Amount, a date
field DueOn and a yes/no field Paid. Each PROPERTYSETNAME element below is one complete property set
criterion; put it inside the <criteria> root with any other criteria.
Text (CHAR)
<criteria NAME="PROPERTYSETNAME" VALUE="Invoice">
<criteria NAME="Customer" OPERATOR="LIKE" VALUE="Acme" /> <!-- contains "Acme" -->
</criteria>
<criteria NAME="PROPERTYSETNAME" VALUE="Invoice">
<criteria NAME="Customer" OPERATOR="EQ" VALUE="Acme Ltd" /> <!-- exactly "Acme Ltd" -->
</criteria>
<criteria NAME="PROPERTYSETNAME" VALUE="Invoice">
<criteria NAME="Customer" OPERATOR="NOTCONTAINS" VALUE="Test" /> <!-- does not contain "Test" -->
</criteria>
<criteria NAME="PROPERTYSETNAME" VALUE="Invoice">
<criteria NAME="Customer" OPERATOR="NULL" VALUE="" /> <!-- no customer entered -->
</criteria>
Number (NUMBER)
<criteria NAME="PROPERTYSETNAME" VALUE="Invoice">
<criteria NAME="Amount" OPERATOR="BETWEEN" VALUE="1000|5000" /> <!-- 1000 to 5000, both included -->
</criteria>
<criteria NAME="PROPERTYSETNAME" VALUE="Invoice">
<criteria NAME="Amount" OPERATOR="EQGT" VALUE="10000" /> <!-- 10000 or more -->
</criteria>
<criteria NAME="PROPERTYSETNAME" VALUE="Invoice">
<criteria NAME="Amount" OPERATOR="NOTEQ" VALUE="0" /> <!-- anything but 0 -->
</criteria>
Date (DATE)
<criteria NAME="PROPERTYSETNAME" VALUE="Invoice">
<criteria NAME="DueOn" OPERATOR="BETWEEN" VALUE="2026-01-01|2026-03-31" /> <!-- the first quarter, 31 March included -->
</criteria>
<criteria NAME="PROPERTYSETNAME" VALUE="Invoice">
<criteria NAME="DueOn" OPERATOR="EQLT" VALUE="2026-06-30" /> <!-- on or before 30 June -->
</criteria>
<criteria NAME="PROPERTYSETNAME" VALUE="Invoice">
<criteria NAME="DueOn" OPERATOR="NEXT7DAYS" VALUE="" /> <!-- due in the coming week -->
</criteria>
<criteria NAME="PROPERTYSETNAME" VALUE="Invoice">
<criteria NAME="DueOn" OPERATOR="ANYTIME" VALUE="" /> <!-- has a due date at all -->
</criteria>
Yes/No (BOOLEAN)
<criteria NAME="PROPERTYSETNAME" VALUE="Invoice">
<criteria NAME="Paid" OPERATOR="EQ" VALUE="false" /> <!-- not paid -->
</criteria>
<criteria NAME="PROPERTYSETNAME" VALUE="Invoice">
<criteria NAME="Paid" OPERATOR="NULL" VALUE="" /> <!-- never set -->
</criteria>
Several fields at once. All conditions must hold: unpaid invoices of Acme between 1,000 and 5,000, due in the first quarter.
<criteria>
<criteria NAME="SEARCHFOR" VALUE="DOCUMENTSONLY" />
<criteria NAME="PROPERTYSETNAME" VALUE="Invoice">
<criteria NAME="Customer" OPERATOR="LIKE" VALUE="Acme" />
<criteria NAME="Amount" OPERATOR="BETWEEN" VALUE="1000|5000" />
<criteria NAME="DueOn" OPERATOR="BETWEEN" VALUE="2026-01-01|2026-03-31" />
<criteria NAME="Paid" OPERATOR="EQ" VALUE="false" />
</criteria>
</criteria>
When OPERATOR is missing or VALUE is empty¶
| Field element | Result |
|---|---|
no OPERATOR (or OPERATOR="") and an empty VALUE |
No condition on that field; the search runs as if the field were not listed. |
no OPERATOR but a VALUE |
Refused with 4000: A search field value cannot be specified without a valid operator. (For a date field the message says the value must be empty for the operator.) |
an operator that needs a value, with an empty VALUE |
No condition on that field. It is not refused. |
BETWEEN without both ends (VALUE="500", "500|" or empty) |
Refused with 4000: Invalid condition specified for the field: SET.FIELD: BETWEEN needs two values separated by |: the low end and the high end. |
An operator other than BETWEEN sent with an empty value is not refused, so a search built from a form
with empty inputs silently matches more documents rather than failing. Leave a field out, or check its
value, before sending it.
Errors¶
| Case | Result |
|---|---|
| A field name the property set does not have | Refused with 4000: Property set field cannot be found : SET.FIELD |
| An operator the field type does not have | Refused with 4000: Invalid condition specified for the field: SET.FIELD: Invalid operator for text field (or number, date, boolean) |
| A value that is not a number or a date where one is needed | Refused with 4000: Invalid condition specified for the field: SET.FIELD: ... |
| A property set name that does not exist | Refused with 4041. |
Response¶
Search prepares the result set and stores it in the session. The response confirms the query was accepted and includes metadata about the total result counts.
Success Response¶
| Attribute | Description |
|---|---|
success |
true if the query was prepared successfully. |
ranksorted |
true if results are sorted by full-text relevance rank; false otherwise. |
After a successful Search call, use GetNextSearchPage to retrieve the first page of results.
Relevance and Where the Term Was Found¶
Search itself returns no items, so it carries no per-document relevance either - only
ranksorted, which says whether the pages that follow will come back in relevance order. The
relevance of each document, and which part of it the term was found in, arrive with the items
themselves: every document a full-text KEYWORDS search ranked carries a <RankInfo> child
element in the GetNextSearchPage and GetPreviousSearchPage responses.
A higher Rank is a closer match. FoundIn says where the term was found, as a number: 1 the
text of the document itself (in the version FoundInVersionNumber names), 2 its properties or
comments, 3 an e-mail attachment, 4 a workflow history entry, 0 unknown. A document matched
by database criteria alone - no KEYWORDS element in the criteria, or a keyword the content search
engine did not rank - carries no <RankInfo> element at all. See
GetNextSearchPage for the full
attribute table and suggested captions.
Error Response¶
Required Permissions¶
Any authenticated user may call this API. Read-only users may also use it.
Results are always limited to libraries the user can view. Whether each hit is also checked against the item's own permissions depends on the server setting Search:CheckSecurityOnSearch, which is off by default. With it off, a hit in a library the user belongs to is returned even when the item's permissions would deny reading it; opening the item still fails. With it on, every hit is checked for Read (documents) or List (folders) permission before it is returned.
Example¶
GET Request¶
GET /srv.asmx/Search?authenticationTicket=3f2504e0-4f89-11d3-9a0c-0305e82c3301
&xmlcriteria=%3Ccriteria%3E%3Ccriteria+NAME%3D%22KEYWORDS%22+VALUE%3D%22annual+report%22%2F%3E%3C%2Fcriteria%3E
&SortBy=MODIFICATIONDATE
&AscendingOrder=false
HTTP/1.1
POST Request¶
POST /srv.asmx/Search HTTP/1.1
Content-Type: application/x-www-form-urlencoded
authenticationTicket=3f2504e0-4f89-11d3-9a0c-0305e82c3301
&xmlcriteria=<criteria>
<criteria NAME="FOLDER" VALUE="/Finance/Reports" />
<criteria NAME="INCLUDESUBFOLDERS" VALUE="true" />
<criteria NAME="DATECRITERIA" OPERATOR="EQGT" SUBTYPE="MODIFIED" VALUE="2025-01-01" />
<criteria NAME="SEARCHFOR" VALUE="DOCUMENTSONLY" />
</criteria>
&SortBy=MODIFICATIONDATE
&AscendingOrder=false
SOAP Request¶
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:tns="http://tempuri.org/">
<soap:Body>
<tns:Search>
<tns:authenticationTicket>3f2504e0-4f89-11d3-9a0c-0305e82c3301</tns:authenticationTicket>
<tns:xmlcriteria><criteria>
<criteria NAME="KEYWORDS" VALUE="annual report"/>
</criteria></tns:xmlcriteria>
<tns:SortBy>MODIFICATIONDATE</tns:SortBy>
<tns:AscendingOrder>false</tns:AscendingOrder>
</tns:Search>
</soap:Body>
</soap:Envelope>
Full Criteria Example -" Advanced Search¶
<criteria>
<criteria NAME="SEARCHSCOPE" VALUE="ONLINE" />
<criteria NAME="KEYWORDS" VALUE="quarterly budget" />
<criteria NAME="FOLDER" VALUE="/Finance/Reports" />
<criteria NAME="INCLUDESUBFOLDERS" VALUE="true" />
<criteria NAME="SEARCHFOR" VALUE="DOCUMENTSONLY" />
<criteria NAME="DATECRITERIA" OPERATOR="BETWEEN" SUBTYPE="MODIFIED" VALUE="2024-01-01|2024-12-31" />
<criteria NAME="IMPORTANCE" OPERATOR="EQ" VALUE="HIGH" />
<criteria NAME="PUBLISHSTATUS" VALUE="2" />
<criteria NAME="AIENHANCED" VALUE="SUMMARY" />
<!-- One condition per field type: text, number (BETWEEN), date (BETWEEN) and yes/no -->
<criteria NAME="PROPERTYSETNAME" VALUE="ProjectMetadata">
<criteria NAME="Department" OPERATOR="EQ" VALUE="Finance" />
<criteria NAME="Budget" OPERATOR="BETWEEN" VALUE="50000|250000" />
<criteria NAME="StartDate" OPERATOR="BETWEEN" VALUE="2024-01-01|2024-06-30" />
<criteria NAME="Approved" OPERATOR="EQ" VALUE="true" />
</criteria>
</criteria>
User-Scoped Search Examples¶
<!-- Items subscribed to by a user -->
<criteria>
<criteria NAME="SUBSCRIPTIONSOF" VALUE="jsmith" />
</criteria>
<!-- Items in a user's favorites -->
<criteria>
<criteria NAME="FAVORITESOF" VALUE="jsmith" />
</criteria>
<!-- Current user's recent documents -->
<criteria>
<criteria NAME="RECENTDOCUMENTS" />
</criteria>
<!-- Items in a user's download queue -->
<criteria>
<criteria NAME="DOWNLOADQUEOF" VALUE="jsmith" />
</criteria>
JavaScript¶
Every call answers XML with HTTP 200, success or not, so success is the thing to branch on and
errorCode is the number to report.
async function call(action, params) {
const response = await fetch(`/srv.asmx/${action}?${new URLSearchParams(params)}`);
const root = new DOMParser()
.parseFromString(await response.text(), 'text/xml')
.documentElement;
if (root.getAttribute('success') !== 'true') {
throw new Error(`${root.getAttribute('errorCode')}: ${root.getAttribute('error')}`);
}
return root;
}
Runs a search and answers how many things matched - not the things themselves. The rows come from GetNextSearchPage, which reads the result your session is holding, so the two are always used together.
const criteria = `
<criteria>
<item NAME="FOLDER" OPERATOR="" VALUE="/Finance/Invoices" />
<item NAME="INCLUDESUBFOLDERS" OPERATOR="" VALUE="true" />
<item NAME="KEYWORDS" OPERATOR="" VALUE="overdue" />
</criteria>`;
const found = await call('Search', {
authenticationTicket: ticket,
xmlcriteria: criteria,
SortBy: 'DOCUMENTNAME',
AscendingOrder: true
});
console.log(found.getAttribute('count'), found.getAttribute('ranksorted'));
const page = await call('GetNextSearchPage', {
authenticationTicket: ticket,
withrules: false, withPropertySets: false,
withSecurity: false, withOwner: false, withVersions: false
});
for (const document of page.querySelectorAll('document')) {
console.log(document.getAttribute('Name'), document.getAttribute('Path'));
}
xmlcriteria¶
A root element whose children each carry NAME, OPERATOR and VALUE attributes. The element
names themselves are not read. A name the parser does not know is refused 4000 and the message
quotes it. An empty <criteria /> matches nothing rather than everything.
The names include SEARCHSCOPE, SEARCHFOR, KEYWORDS, DOCUMENTNAME, DOCUMENTID, FOLDER,
FOLDERBYID, INCLUDESUBFOLDERS, FOLDERDESCRIPTION, DOCUMENTFORMAT, DOCTYPE, FOLDERSONLY,
DOCUMENTSONLY, OBJECTTYPENAME, VIEWCRITERIA, CHECKOUTSTATUS, USERNAME, SIZEIS,
IMPORTANCE, CLEVEL, DATECRITERIA, DOCSRC, DOCLANG, DOCAUTHOR, RDDEFID,
TEMPLATEPATH, PUBLISHSTATUS, AIENHANCED, SUBSCRIPTIONSOF, FAVORITESOF,
RECENTDOCUMENTS, DOWNLOADQUEOF and PROPERTYSETNAME.
SortBy¶
Required - it is a non-nullable string, so it cannot be left out even though the search has a
default sort of its own. A column it does not know is refused 4000 and the message lists them all:
DOCUMENTNAME, DOCUMENTSIZE, MIMETYPEDESCRIPTION, MODIFICATIONDATE, STATUSCODE,
FOLDERNAME, LASTVERSIONNUMBER, PERCENTCOMPLETE, CREATIONDATE, MODIFIEDBYNAME,
DESCRIPTION, OWNERNAME, FLOWNAME, VIEW, CHECKEDOUTBYNAME, COMPLETIONDATE, IMPORTANCE,
RDDEFID, CLEVEL, DECLASSIFYON, DOWNGRADEON, DISPOSITIONDATE, LASTISOREVIEW,
NEXTISOREVIEW, and PROPERTYSETNAME.FIELDNAME for a custom field.
A criteria document that is not well formed is refused with 4000, the same as a criterion name
the parser does not recognise.
Notes¶
-
The
SearchAPI only prepares the result set; it does not return document listings. CallGetNextSearchPageimmediately after to retrieve the first page. -
Result sets are stored server-side in the user's session and expire with the session (30-day sliding window).
-
Passing an empty string for
xmlcriteriareturns all documents and folders accessible to the user, subject to permissions. -
Passing an empty string for
SortByuses the system default sort (by document name, ascending). -
Full-text search (
KEYWORDS) requires a content search service (Windows Search, DTSearch, or Remote Search) to be configured and running. If no content search service is available, keyword searches return only metadata matches. -
The
DATECRITERIAvalue forBETWEENuses a pipe (|) separator:startDate|endDateinyyyy-MM-ddformat. -
The
DATECRITERIAoperatorEQLTmeans "on or before the given date";EQGTmeans "on or after the given date";EQmeans exactly on the given date. -
The
CHECKOUTSTATUSvalueCHECKEDOUTBYUSERrequires an additionalUSERNAMEattribute on the same element specifying the target user's login name. -
The
VIEWCRITERIAcriterion can optionally include aUSERNAMEattribute to filter by another user's view history. -
The
SUBSCRIPTIONSOF,FAVORITESOF, andDOWNLOADQUEOFcriteria require theVALUEattribute to be a valid infoRouter username; an error is returned if the user is not found. -
SUBSCRIPTIONSOF,FAVORITESOF,DOWNLOADQUEOFandVIEWCRITERIAwithUSERNAMEread another user's activity, so for a user other than the caller they need the right the dedicated calls need (GetSubscribedDocumentsByUser, GetFavoriteDocumentsOfUser, GetUserViewLog): an administrator, a User Manager, or a manager of that user's library. A co-worker is refused with4030. Naming yourself always works. -
The
RECENTDOCUMENTScriterion returns recent documents for the currently authenticated user only; noVALUEattribute is required. -
Property set field names are case-insensitive. A property set name that does not exist is refused with
4041. -
The
TEMPLATEPATHcriterion accepts either a full infoRouter document path (e.g./Finance/Templates/mytemplate.htm) or the short-form~D<id>notation (e.g.~D42). Use~D999as the reserved identifier for all HTML form documents — it matches any document whose template is the built-in HTML document type regardless of which specific template file was used.
Related APIs¶
-
GetNextSearchPage - Retrieves the next page of the prepared search results
-
GetPreviousSearchPage - Retrieves the previous page of the prepared search results
-
GetFoldersAndDocuments - Lists documents and folders in a specific path without a search query
-
GetDocuments - Returns documents in a specific folder path
Error Codes¶
The errorCode values this operation returns, checked against a running server:
errorCode |
When |
|---|---|
4010 |
the ticket is expired or unknown, or there is no ticket at all |
4000 |
a criterion name the parser does not know, or a SortBy that is not one of the columns |
4000 |
the document was not well-formed XML; the message carries the parser's own words |
4041 |
a criterion names a user who is not there |
4030 |
a criterion names another user whose lists or view history the caller may not read, or a user the caller may not see |
HTTP 400 |
a required string parameter was empty; refused by model binding, so there is no error document |