Пользователи
Обновление профиля
Синхронизация имени, контактов и описания агента
Синхронизируйте данные агентов из вашей CRM — имя, описание, соцсети и настройки контактов.
Обновите профиль агента
Идентифицируйте агента по externalId (из вашей CRM) или id (из Rentix).
const response = await fetch('https://crm.rentix.md/api/v1/users', {
method: 'PUT',
headers: {
'Authorization': 'ApiKey YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
externalId: 'agent-001',
name: 'Иван Петров',
description: 'Опытный агент по недвижимости. Работаю с жилой и коммерческой недвижимостью.',
instagram: 'https://instagram.com/ivan.petrov',
settings: {
contact_phone: true,
contact_whatsapp: true,
contact_telegram: true
}
})
});
const result = await response.json();
console.log(`Обновлён агент #${result.id}`);
curl -X PUT https://crm.rentix.md/api/v1/users \
-H "Authorization: ApiKey YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"externalId": "agent-001",
"name": "Иван Петров",
"description": "Опытный агент по недвижимости. Работаю с жилой и коммерческой недвижимостью.",
"instagram": "https://instagram.com/ivan.petrov",
"settings": {
"contact_phone": true,
"contact_whatsapp": true,
"contact_telegram": true
}
}'
$data = [
'externalId' => 'agent-001',
'name' => 'Иван Петров',
'description' => 'Опытный агент по недвижимости. Работаю с жилой и коммерческой недвижимостью.',
'instagram' => 'https://instagram.com/ivan.petrov',
'settings' => [
'contact_phone' => true,
'contact_whatsapp' => true,
'contact_telegram' => true
]
];
$ch = curl_init('https://crm.rentix.md/api/v1/users');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: ApiKey YOUR_API_KEY',
'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
Ответ
{
"id": 1,
"externalId": "agent-001",
"updated": true
}
Параметры запроса
Идентификация
Укажите один из параметров:
| Поле | Тип | Описание |
|---|---|---|
id | number | Внутренний ID Rentix |
externalId | string | Ваш ID из CRM (до 255 символов) |
Передайте
idилиexternalId, не оба одновременно.Профиль
| Поле | Тип | Описание |
|---|---|---|
name | string | Имя агента |
description | string/object | Описание профиля |
avatar | object/null | Аватар агента (см. ниже) |
Формат поля avatar:
| Формат | Пример | Описание |
|---|---|---|
| По URL | { "url": "https://..." } | Автоимпорт по URL |
| По internal ID | { "id": 123 } | Уже загруженный файл |
| Очистить | null | Удалить аватар |
Соцсети
| Поле | Формат |
|---|---|
instagram | https://instagram.com/username |
youtube | https://youtube.com/... |
tiktok | https://tiktok.com/@username |
Настройки контактов
Определяют, какие способы связи отображаются на объявлениях агента.
| Поле | Описание |
|---|---|
contact_phone | Показывать телефон |
contact_whatsapp | Показывать кнопку WhatsApp |
contact_viber | Показывать кнопку Viber |
contact_telegram | Показывать кнопку Telegram |
{
"settings": {
"contact_phone": true,
"contact_whatsapp": true,
"contact_viber": false,
"contact_telegram": true
}
}
Многоязычное описание
Укажите описание на нескольких языках — система покажет нужное в зависимости от языка пользователя.
{
"externalId": "agent-001",
"description": {
"ru": "Опытный агент по недвижимости. Работаю с жилой и коммерческой недвижимостью.",
"en": "Experienced real estate agent. I work with residential and commercial properties.",
"ro": "Agent imobiliar experimentat. Lucrez cu proprietăți rezidențiale și comerciale."
}
}
Если передать строку вместо объекта, она будет использована для всех языков.
Bulk-обновление
Обновите несколько агентов за один запрос. Каждая операция должна содержать поле op:
const response = await fetch('https://crm.rentix.md/api/v1/users/bulk', {
method: 'POST',
headers: {
'Authorization': 'ApiKey YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
operations: [
{
op: 'upsert',
externalId: 'agent-001',
name: 'Иван Петров',
settings: { contact_whatsapp: true }
},
{
op: 'upsert',
externalId: 'agent-002',
name: 'Мария Иванова',
settings: { contact_telegram: true }
}
]
})
});
const result = await response.json();
console.log(`Обновлено: ${result.summary.succeeded} из ${result.summary.total}`);
curl -X POST https://crm.rentix.md/api/v1/users/bulk \
-H "Authorization: ApiKey YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"operations": [
{
"op": "upsert",
"externalId": "agent-001",
"name": "Иван Петров",
"settings": { "contact_whatsapp": true }
},
{
"op": "upsert",
"externalId": "agent-002",
"name": "Мария Иванова",
"settings": { "contact_telegram": true }
}
]
}'
$data = [
'operations' => [
[
'op' => 'upsert',
'externalId' => 'agent-001',
'name' => 'Иван Петров',
'settings' => ['contact_whatsapp' => true]
],
[
'op' => 'upsert',
'externalId' => 'agent-002',
'name' => 'Мария Иванова',
'settings' => ['contact_telegram' => true]
]
]
];
$ch = curl_init('https://crm.rentix.md/api/v1/users/bulk');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: ApiKey YOUR_API_KEY',
'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
Ответ
{
"results": [
{ "op": "upsert", "externalId": "agent-001", "id": 1, "success": true },
{ "op": "upsert", "externalId": "agent-002", "id": 2, "success": true }
],
"summary": {
"total": 2,
"succeeded": 2,
"failed": 0
}
}
Ошибка в одной операции не останавливает остальные. Проверяйте success для каждого результата:
Ответ с ошибкой
{
"results": [
{ "op": "upsert", "externalId": "agent-001", "id": 1, "success": true },
{
"op": "upsert",
"externalId": "agent-002",
"id": null,
"success": false,
"error": {
"statusCode": 400,
"body": {
"error": "Invalid phone number format",
"error_code": "VALIDATION_ERROR"
}
}
}
],
"summary": { "total": 2, "succeeded": 1, "failed": 1 }
}
Загрузите аватар агента
Самый простой способ — передать URL изображения прямо при обновлении профиля:
Node.js
await fetch('https://crm.rentix.md/api/v1/users', {
method: 'PUT',
headers: {
'Authorization': 'ApiKey YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
externalId: 'agent-001',
avatar: { url: 'https://placehold.co/200x200/jpg?text=Avatar' }
})
});
Если файл уже загружен, укажите его ID:
{
"externalId": "agent-001",
"avatar": { "id": 123 }
}
Чтобы удалить аватар, передайте null:
{
"externalId": "agent-001",
"avatar": null
}
Частые ошибки
| Ошибка | Причина | Решение |
|---|---|---|
User identifier required | Не передан id или externalId | Добавьте один из идентификаторов |
Cannot use both id and externalId | Переданы оба идентификатора | Используйте только один |
User not found | Агент не существует или не в вашем агентстве | Проверьте ID и убедитесь, что агент приглашён |
External ID already linked | Этот external ID уже у другого агента | Используйте уникальный ID |