> For the complete documentation index, see [llms.txt](https://developer.livesklad.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developer.livesklad.com/api/sale.md).

# Продажи

## Список продаж

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

Возвращает массив продаж для мастерской. Для получения списка продаж у API должен быть настроен доступ к соответствующей мастерской и у для мастерской должен быть установлен **Доступ к магазину**\
\
Для сортировки результата необходимо в параметре **sort** передать строку "**<название\_поля> ASC**" или "**<название\_поля> DESC**". Где **ASC** - сортировать по возрастанию, **DESC** - сортировать по убыванию, **<название\_поля>** - поле по которому осуществляется сортировка, может быть одно из: **node**, **id**, **date**, **cash**, **purchasePrice**, **counteragent**, **soldPrice**, **number**. По умолчанию продажи сортируются от новых к старым\
\
Фильтры по датам передаются в виде массива из двух чисел в формате Unix (**в миллисекундах**), где первый число - это начало диапазона, а второе - конец диапазона. Если какая-то граница диапазона отсутствует, то вместо нее нужно передать null. Например \[1690837200000,1693515599999] или \[null,1693515599999]

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

#### Path Parameters

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

#### Query Parameters

| Name     | Type   | Description                                                       |
| -------- | ------ | ----------------------------------------------------------------- |
| filter   | string | Текст для поиска по содержимому корзины                           |
| date     | array  | Фильтр по дате продажи                                            |
| page     | number | Номер страницы выборки (по умолчанию - 1)                         |
| pageSize | number | Количество элементов в выборке (по умолчанию - 10, максимум - 50) |
| sort     | String | Сортировка                                                        |

#### Headers

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

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

```json
{
  data: [
    {
      date: "2022-12-13T09:45:13.894Z",
      number: "B000002",
      summ: {
        price: 1500,
        soldPrice: 1500,
        purchasePrice: 900
      },
      cash: {
        summ: 1500
      },
      id: "63c128159bb329405df8b407"
    },
    {
      date: "2022-12-13T09:42:29.259Z",
      number: "B000001",
      summ: {
        price: 500,
        soldPrice: 500,
        purchasePrice: 200
      },
      cash: {
        summ: 500
      },
      id: "63c125aca0360d3ba1fd3747"
    }
  ],
  total: 2,
  page: 1,
  pageSize: 10,
  sort: {
    field: "date",
    dir: "DESC"
  },
  summ: {
    soldPrice: 2000,
    purchasePrice: 1100
  },
  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/documents/{id}`

Возвращает информацию о продаже. Для получения информации о продаже у API должен быть настроен доступ к соответствующей мастерской и для мастерской должен быть установлен **Доступ к магазину**

#### 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: {
    date: "2023-01-13T09:42:29.259Z",
    type: "sale",
    dateChange: "2023-01-13T09:50:29.763Z",
    number: "B000001",
    id: "63c125aca0360d3ba1fd3747",
    customer: {
      id: "63c015adcce57401c832fab4",
      name: "Фамилия Имя"
    },
    cash: {
      bank: 500,
      money: 0,
      invoice: 0,
      elements: [
        {
          id: "63c127859bb329405df8b404",
          date: "2023-01-13T09:42:29.259Z",
          money: 500,
          type: "sale",
          isBankTransfer: true
        }
      ]
    },
    shop: {
      name: "Мастерская",
      color: "#ff6666",
      id: "63c015adcce57401c832faee"
    },
    positions: [
      {
        batches: [
          {
            storeId: "63c015adcce57401c832fb5f",
            batchId: "63c015afcce57401c832fcde",
            count: 1,
            purchasePrice: 200,
            returnCount: 0
          }
        ],
        measure: {
          id: "63c015adcce57401c832fab5",
          value: "шт.",
          isFloat: false
        },
        positionId: "63c1277d9bb329405df8b400",
        modifyId: "63c015afcce57401c832fcbe",
        nomenclatureId: "63c015afcce57401c832fcbd",
        code: 5,
        article: "456789",
        name: "АКБ iPhone 5S/5C (1560 mAh)",
        isWork: false,
        price: 500,
        soldPrice: 500,
        guaranteeInMonth: 1,
        date: "2023-01-13T09:42:29.259Z",
        minPrice: 500,
        returnCount: 0,
        count: 1,
        purchasePriceSumm: 200
      }
    ],
    total: 1,
    pageSize: 10
  },
  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 %}
