# Querying API


Use the Querying API to fetch multiple pages of search results sequentially. This REST API lets you to retrieve entities that match specific criteria. <br><br> When using the Querying API, keep the following considerations in mind:
- Due to deep paging considerations the querying endpoint is limited to retrieve up to 10,000 results.
- When search results are sorted on a property and there are multiple results that have the same value for that property, then those results are displayed in random order. To address this limitation, use a secondary sort property as a tie-breaker.
- With full-text search, do not use the following characters: `«`, `»`, `÷`,`×`, `¦`, `¤`, `⋇`, or `؉`. Do not combine special characters and wildcards within the same word. For example, use invoice re*ort instead of invoice-re*ort to ensure consistent results like invoice-report.
- The <i>FullText</i> search property only supports the `==` operator, but can be negated.
- When you run a query, make sure you include all the entity members that you want to retrieve. If you omit the members parameter, the response will return all the existing entity members (all properties, all relations, and so on). To ensure optimal performance, only request the members you actually need.
- The API is configured to only load the related paths that are specified in a query. If you don't specify related path relations in your query, the response won't return any. <br> {% admonition type="info" name="Note" %}You must set the `X-ApiVersion` header to 3.{% /admonition %}
## Authentication
To use the Querying API, you need:
- The URL of your Content Hub server. You can get this from your Content Hub
  Administrator. Enter this URL in the <b>{{server}}</b> variable by hovering your mouse
  over the variable in the <b>Try it</b> pane and then clicking <b>Edit</b>.

- An access token and the client ID. Both are sent with every request. You 
  can create a token through the [Content Hub
  interface](https://doc.sitecore.com/ch/en/users/content-hub/create-an-oauth-client.html) 
  or by [requesting one using the API
  itself](https://doc.sitecore.com/ch/en/developers/cloud-dev/oauth-tokens.html#grant-flows).


Version: v3.0
License: closed source
Metadata:
  - product: Content Hub

## Servers

```
https://{server}
```

Variables:
- `server`
Default: "your-server"

## Security

### OAuth2.0

Type: oauth2

## Download OpenAPI description

[Querying API](https://api-docs.sitecore.com/_bundle/ch/querying-api/@v3.0/index.yaml)

## Querying

The Querying API is responsible for fetching multiple pages of results sequentially. <br></br> The Querying API supports the following operators:
 - `Equals`
 - `NotEquals`
 - `Gt`
 - `Lt`
 - `Gte`
 - `Lte`
 - `Contains`
 - `StartsWith`
 - `EndsWith`

### Retrieve entities using a query string

 - [POST /api/entities/query](https://api-docs.sitecore.com/ch/querying-api/querying/entitiesbyqueryv3.md): Lists entities that match the query in a request body. The query filter supports multiple types, each with specific properties:
#### Composite filter
Combines multiple filters using a logical operator (AND, OR).
- Required - type, operator, children
- Example - {"type": "Composite", "operator": "AND", "children": [...]}
#### Not filter
Negates a child filter.
- Required - type, child
- Example - {"type": "Not", "child": {"type": "Definition", "operator": "Equals", "name": "M.Asset"}}
#### Property filter
Filters entities by a property value.
- Required - type, property, operator, value, data_type
- Optional - culture (for localized properties)
- Example - {"type": "Property", "property": "Title", "operator": "Contains", "value": "example"}
#### Relation filter
Filters entities by a relation.
- Required - type, relation
- Optional - parent_id or child_id
- Example - {"type": "Relation", "relation": "FinalLifeCycleStatusToAsset", "parent_id": 543}
#### CreatedBy filter
Filters entities by the user who created them.
- Required - type, user_id
- Example - {"type": "CreatedBy", "user_id": 123}

#### ModifiedBy filter
Filters entities by the user who last modified them.
- Required - type, user_id
- Example - {"type": "ModifiedBy", "user_id": 456}

#### SecuredAncestors filter
Filters entities by their secured ancestor.
- Required - type, ancestor_id
- Example - {"type": "SecuredAncestors", "ancestor_id": 789}
#### ID filter
Filters entities by their ID.
- Required - type, operator, value
- Example - {"type": "Id", "operator": "Equals", "value": 12345}

#### Identifier filter
Filters entities by their identifier.
- Required - type, operator, value
- Example - {"type": "Identifier", "operator": "Equals", "value": "my-unique-identifier"}
#### Definition filter
Filters entities by their entity definition.
- Required - type, operator, name
- Example - {"type": "Definition", "operator": "Equals", "name": "M.Asset"}

#### Modules filter
Filters entities by the modules they belong to.
- Required - type, modules
- Example - {"type": "Modules", "modules": ["M.DAM", "M.PCM"]}

#### CreatedOn filter
Filters entities by their creation date.
- Required - type, operator, value (ISO 8601 format)
- Example - {"type": "CreatedOn", "operator": "GreaterThan", "value": "2024-01-01T00:00:00Z"}

#### ModifiedOn filter
Filters entities by their last modification date.
- Required - type, operator, value (ISO 8601 format)
- Example - {"type": "ModifiedOn", "operator": "LessThan", "value": "2024-12-31T23:59:59Z"}

### Retrieve entities using a scroll-based query

 - [POST /api/entities/scroll](https://api-docs.sitecore.com/ch/querying-api/querying/entitiesbyscrollv3.md): Lists all entities using a scroll-based query for efficient large result set traversal.

### Retrieve entities using a search query

 - [POST /api/entities/searchAfter](https://api-docs.sitecore.com/ch/querying-api/querying/entitiesbysearchafterv3.md): Lists all entities that match the criteria. This endpoint supports sorted pagination using the search-after property.  {% admonition type="info" name="Note" %}For additional information, see the SearchAfter API (V3) developer documentation, including information about supported query operators, filters and supported operators, as well as SearchAfter examples.{% /admonition %}

