API Clio - Каков правильный формат для обновления (PATCH) настраиваемого значения поля для вопроса

Patrick Sharooz спросил: 28 марта 2018 в 04:45 в: clio-api

Кто-нибудь смог успешно обновить custom_field_values ​​ по API Clio?

Я пытаюсь обновить значение для custom_field_values ​​по одному вопросу. Я могу отправить строку JSON с помощью PATCH и обновить значения по умолчанию для типа location или description, используя следующий формат

{"data":{"location":"Orange"}}

Но когда дело доходит до обновления "настраиваемого значения поля", я получаю ошибку 422 Unprocessable Entity. Я следую документации Clio v4 API, и я понимаю, что для обновления custom_field_value вам нужен следующий JSON:

{"data":{"custom_field_values":[{"id":658213,"custom_field":{"id":139385},"value":"New Value Goes Here!"}]}}

Однако вот сообщение, появившееся с ошибкой 422:

{"error":{"type":"ArgumentError","message":"An invalid argument was supplied: invalid custom field value id provided, acceptable format is <type>-<unique id>"}}

Я не могу интерпретировать часть, предлагающую приемлемый формат!

Я также попытался отправить JSON в следующем формате, который ближе всего к Clio V2 API Документы для обновления настраиваемого поля:

{"data":{"custom_field_values":[{"custom_field":{"id":139385},"value":"New value goes here"}]}}

Но потом я вернусь:

{"error":{"type":"ArgumentError","message":"An invalid argument was supplied: custom field value for custom field 139385 already exists"}}

Обратите внимание, что это тестируется в POSTMAN независимо от моей среды разработки. Я ценю ваш ответ!

2 ответа

Есть решение
Jacob Small ответил: 30 марта 2018 в 01:37

Я успешно создал запросы для многократного обновления значений настраиваемых полей, и они выполняются для меня все время. Я сравнил ваш JSON с некоторыми примерами JSON, которые я успешно отправил. Ваш синтаксис выглядит правильным, но мне не хватает, чтобы я мог только догадываться, где может быть ваша ошибка.

Во-первых, вы отправляете PATCH в https://app.clio.com/api/v4/matters/{matter id}.json, верно? Мне потребовалось некоторое время, чтобы понять, что вы не можете обновить значение настраиваемого поля вопроса с помощью запроса https://app.clio.com/api/v4/custom_fields/{id}.json.

Во-вторых, просто чтобы уточнить, 658213 id, который вы использовали выше (первое поле id), должно быть уникальным идентификатором этого экземпляра вашего настраиваемого поля. Вы не получите этого, пока не создадите экземпляр настраиваемого поля, специфичного для этого вопроса. Второе поле идентификатора, в которое вы поместили 139385, является идентификатором самого настраиваемого поля, которое вы можете получить с помощью запроса к https://app.clio.com/api/v4/custom_fields.json.

Если вы просматриваете документы V.4 в разделе "Пользовательские поля", вы этого не найдете, или, по крайней мере, я не нашел. НО вы можете найти его во вступительном разделе к разделу "Вопросы" документации: https://app.clio.com/api/v4/documentation#tag/Matters

Надеюсь, это поможет. Я полагаю, что кто-то в Clio может помочь, проверив, что ваша строка ошибки доставлена, когда у вас неверный уникальный идентификатор значения настраиваемого поля.

Jacob Small ответил: 30 марта 2018 в 02:04
Также отмечу, что из того, что я видел, уникальные идентификаторы экземпляров пользовательских полей, прикрепленных к объектам, часто являются строками. Я только что отправил GET для вопроса для настраиваемого поля, которое представляет собой текстовую строку, и идентификатор вернулся как"text_line -******", где звездочки - это числа. Поля настраиваемого идентификатора для настраиваемых полей типа контакта имеют идентификаторы, которые представляют собой строки, начинающиеся с "contact-", а IDS экземпляра настраиваемого поля для настраиваемых полей типа даты - это строки, начинающиеся с "date-". Если это универсально, это говорит о том, что используемый вами 658213 id неверен.
Patrick Sharooz ответил: 31 марта 2018 в 08:35
Спасибо Джейкоб. Это была действительно проблема. В документации по API V4 говорится, что нам нужно отправить идентификатор для "экземпляра настраиваемого поля" в виде целого числа (только идентификатор). Однако API отвечает, запрашивая, чтобы формат был < type > < unique_id & gt ;. Что именно то, что вы сказали, например,"text_line-12345678"
Patrick Sharooz ответил: 31 марта 2018 в 08:51

Чтобы уточнить ответ Джейкоба для всех остальных:

custom_field {id} - это идентификатор, заданный для custom_field при его создании, и он будет одинаковым для всех вопросов или контактов он используется в.

custom_field_value {id} - это идентификатор, присвоенный экземпляру поля custom_field, добавленному к конкретному вопросу и уникальному только для этого вопроса

Для добавления настраиваемого поля к материалу в первый раз используется следующий формат:

{"data":{"custom_field_values":[{"custom_field":{"id":123456},"value":"string or integer depending on the type of CF"}]}}

Для обновления настраиваемого поля, уже добавленного к вопросу, следует использовать следующий формат:

{"data":{"custom_field_values":[{"id":"text_line-1234567", "custom_field":{"id":123456},"value":"string or integer depending on the type of CF"}]}}

Чтобы удалить пользовательское поле, уже добавленное к вопросу, достаточно использовать следующий формат JSON:

{"data":{"custom_field_values":[{"id":"text_line-1234567", "custom_field":{"id":123456},"_destroy":true}]}}
Patrick Sharooz ответил: 31 марта 2018 в 08:54
Я сообщил о проблеме со страницей документации Clio API v4 в службу технической поддержки API. Надеюсь, это не займет у кого-то еще время в будущем.