Parents
GraphQL can significantly enhance the power of your API Integration. To onboard, please reach out to your Account Manager for pricing information.
Parents is a field on the Entity root type that represents the entity's associated parent records. Parents is an array of type Entity, and is specified by passing a char type ID parameter.
The Parents field is especially powerful because it allows you to traverse a record's hierarchy. You can include multiple Parents fields for each entity to represent different char types, and each Parent Entity can have its own Parents field. Chaining together the Parents fields allows you to traverse an entire record's hierarchy in a single request.
In the example below, we are retrieving a Rights record, it's parent Catalog records, and those Catalog's parent Deal records.
Response:
Aliasing
When using multiple Parents fields for different char types, it is necessary to keep track of what a certain Parents field represents by using an Alias. Adding an alias to a field will rename the response Parents field with the desired alias name.
In the below example, catalog
is added as an alias for parent records with char type ID = 1 and deals
is added an alias for parent records with a char type ID = 4.
Response:
Paging
To limit response sizes, the Parents field utilizes paging. To page through the children records, use the skip
and take
parameters:
The default page size is 50.
There are also additional fields in the request that help to identify the total number of Parents records (totalCount
), if a previous page exists (hasPreviousPage
), and if a next page exists (hasNextPage
). hasPreviousPage
and hasNextPage
are nested in a pageInfo
object on the Parents object:
Response:
Using these fields and parameters, you can page through the Parents in subsequent requests, using logic similar to:
if (pageInfo.hasNextPage)
skip = skip + take
Filtering
Parents can be filtered by using a special parameter object called where
.
All of the following Entity fields can be filtered on in the Parents collection:
title
templateId
statusId
createdBy
createdDate
lastUpdatedBy
lastUpdatedDate
statusUpdatedBy
statusUpdatedDate
String Filtering
String fields (title
) can be filtered using the following operators:
operator | value type | description | usage |
---|---|---|---|
eq | String | exact match | {title: {eq: "Episode 1"}} |
neq | String | doesn't match | {title: {neq: "Episode 1"}} |
contains | String | substring match | {title: {contains: "Episode"}} |
ncontains | String | doesn't contain substring match | {title: {ncontains: "Episode"}} |
in | [String] | exact match one of the following | {title: {in: ["Episode 1", "Episode 2"]}} |
nin | [String] | doesn't match any of the following | {title: {nin: ["Episode 1", "Episode 2"]}} |
startsWith | String | string starts with | {title: {startsWith: "Episode"}} |
nstartsWith | String | string doesn't start with | {title: {nstartsWith: "Episode"}} |
endsWith | String | string ends with | {title: {endsWith: "Episode"}} |
nendsWith | String | string doesn't end with | {title: {nendsWith: "Episode"}} |
Comparable Filtering
Field types of bool
, int
, and DateTime
such as templateId
, statusId
, createdBy
, createdDate
, lastUpdatedBy
, lastUpdatedDate
, statusUpdatedBy
, statusUpdatedDate
can be filtered using the following operators:
operator | value type | description | usage |
---|---|---|---|
eq | Int, Bool, DateTime | exact match | {templateId: {eq: 1}} |
neq | Int, Bool, DateTime | doesn't match | {templateId: {eq: 1}} |
in | [Int], [Bool], [DateTime] | matches one of the following | {templateId: {in: [1,2]}} |
nin | [Int], [Bool], [DateTime] | doesn't match any of the following | {statusId: {nin: [1,2,3]}} |
gt | Int, Bool, DateTime | greater than | {createdDate: {gt: "2023-06-27T16:07:08.570Z"}} |
ngt | Int, Bool, DateTime | not greater than | {createdDate: {gt: "2023-06-27T16:07:08.570Z"}} |
gte | Int, Bool, DateTime | greater than or equal | {createdDate: {gte: "2023-06-27T16:07:08.570Z"}} |
ngte | Int, Bool, DateTime | not greater than or equal | {createdDate: {ngte: "2023-06-27T16:07:08.570Z"}} |
lt | Int, Bool, DateTime | less than | {createdDate: {lt: "2023-06-27T16:07:08.570Z"}} |
nlt | Int, Bool, DateTime | not less than | {createdDate: {nlt: "2023-06-27T16:07:08.570Z"}} |
lte | Int, Bool, DateTime | less than or equal | {createdDate: {lte: "2023-06-27T16:07:08.570Z"}} |
nlte | Int, Bool, DateTime | not less than or equal | {createdDate: {nlte: "2023-06-27T16:07:08.570Z"}} |
and / or Filtering
All of the above operators can be combined using the and
and or
operators:
operator | description | usage |
---|---|---|
and | all conditions must be true | { and: [ {lastUpdatedDate: {gt: "2023-06-27T16:07:08.570Z"}}, {templateId: {in: [1,2]}} ] } |
or | one condition must be true | { or: [ {lastUpdatedDate: {gt: "2023-06-27T16:07:08.570Z"}}, {templateId: {in: [1,2]}} ] } |
Sorting
To sort the records in the response by a specific field, specify an order
parameter:
You can sort by the following fields:
id
title
createdBy
createdDate
lastUpdatedBy
lastUpdatedDate
statusUpdatedBy
statusUpdatedDate
You can sort each of the fields above either ascending using ASC
or descending using DESC
.
You can also sort on a field and then by another field:
Last updated