# Контрагент

## Список контрагентов

<mark style="color:blue;">`GET`</mark> `https://api.livesklad.com/counteragents`

Возвращает массив контрагентов

Для сортировки результата необходимо в параметре **sort** передать строку "**<название\_поля> ASC**" или "**<название\_поля> DESC**". Где **ASC** - сортировать по возрастанию, **DESC** - сортировать по убыванию, **<название\_поля>** - поле по которому осуществляется сортировка, может быть одно из: **id**, **typeCounteragent**, **lastAction**, **name**, **howKnow**, **node**, **address**, **email**, **phones**. По умолчанию контрагенты сортируются по имени\
\
Фильтры по датам передаются в виде массива из двух чисел в формате Unix (**в миллисекундах**), где первый число - это начало диапазона, а второе - конец диапазона. Если какая-то граница диапазона отсутствует, то вместо нее нужно передать null. Например \[1690837200000,1693515599999] или \[null,1693515599999]

Из списка с любым заданным набором фильтров можно получить максимум 10000 элементов, то есть максимальное значение для **page** \* **pageSize** = 10000. Чтобы получить другие элементы, нужно либо изменить фильтр, либо изменить сортировку

#### Query Parameters

| Name               | Type    | Description                                                                   |
| ------------------ | ------- | ----------------------------------------------------------------------------- |
| dateCreate         | array   | Фильтр по дате создания                                                       |
| sort               | string  | Сортировка                                                                    |
| filter             | string  | Текст для поиска по контрагентам                                              |
| lastAction         | array   | Фильтр по дате последнего изменения                                           |
| phone              | string  | Телефон для поиска                                                            |
| page               | number  | Номер страницы выборки (по умолчанию - 1)                                     |
| pageSize           | number  | Количество элементов в выборке (по умолчанию - 10, максимум - 50)             |
| isBuyer            | boolean | Фильтр: "Только покупатели"                                                   |
| isVendor           | boolean | Фильтр: "Только поставщики"                                                   |
| howKnowIds         | array   | Фильтр по источникам рекламы, передается в виде массива id источников рекламы |
| typeCounteragentId |         | Фильтр по типу контрагента                                                    |

#### Headers

| Name                                            | Type   | Description       |
| ----------------------------------------------- | ------ | ----------------- |
| Authorization<mark style="color:red;">\*</mark> | String | Токен авторизации |

{% tabs %}
{% tab title="200: OK " %}

```json
{
  data: [
    {
      isSendSms: false,
      typeCounteragent: {
        name: "Компания",
        id: "63c015adcce57401c832fc15"
      },
      isSendTelegram: false,
      rating: 0,
      name: "GreenSpark",
      isSendEmail: false,
      phones: [],
      isVendor: true,
      isVisible: true,
      isBuyer: false,
      id: "63c015afcce57401c832fca1"
    },
    {
      isSendSms: true,
      typeCounteragent: {
        name: "Частное лицо",
        id: "63c015adcce57401c832fbf5"
      },
      isSendTelegram: false,
      rating: 0,
      name: "Смирнов Иван Андреевич",
      isSendEmail: false,
      phones: [
        "+7 (944) 444-44-44"
      ],
      isVendor: false,
      isVisible: true,
      isBuyer: true,
      id: "63c015afcce57401c832fc9f"
    }
  ],
  total: 2,
  page: 1,
  pageSize: 10,
  sort: {
    field: "name",
    dir: "ASC"
  },
  version: "2.0.0.0",
  remainRequest: 50,
  expireDate: "2022-12-13T09:09:20.861Z"
}
```

{% endtab %}

{% tab title="401: Unauthorized Доступ запрещен" %}

```json
{
  error: {
    statusCode: 401,
    name: "Error",
    message: "Access denied"
  }
}
```

{% endtab %}
{% endtabs %}

## Создание контрагента

<mark style="color:green;">`POST`</mark> `https://api.livesklad.com/counteragents`

Создает контрагента и возвращает созданную запись

#### Headers

| Name                                            | Type   | Description       |
| ----------------------------------------------- | ------ | ----------------- |
| Authorization<mark style="color:red;">\*</mark> | string | Токен авторизации |

#### Request Body

