All the changes to the Content Delivery API:
RecordInterface
and FileFieldInterface
interfaces Every GraphQL type related records/blocks now implement the RecordInterface
interface;
Every GraphQL type related to uploads, single asset or asset gallery fields now implements the FileFieldInterface
interface.
isBlank
filter to text fields To have a simple way to filter empty texts, especially when using a structured text field, we have added a isBlank
filter to the textual fields.
Changes to item fields
Single-line text field Added boolean filter isBlank
Multiple-line text field Added boolean filter isBlank
Structured text field Added boolean filter isBlank
To make the API more consistent and prevent ambiguous results we have changed how filtering works in some edge cases.
This is a big changeset, but should only affect edge cases and the minority of usages, following all the details.
Changes to item fields
Boolean fieldFiltering fields with {eq: null}
will return an error message in response payload. Before this change, the filter would have returned always an empty array. You can still retrieve fields with null
value using {eq: false}
Color fieldFiltering fields with {exists: null}
will return an error message in response payload. Before this change, the filter would have returned the same result as {exists: false}
. You can use {exists: false}
from now on.
DateTime fieldFiltering fields with, for instance {neq: "2020-04-09T00:00:00+02:00"}
will return also items with null
values. Before this change, the filter would have returned only for not null
values different from 2020-04-09T00:00:00+02:00
.
Date fieldFiltering fields with, for instance {neq: "2020-04-09"}
will return also items with null
values. Before this change, the filter would have returned only for not null
values different from 2020-04-09
.
Upload field
Filtering fields with {eq: null}
now has the same effect of using {exists: false}
. Before this change, the filter would have returned always an empty array.
Filtering fields with {neq: null}
now has the same effect of using {exists: true}
. Before this change, the filter would have returned always an empty array.
Filtering fields with, for instance {neq: "123456"}
will return also items with null
values. Before this change, the filter would have returned only for items with not null
uploads ids different from 123456
.
Filtering fields with {exists: null}
will return an error message in response payload. Before this change, the filter would have returned the same result as {exists: false}
. Please, use {exists: false}
instead.
Important: Filtering fields with {in: []}
will return an empty collection. Before this change, the request would have returned all items.
Important: Filtering fields with {notIn: []}
will return all items. Before this change, the request would have returned an empty collection.
Important: Filtering fields with, for instance {notIn: ["123456"]}
will return all items having values different from 123456
OR equal to null
. Before this change, the request would have returned only items having not null
values different from 123456
.
Float fields
Filtering fields with, for instance, {neq: "2.42"}
will return also items with null
values. Before this change, the filter would have returned only for items with not null
values different from 2.42
.
Filtering fields with {exists: null}
will return an error message in response payload. Before this change, the filter would have returned the same result as {exists: false}
. Please, use {exists: false}
instead.
GalleryFiltering fields with {exists: null}
will return an error message in response payload. Before this change, the filter would have returned the same result as {exists: false}
. Please, use {exists: false}
instead.
Integer
Filtering fields with, for instance, {neq: "5"}
now will return also items with null
values. Before this change, the filter would have returned only for items with not null
values different from 5
.
Filtering fields with {exists: null}
will return an error message in response payload. Before this change, the filter would have returned the same result as {exists: false}
. Please, use {exists: false}
instead.
JSONFiltering fields with {exists: null}
will return an error message in response payload. Before this change, the filter would have returned the same result as {exists: false}
. Please, use {exists: false}
instead.
Position (geo points)Filtering fields with {exists: null}
will return an error message in response payload. Before this change, the filter would have returned the same result as {exists: false}
. Please, use {exists: false}
instead.
Link
Filtering fields with {exists: null}
will return an error message in response payload. Before this change, the filter would have returned the same result as {exists: false}
. Please, use {exists: false}
instead.
Filtering fields with {eq: null}
now has the same effect of using {exists: false}
. Before this change, the filter would have returned always an empty array.
Filtering fields with {neq: null}
now has the same effect of using {exists: true}
. Before this change, the filter would have returned always an empty array.
Filtering fields with, for instance, {neq: "123456"}
will return also items with null
values. Before this change, the filter would have returned only for items with not null
values different from 123456
.
Important: Filtering fields with {in: []}
will return an empty collection. Before this change, the request would have returned all items.
Important: Filtering fields with {notIn: []}
will return all items. Before this change, the request would have returned an empty collection.
Filtering fields with, for instance {notIn: ["123456"]}
will return all items having values different from 123456
OR equal to null
. Before this change, the request would have returned only items having not null
values different from 123456
.
LinksFiltering fields with {exists: null}
will return an error message in response payload. Before this change, the filter would have returned the same result as {exists: false}
. Please, use {exists: false}
instead.
SeoFiltering fields with {exists: null}
will return an error message in response payload. Before this change, the filter would have returned the same result as {exists: false}
. Please, use {exists: false}
instead.
Slug
Filtering fields with, for instance, {neq: "foobar"}
now will return also items with null
values. Before this change, the filter would have returned only for items with not null
values different from foobar
.
Filtering fields with, for instance {notIn: ["foobar"]}
will return all items having values different from foobar
OR equal to null
. Before this change, the request would have returned only items having not null
values different from foobar
.
String
Filtering fields with {exists: null}
will return an error message in response payload. Before this change, the filter would have returned the same result as {exists: false}
. Please, use {exists: false}
instead.
Filtering fields with {eq: null}
now has the same effect of using {exists: false}
. Before this change, the filter would have returned always an empty array.
Filtering fields with {neq: null}
now has the same effect of using {exists: true}
. Before this change, the filter would have returned always an empty array.
Filtering fields with, for instance, {neq: "foobar"}
will return also items with null
values. Before this change, the filter would have returned only for items with not null
values different from foobar
.
Filtering fields with, for instance, {notMatches: { pattern: "foobar"}}
will return also items with null
values. Before this change, the filter would have returned only for items with not null
values different from foobar
.
Filtering fields with, for instance {notIn: ["foobar"]}
will return all items having values different from foobar
OR equal to null
. Before this change, the request would have returned only items having not null
values different from foobar
.
Text
Filtering fields with {exists: null}
will return an error message in response payload. Before this change, the filter would have returned the same result as {exists: false}
. Please, use {exists: false}
instead.
Filtering fields with, for instance, {notMatches: { pattern: "foobar"}}
will return also items with null
values. Before this change, the filter would have returned only for items with not null
values different from foobar
.
VideoFiltering fields with {exists: null}
will return an error message in response payload. Before this change, the filter would have returned the same result as {exists: false}
. Please, use {exists: false}
instead.
Changes to item metas
ID
Filtering fields with {eq: null}
will return an error message in response payload. Before this change, the filter would have returned an empty result.
Filtering fields with {neq: null}
will return an error message in response payload. Before this change, the filter would have returned an empty result.
Parent
Filtering fields with {exists: null}
will return an error message in response payload. Before this change, the filter would have returned the same result as {exists: false}
. Please, use {exists: false}
instead.
Filtering fields with {eq: null}
now has the same effect of using {exists: false}
. Before this change, the filter would have returned always an empty array.
PositionFiltering fields with, for instance, {neq: 3}
will return also items with null
values. Before this change, the filter would have returned only for items with not null
values different from 3
.
Status
Filtering fields with {eq: null}
will return an error message in response payload. Before this change, the filter would have returned an empty result.
Filtering fields with {neq: null}
will return an error message in response payload. Before this change, the filter would have returned an empty result.
Changes to Upload fields
Alt, Title
Added exist
filter.
Filtering fields with {eq: null}
now has the same effect of using {exists: false}
. Before this change, the filter would have returned always an empty array.
Filtering fields with {neq: null}
now has the same effect of using {exists: true}
. Before this change, the filter would have returned always an empty array.
Filtering fields with, for instance, {neq: "foobar"}
will return also items with null
values. Before this change, the filter would have returned only for items with not null
values different from foobar
.
Filtering fields with, for instance, {notMatches: { pattern: "foobar"}}
will return also items with null
values. Before this change, the filter would have returned only for items with not null
values different from foobar
.
Filtering fields with, for instance {notIn: ["foobar"]}
will return all items having values different from foobar
OR equal to null
. Before this change, the request would have returned only items having not null
values different from foobar
.
Author
Filtering fields with, for instance, {notMatches: { pattern: "foobar"}}
will return also items with null
values. Before this change, the filter would have returned only for items with not null
values different from foobar
.
Filtering fields with {exists: null}
will return an error message in response payload. Before this change, the filter would have returned the same result as {exists: false}
. Please, use {exists: false}
instead.
Copyright
Filtering fields with, for instance, {notMatches: { pattern: "foobar"}}
will return also items with null
values. Before this change, the filter would have returned only for items with not null
values different from foobar
.
Filtering fields with {exists: null}
will return an error message in response payload. Before this change, the filter would have returned the same result as {exists: false}
. Please, use {exists: false}
instead.
FormatFiltering fields with {eq: null}
, {neq: null}
, will now return an error message in response payload. Before this change, the request would have return an empy collection.
Height, WidthFiltering fields with, for instance, {neq: "500"}
will return also items with null
values. Before this change, the filter would have returned only for items with not null
values different from 500
.
IDFiltering fields with {eq: null}
, {neq: null}
, will now return an error message in response payload. Before this change, the request would have return an empy collection.
InUseFiltering fields with {eq: null}
will return an error message in response payload. Before this change, the filter would have returned the same result as {eq: false}
. You can use {eq: false}
from now on.
MimeTypeFiltering fields with {eq: null}
, {neq: null}
, will now return an error message in response payload. Before this change, the request would have return an empy collection.
Notes
Filtering fields with, for instance, {notMatches: { pattern: "foobar"}}
will return also items with null
values. Before this change, the filter would have returned only for items with not null
values different from foobar
.
Filtering fields with {exists: null}
will return an error message in response payload. Before this change, the filter would have returned the same result as {exists: false}
. Please, use {exists: false}
instead.
SizeFiltering fields with {eq: null}
, {neq: null}
, will now return an error message in response payload. Before this change, the request would have return an empy collection.
SmartTags, TagsFiltering fields with {contains: null}
, will now return an error message in response payload. Before this change, the request would have return an empy collection.