Changelog

    All the changes to the Content Delivery API:

    2020/05/11 - Changes in GraphQL filtering

    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 field
        Filtering 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 field
        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}. You can use {exists: false} from now on.
      • DateTime field
        Filtering 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 field
        Filtering 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 nullvalues 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.
      • Gallery
        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.
      • 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.
      • JSON
        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.
      • 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 nullvalues different from 123456.
      • Links
        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.
      • Seo
        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.
      • 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 nullvalues 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 nullvalues 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.
      • Video
        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.
    • 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.
      • Position
        Filtering 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.
      • Format
        Filtering 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, Width
        Filtering 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.
      • ID
        Filtering 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.
      • InUse
        Filtering 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.
      • MimeType
        Filtering 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.
      • Size
        Filtering 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, Tags
        Filtering fields with {contains: null}, will now return an error message in response payload. Before this change, the request would have return an empy collection.