Guides

Непрерывная синхронизация

Регулярное обновление данных между CRM и Rentix

После первичной синхронизации настройте регулярное обновление, чтобы изменения в CRM отражались на Rentix.

Синхронизируйте только изменённые объявления. Повторная отправка всех объявлений каждый раз — неэффективное использование API.

Подходы к синхронизации

Вы можете отправлять данные в Rentix в любое время и любым удобным способом:

  • Сразу при изменении — отправляйте данные в момент сохранения в CRM
  • Периодически — запускайте синхронизацию по расписанию
  • Пакетами — накапливайте изменения и отправляйте группой через bulk-эндпоинт

Выбор зависит от вашей архитектуры и требований к скорости обновления данных.


Синхронизация по расписанию

Периодически запрашивайте изменённые объявления из вашей CRM и отправляйте их в Rentix.

Логика работы

  1. Сохраните время последней успешной синхронизации
  2. Запросите изменённые объявления из CRM (начиная с этого времени)
  3. Отправьте изменения в Rentix через bulk-эндпоинт
  4. Обновите время последней синхронизации

Пример запроса

const response = await fetch('https://crm.rentix.md/api/v1/listings/bulk', {
  method: 'POST',
  headers: {
    'Authorization': 'ApiKey YOUR_API_KEY',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    operations: [
      {
        op: 'upsert',
        externalId: 'apt-123',
        announcementValue: 45000,
        announcementStatus: 'active'
      },
      {
        op: 'upsert',
        externalId: 'apt-456',
        announcementStatus: 'hidden'
      }
    ]
  })
});

const result = await response.json();
console.log(`Обновлено: ${result.summary.succeeded}/${result.summary.total}`);
Используйте announcementStatus: "hidden" для объявлений, удалённых в вашей CRM.

Синхронизация по событию

При изменении объявления в CRM отправляйте данные в Rentix сразу.

Для одного объявления

const response = await fetch('https://crm.rentix.md/api/v1/listings', {
  method: 'PUT',
  headers: {
    'Authorization': 'ApiKey YOUR_API_KEY',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    externalId: 'apt-123',
    announcementValue: 46000,
    announcementDescription: 'Обновлённое описание'
  })
});

const result = await response.json();

Для нескольких объявлений

Если ваша CRM накапливает изменения или генерирует пакетные события, используйте bulk-эндпоинт.


Комбинированный подход

Для максимальной надёжности комбинируйте оба подхода:

  • События — для мгновенных обновлений
  • Периодическая проверка — для обнаружения пропущенных изменений

Периодическая проверка выступает как резервный механизм на случай сбоев в событийной системе.


Рекомендации

Отправляйте только изменения

{
  "operations": [
    {
      "op": "upsert",
      "externalId": "apt-123",
      "announcementValue": 45000
    }
  ]
}

Rentix обновит только переданные поля. Если изменилась только цена — отправляйте только цену.

Используйте bulk для массовых обновлений

Вместо 100 отдельных запросов отправьте один bulk-запрос с 100 операциями. Максимум — 100 операций на запрос.

Обрабатывайте частичные ошибки

Bulk-эндпоинт возвращает результат по каждой операции:

{
  "summary": {
    "total": 3,
    "succeeded": 2,
    "failed": 1
  },
  "results": [
    { "externalId": "apt-123", "success": true },
    { "externalId": "apt-456", "success": true },
    { "externalId": "apt-789", "success": false, "error": "Invalid status" }
  ]
}

Неудачные операции не влияют на успешные. Обработайте ошибки и повторите неудачные операции отдельно.


Обработка ошибок

Rate limiting

При получении 429 Too Many Requests подождите и повторите запрос. Заголовок Retry-After указывает рекомендуемое время ожидания.

Временные ошибки

Ошибки 5xx обычно временные. Повторите запрос через несколько секунд.

Ошибки валидации

Ошибки 400 Bad Request требуют исправления данных. Проверьте сообщение об ошибке и исправьте данные перед повтором.


Мониторинг

Рекомендуем отслеживать:

МетрикаОписание
Количество обновлённых объявленийСколько объявлений успешно синхронизировано
Количество ошибокСколько операций завершились ошибкой
Время последней синхронизацииКогда последний раз данные были синхронизированы
Задержка синхронизацииВремя между изменением в CRM и обновлением в Rentix
Copyright © 2026