Устанавливает (создает, обновляет, удаляет) свойства пользователя. В одном запросе можно установить не более 250 свойств.
POST https://api.carrotquest.io/users/{id}/props
В качестве {id}
можно использовать:
by_user_id=true
).
Если пользователя с таким идентификатором не существует, он будет создан автоматически.Параметры аутентификации.
Параметр id_as_string.
Параметр | Тип | Описание |
---|---|---|
by_user_id |
Optional[boolean] | Если вы делаете выборку не по ID из Carrot quest, а по своему User ID, этот параметр должен иметь значение true . По умолчанию: false |
operations |
Array[Dict] | Массив атомарных операций, которые будут проведены над свойствами пользователя. Формат свойств |
double_subscribe |
Optional[boolean] | Позволяет переподписать отписанного пользователя, если операция обновляет свойство $email . По умолчанию: false |
parse_custom_props_type |
Optional[boolean] | Если флаг установлен в true , то система автоматически определит тип устанавливаемых кастомных свойств. По умолчанию: true |
source |
Optional[Dict] | Задает источник установки контакта при записи свойств $email и $phone . |
app |
Optional[ID] | ID приложения, делающего запрос. По умолчанию определяется на основе токена доступа. |
Подробнее об операциях над свойствами и их форматом можно почитать здесь.
Операции выполняются в порядке их задания в массиве operations
.
Допустимо последовательное выполнение операций над одним свойством.
Если записывается системное свойство, необходимо указывать его системное имя, начинающееся с символа $
.
Посмотреть системные имена событий можно здесь.
Поскольку метод позволяет осуществлять много операций над свойствами одним запросом,
некоторые из них могут быть корректны, а некоторые - нет.
Например, может быть задан неверный тип для системного свойства.
Чтобы сохранить максимум информации, которую вы записываете, запрос не будет возвращать ошибку,
когда операции невалидны и выполнит все валидные операции.
Вместо этого, в поле meta
будет возвращено:
affected_props: List[строка]
- список обновленных свойствnot_changed_props: List[строка]
- список свойств, которые не изменили своего значенияignored_operations: List[Dict]
- список словарей с операциями, которые были проигнорированы.
Словари содержат операцию, а также дополнительное поле reason
, поясняющее ошибку.По умолчанию при передаче значений кастомных свойств в запросе, их тип будет определен системой автоматически.
Например, если задать в качестве значения строку "12345"
, в свойство будет записано число 12345
, а не строка.
В некоторых случаях, это поведение нежелательно
(например, при записи "длинных" чисел, которые неверно интерпретируются бразуером).
Чтобы избежать автоматического распознания, установите параметр parse_custom_props_type=false
.
Тип системных свойств определен системой и распознается всегда в соответствии с этим типом.
При несоответствии заданного значения ожидаемому типу свойство обновлено не будет,
а в ответ на запрос будет возвращена ошибка (в поле meta.ignored_operations
).
Если пользователь отписался от Email-рассылок (имеет статус Отписан
в карточке пользователя),
а затем снова оставил тот же Email на вашем сайте, то его статус не изменится при записи свойства этим методом
и Email-ы ему не будут приходить.
Это может привести к ситуации, когда пользователь отписался, пришел через какое-то время уже не помня, что отписался
и повторно оставил Email, считая, что письма ему будут приходить.
Чтобы повторно переподписать такого пользователя при обновлении Email-а, установите параметр double_subscribe=true
.
Параметр source
является системным и служит для идентификации источника контактов - поп-апа, бота и других.
Источник помогает нам определять статистику по собранным контактам в ботах и автосообщениях
Это словарь, который обязательно содержит поле "type"
- тип источника и опционально - поле "id"
,
идентифицирующего конкретное сообщение. Пример: {"type": "popup_small", "id": 123}
Поле data
будет содержать id обновленного пользователя.
Поле meta
помимо стандартных полей будет содержать:
affected_props: List[строка]
- список обновленных свойствnot_changed_props: List[строка]
- список свойств, которые не изменили своего значенияignored_operations: List[Dict]
- список словарей с операциями, которые были проигнорированы.
Словари содержат операцию, а также дополнительное поле reason
, поясняющее ошибку.{
"meta": {
"status": 200,
"affected_props": [],
"ignored_operations": []
},
"data": {
"id": 123123123,
"app": 12345
}
}
Записать имя "Maks" у пользователя с CarrotquestId=8173131
(ID из нашей системы):
curl -X POST \
--data-urlencode "operations=[{"op": "update_or_create", "key": "$name", "value": "Maks"}]" \
-H "Authorization: Token XXX" \
https://api.carrotquest.io/users/8173131/props
Записать имя "Maks" у пользователя с UserId=user-7216
(ID из вашей системы):
curl -X POST \
--data-urlencode "operations=[{"op": "update_or_create", "key": "$name", "value": "Maks"}]" \
--data-urlencode "by_user_id=true" \
-H "Authorization: Token XXX" \
https://api.carrotquest.io/users/user-7216/props
Записать свойство my-prop
со значением Hello
и увеличить значение свойства projects
на 3
у пользователя с UserId=user-7216
(ID из вашей системы):
curl -X POST \
--data-urlencode 'operations=[{"op": "update_or_create", "key": "my-prop", "value": "Hello"},{"op": "add", "key": "projects", "value": "3"}]' \
--data-urlencode 'by_user_id=true' \
-H "Authorization: Token XXX" \
"https://api.carrotquest.io/users/user-7216/props"