REST API: Сложные фильтры контактов
Материал из Planfix
								Сложные фильтры в REST API ПланФикса применяются в методе «/contact/list» при получении списка контактов. Фильтры контактов задаются следующим набором параметров:
- type — числовой идентификатор фильтра.
 - operator — оператор фильтра, одно из значений списка (equal, notequal, gt, lt). У разных фильтров могут быть разные допустимые операторы.
 - value — значение фильтра, в зависимости от типа фильтра может быть строкой, числом или сложным объектом.
 - field — идентификатор пользовательского поля, используется для фильтров по пользовательским полям.
 - subfilter — вложенный фильтр для фильтрации по значениям полей записи аналитик.
 
{
    "type": 12,
    "operator": "equal",
    "value": {
        "dateType": "otherDate",
        "dateValue": "01-07-2022"
    }
}
Пример запроса получения списка контактов с передачей нескольких фильтров (используется логика И):
{
  "fields": "name",
  "filters": [{
        "type": 4223,
        "operator": "equal",
        "value": {
"dateType": "otherDate",
"dateValue": "01-12-1990"
}
     },
     {
        "type": 1,
        "operator": "equal",
        "value": "user:5"
     }
  ]
}
| Тип | Название | Операторы | Формат value | 
|---|---|---|---|
| 12 | Дата создания | 
  | 
 Объект :  
"value": {
    "dateType": string,
    "dateValue": string,
    "dateFrom": string,
    "dateTo": string
}
 
dateType принимает следующие значения: 
 Даты считаются переданными в часовом поясе сотрудника, от имени которого сделан запрос. Примеры: "value": {
    "dateType": "thisWeek"
}
"value": {
    "dateType": "otherRange",
    "dateFrom": "02-07-2022",
    "dateTo": "06-07-2022"
}
"value": {
    "dateType": "otherDate_withTime",
    "dateFrom": "30-06-2022 12:00",
}
 | 
| 38 | Дата последнего изменения | ||
| 4223 | Дата рождения (с учетом года) | ||
| 4011 | Дата рождения (без учета года) | ||
| 4213 | Контрагент в задачах с последней активностью | ||
| 4219 | Контрагент без задач с последней активностью | ||
| 4214 | Участвует в задачах с последней активностью | ||
| 4220 | Не участвует в задачах с последней активностью | ||
| 4103 | Пользовательское поле типа Дата | ||
| 1 | Добавил | 
  | 
string - номер сотрудника/контакта/группы с префиксом.
 Например: “user:1”, “contact:5”, “group:3”  | 
| 2 | Ответственный | ||
| 47 | Доступен пользователю | ||
| 48 | Может редактироваться пользователем | ||
| 4108 | Пользовательское поле типа Контакт | ||
| 4109 | Пользовательское поле типа Сотрудник | ||
| 4112 | Пользовательское поле типа Группа, сотрудник, контакт | ||
| 4113 | Пользовательское поле типа Список сотрудников | ||
| 4006 | Является компанией | 
  | 
int - 1
 boolean - true  | 
| 4007 | Является контактом | ||
| 4010 | С доступом в ПланФикс | ||
| 4012 | Может быть участником задач | ||
| 4017 | Не может быть участником задач | ||
| 4013 | Может быть контрагентом задач | ||
| 4018 | Не может быть контрагентом задач | ||
| 4201 | Контрагент без активных задач | ||
| 4202 | Не участвует в активных задачах | ||
| 4203 | Контрагент с активными задачами | ||
| 4204 | Участвует в активных задачах | ||
| 4205 | Контрагент в просроченных задачах | ||
| 4206 | Участвует в просроченных задачах | ||
| 4001 | Имя или фамилия контакта / название компании | 
  | 
string - осуществляется фильтр содержит / не содержит | 
| 4002 | Должность | ||
| 4003 | Телефон | ||
| 4004 | Адрес | ||
| 4005 | Email (частичное вхождение) | ||
| 4221 | Дополнительный email | ||
| 4014 | Имя контакта / Название компании | ||
| 4015 | Фамилия контакта | ||
| 4101 | Пользовательское поле типа Строка | 
  | 
string - осуществляется фильтр равно / не равно / содержит / не содержит | 
| 4102 | Пользовательское поле типа Число | 
  | 
int | 
| 4105 | Пользовательское поле типа Чек-бокс | 
  | 
int - 1 / 0
 boolean  | 
| 4106 | Пользовательское поле типа Список | 
  | 
string | 
| 4107 | Пользовательское поле типа Справочник | 
  | 
int - идентификатор записи | 
| 4114 | Пользовательское поле типа Набор записей справочника | 
  | 
int - идентификатор записи, для условия по нескольким записям — идентификаторы через ; (точку с запятой) | 
| 4111 | Пользовательское поле типа Набор значений | 
  | 
string - значение, для условия по нескольким значениям - значения через ; (точку с запятой) | 
| 4152 | Содержит значение в пользовательском поле | 
  | 
 int - идентификатор поля  | 
| 4153 | Не содержит значение в пользовательском поле | ||
| 4008 | Группа контактов | 
  | 
int - идентификатор группы, можно получить методом /contact/groups | 
| 4016 | Шаблон контакта | 
  | 
int - номер шаблона, список шаблонов контактов можно получить методом /contact/templates | 
| 4019 | Пол контакта | 
  | 
string - пол контакта (NotDefined, Female, Male) | 
| 4231 | Номер контакта | 
  | 
int - номер контакта | 
| 4233 | Идентификатор контакта (из XML API) | 
  | 
int - идентификатор контакта | 
| 93 | Значение поля записи аналитики | 
 (в зависимости от типа поля) 
  | 
Значение поля аналитики по которому выполняется фильтрация, дополнительно в структуре фильтра надо передать поле subfilter, пример для фильтра поля аналитики типа Строка:
{
  "offset": 0,
  "pageSize": 100,
  "filters": [
    {
      "type": 93,
      "operator": "equal",
      "value": "Test value",
      "subfilter": {
        "dataTagId": 6,
        "filter": {
          "type": 3108,
          "field": 20
        }
      }
    }
  ],
  "fields": "id,name,dataTags"
}
где: 
  | 
| 4226 | Имя пользователя Telegram | 
  | 
string - имя пользователя (username, @username, https://t.me/username) | 
| 4234 | Идентификатор Telegram | 
  | 
int - идентификатор в Telegram | 
| 4026 | Email (точное соответствие) | 
  | 
string |