Legacy Knowledge Base
Published Jul. 2, 2025

Headless Delivery API - Filtering structured content

Written By

Antonio Ortega

How To articles are not official guidelines or officially supported documentation. They are community-contributed content and may not always reflect the latest updates to Liferay DXP. We welcome your feedback to improve How To articles!

While we make every effort to ensure this Knowledge Base is accurate, it may not always reflect the most recent updates or official guidelines.We appreciate your understanding and encourage you to reach out with any feedback or concerns.

Legacy Article

You are viewing an article from our legacy "FastTrack" publication program, made available for informational purposes. Articles in this program were published without a requirement for independent editing or verification and are provided"as is" without guarantee.

Before using any information from this article, independently verify its suitability for your situation and project.

Issue

  • Making use of our headless delivery API you can retrieve all your web contents but sometimes we might want to filter them according to different business requirements, like getting only those web contents created from a certain structure or only those ones where some field contains a specific value. Understanding how our headless delivery API works with structured content is key to achieve these goals.

Environment

  • Liferay DXP 7.2+

Resolution

  • As explained here, to filter for a ContentField value (dynamic values created by the end user), you must use the endpoints that are scoped to an individual ContentStructure. To do so, find the ID of the ContentStructure and use it in place of {contentStructureId} in this URL:
/content-structures/{contentStructureId}/structured-contents
  • Once we've retrieved all the contents for that contentStructureId we can filter them but we need to keep in mind our Headless Delivery API relies on the information provided by Elastic Search, so only those fields indexable by keyword would be filterable.
  • Some type of fields, such as HTML or Select have no option to make them indexable by keywords so they wouldn't be filterable by our Headless Delivery API.
  • To filter by field and value you can use below URL as an example:
/content-structures/{contentStructureId}/structured-contents/?filter=contentFields/title eq 'MyTitle'
  •  In case you need to find those web contents with some value in a HTML field, you can not filter, but you can, at least, perform a search for the string you are looking for:
content-structures/{contentStructureId}/structured-contents/?search='textWeWantToFind'

Additional Information

 

Did this article resolve your issue ?

Legacy Knowledge Base