# Промокоды

## Работа с промокодами

## Получение списка промокодов

<mark style="color:blue;">`GET`</mark> `https://api.lpmotor.ru/v1/promo`

This endpoint allows you to get free cakes.

#### Query Parameters

| Name     | Type   | Description |
| -------- | ------ | ----------- |
| site\_id | string | ID сайта    |

#### Headers

| Name          | Type   | Description     |
| ------------- | ------ | --------------- |
| X-Api-User-Id | string | ID пользователя |
| Authorization | string | API-токен       |

{% tabs %}
{% tab title="200 Cake successfully retrieved." %}

```
[
  {
    "id": 0,
    "code": "string",
    "pos": 0,
    "is_enabled": true,
    "bonus_type": 0,
    "bonus_amount": 0,
    "bonus_amount_is_in_percentages": true,
    "time_limit_is_enabled": true,
    "d_on": "2021-08-04T13:57:37.243Z",
    "d_off": "2021-08-04T13:57:37.243Z",
    "quantity_limit_is_enabled": true,
    "quantity_limit": 0,
    "promo_used_count": 0,
    "is_valid": true
  }
]
```

{% endtab %}

{% tab title="403 Could not find a cake matching this query." %}

```
{
    "title": "user cant view site",
    "error": 30,
    "code": 403
}Пример запроса
 curl -X GET "Пример запроса
 curl -X GET "
```

{% endtab %}
{% endtabs %}

#### Пример запроса

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

```bash
curl \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Api-User-Id: <<Your-user-id>>" \
-H "Authorization: Bearer <<Your-API-token>>" \
-X GET "https://api.lpmotor.ru/v1/promo?site_id=11111" 
```

{% endtab %}

{% tab title="PHP CURL" %}

```
```

{% endtab %}

{% tab title="PHP Guzzle" %}

```php
<?php
$client = new GuzzleHttp\Client([
    'base_uri' => 'https://api.lpmotor.ru',
    'headers'  => [
        'Content-Type'  => 'application/json',
        'Accept'        => 'application/json',
        'X-Api-User-Id' => $userId,
        'Authorization' => 'Bearer ' . $apiKey,
    ],
]);
$response = $client->get(
    '/v1/promo',
    [
        'query' => [
            'site_id' => $siteId,
        ]
    ]
);
$statusCode = $response->getStatusCode();
$promoCodes = json_decode((string) $response->getBody(), true);
```

{% endtab %}

{% tab title="JavaScript" %}

```javascript
http = Axios.create({
    baseURL: "https://api.lpmotor.ru",
    timeout: 60000,
    headers: {
        "Content-Type" : "application/json",
        "Accept"       : "application/json",
        "Cache-Control": "no-cache, no-store, must-revalidate",
        "X-Api-User-Id": userId,
        "Authorization": "Bearer " + myApiKey,
    }
});
http.get("/v1/promo", {
    params: {
        site_id: 11111,
    },
});
```

{% endtab %}
{% endtabs %}

## Создание промокода

<mark style="color:green;">`POST`</mark> `https://api.lpmotor.ru/v1/promo`

#### Headers

| Name          | Type   | Description     |
| ------------- | ------ | --------------- |
| X-Api-User-Id | string | ID пользователя |
| Authorization | string | API-токен       |

#### Request Body

| Name                               | Type    | Description                                                                                                                            |
| ---------------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| site\_id                           | integer | ID сайта                                                                                                                               |
| code                               | string  | Код длиной от 2 до 15 символов. Может состоять только из букв латинского алфавита и цифр                                               |
| is\_enabled                        | boolean | Флаг действия промокода. **По умолчанию: false**                                                                                       |
| bonus\_type                        | integer | Тип действия промокода. Поддерживаемые значения: *2* - на стоимость основных товаров, *3* - на стоимость доставки. **По умолчанию: 2** |
| bonus\_amount                      | number  | Сумма скидки. **По умолчанию: 0.01**                                                                                                   |
| bonus\_amount\_is\_in\_percentages | boolean | Тип скидки. *true* - в процентах, *false* - фиксированная. **По умолчанию: false**                                                     |
| time\_limit\_is\_enabled           | boolean | Флаг ограничения срока действия промокода. **По умолчанию: false**                                                                     |
| d\_on                              | string  | Дата начала действия промокода. **По умолчанию: null**                                                                                 |
| d\_off                             | string  | Дата окончания действия промокода. **По умолчанию: null**                                                                              |
| quantity\_limit\_is\_enabled       | boolean | Флаг ограничения количества использований промокода. **По умолчанию: false**                                                           |
| quantity\_limit                    | integer | Количество использований промокода. **По умолчанию: 0**                                                                                |
| personal\_limit\_is\_enabled       | boolean | Флаг повторного использования промокода одним пользователем. **По умолчанию: false**                                                   |

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

