HighRise API Создайте человека, которому не хватает пропущенного имени, пока оно там

Я пытаюсь создать человека в highrise, используя API. В ответ появляется сообщение об ошибке "Имя отсутствует. У контактов должно быть имя".

Вот мой код:

let x = """<?xml version="1.0" encoding="UTF-8"?>
<person>
  <first-name>name</first-name>
  <last-name>last</last-name>
  <contact-data>
    <email-addresses type="array">
      <email-address>
        <address>someEmail@gmail.com</address>
      </email-address>
    </email-addresses>
  </contact-data>
  <tags type="array">
    <tag>
      <id type="integer">6154219</id>
      <name>sometag</name>
    </tag>
  </tags>
</person>"""

let req = new RestRequest("/people.xml", Method.POST)
req.AddParameter("Content-Type", "application/xml")
req.AddParameter("application/xml", x, ParameterType.RequestBody)
let res = client.Execute(req) 

Ответ возвращает код состояния 422. Не уверен, что я здесь делаю не так?

3 ответа

Решение

Оказывается, вы не можете добавлять теги при создании нового человека. Это нужно добавить в отдельный запрос после добавления контакта. Это явно не упоминается в документации, но можно сделать вывод из их примеров.

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

В качестве альтернативы, и я не говорю F#, поэтому я не могу быть уверен, но "Content-Type" должен быть в заголовках. Добавляет ли компонент параметра, который вы используете, явно в качестве заголовка?

Поле пропущенного имени появилось у меня до того, как заработал заголовок.

Основываясь на аналогичном вопросе Stackru, похоже, что вы можете получить эту ошибку, когда в вашем запросе есть что-то еще, например, когда отсутствует соответствующий Content-Type,

Я не знаком с Highrise или Restsharp, чтобы дать определенный ответ, но кажется, что с созданием запроса может быть что-то не так. Просто прочитав твой код, я нашел применение AddParameter добавить тело несколько неожиданно (хотя это может быть правильно). Похоже, вы могли бы использовать AddBody вместо этого, поэтому я бы попробовал это.

(Это скорее комментарий, чем правильный ответ, но он слишком длинный, чтобы публиковать его как комментарий!)

Другие вопросы по тегам