Ви можете використовувати цей метод для пошуку контактів по їх атрибутам.
➡️ Запит
| URL | https://api.helpcrunch.com/v1/customers/search | 
| Метод | POST | 
| Headers | Authorization: Bearer <your_api_key> | 
Фільтри пошуку слід розмістити в тілі вашого запиту POST. Перегляньте кілька прикладів нижче.
Приклад: Пошук за допомогою одного фільтра
{
	"filter": [
        {
            "field": "customers.email",
			"operator": "~",
			"value": "gmail"
        }
	],
	"limit": 5,
	"offset": 0,
	"sort": "customers.firstSeen",
	"order": "DESC"
}
Приклад: Пошук за допомогою кількох фільтрів
Якщо ви хочете отримати контакти, які відповідають усім фільтрам, використовуйте атрибут "comparison": "AND" у тілі запиту POST. Щоб отримати контакти, які відповідають будь-якому з фільтрів, використовуйте значення OR.
{
  "comparison": "AND",
  "filter": [
    {
      "field": "customers.name",
      "operator": "=",
      "value": "John"
    },
    {
      "field": "customers.id",
      "operator": ">",
      "value": 18
    },
    {
      "field": "customers.lastSeen",
      "operator": ">=",
      "value": 1603885746
    },
    {
      "field": "customers.tagsData",
      "operator": "=",
      "value": [
        {
          "name": "Lead"
        }
      ]
    }
  ],
  "sort": "customers.firstSeen",
  "order": "desc",
  "offset": 0,
  "limit": 100
}
Можливі поля для пошуку
| Поле | Тип | Опис | 
| customers.id | Integer | Унікальний ID контакту, наданий HelpCrunch | 
| customers.telegramId | String | Унікальний ID контакту, наданий Telegram | 
| customers.facebookId | String | Унікальний ID контакту, наданий Facebook | 
| customers.instagramId | String | Унікальний ID контакту, наданий Instagram | 
| customers.viberId | String | Унікальний ID контакту, наданий Viber | 
| customers.whatsappId | String | Унікальний ID контакту, наданий WhatsApp | 
| customers.name | String | Ім'я контакту | 
| customers.email | String | Електронна адреса контакту | 
| customers.company | String | Компанія контакту | 
| customers.phone | String | Номер телефону контакту | 
| customers.countryCode | String | Код країни контакту | 
| customers.city | String | Місто контакту | 
| customers.regionCode | String | Код регіону контакту | 
| customers.tagsData | Array of Strings | Теги, призначені для чату, напр. [{"name": "Lead"}, {"name": "Paid"}] | 
| customers.lastSeen | Date (UNIX timestamp) | Дата та час останнього візиту контакту | 
| customers.userId | String | Власний унікальний ID контакту, який ви можете передати в HelpCrunch за допомогою Автентифікації користувача | 
Можливі оператори
Оператор має бути введений у форматі String, наприклад ">". Оператор має бути сумісним із типом даних поля. Ви не можете шукати текстові значення за допомогою "<", оскільки він працює лише для цілих чисел і дат.
| Оператор | Дійсні типи даних поля | Опис | 
| = | Всі типи даних | Дорівнює | 
| != | Усі типи даних (крім масивів) | Не дорівнює | 
| > | Integer чи Date (UNIX Timestamp) | Більше за | 
| < | Integer чи Date (UNIX Timestamp) | Нижче за | 
| >= | Integer чи Date (UNIX Timestamp) | Більше за або дорівнює | 
| <= | Integer чи Date (UNIX Timestamp) | Нижче за або дорівнює | 
| ~ | String | Містить | 
| !~ | String | Не містить | 
Параметри сортування
Щоб указати тип сортування, вам слід додати атрибути sort і order до тіла запиту POST.
    "sort": "customers.firstSeen",
    "order": "ASC"
Ви можете сортувати клієнтів за наступними полями:
| Поле | Опис | 
| customers.firstSeen | за датою першого візиту клієнтів | 
| customers.lastSeen | за датою останнього візиту клієнтів | 
Щоб відсортувати клієнтів у порядку спадання, використовуйте значення DESC. У порядку зростання використовуйте значення ASC.
✅ Відповідь на успішний запит
Якщо ваш запит пройшов успішно, ви отримаєте код статусу успішного виконання 200 OK разом із наведеним нижче тілом відповіді.
{
  "data": [
    {
      "id": 542335,
      "name": "John Doe",
      "email": "[email protected]",
      "userId": "user_1234567890",
      "company": "Example Inc.",
      "phone": "+10233456781",
      "firstSeen": "1603885746",
      "lastSeen": "1603885746",
      "location": {
        "regionCode": "Kyyivs'ka Oblast",
        "countryCode": "UA",
        "city": "Kyiv"
      },
      "device": {
        "id": 542335,
        "ip": "192.168.1.1",
        "timezone": "Europe/Kiev",
        "platform": "desktop",
        "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36"
      },
      "unsubscribed": false,
      "blocked": false,
      "source": "https://example.com",
      "referer": "https://example.com",
      "lastPage": "https://example.com",
      "locale": "uk",
      "createdFrom": "telegram",
      "integrationId": "465847687",
      "notes": "Lorem ipsum",
      "tags": [
        {
          "name": "vip",
          "color": "#ff0000"
        }
      ],
      "customData": {
        "subscription_status": "active",
        "number_of_payments": 15,
        "last_paid_amount": 15.99,
        "last_payment_date": 1603885746,
        "last_invoice_url": "https://example.com/invoice.html",
        "last_payment_was_successful": true
      }
    }
  ],
  "total": 256
}
Ви можете отримати деталі по кожному полю обʼєкту контакту у статті Модель даних контакту.
Обмеження
За замовчуванням цей метод повертає лише перших 100 клієнтів. Щоб отримати інший список клієнтів, вам слід використовувати параметри offset і limit у тілі запиту POST.
    "limit": 50,
    "offset": 100,
Загальний ліміт запитів становить 120 за хвилину.
🛑 Відповіді з помилками
Ви можете отримати один із наведених нижче кодів статусу помилки та відповіді. Детальніше про коди помилок ви можете прочитати за посиланням.
400 Bad Request
{
  "errors": [
    {
      "code": "invalid_request",
      "message": "Invalid request"
    },
    {
      "code": "customer",
      "message": "This value should be of type numeric."
    },
    {
      "code": "filter[0].field",
      "message": "This value should not be blank."
    }
  ]
}
401 Unauthorized
{
  "errors": [
    {
      "code": "invalid_request",
      "message": "Invalid request"
    },
    {
      "code": "unauthorized",
      "message": "Unauthorized"
    }
  ]
}
429 Too Many Requests
{
  "errors": [
    {
      "code": "invalid_request",
      "message": "Invalid request"
    },
    {
      "code": "too_many_requests",
      "message": "Too many requests"
    }
  ]
}