highrise API, поставить необработанный объект, 37 сигналов
Я играю вокруг с HIGHRISE API, и они поняли смысл отдыха, он довольно крутой и в некоторых моментах изящно прощающий, но
Кто-нибудь есть идеи, почему я XML PUT
не принято?
Вот некоторые соответствующие записи:
2014-02-23 00:00:04] app.INFO: Updating:Person:Highrise-API = people/11834527375.xml [] []
[2014-02-23 00:00:04] app.INFO: request body is :
<?xml version="1.0" encoding="UTF-8"?>
<person>
<first-name><![CDATA[Johnny]]></first-name>
<last-name><![CDATA[B. Good]]></last-name>
<visible-to><![CDATA[Everyone]]></visible-to>
<subject_datas type="array">
<subject_data>
<subject_field_id type="integer"><![CDATA[43212]]></subject_field_id>
<value><![CDATA[dsa328394OOKD323H]]></value>
</subject_data>
<subject_data>
<subject_field_id type="integer"><![CDATA[470259]]></subject_field_id>
<value><![CDATA[provider://w184071823/fmdks/2032]]></value>
</subject_data>
<subject_data>
<subject_field_id type="integer"><![CDATA[469130]]></subject_field_id>
<value><![CDATA[CORE]]></value>
</subject_data>
<subject_data>
<subject_field_id type="integer"><![CDATA[469132]]></subject_field_id>
<value><![CDATA[Way too cool]]></value>
</subject_data>
</subject_datas>
<contact-data>
<phone-numbers>
<phone-number type="array">
<number><![CDATA[081 6418273]]></number>
<location><![CDATA[Work]]></location>
</phone-number>
</phone-numbers>
<addresses type="array">
<address>
<city><![CDATA[New York City]]></city>
<country><![CDATA[US]]></country>
<state><![CDATA[New York]]></state>
<street><![CDATA[Siplingerstreet 11]]></street>
<zip><![CDATA[87527]]></zip>
<location><![CDATA[Work]]></location>
</address>
</addresses>
</contact-data>
</person>
[] []
[2014-02-23 00:00:04] app.INFO: request set [] []
[2014-02-23 00:00:04] app.ERROR: Guzzle/3.8.1 curl/7.28.1 PHP/5.4.10 - [2014-02-22T23:00:04+00:00] "PUT /people/11834527375.xml HTTP/1.1" 422 103 [] []
[2014-02-23 00:00:04] app.INFO: Caught client-error-exception in HighriseService updatePerson(): exception 'Guzzle\Http\Exception\ClientErrorResponseException' with message 'Client error response
[status code] 422
[reason phrase] Unprocessable Entity
я не вижу ошибки: / Я очень уверен, что subject_field_id´s верны, и эти настраиваемые поля установлены. Например, сохранение, что xml работает, я видел по ответу, что поля были установлены,
Единственное, что я могу догадаться, это то, что я пытаюсь поставить версию, где ничего не изменилось, это проблема?
потому что мой код только проверяет, существует ли этот человек вообще, и если да, обновите его вместо создания
1 ответ
Вы должны получить обратно XML в теле ответа. Это должно выглядеть так:
<?xml version="1.0" encoding="UTF-8"?>
<errors>
<error>Phone number '555-555-5555' has already been taken</error>
</errors>
Если вы включите идентификатор для существующего номера телефона в запрос PUT, то мы знаем, что вы хотите обновить существующий адрес вместо добавления нового: https://github.com/basecamp/highrise-api/blob/master/sections/people.md#update-person
Контактные данные и данные субъекта, содержащие идентификатор, будут обновлены, а данные, которые не будут считаться новыми и созданные с нуля. Чтобы удалить часть данных, добавьте к его идентификатору знак минус (например, -1).