| Name                                                 | Type    | Description                                                              |
| ---------------------------------------------------- | ------- | ------------------------------------------------------------------------ |
| name<mark style="color:red;">\*</mark>               | string  | Имя контрагента                                                          |
| typeCounteragentId<mark style="color:red;">\*</mark> | string  | id типа контрагента                                                      |
| isBuyer<mark style="color:red;">\*</mark>            | boolean | Контрагент является покупателем                                          |
| isVendor<mark style="color:red;">\*</mark>           | boolean | Контрагент является поставщиком                                          |
| email                                                | string  | email контрагента                                                        |
| howKnowId                                            | string  | id источника рекламы контрагента                                         |
| address                                              | string  | Адрес контрагента                                                        |
| phones                                               | array   | Телефоны контрагента, передается в виде массива строк                    |
| node                                                 | string  | Примечание                                                               |
| isSendSms                                            | boolean | Контрагенту можно отправлять смс-сообщения (по умолчанию - false)        |
| rating                                               | number  | Рейтинг контрагента (обычный: 0, негативный клиент: -1, позитивный: 1)   |
| customFields                                         | array   | Массив пользовательских полей                                            |
| isSendTelegram                                       | boolean | Контрагенту можно отправлять сообщения в Telegram (по умолчанию - false) |
| isSendEmail                                          | boolean | Контрагенту можно отправлять письма на email (по умолчанию - false)      |

{% tabs %}
{% tab title="200 " %}

```json
{
    data: {
        isBuyer: true,
        isVendor: false,
        isSendSms: false,
        isSendEmail: false,
        isSendTelegram: false,
        dateCreate: "2022-12-13T12:40:09.553Z",
        lastAction: "2022-12-13T12:40:09.553Z",
        rating: 0,
        name: "Иванов Павел",
        phones: [
            "+7 (999) 123-45-67"
        ],
        isVisible: true,
        id: "63c151296690d34d165b803d",
        balance: 0,
        typeCounteragent: {
            id: "63c015adcce57401c832fbf5",
            name: "Частное лицо"
        }
    },
    version: "2.0.0.0",
    remainRequest: 50,
    expireDate: "2022-12-13T09:09:20.861Z"
}
```

{% endtab %}

{% tab title="401 Доступ запрещен" %}

```json
{
  error: {
    statusCode: 401,
    name: "Error",
    message: "Access denied"
  }
}
```

{% endtab %}
{% endtabs %}

## Изменение контрагента

<mark style="color:purple;">`PATCH`</mark> `https://api.livesklad.com/counteragents/{id}`

Изменяет информацию в карточке контрагента

#### Headers

| Name                                            | Type   | Description       |
| ----------------------------------------------- | ------ | ----------------- |
| Authorization<mark style="color:red;">\*</mark> | string | Токен авторизации |

#### Request Body

| Name               | Type    | Description                                                            |
| ------------------ | ------- | ---------------------------------------------------------------------- |
| name               | string  | Имя контрагента                                                        |
| isSendSms          | boolean | Контрагенту можно отправлять смс-сообщения                             |
| node               | string  | Примечание                                                             |
| phones             | array   | Телефоны контрагента, передаются в виде массива строк                  |
| address            | string  | Адрес контрагента                                                      |
| howKnowId          | string  | id источника рекламы                                                   |
| email              | string  | email контрагента                                                      |
| isVendor           | boolean | Контрагент является поставщиком                                        |
| isBuyer            | boolean | Контрагент является покупателем                                        |
| typeCounteragentId | string  | id типа контрагента                                                    |
| isSendEmail        | boolean | Контрагенту можно отправлять письма на email                           |
| isSendTelegram     | boolean | Контрагенту можно отправлять сообщения в Telegram                      |
| rating             | number  | Рейтинг контрагента (обычный: 0, негативный клиент: -1, позитивный: 1) |
| customFields       | array   | Массив пользовательских полей                                          |

{% tabs %}
{% tab title="200: OK " %}

```json
{
    data: {
        isBuyer: true,
        isVendor: false,
        isSendSms: false,
        isSendEmail: false,
        isSendTelegram: false,
        dateCreate: "2022-12-13T12:40:09.553Z",
        lastAction: "2022-12-13T12:40:09.553Z",
        rating: 0,
        name: "Иванов Павел",
        phones: [
            "+7 (999) 123-45-67"
        ],
        isVisible: true,
        id: "63c151296690d34d165b803d",
        balance: 0,
        typeCounteragent: {
            id: "63c015adcce57401c832fbf5",
            name: "Частное лицо"
        }
    },
    version: "2.0.0.0",
    remainRequest: 50,
    expireDate: "2022-12-13T09:09:20.861Z"
}
```

{% endtab %}

{% tab title="401: Unauthorized Доступ запрещен" %}

```json
{
  error: {
    statusCode: 401,
    name: "Error",
    message: "Access denied"
  }
}
```

