Обновление объекта установки Parse удаляет его

Я создаю объект установки, используя вызов API REST, например:

curl -X POST \
-H "X-Parse-Application-Id: ${APPLICATION_ID}" \
-H "X-Parse-REST-API-Key: ${REST_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
    "deviceType": "ios",
    "deviceToken": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
    "channels": [
      ""
    ]
  }' \
https://<your.parseprovider.here>/1/installations

Объект установки создается и указывается ответом:

{
"objectId": "EmqGmZXGEm",
"createdAt": "2017-02-15T10:13:18.647Z"
}

Теперь позвольте сказать, что я хочу обновить поле каналов, чтобы включить канал "foo" в объекте установки, я мог бы просто вызвать вызов типа:

curl -X PUT \
-H "X-Parse-Application-Id: ${APPLICATION_ID}" \
-H "X-Parse-REST-API-Key: ${REST_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
    "channels": [
      "",
      "foo"
    ]
  }' \
https://<your.parseprovider.here>/1/installations/EmqGmZXGEm    

Успех указывается ответом:

{
"updatedAt": "2017-02-15T10:18:31.055Z"
}

Однако, когда я выполняю вызов PUT как это (как в REST API docs, обратите внимание на включение полей deviceType и deviceToken)

curl -X PUT \
-H "X-Parse-Application-Id: ${APPLICATION_ID}" \
-H "X-Parse-REST-API-Key: ${REST_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
    "deviceType":"ios", 
    "deviceToken":"0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
    "channels": [
      "",
      "foo"
    ]
  }' \
https://<your.parseprovider.here>/1/installations/EmqGmZXGEm

Теперь я получаю следующий ответ:

{
"code": 101,
"error": "Object not found."
}

Объект установки теперь был удален из базы данных Parse.

Это происходит, как только поле deviceToken включено в запрос PUT.

Предполагается ли это, или я что-то упускаю? Я использую API-интерфейс Parse для Delphi, который ломается из-за этого "явления". Я бы предпочел не взломать API, если ошибка вызвана ошибкой Parse, которая должна быть исправлена ​​на стороне сервера.

Ответ 1

Попробуйте PATCH вместо PUT. См. таблица. Для обновления могут использоваться как PUT, так и PATCH.