AMDN
AMDN

Reputation: 43

Invalid patch error in Contentful CMA client

I am trying to populating an empty field by using patch method in Contentful. The following piece of code works in one cloned environment but does not work in another.

let patchData: OpPatch[] = [
    {
        op: 'replace',
        path: '/fields/keywords',
        value: entryKeyword,
    },
];

await cmaClient.entry.patch({ entryId: entryId }, patchData, { 'X-Contentful-Version': entryVersion });

When I try to execute this, receiving a 'Unprocessable Entity' error:

UnprocessableEntity: {
  "status": 422,
  "statusText": "Unprocessable Entity",
  "message": "Could not apply patch to entry: invalid patch",
  "details": {},
  "request": {
    "url": "/spaces/xyz/environments/abc/entries/123456789",
    "headers": {
      "Accept": "application/json, text/plain, */*",
      "Content-Type": "application/json-patch+json",
      "X-Contentful-User-Agent": "sdk contentful-management-plain.js/7.54.2;",
      "Authorization": "Bearer ...",
      "user-agent": "node.js/v14.19.2",
      "Accept-Encoding": "gzip",
      "X-Contentful-Version": 25,
      "Content-Length": 78
    },
    "method": "patch",
    "payloadData": "[{\"op\":\"replace\",\"path\":\"/fields/keywords\",\"value\":\"test keyword\"}]"
  },
  "requestId": "abcd-123456"
}

I have the same exact access permissions to both environments. What am I missing out on?

Upvotes: 0

Views: 536

Answers (2)

Mike Menko
Mike Menko

Reputation: 1049

OpPatch = {
  op: DOES_FIELD_ALREADY_EXIST ? 'replace' : 'add',
  path: '/fields/keywords',
  value: entryKeyword,
};

Main problem is that Contentful need to exist field to be possible to change it. If no field yet then we have to 'add' it instead of replacing nothing.

Upvotes: 0

user19823912
user19823912

Reputation: 1

I had the same issue - turned out when the entry doesn't have the filed you're trying to patch - it will throw an error like above.

Upvotes: 0

Related Questions