{% endtab %}
{% endtabs %}

**customFields** передается в формате:

```
[
  {
    id: "5e0cea8e7ae81e080c8be6d8",
    value: true
  },
  {
    id: "5e0ceaf77ae81e080c8be700",
    value: "Приоритетный клиент"
  }
]
```

По умолчанию обязательными являются только поля **name**, **typeCounteragentId**, **isBuyer**, **isVendor**. Но в случае если для указанного типа контрагента (определяется по **typeCounteragentId**) изменена форма контрагента, то обязательными могут быть так же и другие поля

## Список типов контрагентов

<mark style="color:blue;">`GET`</mark> `https://api.livesklad.com/type-counteragents`

Возвращает массив типов контрагентов

#### Headers

| Name                                            | Type   | Description       |
| ----------------------------------------------- | ------ | ----------------- |
| Authorization<mark style="color:red;">\*</mark> | string | Токен авторизации |

{% tabs %}
{% tab title="200 " %}

```json
{
  data: [
    {
      name: "Частное лицо",
      sort: 2,
      id: "63c015adcce57401c832fbf5"
    },
    {
      name: "Компания",
      sort: 1,
      id: "63c015adcce57401c832fc15"
    }
  ],
  version: "2.0.0.0",
  remainRequest: 50,
  expireDate: "2022-12-13T09:09:20.861Z"
}
```

{% endtab %}

{% tab title="401 Доступ запрещен" %}

```json
{
  error: {
    statusCode: 401,
    name: "Error",
    message: "Access denied"
  }
}
```

{% endtab %}
{% endtabs %}

## Список пользовательских полей для типа контрагента

<mark style="color:blue;">`GET`</mark> `https://api.livesklad.com/type-counteragents/{id}/fields`

Возвращает массив пользовательских полей для типа контрагента

#### Path Parameters

| Name                                 | Type   | Description         |
| ------------------------------------ | ------ | ------------------- |
| id<mark style="color:red;">\*</mark> | string | id типа контрагента |

#### Headers

| Name                                            | Type   | Description       |
| ----------------------------------------------- | ------ | ----------------- |
| Authorization<mark style="color:red;">\*</mark> | string | Токен авторизации |

{% tabs %}
{% tab title="200 " %}

```json
{
  data: [
    {
      id: "5d4c13abcf76126f63994b6e",
      description: "Рабочий адрес",
      type: "counteragent",
      dataType: "string",
      items: null,
      defaultValue: null
    },
    {
      id: "5e0a0dfdb955fb765ad25b3c",
      description: "Договор",
      type: "counteragent",
      dataType: "boolean",
      items: null,
      defaultValue: null
    }
  ],
  version: "2.0.0.0",
  remainRequest: 50,
  expireDate: "2022-12-13T09:09:20.861Z"
}
```

{% endtab %}

{% tab title="401 Доступ запрещен" %}

```json
{
  error: {
    statusCode: 401,
    name: "Error",
    message: "Access denied"
  }
}
```

{% endtab %}
{% endtabs %}

## Информация о контрагенте

<mark style="color:blue;">`GET`</mark> `https://api.livesklad.com/counteragents/{id}`

Возвращает полную информацию о контрагенте

#### Path Parameters

| Name                                 | Type   | Description    |
| ------------------------------------ | ------ | -------------- |
| id<mark style="color:red;">\*</mark> | string | id контрагента |

#### Headers

| Name                                            | Type   | Description       |
| ----------------------------------------------- | ------ | ----------------- |
| Authorization<mark style="color:red;">\*</mark> | string | Токен авторизации |

{% tabs %}
{% tab title="200 " %}

```json
{
  data: {
    dateCreate: "2022-12-12T14:14:07.820Z",
    lastAction: "2022-12-12T14:14:07.820Z",
    name: "GreenSpark",
    phones: [],
    isBuyer: false,
    isVendor: true,
    isSendSms: false,
    rating: 0,
    isVisible: true,
    isSendEmail: false,
    isSendTelegram: false,
    id: "63c015afcce57401c832fca1",
    typeCounteragent: {
      name: "Компания",
      id: "63c015adcce57401c832fc15"
    }
  },
  version: "2.0.0.0",
  remainRequest: 50,
  expireDate: "2022-12-13T09:09:20.861Z"
}
```

{% endtab %}

{% tab title="401 Доступ запрещен" %}

```json
{
  error: {
    statusCode: 401,
    name: "Error",
    message: "Access denied"
  }
}
```

{% endtab %}
{% endtabs %}