```
{
  "code": "string",
  "is_enabled": true,
  "bonus_type": 0,
  "bonus_amount": 0,
  "bonus_amount_is_in_percentages": true,
  "time_limit_is_enabled": true,
  "d_on": "2021-08-04T14:36:22.614Z",
  "d_off": "2021-08-04T14:36:22.614Z",
  "quantity_limit_is_enabled": true,
  "quantity_limit": 0,
  "personal_limit_is_enabled": true
}
```

{% endtab %}

{% tab title="403 " %}

```
{
    "title": "user cant view site",
    "error": 30,
    "code": 403
}
```

{% endtab %}
{% endtabs %}

#### Пример запроса

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

```bash
curl \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Api-User-Id: <<Your-user-id>>" \
-H "Authorization: Bearer <<Your-API-token>>" \
-X POST "https://api.lpmotor.ru/v1/promo" \ 
-d '{"user_id":123,"site_id":11111,"code":"mypromocode"}'
```

{% endtab %}

{% tab title="PHP CURL" %}

```
```

{% endtab %}

{% tab title="PHP Guzzle" %}

```php
<?php
$client = new GuzzleHttp\Client([
    'base_uri' => 'https://api.lpmotor.ru',
    'headers'  => [
        'Content-Type'  => 'application/json',
        'Accept'        => 'application/json',
        'X-Api-User-Id' => $userId,
        'Authorization' => 'Bearer ' . $apiKey,
    ],
]);
$response = $client->post(
    '/v1/promo',
    [
        'json' => [
            'user_id' => $userId,
            'site_id' => $siteId,
            'code' => 'mypromocode',
        ],
    ]
);
$statusCode = $response->getStatusCode();
$promoCode = json_decode((string) $response->getBody(), true);
```

{% endtab %}

{% tab title="JavaScript" %}

```javascript
http = Axios.create({
    baseURL: "https://api.lpmotor.ru",
    timeout: 60000,
    headers: {
        "Content-Type" : "application/json",
        "Accept"       : "application/json",
        "Cache-Control": "no-cache, no-store, must-revalidate",
        "X-Api-User-Id": userId,
        "Authorization": "Bearer " + myApiKey,
    }
});
http.post('/v1/promo', {
    user_id: 123,
    site_id: 11111,
    code: 'mypromocode',
});
```

{% endtab %}
{% endtabs %}

## Получение промокода по ID

<mark style="color:blue;">`GET`</mark> `https://api.lpmotor.ru/v1/promo/{promo_id}`

#### Path Parameters

| Name      | Type   | Description  |
| --------- | ------ | ------------ |
| promo\_id | string | ID промокода |

#### Headers

| Name          | Type   | Description     |
| ------------- | ------ | --------------- |
| X-Api-User-Id | string | ID пользователя |
| Authorization | string | API-токен       |

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

```
{
  "code": "string",
  "is_enabled": true,
  "bonus_type": 0,
  "bonus_amount": 0,
  "bonus_amount_is_in_percentages": true,
  "time_limit_is_enabled": true,
  "d_on": "2021-08-04T14:39:18.248Z",
  "d_off": "2021-08-04T14:39:18.248Z",
  "quantity_limit_is_enabled": true,
  "quantity_limit": 0,
  "personal_limit_is_enabled": true
}
```

{% endtab %}

{% tab title="403 " %}

```
{
    "title": "user cant view promo",
    "error": 40,
    "code": 403
}
```

{% endtab %}
{% endtabs %}

#### Пример запроса

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

```bash
curl \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Api-User-Id: <<Your-user-id>>" \
-H "Authorization: Bearer <<Your-API-token>>" \
-X GET "https://api.lpmotor.ru/v1/promo/1" 
```

{% endtab %}

{% tab title="PHP CURL" %}

```
```

{% endtab %}

{% tab title="PHP Guzzle" %}

```php
<?php
$client = new GuzzleHttp\Client([
    'base_uri' => 'https://api.lpmotor.ru',
    'headers'  => [
        'Content-Type'  => 'application/json',
        'Accept'        => 'application/json',
        'X-Api-User-Id' => $userId,
        'Authorization' => 'Bearer ' . $apiKey,
    ],
]);
$response = $client->get(
    '/v1/promo/' . $promoId
);
$statusCode = $response->getStatusCode();
$promoCode = json_decode((string) $response->getBody(), true);
```

{% endtab %}

