How to search Confluence pages by content state

Hello people,

I’m trying to search Confluence pages with a particular content state.

Reviewing the Confluence search endpoint there is no direct option to search by the content state. So, as I have found the content state is stores as a content property, I’m trying to build a CQL for this content property.

The key of the content property for published content states is content-state-published as you can see if you try to get the content properties of a page using the endpoint {confluenceBaseURL}/wiki/rest/api/content/{pageId}/property

So, as it is said in the Content properties documentation, you can write a CQL using them. I’m trying to build something like CQL=content.property[content-state-published].contentState.id = {stateId}
but the search endpoint is always giving me a 400 error with an error message like “com.atlassian.confluence.api.service.exceptions.BadRequestException: Could not parse cql”. Take on count I’m writing %5B for [ character and %5D for ] to make it work. The search URL in my case is something like {confluenceBaseURL}/wiki/rest/api/search?cql=content.property%5Bcontent-state-published%5D.contentState.id ={stateId}&limit=25

  • Can you please tell me if the internal Content Properties (editor, content-state-published and content-state-draft in my case) for a page are indexed and you can search by them?
  • Am I writing something wrong in the CQL?
  • Is there any other way to search by content state?

We really need to be able to search by the content state to be able to develop the feature we are looking for.

Cheers.

1 Like

Hi @alvaro.aranda. Great question. I dig some digging in with some internal experts, and we came up with this CQL query using cqlcontext and contentStatuses:

/wiki/rest/api/content/search?cql=type=page&cqlcontext=%7B"contentStatuses"%3A%5B"archived"%5D%7D

(be sure to select all/scroll on that code block above)

contentStatuses is mentioned in the docs for CQL search. Valid arguments appear to be: draft, archived, and current (which I surmised from the Content State API docs).

1 Like

Hello @nmansilla,

First of all thanks a lot for going into this. For us is really important to unblock it to be able to develop something related to it.

Unfortunately I think we are talking about different things. I know we are able to search for pages looking at their content statuses (archived, current…) but here I’m trying to do it looking at states (rough draft, in progress, ready for review…). Statuses are related to a version of the page and states directly to the page. Statuses are static but new custom states can be added too.

I hope we can find a way to search looking at states.

Cheers.

1 Like

@alvaro.aranda, apologies for confusing those two! Unfortunately, there is not a way to select/filter content by custom state with CQL.