Пользователи

Обновление профиля

Синхронизация имени, контактов и описания агента

Синхронизируйте данные агентов из вашей 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}`);
Ответ
{
  "id": 1,
  "externalId": "agent-001",
  "updated": true
}

Параметры запроса

Идентификация

Укажите один из параметров:

ПолеТипОписание
idnumberВнутренний ID Rentix
externalIdstringВаш ID из CRM (до 255 символов)
Передайте idилиexternalId, не оба одновременно.

Профиль

ПолеТипОписание
namestringИмя агента
descriptionstring/objectОписание профиля
avatarobject/nullАватар агента (см. ниже)

Формат поля avatar:

ФорматПримерОписание
По URL{ "url": "https://..." }Автоимпорт по URL
По internal ID{ "id": 123 }Уже загруженный файл
ОчиститьnullУдалить аватар

Соцсети

ПолеФормат
instagramhttps://instagram.com/username
youtubehttps://youtube.com/...
tiktokhttps://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}`);
Ответ
{
  "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
Copyright © 2026