{% tab title="JavaScript" %}

```javascript
http = Axios.create({
    baseURL: "https://api.lpmotor.ru",
    timeout: 60000,
    headers: {
        "Content-Type" : "application/json",
        "Accept"       : "application/json",
        "Cache-Control": "no-cache, no-store, must-revalidate",
        "X-Api-User-Id": userId,
        "Authorization": "Bearer " + myApiKey,
    }
});
http.get("/v1/promo/" + promoId);
```

{% endtab %}
{% endtabs %}

## Изменение промокода

<mark style="color:orange;">`PUT`</mark> `https://api.lpmotor.ru/v1/promo/{promo_id}`

#### Path Parameters

| Name      | Type   | Description  |
| --------- | ------ | ------------ |
| promo\_id | string | ID промокода |

#### Headers

| Name          | Type   | Description     |
| ------------- | ------ | --------------- |
| X-Api-User-Id | string | ID пользователя |
| Authorization | string | API-токен       |

#### Request Body

| Name                               | Type    | Description                                                                                                                            |
| ---------------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| code                               | string  | Код длиной от 2 до 15 символов. Может состоять только из символов латиницы и цифр                                                      |
| is\_enabled                        | boolean | Флаг действия промокода. **По умолчанию: false**                                                                                       |
| bonus\_type                        | integer | Тип действия промокода. Поддерживаемые значения: *2* - на стоимость основных товаров, *3* - на стоимость доставки. **По умолчанию: 2** |
| bonus\_amount                      | number  | Сумма скидки. **По умолчанию: 0.01**                                                                                                   |
| bonus\_amount\_is\_in\_percentages | boolean | Тип скидки. *true* - в процентах, *false* - фиксированная. **По умолчанию: false**                                                     |
| time\_limit\_is\_enabled           | boolean | Флаг ограничения срока действия промокода. **По умолчанию: false**                                                                     |
| d\_on                              | string  | Дата начала действия промокода. **По умолчанию: null**                                                                                 |
| d\_off                             | string  | Дата окончания действия промокода. **По умолчанию: null**                                                                              |
| quantity\_limit\_is\_enabled       | boolean | Флаг ограничения количества использований промокода. **По умолчанию: false**                                                           |
| quantity\_limit                    | integer | Количество использований промокода. **По умолчанию: 0**                                                                                |
| personal\_limit\_is\_enabled       | boolean | Флаг повторного использования промокода одним пользователем. **По умолчанию: false**                                                   |

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

```
{
  "code": "string",
  "is_enabled": true,
  "bonus_type": 0,
  "bonus_amount": 0,
  "bonus_amount_is_in_percentages": true,
  "time_limit_is_enabled": true,
  "d_on": "2021-08-04T14:43:46.897Z",
  "d_off": "2021-08-04T14:43:46.897Z",
  "quantity_limit_is_enabled": true,
  "quantity_limit": 0,
  "personal_limit_is_enabled": true
}
```

{% endtab %}

{% tab title="403 " %}

```
{
    "title": "user cant view promo",
    "error": 40,
    "code": 403
}
```

{% endtab %}
{% endtabs %}

#### Пример запроса

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

```bash
curl \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Api-User-Id: <<Your-user-id>>" \
-H "Authorization: Bearer <<Your-API-token>>" \
-X PUT "https://api.lpmotor.ru/v1/promo/1" \ 
-d '{"code":"newpromocode"}'
```

{% endtab %}

{% tab title="PHP CURL" %}

```
```

{% endtab %}

{% tab title="PHP Guzzle" %}

```php
<?php
$client = new GuzzleHttp\Client([
    'base_uri' => 'https://api.lpmotor.ru',
    'headers'  => [
        'Content-Type'  => 'application/json',
        'Accept'        => 'application/json',
        'X-Api-User-Id' => $userId,
        'Authorization' => 'Bearer ' . $apiKey,
    ],
]);
$response = $client->put(
    '/v1/promo/1',
    [
        'json' => [
            'code' => 'newpromocode',
        ],
    ]
);
$statusCode = $response->getStatusCode();
$promoCode = json_decode((string) $response->getBody(), true);
```

{% endtab %}

{% tab title="JavaScript" %}

```javascript
http = Axios.create({
    baseURL: "https://api.lpmotor.ru",
    timeout: 60000,
    headers: {
        "Content-Type" : "application/json",
        "Accept"       : "application/json",
        "Cache-Control": "no-cache, no-store, must-revalidate",
        "X-Api-User-Id": userId,
        "Authorization": "Bearer " + myApiKey,
    }
});
http.post('/v1/promo/1', {
    code: 'newpromocode',
});
```

