Listing forms on a web page using APIs
CREATED FOR:
- User
AEM Forms provides a REST-based search API that web developers can use to query and retrieve a set of forms that meets the search criteria. You can use APIs to search forms based on various filters. The response object contains form attributes, properties, and render end points of forms.
To search forms using the REST API, send a GET request to the server at https://[server]:[port]/libs/fd/fm/content/manage.json
with query parameters described below.
Query parameters
Specifies the function to call. To search forms, set value of the func
attribute to searchForms
.
For example,
URLParameterBuilder entityBuilder=new URLParameterBuilder (); entityBuilder.add("func", "searchForms");
Note: This parameter is mandatory.
Specifies the application path to search for forms. By default, the appPath attribute searches all the applications available at the root node level.
You can specify multiple application paths in a single search query. Separate multiple paths with pipe (|) character.
Specifies the properties to fetch with the assets. You can use asterisk (*) to fetch all the properties at once. Use the pipe (|) operator to specify multiple properties.
For example, cutPoints=propertyName1|propertyName2|propertyName3
Note:
- Properties such as id, path, and name are always fetched.
- Every asset has a different set of properties. Properties such as formUrl, pdfUrl, and guideUrl do not depend on the cutpoints attribute. These properties depend on the asset type and are fetched accordingly.
Specifies the related assets to fetch along with the search results. You can choose one of the following options to fetch related assets:
- NO_RELATION: Do not fetch related assets.
- IMMEDIATE: Fetches assets that are directly related to search results.
- ALL: Fetch directly and indirectly related assets.
Specifies the list of statements. The queries are executes on the list of the statements specified in the JSON format.
For example,
JSONArray statementArray=new JSONArray(); JSONObject statement=new JSONObject(); statement.put("name", "title"); statement.put("value", "SimpleSurveyAF"); statement.put("operator", "EQ"); statementArray.put(statement);
In the above example,
-
name: specifies the name of the property to search for.
-
value: specifies the value of the property to search for.
-
operator: specifies the operator to apply while searching. The following operators are supported:
- EQ - Equal to
- NEQ - Not equal to
- GT - Greater than
- LT - Less than
- GTEQ - Greater than or equal to
- LTEQ - Less than or equal to
- CONTAINS - A contains B if B is a part of A
- FULLTEXT - Full text search
- STARTSWITH - A starts with B if B is the beginning part of A
- ENDSWITH - A ends with B if B is the ending part of A
- LIKE - Implements the LIKE operator
- AND - Combine multiple statements
Note: GT, LT, GTEQ, and LTEQ operators are applicable for properties of linear type such as LONG, DOUBLE, and DATE.
Specifies the order criteria for the search results. The criteria is defined in the JSON format. You can sort search results on more than one field. The results are sorted in the order as the fields appear in the query.
For example,
To retrieve query results ordered by title property in the ascending order, add following parameter:
JSONArray orderingsArray=new JSONArray(); JSONObject orderings=new JSONObject(); orderings.put("name", "title"); orderings.put("criteria", "ASC"); orderingsArray.put(orderings); entityBuilder.add("orderings", orderingsArray.toString());
-
name: Specifies the name of the property to use to order the search results.
-
criteria: Specifies the order of the results. The order attribute accepts following values:
- ASC - Use ASC to arrange results in the ascending order.
- DES - Use DES to arrange results in the descending order.
includeXdp
attribute is applicable for assets of type FORM
, PDFFORM
, and PRINTFORM
.Sample request
func : searchForms
appPath : /content/dam/formsanddocuments/MyApplication23
cutPoints : title|description|author|status|creationDate|lastModifiedDate|activationDate|expiryDate|tags|allowedRenderFormat|formmodel
relation : NO_RELATION
includeXdp : false
maxSize : 10
offset : 0
returnCount : true
statements: [{"name":"name","value":"*Claim.xdp","operator":"CONTAINS"},
{"name":"","value":"Expense","operator":"FULLTEXT"},
{"name":"description","value":"ABCD*","operator":"CONTAINS"},
{"name":"status","value":"false","operator":"EQ"},
{"name":"lastModifiedDate","value":"01/09/2013","operator":"GTEQ"},
{"name":"lastModifiedDate","value":"01/18/2013","operator":"LTEQ"}]
orderings:[{"name" :“lastModifiedDate“:”order”:”ASC”}]
Sample response
[
{"resultCount":2},
{"assetType":"FORM","name":"ExpenseClaim.xdp","id":"509fa2d5-e3c9-407b-b8dc-fa0ba08eb0ce",
"path":"/content/dam/formsanddocuments/MyApplication23/1.0/ExpenseClaim.xdp",
"title":"Expense Report","description":"ABCDEFGIJK","author":"Frank Bowman",
"tags":[],"formUrl":"/content/dam/formsanddocuments/MyApplication23/1.0/ExpenseClaim.xdp/jcr:content",
"pdfUrl":"/content/dam/formsanddocuments/MyApplication23/1.0/ExpenseClaim.xdp/jcr:content?type=pdf",
"references":[],"images":[{"assetType":"resource","name":"Image.gif","id":"5477a127-8bbf-4cec-8f81-2689e5cb4a15",
"path":"/content/dam/formsanddocuments/MyApplication23/1.0/Image.gif","resourceSize":0}],
"status":false,"creationDate":1358429845623,"lastModifiedDate":1358429846771},
{"assetType":"FORM","name":"ExpenseClaim.xdp","id":"4312239b-b666-4d36-95bc-641b3a39ddd4",
"path":"/content/dam/formsanddocuments/MyApplication23/ExpenseClaim.xdp",
"title":"Expense Report","description":"ABCDefghijklm","author":"Frank Bowman",
"tags":[],"formUrl":"/content/dam/formsanddocuments/MyApplication23/ExpenseClaim.xdp/jcr:content",
"pdfUrl":"/content/dam/formsanddocuments/MyApplication23/ExpenseClaim.xdp/jcr:content?type=pdf",
"references":[],"images":[{"assetType":"resource","name":"Image.gif","id":"118a2e3f-7097-4d8c-85d1-651306de284a",
"path":"/content/dam/formsanddocuments/MyApplication23/Image.gif","resourceSize":0}],"status":false,
"creationDate":1358429856690,"lastModifiedDate":1358430109023}
]
Related Articles
- Enable forms portal components
- Create forms portal page
- List forms on a web page using APIs
- Use Drafts and submissions component
- Customize storage of drafts and submitted forms
- Sample for integrating drafts & submissions component with database
- Customizing templates for forms portal components
- Introduction to publishing forms on a portal