Розділи документації API
Документація API/CRM/Контакти

Контакти

Фізичні особи: клієнти, контактні особи контрагентів. Право ролі: contact.

Маршрути

GET/contact
Список контактів з пагінацією, фільтрами й total.
право: contact.view2 очк.
GET/contact/{id}
Одна картка.
право: contact.view1 очк.
GET/contact/count
Лише кількість за тими самими фільтрами (голе число).
право: contact.view2 очк.
POST/contact
Створити.
право: contact.create5 очк.
PUT/contact/{id}
Оновити.
право: contact.update5 очк.
DELETE/contact/{id}
Видалити.
право: contact.delete5 очк.
GET/contact/deleted?since=...
Видалені з моменту since, див. Синхронізація.
право: contact.view2 очк.

Усі поля

Обов’язкове лише first_name. Канали, теги й доп. поля описані в розділі Вкладені дані, там само окремі маршрути для адрес і реквізитів.

ПолеТипОбмеженняОпис
first_nameобов.рядок≤ 50 симв.Ім’я.
external_idрядок≤ 64 симв.Ключ запису у вашій системі. Унікальний; пошук: filter[external_id;eq]. Див. «Синхронізація».
last_nameрядок≤ 50 симв.Прізвище.
middle_nameрядок≤ 50 симв.По батькові.
phoneрядок≤ 20 симв.Основний телефон (окреме поле; телефони для пошуку й дзвінків зберігаються в channels).
emailрядок≤ 255 симв.Основний email (окреме поле; адреси для розсилок зберігаються в channels).
positionрядок≤ 120 симв.Посада.
descriptionрядок≤ 1024 симв.Опис / коментар.
personal_discountчисло≤ 100Персональна знижка, % (0–100). Підставляється в позиції документів клієнта.
credit_limitціле, копійкиКредитний ліміт, копійки.
utm_sourceрядок≤ 255 симв.UTM-мітка джерела.
birthdateдата-часДата народження. Не може бути в майбутньому.
type_ididТип контакту (/lookup?type=ct_type). Якщо не передано, ставиться тип за замовчуванням.
owner_ididВідповідальний користувач (/user). Якщо не передано, це користувач токена.
is_archivedboolВ архіві. Архівні записи приховує параметр is_archived=true.
account_ididКонтрагент (/account).
price_book_ididПрайс-лист (/price-book).
lead_contact_ididЛід, з якого створено контакт.
tagsмасив TagТеги: [{"id": 3}] або [{"name": "VIP"}]. Передані замінюють усі теги запису. Див. «Вкладені дані».
idлише читанняцілеІдентифікатор запису.
nameлише читаннярядок≤ 152 симв.ПІБ одним рядком, його збирає сервер з прізвища, імені й по батькові.
created_atлише читаннядата-часЧас створення.
updated_atлише читаннядата-часЧас останньої зміни, на ньому будується інкрементальна синхронізація.
deleted_atлише читаннядата-часЧас видалення (у звичайних відповідях завжди null).
created_by_idлише читанняidХто створив запис.
shop_idлише читанняidМагазин (філія), ставиться з профілю користувача.
tasksлише читаннямасив TaskЗавдання запису (лише у відповіді).
updated_userлише читанняоб’єкт UserХто змінив запис останнім.
subлише читаннярядокСлужбове поле, ігноруйте.
import_idлише читанняidId імпорту, яким створено запис.
opportunitiesлише читаннямасив OpportunityУгоди контакту (лише у відповіді).
versionлише читанняцілеСлужбовий лічильник змін запису.

Вкладені масиви

  • channels: пишеться в тілі POST/PUT, формат див. у розділі Вкладені дані.
  • entity_tags: звʼязки з тегами приходять лише у відповіді (з expand=EntityTags.Tag), а пишуться полем tags.
  • contact_extra_fields: пишеться в тілі POST/PUT, формат див. у розділі Вкладені дані.
  • team: лише у відповіді (expand=Team).
Повʼязані обʼєкти для ?expand= (7)

Без expand приходять як null; писати їх не можна, передавайте відповідне *_id.

Type → LookupOwner → UserCreatedBy → UserShop → ShopAccount → AccountPriceBook → PriceBookLead → Lead

Службові поля у відповіді, ігноруйте: OldContact.

Приклади

Створити контакт з каналами, тегами й доп. полями

POST /api/v1/contact
Idempotency-Key: site-user-731

{
  "first_name": "Олена",
  "last_name": "Коваль",
  "external_id": "site-user-731",
  "account_id": 12,
  "channels": [
    { "type": "phone", "value": "+380671234567", "label": "Мобільний", "is_primary": true },
    { "type": "email", "value": "olena@example.com", "label": "Робочий" }
  ],
  "tags": [ { "name": "Сайт" } ],
  "contact_extra_fields": [
    { "field_id": 1101, "value": "Київ" },
    { "field_id": 1102, "value": "2814" }
  ]
}

Картка разом із каналами й доп. полями

GET /api/v1/contact/42?expand=Channels,ContactExtraFields

Знайти за телефоном

GET /api/v1/contact?filter[channels.phone;like]=671234567&fields=id,first_name,last_name

Змінити відповідального (решта не змінюється)

PUT /api/v1/contact/42
{ "owner_id": 7 }
Перед створенням шукайте контакт за телефоном чи external_id, тоді в базі не з’являться дублі.