{% endtab %}
{% endtabs %}

## Удаление промокода

<mark style="color:red;">`DELETE`</mark> `https://api.lpmotor.ru/v1/promo/{promo_id}`

#### Path Parameters

| Name      | Type   | Description  |
| --------- | ------ | ------------ |
| promo\_id | string | ID промокода |

#### Headers

| Name          | Type   | Description     |
| ------------- | ------ | --------------- |
| X-Api-User-Id | string | ID пользователя |
| Authorization | string | API-токен       |

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

```
```

{% endtab %}

{% tab title="403 " %}

```
{
    "title": "user cant view promo",
    "error": 40,
    "code": 403
}
```

{% endtab %}
{% endtabs %}

#### Пример запроса

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

```bash
curl \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Api-User-Id: <<Your-user-id>>" \
-H "Authorization: Bearer <<Your-API-token>>" \
-X DELETE "https://api.lpmotor.ru/v1/promo/1" 
```

{% endtab %}

{% tab title="PHP CURL" %}

```
```

{% endtab %}

{% tab title="PHP Guzzle" %}

```php
<?php
$client = new GuzzleHttp\Client([
    'base_uri' => 'https://api.lpmotor.ru',
    'headers'  => [
        'Content-Type'  => 'application/json',
        'Accept'        => 'application/json',
        'X-Api-User-Id' => $userId,
        'Authorization' => 'Bearer ' . $apiKey,
    ],
]);
$response = $client->delete(
    '/v1/promo/1'
);
$statusCode = $response->getStatusCode();
```

{% endtab %}

{% tab title="JavaScript" %}

```javascript
http = Axios.create({
    baseURL: "https://api.lpmotor.ru",
    timeout: 60000,
    headers: {
        "Content-Type" : "application/json",
        "Accept"       : "application/json",
        "Cache-Control": "no-cache, no-store, must-revalidate",
        "X-Api-User-Id": userId,
        "Authorization": "Bearer " + myApiKey,
    }
});
http.delete("/v1/promo/1");
```

{% endtab %}
{% endtabs %}

## Получение статистики использования промокода

<mark style="color:blue;">`GET`</mark> `https://api.lpmotor.ru/v1/promo/{promo_id}/statistics`

#### Path Parameters

| Name      | Type   | Description  |
| --------- | ------ | ------------ |
| promo\_id | string | ID промокода |

#### Headers

| Name          | Type   | Description     |
| ------------- | ------ | --------------- |
| X-Api-User-Id | string | ID пользователя |
| Authorization | string | API-токен       |

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

```
[
  {
    "id": 0,
    "promo_id": 0,
    "lead_id": 0,
    "bonus_type_id": 0,
    "bonus_amount": 0,
    "bonus_amount_is_in_percentages": 0,
    "order_price": 0,
    "order_quantity": 0,
    "discount_amount": 0,
    "promo": {
      "code": "string"
    },
    "d_lead_created": "2021-08-04T15:02:13.184Z",
    "currency": "string"
  }
]
```

{% endtab %}

{% tab title="403 " %}

```
{
    "title": "user cant view site",
    "error": 30,
    "code": 403
}
```

{% endtab %}
{% endtabs %}

#### Пример запроса

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

```bash
curl \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Api-User-Id: <<Your-user-id>>" \
-H "Authorization: Bearer <<Your-API-token>>" \
-X GET "https://api.lpmotor.ru/v1/promo/1/statistics"
```

{% endtab %}

{% tab title=" PHP CURL" %}

```
```

{% endtab %}

{% tab title="PHP Guzzle" %}

```php
<?php
$client = new GuzzleHttp\Client([
    'base_uri' => 'https://api.lpmotor.ru',
    'headers'  => [
        'Content-Type'  => 'application/json',
        'Accept'        => 'application/json',
        'X-Api-User-Id' => $userId,
        'Authorization' => 'Bearer ' . $apiKey,
    ],
]);
$response = $client->get(
    '/v1/promo/1/statistics'
);
$statusCode = $response->getStatusCode();
$statistics = json_decode((string) $response->getBody(), true);
```

{% endtab %}

{% tab title="JavaScript" %}

```javascript
http = Axios.create({
    baseURL: "https://api.lpmotor.ru",
    timeout: 60000,
    headers: {
        "Content-Type" : "application/json",
        "Accept"       : "application/json",
        "Cache-Control": "no-cache, no-store, must-revalidate",
        "X-Api-User-Id": userId,
        "Authorization": "Bearer " + myApiKey,
    }
});
http.get("/v1/promo/1/statistics");
```

{% endtab %}
{% endtabs %}
