Акции
Методы для контроля акций и товаров в них
Базовый URL:
https://api.selsup.ru
🔗 Обновить акцию
Метод обновляет данные акцию
PUT
/api/promotion/{promotionId}
Тело запроса *Обязательно
Content-Type:
application/json
| Поле | Тип | Описание |
|---|---|---|
| promotionId > | integer | Идентификатор акции |
| id > | integer | Порядковый номер в списке запроса |
| totalCount > | integer | Общее кол-во акций |
| name > | string | Название акции |
| dateStart > | string | Дата и время начало |
| dateEnd > | string | Дата и время окончания |
| changeCommission > | boolean | Меняется ли комиссия или нет |
| changeCommissionAmount > | number | На какой процент сокращается комиссия |
| createdDate > | string | Дата создания |
| service > | string | Сервис |
| isDeleted > | boolean | Идентификатор удаления |
| description > | string | Описание акции |
| promotionIdOnMp > | integer | Идентификатор акции на МП |
| clientId > | integer | Идентификатор клиента |
| organizationId > | integer | Идентификатор организации |
| candidateCount > | integer | Кол-во кандидатов в акцию |
| inPromotionCount > | integer | Кол-во участников в акции |
| auto > | boolean | Признак автоматической акции |
| hotsale > | boolean | Признак hotsale акции |
| candidateCountOnMp > | integer | Кол-во кандидатов в акции на маркетплейсе |
| inPromotionCountOnMp > | integer | Кол-во участников в акции на маркетплейсе |
Тело ответа
✓ 200
OK
▶
Content-Type:
application/json
| Поле | Тип | Описание |
|---|---|---|
| promotionId > | integer | Идентификатор акции |
| id > | integer | Порядковый номер в списке запроса |
| totalCount > | integer | Общее кол-во акций |
| name > | string | Название акции |
| dateStart > | string | Дата и время начало |
| dateEnd > | string | Дата и время окончания |
| changeCommission > | boolean | Меняется ли комиссия или нет |
| changeCommissionAmount > | number | На какой процент сокращается комиссия |
| createdDate > | string | Дата создания |
| service > | string | Сервис |
| isDeleted > | boolean | Идентификатор удаления |
| description > | string | Описание акции |
| promotionIdOnMp > | integer | Идентификатор акции на МП |
| clientId > | integer | Идентификатор клиента |
| organizationId > | integer | Идентификатор организации |
| candidateCount > | integer | Кол-во кандидатов в акцию |
| inPromotionCount > | integer | Кол-во участников в акции |
| auto > | boolean | Признак автоматической акции |
| hotsale > | boolean | Признак hotsale акции |
| candidateCountOnMp > | integer | Кол-во кандидатов в акции на маркетплейсе |
| inPromotionCountOnMp > | integer | Кол-во участников в акции на маркетплейсе |
⚠ 400
Ошибка с данными запроса
▶
Content-Type:
application/json
| Поле | Тип | Описание |
|---|---|---|
| error Обязательный > | string | Код ошибки |
| localMessage Обязательный > | string | Текст ошибки на языке пользователя |
| params > | object | Дополнительные параметры ошибки |
⚠ 403
Доступ запрещен
▶
Content-Type:
application/json
| Поле | Тип | Описание |
|---|---|---|
| error Обязательный > | string | Код ошибки |
✗ 500
Внутренняя ошибка сервера
▶
Content-Type:
application/json
| Поле | Тип | Описание |
|---|---|---|
| error Обязательный > | string | Код ошибки |
| message > | string | Описание ошибки |
| system > | string | Системная ошибки парсинга данных запроса |
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод
Примеры кода
const axios = require('axios');
const response = await axios.put('https://api.selsup.ru/api/promotion/${promotionId}',
{
"promotionId": 123,
"id": "Иванович",
"totalCount": 10000,
"name": "Иван",
"dateStart": "2024-01-15T10:30:00Z",
"dateEnd": "2024-01-15T10:30:00Z",
"changeCommission": true,
"changeCommissionAmount": 2500,
"createdDate": "2024-01-15T10:30:00Z",
"service": "NONE"
},
{
headers: {
'Authorization': 'YOUR_API_KEY',
'Content-Type': 'application/json'
}
}
);
console.log(response.data);
import axios from 'axios';
const response = await axios.put<any>('https://api.selsup.ru/api/promotion/${promotionId}',
{
"promotionId": 123,
"id": "Иванович",
"totalCount": 10000,
"name": "Иван",
"dateStart": "2024-01-15T10:30:00Z",
"dateEnd": "2024-01-15T10:30:00Z",
"changeCommission": true,
"changeCommissionAmount": 2500,
"createdDate": "2024-01-15T10:30:00Z",
"service": "NONE"
},
{
headers: {
'Authorization': 'YOUR_API_KEY',
'Content-Type': 'application/json'
}
}
);
console.log(response.data);
import requests
headers = {
'Authorization': 'YOUR_API_KEY',
'Content-Type': 'application/json'
}
response = requests.put(
'https://api.selsup.ru/api/promotion/${promotionId}',
headers=headers,
json={
'promotionId': 123,
'id': 'Иванович',
'totalCount': 10000,
'name': 'Иван',
'dateStart': '2024-01-15T10:30:00Z',
'dateEnd': '2024-01-15T10:30:00Z',
'changeCommission': true,
'changeCommissionAmount': 2500,
'createdDate': '2024-01-15T10:30:00Z',
'service': 'NONE'
}
)
print(response.json())
package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
)
func main() {
client := &http.Client{}
payload := map[string]interface{}{
`promotionId`: 123,
`id`: `Иванович`,
`totalCount`: 10000,
`name`: `Иван`,
`dateStart`: `2024-01-15T10:30:00Z`,
`dateEnd`: `2024-01-15T10:30:00Z`,
`changeCommission`: true,
`changeCommissionAmount`: 2500,
`createdDate`: `2024-01-15T10:30:00Z`,
`service`: `NONE`
}
jsonData, _ := json.Marshal(payload)
req, _ := http.NewRequest("put", "https://api.selsup.ru/api/promotion/${promotionId}", bytes.NewBuffer(jsonData))
req.Header.Set("Authorization", "YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
var result map[string]interface{}
json.NewDecoder(resp.Body).Decode(&result)
fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.selsup.ru/api/promotion/${promotionId}"))
.header("Authorization", "YOUR_API_KEY")
.header("Content-Type", "application/json")
.put(HttpRequest.BodyPublishers.ofString(
"{\"promotionId\":123,\"id\":\"Иванович\",\"totalCount\":10000,\"name\":\"Иван\",\"dateStart\":\"2024-01-15T10:30:00Z\",\"dateEnd\":\"2024-01-15T10:30:00Z\",\"changeCommission\":true,\"changeCommissionAmount\":2500,\"createdDate\":\"2024-01-15T10:30:00Z\",\"service\":\"NONE\"}"
))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://api.selsup.ru/api/promotion/${promotionId}',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'put',
CURLOPT_POSTFIELDS => json_encode({
'promotionId': 123,
'id': 'Иванович',
'totalCount': 10000,
'name': 'Иван',
'dateStart': '2024-01-15T10:30:00Z',
'dateEnd': '2024-01-15T10:30:00Z',
'changeCommission': true,
'changeCommissionAmount': 2500,
'createdDate': '2024-01-15T10:30:00Z',
'service': 'NONE'
}),
CURLOPT_HTTPHEADER => [
'Authorization: YOUR_API_KEY',
'Content-Type: application/json'
]
]);
$response = curl_exec($curl);
curl_close($curl);
echo $response;
?>
curl -X put \
'https://api.selsup.ru/api/promotion/{promotionId}' \
-H 'Authorization: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"promotionId": 123,
"id": "Иванович",
"totalCount": 10000,
"name": "Иван",
"dateStart": "2024-01-15T10:30:00Z",
"dateEnd": "2024-01-15T10:30:00Z",
"changeCommission": true,
"changeCommissionAmount": 2500,
"createdDate": "2024-01-15T10:30:00Z",
"service": "NONE"
}'
🔗 Удалить акцию
Метод удаляет акцию
DELETE
/api/promotion/{promotionId}
Параметры пути PATH
| Название | Тип | Обязательный | Описание |
|---|---|---|---|
| promotionId | integer | Да |
Идентификатор акции
|
Тело ответа
✓ 200
OK
▶
⚠ 400
Ошибка с данными запроса
▶
Content-Type:
application/json
| Поле | Тип | Описание |
|---|---|---|
| error Обязательный > | string | Код ошибки |
| localMessage Обязательный > | string | Текст ошибки на языке пользователя |
| params > | object | Дополнительные параметры ошибки |
⚠ 403
Доступ запрещен
▶
Content-Type:
application/json
| Поле | Тип | Описание |
|---|---|---|
| error Обязательный > | string | Код ошибки |
✗ 500
Внутренняя ошибка сервера
▶
Content-Type:
application/json
| Поле | Тип | Описание |
|---|---|---|
| error Обязательный > | string | Код ошибки |
| message > | string | Описание ошибки |
| system > | string | Системная ошибки парсинга данных запроса |
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод
Примеры кода
const axios = require('axios');
const response = await axios.delete('https://api.selsup.ru/api/promotion/${promotionId}',
{
headers: {
'Authorization': 'YOUR_API_KEY',
'Content-Type': 'application/json'
}
}
);
console.log(response.data);
import axios from 'axios';
const response = await axios.delete<any>('https://api.selsup.ru/api/promotion/${promotionId}',
{
headers: {
'Authorization': 'YOUR_API_KEY',
'Content-Type': 'application/json'
}
}
);
console.log(response.data);
import requests
headers = {
'Authorization': 'YOUR_API_KEY',
'Content-Type': 'application/json'
}
response = requests.delete(
'https://api.selsup.ru/api/promotion/${promotionId}',
headers=headers
)
print(response.json())
package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
)
func main() {
client := &http.Client{}
req, _ := http.NewRequest("delete", "https://api.selsup.ru/api/promotion/${promotionId}", nil)
req.Header.Set("Authorization", "YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
var result map[string]interface{}
json.NewDecoder(resp.Body).Decode(&result)
fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.selsup.ru/api/promotion/${promotionId}"))
.header("Authorization", "YOUR_API_KEY")
.header("Content-Type", "application/json")
.delete(HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://api.selsup.ru/api/promotion/${promotionId}',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'delete',
CURLOPT_HTTPHEADER => [
'Authorization: YOUR_API_KEY',
'Content-Type: application/json'
]
]);
$response = curl_exec($curl);
curl_close($curl);
echo $response;
?>
curl -X delete \
'https://api.selsup.ru/api/promotion/{promotionId}' \
-H 'Authorization: YOUR_API_KEY' \
-H 'Content-Type: application/json'
🔗 Обновить данные
Метод ставит задачу обновления данных по акциям ОЗОН в очередь
POST
/api/promotion/update/{service}
Параметры пути PATH
| Название | Тип | Обязательный | Описание |
|---|---|---|---|
| service | "NONE""WILDBERRIES""OZON""YANDEX_MARKET""FAMILIYA""NATIONAL_CATALOG""ALIEXPRESS""OTHER""MOY_SKLAD""SBER_MEGA_MARKET""CISLINK""ONE_C""AVITO""LEROY_MERLIN""DETMIR""KAZAN_EXPRESS""EVOTOR""WEBASYST""AMAZON""EBAY""SIMALAND""INSALES""LAMODA""OZON_PERFORMANCE""WALMART""GOOGLE""YANDEX_DISC""EMAIL""WOOCOMMERCE" | Да |
Параметр service
|
Параметры запроса QUERY
| Название | Тип | Обязательный | Описание |
|---|---|---|---|
| organizationId | integer | Нет |
Параметр organizationId
|
Тело ответа
✓ 200
OK
▶
Content-Type:
application/json
| Поле | Тип | Описание |
|---|---|---|
| id > | integer | Идентификатор задачи |
| status > | string | Текущий статус задачи |
| type > | string | Тип задачи |
| name > | string | Данные задачи в json - могут быть пустыми |
| clientId > | integer | |
| entityId > | integer | Сущность, к которой относится задача |
| progress > | integer | Прогресс выполнения задачи в процентах |
| processedQuantity > | integer | Количество обработанных записей задачи |
| organizationId > | integer | Организация задачи, может быть 0, если не зависит от организации |
| priority > | integer | Приоритет задачи - чем выше тем быстрее задача запустится |
| properties > | string | Параметры задачи |
| message > | string | Сообщение с результатом выполнения задачи |
| messageParams > | string | Параметры сообщения с результатом выполнения задачи |
| createdDate > | string | Дата добавления задачи в очередь |
| startDate > | string | Дата запуска задачи |
| finishDate > | string | Дата завершения задачи |
| url > | string | Ссылка на скачивание файла с результатом задачи |
| inputFileUrl > | string | Ссылка на загруженный файл |
| retryNumber > | integer | Счётчик перезапуска задачи. |
| userId > | integer | Пользователь запустивший задачу |
| retryDate > | string | Запланированная дата перезапуска |
| debug > | boolean | Запуск задачи в режиме отладки с большим логированием |
| forcedStart > | boolean | Ручной запуск задачи |
| service > | string | Сервис |
| lang > | string | Язык на котором сейчас запущена таска |
⚠ 400
Ошибка с данными запроса
▶
Content-Type:
application/json
| Поле | Тип | Описание |
|---|---|---|
| error Обязательный > | string | Код ошибки |
| localMessage Обязательный > | string | Текст ошибки на языке пользователя |
| params > | object | Дополнительные параметры ошибки |
⚠ 403
Доступ запрещен
▶
Content-Type:
application/json
| Поле | Тип | Описание |
|---|---|---|
| error Обязательный > | string | Код ошибки |
✗ 500
Внутренняя ошибка сервера
▶
Content-Type:
application/json
| Поле | Тип | Описание |
|---|---|---|
| error Обязательный > | string | Код ошибки |
| message > | string | Описание ошибки |
| system > | string | Системная ошибки парсинга данных запроса |
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод
Примеры кода
const axios = require('axios');
const params = {
organizationId: 'АО "Торговый дом"',
};
const response = await axios.post('https://api.selsup.ru/api/promotion/update/${service}',
{
params,
headers: {
'Authorization': 'YOUR_API_KEY',
'Content-Type': 'application/json'
}
}
);
console.log(response.data);
import axios from 'axios';
interface QueryParams {
organizationId?: number;
}
const params: QueryParams = {
organizationId: 'АО "Торговый дом"',
};
const response = await axios.post<any>('https://api.selsup.ru/api/promotion/update/${service}',
{
params,
headers: {
'Authorization': 'YOUR_API_KEY',
'Content-Type': 'application/json'
}
}
);
console.log(response.data);
import requests
headers = {
'Authorization': 'YOUR_API_KEY',
'Content-Type': 'application/json'
}
params = {
'organizationId': 'АО "Торговый дом"',
}
response = requests.post(
'https://api.selsup.ru/api/promotion/update/${service}',
headers=headers,
params=params
)
print(response.json())
package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
)
func main() {
client := &http.Client{}
req, _ := http.NewRequest("post", "https://api.selsup.ru/api/promotion/update/${service}?organizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22", nil)
req.Header.Set("Authorization", "YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
var result map[string]interface{}
json.NewDecoder(resp.Body).Decode(&result)
fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.selsup.ru/api/promotion/update/${service}?organizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22"))
.header("Authorization", "YOUR_API_KEY")
.header("Content-Type", "application/json")
.post(HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();
$params = [
'organizationId' => 'АО "Торговый дом"',
];
$url = 'https://api.selsup.ru/api/promotion/update/${service}?' . http_build_query($params);
curl_setopt_array($curl, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'post',
CURLOPT_HTTPHEADER => [
'Authorization: YOUR_API_KEY',
'Content-Type: application/json'
]
]);
$response = curl_exec($curl);
curl_close($curl);
echo $response;
?>
curl -X post \
'https://api.selsup.ru/api/promotion/update/{service}?organizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22' \
-H 'Authorization: YOUR_API_KEY' \
-H 'Content-Type: application/json'
🔗 Добавить удаляет товары из акции
Метод удаляет товары из акции
POST
/api/promotion/deleteProductsInPromotion
Параметры запроса QUERY
| Название | Тип | Обязательный | Описание |
|---|---|---|---|
| promotionId | integer | Да |
Параметр promotionId
|
| clientOrganizationId | integer | Да |
Параметр clientOrganizationId
|
Тело запроса *Обязательно
Content-Type:
application/json
Массив из:
ProductPromotion
Структура элемента:
| Поле | Тип | Описание |
|---|---|---|
| categoryName > | string | Категория |
| brandName > | string | Бренд |
| subject > | string | |
| purchasePrice > | number | |
| deliveryCost > | number | |
| additionalCost > | number | |
| barcode > | string | |
| instockQuantity > | integer | |
| wildberriesStockCount > | integer | |
| createdDate > | string | |
| minPrice > | number | |
| isDuplicate > | boolean | |
| ozonArticle > | string | |
| ozonStockCount > | integer | |
| salesExpensesOnMpPercent > | number | |
| taxeRate > | number | |
| width > | integer | |
| height > | integer | |
| depth > | integer | |
| ozonPurchasePercent > | number | |
| warehouseRatio > | number | |
| wildberriesCommission > | number | Комиссия по тарифу FBM |
| wildberriesFbwCommission > | number | Комиссия по тарифу FBW |
| wildberriesFbsCommission > | number | Комиссия по тарифу FBS |
| wildberriesDbsCommission > | number | Комиссия по тарифу DBS |
| wildberriesEdbsCommission > | number | Комиссия по тарифу EDBS |
| wildberriesCAndCCommission > | number | Комиссия по тарифу C&C |
| wildberriesBookingCommission > | number | Комиссия за бронирование |
| wildberriesAdditionalExpenses > | number | |
| ozonAdditionalExpenses > | number | |
| ozonCommission > | number | |
| wildberriesId > | integer | |
| productId > | integer | Идентификатор продукта |
| promotionId > | integer | Идентификатор акции |
| ozonFbsCommission > | number | Озон ФБС комиссия |
| ozonFboCommission > | number | Озон ФБО комиссия |
| service > | string | Сервис |
| acquiringPercent > | number | Максимальный процент комиссии за эквайринг |
| currentPrice > | number | Текущая цена со скидкой |
| currentPriceWithoutDiscount > | number | Текущая цена без скидкой |
| plannedPrice > | number | Планируемая цена под акцию |
| totalStockCount > | integer | |
| commissionReduction > | number | |
| profitDifference > | number | |
| marginDifference > | number | |
| markupDifference > | number | |
| plannedAndMinPriceDiff > | number | |
| incomeDifference > | number | |
| currentDiscount > | number | |
| productCreatedDate > | string | |
| mainImageUrl > | string | Ссылка на основное изображение |
| isProfitably > | boolean | |
| taskId > | integer | Идентификатор задачи |
| serviceArticle > | string | Артикул на сервисе |
| article > | string | Модель артикул |
| daysCountOnService > | integer | Кол-во дней на сервисе |
| turnover > | integer | Оборачиваемость |
| fboStock > | integer | ФБО остаток |
| fbsStock > | integer | ФБС остаток |
| newDiscountForPromotion > | number | |
| saleLogistics > | number | Логистика при продаже |
| returnLogistics > | number | Обратная логистика |
| purchasePercent > | number | Процент выкупа |
| totalLogistics > | number | Логистика |
| commissions > | number | Комиссия |
| currentProfit > | number | Текущая прибыль |
| promotionProfit > | number | Прибыль под акцию |
| currentMarginality > | number | Текущая маржинальность |
| promotionMarginality > | number | Маржинальность под акцию |
| currentMarkUp > | number | Текущая наценка |
| promotionMarkUp > | number | Наценка под акцию |
| additionalDiscountForPromotionRub > | number | Дополнительная скидка под акции в руб |
| additionalDiscountForPromotionPercent > | number | Дополнительная скидка под акции в % |
| isDeleted > | boolean | Удаленный? |
| organizationId > | integer | Идентификатор организации |
| clientId > | integer | Идентификатор клиента |
| addMode > | string | Тип добавления товара в акцию: автоматически или вручную продавцом. |
| ozonAverageExpenses > | number | |
| isActive > | boolean | Товар в акции или нет |
| changeName > | string | Кто вносил корректировки |
| changeDate > | string | Дата когда вносили изменения |
| productName > | string | Название продукта |
| id > | integer | Порядковый номер в общем списке, для фронта |
| totalCount > | integer | Общее кол-во |
| serviceCard > | string | Идентификатор продукта на сервисе |
| isNotFound > | boolean | |
| isArchived > | boolean | |
| productCommissions > | string |
Тело ответа
✓ 200
OK
▶
Content-Type:
application/json
Тип ответа:
OzonProduct
Элементы массива
| Поле | Тип | Описание | |
|---|---|---|---|
| product_id | integer | Нет | Идентификатор товара. |
| action_price | number | Нет | Цена товара по акции. |
| stock | integer | Нет | Количество единиц товара в акции типа «Скидка на сток». |
| reason | string | Нет | Причина, почему товар не добавлен в акцию. |
⚠ 400
Ошибка с данными запроса
▶
Content-Type:
application/json
| Поле | Тип | Описание |
|---|---|---|
| error Обязательный > | string | Код ошибки |
| localMessage Обязательный > | string | Текст ошибки на языке пользователя |
| params > | object | Дополнительные параметры ошибки |
⚠ 403
Доступ запрещен
▶
Content-Type:
application/json
| Поле | Тип | Описание |
|---|---|---|
| error Обязательный > | string | Код ошибки |
✗ 500
Внутренняя ошибка сервера
▶
Content-Type:
application/json
| Поле | Тип | Описание |
|---|---|---|
| error Обязательный > | string | Код ошибки |
| message > | string | Описание ошибки |
| system > | string | Системная ошибки парсинга данных запроса |
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод
Примеры кода
const axios = require('axios');
const params = {
promotionId: '123',
clientOrganizationId: 'АО "Торговый дом"',
};
const response = await axios.post('https://api.selsup.ru/api/promotion/deleteProductsInPromotion',
[
{
"categoryName": "Электроника",
"brandName": "Бренд А",
"subject": "Пример subject",
"purchasePrice": 1999.99,
"deliveryCost": 1500,
"additionalCost": 1500,
"barcode": "4600123456789",
"instockQuantity": 10,
"wildberriesStockCount": 42,
"createdDate": "2024-01-15T10:30:00Z"
}
],
{
params,
headers: {
'Authorization': 'YOUR_API_KEY',
'Content-Type': 'application/json'
}
}
);
console.log(response.data);
import axios from 'axios';
interface QueryParams {
promotionId?: number;
clientOrganizationId?: number;
}
const params: QueryParams = {
promotionId: '123',
clientOrganizationId: 'АО "Торговый дом"',
};
const response = await axios.post<any>('https://api.selsup.ru/api/promotion/deleteProductsInPromotion',
[
{
"categoryName": "Электроника",
"brandName": "Бренд А",
"subject": "Пример subject",
"purchasePrice": 1999.99,
"deliveryCost": 1500,
"additionalCost": 1500,
"barcode": "4600123456789",
"instockQuantity": 10,
"wildberriesStockCount": 42,
"createdDate": "2024-01-15T10:30:00Z"
}
],
{
params,
headers: {
'Authorization': 'YOUR_API_KEY',
'Content-Type': 'application/json'
}
}
);
console.log(response.data);
import requests
headers = {
'Authorization': 'YOUR_API_KEY',
'Content-Type': 'application/json'
}
params = {
'promotionId': '123',
'clientOrganizationId': 'АО "Торговый дом"',
}
response = requests.post(
'https://api.selsup.ru/api/promotion/deleteProductsInPromotion',
headers=headers,
params=params,
json=[
{
'categoryName': 'Электроника',
'brandName': 'Бренд А',
'subject': 'Пример subject',
'purchasePrice': 1999.99,
'deliveryCost': 1500,
'additionalCost': 1500,
'barcode': '4600123456789',
'instockQuantity': 10,
'wildberriesStockCount': 42,
'createdDate': '2024-01-15T10:30:00Z'
}
]
)
print(response.json())
package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
)
func main() {
client := &http.Client{}
payload := map[string]interface{}[
{
`categoryName`: `Электроника`,
`brandName`: `Бренд А`,
`subject`: `Пример subject`,
`purchasePrice`: 1999.99,
`deliveryCost`: 1500,
`additionalCost`: 1500,
`barcode`: `4600123456789`,
`instockQuantity`: 10,
`wildberriesStockCount`: 42,
`createdDate`: `2024-01-15T10:30:00Z`
}
]
jsonData, _ := json.Marshal(payload)
req, _ := http.NewRequest("post", "https://api.selsup.ru/api/promotion/deleteProductsInPromotion?promotionId=123&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22", bytes.NewBuffer(jsonData))
req.Header.Set("Authorization", "YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
var result map[string]interface{}
json.NewDecoder(resp.Body).Decode(&result)
fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.selsup.ru/api/promotion/deleteProductsInPromotion?promotionId=123&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22"))
.header("Authorization", "YOUR_API_KEY")
.header("Content-Type", "application/json")
.post(HttpRequest.BodyPublishers.ofString(
"[{\"categoryName\":\"Электроника\",\"brandName\":\"Бренд А\",\"subject\":\"Пример subject\",\"purchasePrice\":1999.99,\"deliveryCost\":1500,\"additionalCost\":1500,\"barcode\":\"4600123456789\",\"instockQuantity\":10,\"wildberriesStockCount\":42,\"createdDate\":\"2024-01-15T10:30:00Z\"}]"
))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();
$params = [
'promotionId' => '123',
'clientOrganizationId' => 'АО "Торговый дом"',
];
$url = 'https://api.selsup.ru/api/promotion/deleteProductsInPromotion?' . http_build_query($params);
curl_setopt_array($curl, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'post',
CURLOPT_POSTFIELDS => json_encode([
{
'categoryName': 'Электроника',
'brandName': 'Бренд А',
'subject': 'Пример subject',
'purchasePrice': 1999.99,
'deliveryCost': 1500,
'additionalCost': 1500,
'barcode': '4600123456789',
'instockQuantity': 10,
'wildberriesStockCount': 42,
'createdDate': '2024-01-15T10:30:00Z'
}
]),
CURLOPT_HTTPHEADER => [
'Authorization: YOUR_API_KEY',
'Content-Type: application/json'
]
]);
$response = curl_exec($curl);
curl_close($curl);
echo $response;
?>
curl -X post \
'https://api.selsup.ru/api/promotion/deleteProductsInPromotion?promotionId=123&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22' \
-H 'Authorization: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '[
{
"categoryName": "Электроника",
"brandName": "Бренд А",
"subject": "Пример subject",
"purchasePrice": 1999.99,
"deliveryCost": 1500,
"additionalCost": 1500,
"barcode": "4600123456789",
"instockQuantity": 10,
"wildberriesStockCount": 42,
"createdDate": "2024-01-15T10:30:00Z"
}
]'
🔗 Добавить товары в акцию
Метод добавляет товары в акцию
POST
/api/promotion/addProductsInPromotion
Параметры запроса QUERY
| Название | Тип | Обязательный | Описание |
|---|---|---|---|
| promotionId | integer | Да |
Параметр promotionId
|
| clientOrganizationId | integer | Да |
Параметр clientOrganizationId
|
Тело запроса *Обязательно
Content-Type:
application/json
Массив из:
ProductPromotion
Структура элемента:
| Поле | Тип | Описание |
|---|---|---|
| categoryName > | string | Категория |
| brandName > | string | Бренд |
| subject > | string | |
| purchasePrice > | number | |
| deliveryCost > | number | |
| additionalCost > | number | |
| barcode > | string | |
| instockQuantity > | integer | |
| wildberriesStockCount > | integer | |
| createdDate > | string | |
| minPrice > | number | |
| isDuplicate > | boolean | |
| ozonArticle > | string | |
| ozonStockCount > | integer | |
| salesExpensesOnMpPercent > | number | |
| taxeRate > | number | |
| width > | integer | |
| height > | integer | |
| depth > | integer | |
| ozonPurchasePercent > | number | |
| warehouseRatio > | number | |
| wildberriesCommission > | number | Комиссия по тарифу FBM |
| wildberriesFbwCommission > | number | Комиссия по тарифу FBW |
| wildberriesFbsCommission > | number | Комиссия по тарифу FBS |
| wildberriesDbsCommission > | number | Комиссия по тарифу DBS |
| wildberriesEdbsCommission > | number | Комиссия по тарифу EDBS |
| wildberriesCAndCCommission > | number | Комиссия по тарифу C&C |
| wildberriesBookingCommission > | number | Комиссия за бронирование |
| wildberriesAdditionalExpenses > | number | |
| ozonAdditionalExpenses > | number | |
| ozonCommission > | number | |
| wildberriesId > | integer | |
| productId > | integer | Идентификатор продукта |
| promotionId > | integer | Идентификатор акции |
| ozonFbsCommission > | number | Озон ФБС комиссия |
| ozonFboCommission > | number | Озон ФБО комиссия |
| service > | string | Сервис |
| acquiringPercent > | number | Максимальный процент комиссии за эквайринг |
| currentPrice > | number | Текущая цена со скидкой |
| currentPriceWithoutDiscount > | number | Текущая цена без скидкой |
| plannedPrice > | number | Планируемая цена под акцию |
| totalStockCount > | integer | |
| commissionReduction > | number | |
| profitDifference > | number | |
| marginDifference > | number | |
| markupDifference > | number | |
| plannedAndMinPriceDiff > | number | |
| incomeDifference > | number | |
| currentDiscount > | number | |
| productCreatedDate > | string | |
| mainImageUrl > | string | Ссылка на основное изображение |
| isProfitably > | boolean | |
| taskId > | integer | Идентификатор задачи |
| serviceArticle > | string | Артикул на сервисе |
| article > | string | Модель артикул |
| daysCountOnService > | integer | Кол-во дней на сервисе |
| turnover > | integer | Оборачиваемость |
| fboStock > | integer | ФБО остаток |
| fbsStock > | integer | ФБС остаток |
| newDiscountForPromotion > | number | |
| saleLogistics > | number | Логистика при продаже |
| returnLogistics > | number | Обратная логистика |
| purchasePercent > | number | Процент выкупа |
| totalLogistics > | number | Логистика |
| commissions > | number | Комиссия |
| currentProfit > | number | Текущая прибыль |
| promotionProfit > | number | Прибыль под акцию |
| currentMarginality > | number | Текущая маржинальность |
| promotionMarginality > | number | Маржинальность под акцию |
| currentMarkUp > | number | Текущая наценка |
| promotionMarkUp > | number | Наценка под акцию |
| additionalDiscountForPromotionRub > | number | Дополнительная скидка под акции в руб |
| additionalDiscountForPromotionPercent > | number | Дополнительная скидка под акции в % |
| isDeleted > | boolean | Удаленный? |
| organizationId > | integer | Идентификатор организации |
| clientId > | integer | Идентификатор клиента |
| addMode > | string | Тип добавления товара в акцию: автоматически или вручную продавцом. |
| ozonAverageExpenses > | number | |
| isActive > | boolean | Товар в акции или нет |
| changeName > | string | Кто вносил корректировки |
| changeDate > | string | Дата когда вносили изменения |
| productName > | string | Название продукта |
| id > | integer | Порядковый номер в общем списке, для фронта |
| totalCount > | integer | Общее кол-во |
| serviceCard > | string | Идентификатор продукта на сервисе |
| isNotFound > | boolean | |
| isArchived > | boolean | |
| productCommissions > | string |
Тело ответа
✓ 200
OK
▶
Content-Type:
application/json
Тип ответа:
OzonProduct
Элементы массива
| Поле | Тип | Описание | |
|---|---|---|---|
| product_id | integer | Нет | Идентификатор товара. |
| action_price | number | Нет | Цена товара по акции. |
| stock | integer | Нет | Количество единиц товара в акции типа «Скидка на сток». |
| reason | string | Нет | Причина, почему товар не добавлен в акцию. |
⚠ 400
Ошибка с данными запроса
▶
Content-Type:
application/json
| Поле | Тип | Описание |
|---|---|---|
| error Обязательный > | string | Код ошибки |
| localMessage Обязательный > | string | Текст ошибки на языке пользователя |
| params > | object | Дополнительные параметры ошибки |
⚠ 403
Доступ запрещен
▶
Content-Type:
application/json
| Поле | Тип | Описание |
|---|---|---|
| error Обязательный > | string | Код ошибки |
✗ 500
Внутренняя ошибка сервера
▶
Content-Type:
application/json
| Поле | Тип | Описание |
|---|---|---|
| error Обязательный > | string | Код ошибки |
| message > | string | Описание ошибки |
| system > | string | Системная ошибки парсинга данных запроса |
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод
Примеры кода
const axios = require('axios');
const params = {
promotionId: '123',
clientOrganizationId: 'АО "Торговый дом"',
};
const response = await axios.post('https://api.selsup.ru/api/promotion/addProductsInPromotion',
[
{
"categoryName": "Электроника",
"brandName": "Бренд А",
"subject": "Пример subject",
"purchasePrice": 1999.99,
"deliveryCost": 1500,
"additionalCost": 1500,
"barcode": "4600123456789",
"instockQuantity": 10,
"wildberriesStockCount": 42,
"createdDate": "2024-01-15T10:30:00Z"
}
],
{
params,
headers: {
'Authorization': 'YOUR_API_KEY',
'Content-Type': 'application/json'
}
}
);
console.log(response.data);
import axios from 'axios';
interface QueryParams {
promotionId?: number;
clientOrganizationId?: number;
}
const params: QueryParams = {
promotionId: '123',
clientOrganizationId: 'АО "Торговый дом"',
};
const response = await axios.post<any>('https://api.selsup.ru/api/promotion/addProductsInPromotion',
[
{
"categoryName": "Электроника",
"brandName": "Бренд А",
"subject": "Пример subject",
"purchasePrice": 1999.99,
"deliveryCost": 1500,
"additionalCost": 1500,
"barcode": "4600123456789",
"instockQuantity": 10,
"wildberriesStockCount": 42,
"createdDate": "2024-01-15T10:30:00Z"
}
],
{
params,
headers: {
'Authorization': 'YOUR_API_KEY',
'Content-Type': 'application/json'
}
}
);
console.log(response.data);
import requests
headers = {
'Authorization': 'YOUR_API_KEY',
'Content-Type': 'application/json'
}
params = {
'promotionId': '123',
'clientOrganizationId': 'АО "Торговый дом"',
}
response = requests.post(
'https://api.selsup.ru/api/promotion/addProductsInPromotion',
headers=headers,
params=params,
json=[
{
'categoryName': 'Электроника',
'brandName': 'Бренд А',
'subject': 'Пример subject',
'purchasePrice': 1999.99,
'deliveryCost': 1500,
'additionalCost': 1500,
'barcode': '4600123456789',
'instockQuantity': 10,
'wildberriesStockCount': 42,
'createdDate': '2024-01-15T10:30:00Z'
}
]
)
print(response.json())
package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
)
func main() {
client := &http.Client{}
payload := map[string]interface{}[
{
`categoryName`: `Электроника`,
`brandName`: `Бренд А`,
`subject`: `Пример subject`,
`purchasePrice`: 1999.99,
`deliveryCost`: 1500,
`additionalCost`: 1500,
`barcode`: `4600123456789`,
`instockQuantity`: 10,
`wildberriesStockCount`: 42,
`createdDate`: `2024-01-15T10:30:00Z`
}
]
jsonData, _ := json.Marshal(payload)
req, _ := http.NewRequest("post", "https://api.selsup.ru/api/promotion/addProductsInPromotion?promotionId=123&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22", bytes.NewBuffer(jsonData))
req.Header.Set("Authorization", "YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
var result map[string]interface{}
json.NewDecoder(resp.Body).Decode(&result)
fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.selsup.ru/api/promotion/addProductsInPromotion?promotionId=123&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22"))
.header("Authorization", "YOUR_API_KEY")
.header("Content-Type", "application/json")
.post(HttpRequest.BodyPublishers.ofString(
"[{\"categoryName\":\"Электроника\",\"brandName\":\"Бренд А\",\"subject\":\"Пример subject\",\"purchasePrice\":1999.99,\"deliveryCost\":1500,\"additionalCost\":1500,\"barcode\":\"4600123456789\",\"instockQuantity\":10,\"wildberriesStockCount\":42,\"createdDate\":\"2024-01-15T10:30:00Z\"}]"
))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();
$params = [
'promotionId' => '123',
'clientOrganizationId' => 'АО "Торговый дом"',
];
$url = 'https://api.selsup.ru/api/promotion/addProductsInPromotion?' . http_build_query($params);
curl_setopt_array($curl, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'post',
CURLOPT_POSTFIELDS => json_encode([
{
'categoryName': 'Электроника',
'brandName': 'Бренд А',
'subject': 'Пример subject',
'purchasePrice': 1999.99,
'deliveryCost': 1500,
'additionalCost': 1500,
'barcode': '4600123456789',
'instockQuantity': 10,
'wildberriesStockCount': 42,
'createdDate': '2024-01-15T10:30:00Z'
}
]),
CURLOPT_HTTPHEADER => [
'Authorization: YOUR_API_KEY',
'Content-Type: application/json'
]
]);
$response = curl_exec($curl);
curl_close($curl);
echo $response;
?>
curl -X post \
'https://api.selsup.ru/api/promotion/addProductsInPromotion?promotionId=123&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22' \
-H 'Authorization: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '[
{
"categoryName": "Электроника",
"brandName": "Бренд А",
"subject": "Пример subject",
"purchasePrice": 1999.99,
"deliveryCost": 1500,
"additionalCost": 1500,
"barcode": "4600123456789",
"instockQuantity": 10,
"wildberriesStockCount": 42,
"createdDate": "2024-01-15T10:30:00Z"
}
]'
🔗 Создать акцию
Метод создает акцию
POST
/api/promotion/
Тело запроса *Обязательно
Content-Type:
application/json
| Поле | Тип | Описание |
|---|---|---|
| promotionId > | integer | Идентификатор акции |
| id > | integer | Порядковый номер в списке запроса |
| totalCount > | integer | Общее кол-во акций |
| name > | string | Название акции |
| dateStart > | string | Дата и время начало |
| dateEnd > | string | Дата и время окончания |
| changeCommission > | boolean | Меняется ли комиссия или нет |
| changeCommissionAmount > | number | На какой процент сокращается комиссия |
| createdDate > | string | Дата создания |
| service > | string | Сервис |
| isDeleted > | boolean | Идентификатор удаления |
| description > | string | Описание акции |
| promotionIdOnMp > | integer | Идентификатор акции на МП |
| clientId > | integer | Идентификатор клиента |
| organizationId > | integer | Идентификатор организации |
| candidateCount > | integer | Кол-во кандидатов в акцию |
| inPromotionCount > | integer | Кол-во участников в акции |
| auto > | boolean | Признак автоматической акции |
| hotsale > | boolean | Признак hotsale акции |
| candidateCountOnMp > | integer | Кол-во кандидатов в акции на маркетплейсе |
| inPromotionCountOnMp > | integer | Кол-во участников в акции на маркетплейсе |
Тело ответа
✓ 200
OK
▶
Content-Type:
application/json
| Поле | Тип | Описание |
|---|---|---|
| promotionId > | integer | Идентификатор акции |
| id > | integer | Порядковый номер в списке запроса |
| totalCount > | integer | Общее кол-во акций |
| name > | string | Название акции |
| dateStart > | string | Дата и время начало |
| dateEnd > | string | Дата и время окончания |
| changeCommission > | boolean | Меняется ли комиссия или нет |
| changeCommissionAmount > | number | На какой процент сокращается комиссия |
| createdDate > | string | Дата создания |
| service > | string | Сервис |
| isDeleted > | boolean | Идентификатор удаления |
| description > | string | Описание акции |
| promotionIdOnMp > | integer | Идентификатор акции на МП |
| clientId > | integer | Идентификатор клиента |
| organizationId > | integer | Идентификатор организации |
| candidateCount > | integer | Кол-во кандидатов в акцию |
| inPromotionCount > | integer | Кол-во участников в акции |
| auto > | boolean | Признак автоматической акции |
| hotsale > | boolean | Признак hotsale акции |
| candidateCountOnMp > | integer | Кол-во кандидатов в акции на маркетплейсе |
| inPromotionCountOnMp > | integer | Кол-во участников в акции на маркетплейсе |
⚠ 400
Ошибка с данными запроса
▶
Content-Type:
application/json
| Поле | Тип | Описание |
|---|---|---|
| error Обязательный > | string | Код ошибки |
| localMessage Обязательный > | string | Текст ошибки на языке пользователя |
| params > | object | Дополнительные параметры ошибки |
⚠ 403
Доступ запрещен
▶
Content-Type:
application/json
| Поле | Тип | Описание |
|---|---|---|
| error Обязательный > | string | Код ошибки |
✗ 500
Внутренняя ошибка сервера
▶
Content-Type:
application/json
| Поле | Тип | Описание |
|---|---|---|
| error Обязательный > | string | Код ошибки |
| message > | string | Описание ошибки |
| system > | string | Системная ошибки парсинга данных запроса |
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод
Примеры кода
const axios = require('axios');
const response = await axios.post('https://api.selsup.ru/api/promotion/',
{
"promotionId": 123,
"id": "Иванович",
"totalCount": 10000,
"name": "Иван",
"dateStart": "2024-01-15T10:30:00Z",
"dateEnd": "2024-01-15T10:30:00Z",
"changeCommission": true,
"changeCommissionAmount": 2500,
"createdDate": "2024-01-15T10:30:00Z",
"service": "NONE"
},
{
headers: {
'Authorization': 'YOUR_API_KEY',
'Content-Type': 'application/json'
}
}
);
console.log(response.data);
import axios from 'axios';
const response = await axios.post<any>('https://api.selsup.ru/api/promotion/',
{
"promotionId": 123,
"id": "Иванович",
"totalCount": 10000,
"name": "Иван",
"dateStart": "2024-01-15T10:30:00Z",
"dateEnd": "2024-01-15T10:30:00Z",
"changeCommission": true,
"changeCommissionAmount": 2500,
"createdDate": "2024-01-15T10:30:00Z",
"service": "NONE"
},
{
headers: {
'Authorization': 'YOUR_API_KEY',
'Content-Type': 'application/json'
}
}
);
console.log(response.data);
import requests
headers = {
'Authorization': 'YOUR_API_KEY',
'Content-Type': 'application/json'
}
response = requests.post(
'https://api.selsup.ru/api/promotion/',
headers=headers,
json={
'promotionId': 123,
'id': 'Иванович',
'totalCount': 10000,
'name': 'Иван',
'dateStart': '2024-01-15T10:30:00Z',
'dateEnd': '2024-01-15T10:30:00Z',
'changeCommission': true,
'changeCommissionAmount': 2500,
'createdDate': '2024-01-15T10:30:00Z',
'service': 'NONE'
}
)
print(response.json())
package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
)
func main() {
client := &http.Client{}
payload := map[string]interface{}{
`promotionId`: 123,
`id`: `Иванович`,
`totalCount`: 10000,
`name`: `Иван`,
`dateStart`: `2024-01-15T10:30:00Z`,
`dateEnd`: `2024-01-15T10:30:00Z`,
`changeCommission`: true,
`changeCommissionAmount`: 2500,
`createdDate`: `2024-01-15T10:30:00Z`,
`service`: `NONE`
}
jsonData, _ := json.Marshal(payload)
req, _ := http.NewRequest("post", "https://api.selsup.ru/api/promotion/", bytes.NewBuffer(jsonData))
req.Header.Set("Authorization", "YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
var result map[string]interface{}
json.NewDecoder(resp.Body).Decode(&result)
fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.selsup.ru/api/promotion/"))
.header("Authorization", "YOUR_API_KEY")
.header("Content-Type", "application/json")
.post(HttpRequest.BodyPublishers.ofString(
"{\"promotionId\":123,\"id\":\"Иванович\",\"totalCount\":10000,\"name\":\"Иван\",\"dateStart\":\"2024-01-15T10:30:00Z\",\"dateEnd\":\"2024-01-15T10:30:00Z\",\"changeCommission\":true,\"changeCommissionAmount\":2500,\"createdDate\":\"2024-01-15T10:30:00Z\",\"service\":\"NONE\"}"
))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://api.selsup.ru/api/promotion/',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'post',
CURLOPT_POSTFIELDS => json_encode({
'promotionId': 123,
'id': 'Иванович',
'totalCount': 10000,
'name': 'Иван',
'dateStart': '2024-01-15T10:30:00Z',
'dateEnd': '2024-01-15T10:30:00Z',
'changeCommission': true,
'changeCommissionAmount': 2500,
'createdDate': '2024-01-15T10:30:00Z',
'service': 'NONE'
}),
CURLOPT_HTTPHEADER => [
'Authorization: YOUR_API_KEY',
'Content-Type: application/json'
]
]);
$response = curl_exec($curl);
curl_close($curl);
echo $response;
?>
curl -X post \
'https://api.selsup.ru/api/promotion/' \
-H 'Authorization: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"promotionId": 123,
"id": "Иванович",
"totalCount": 10000,
"name": "Иван",
"dateStart": "2024-01-15T10:30:00Z",
"dateEnd": "2024-01-15T10:30:00Z",
"changeCommission": true,
"changeCommissionAmount": 2500,
"createdDate": "2024-01-15T10:30:00Z",
"service": "NONE"
}'
🔗 Поиск товаров в акциях
Метод возвращает все продукты в акции по фильтру
GET
/api/promotion/product/find
Параметры запроса QUERY
| Название | Тип | Обязательный | Описание |
|---|---|---|---|
| dateFrom | Date | Нет |
Дата начала акции
|
| dateTo | Date | Нет |
Дата окончания акции
|
| promotionId | integer | Нет |
Идентификатор акции
|
| service | "NONE""WILDBERRIES""OZON""YANDEX_MARKET""FAMILIYA""NATIONAL_CATALOG""ALIEXPRESS""OTHER""MOY_SKLAD""SBER_MEGA_MARKET""CISLINK""ONE_C""AVITO""LEROY_MERLIN""DETMIR""KAZAN_EXPRESS""EVOTOR""WEBASYST""AMAZON""EBAY""SIMALAND""INSALES""LAMODA""OZON_PERFORMANCE""WALMART""GOOGLE""YANDEX_DISC""EMAIL""WOOCOMMERCE" | Нет |
Сервис
|
| reDownload | boolean | Нет |
Идентификатор, что нужно перезакачать данные с МП
|
| clientOrganizationId | integer | Нет |
Идентификатор организации
|
| minMargin | number | Нет |
Минимальная маржа, руб
|
| minMarginPercent | number | Нет |
Минимальная маржинальность, %
|
| isActive | boolean | Нет |
передавать только если надо вывести уже примененные акции, в таком случае передается true. В остальных случаях можно не передавать, по дефолту будет false
|
| isDeleted | boolean | Нет |
Параметр isDeleted
|
| query | string | Нет |
по названию или артикулу товара
|
| promotionIdOnMp | integer | Нет |
Идентификатор акции на сервисе
|
| categoryId | integer | Нет |
Идентификатор категории
|
| categoryIds | integer | Нет |
Идентификатор категорий
|
| clientId | integer | Нет |
Идентификатор клиента
|
| inStock | boolean | Нет |
В наличии
|
| isNotFound | boolean | Нет |
Ошибочные товары (карточки не были найдены)
|
| limit | integer | Нет |
Ограничение на количество записей. Максимальное значение - 500
|
| page | integer | Нет |
Номер страницы начиная с 1
|
| count | boolean | Нет |
Возвратить в ответе общее количество записей
|
| sortBy | "CATEGORYNAME""BRANDNAME""PRODUCTNAME""ARTICLE""BARCODE""SERVICEARTICLE""CURRENTPRICEWITHOUTDISCOUNT""CURRENTPRICE""PLANNEDPRICE""CURRENTDISCOUNT""NEWDISCOUNTFORPROMOTION""CURRENTPROFIT""PROMOTIONPROFIT""CURRENTMARGINALITY""PROMOTIONMARGINALITY""CURRENTMARKUP""PLANNEDMARKUPRATIO""OZONPRODUCTIDONMP""WILDBERRIESPRODUCTIDONMP""PURCHASEPERCENT""FBOSTOCK""FBSSTOCK""TURNOVER" | Нет |
Поле для сортировки
|
| ascending | boolean | Нет |
Порядок сортировки - по возрастанию?. Работает только при получении списка.
|
Тело ответа
✓ 200
OK
▶
Content-Type:
application/json
| Поле | Тип | Описание | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| rows > | Array of ProductPromotion | Строки с результатом поиска | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Структура ProductPromotion
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| total > | integer | Общее количество найденных записей. Возвращается только, когда count = true | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| page > | integer | Номер запрошенной страницы | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| hasNextPage > | boolean | Есть ли следующая страница | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| emptyPurchase > | integer | Показатель пустой закупочной цены | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
⚠ 400
Ошибка с данными запроса
▶
Content-Type:
application/json
| Поле | Тип | Описание |
|---|---|---|
| error Обязательный > | string | Код ошибки |
| localMessage Обязательный > | string | Текст ошибки на языке пользователя |
| params > | object | Дополнительные параметры ошибки |
⚠ 403
Доступ запрещен
▶
Content-Type:
application/json
| Поле | Тип | Описание |
|---|---|---|
| error Обязательный > | string | Код ошибки |
✗ 500
Внутренняя ошибка сервера
▶
Content-Type:
application/json
| Поле | Тип | Описание |
|---|---|---|
| error Обязательный > | string | Код ошибки |
| message > | string | Описание ошибки |
| system > | string | Системная ошибки парсинга данных запроса |
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод
Примеры кода
const axios = require('axios');
const params = {
dateFrom: '2024-01-15T10:30:00Z',
dateTo: '2024-01-15T10:30:00Z',
promotionId: '123',
service: 'NONE',
reDownload: 'true',
clientOrganizationId: 'АО "Торговый дом"',
minMargin: '1',
minMarginPercent: '0.15',
isActive: 'true',
isDeleted: 'false',
query: 'Пример query',
promotionIdOnMp: '123',
categoryId: '123',
categoryIds: '',
clientId: '123',
inStock: 'true',
isNotFound: 'true',
limit: '100',
page: '1',
count: 'Россия',
sortBy: 'CATEGORYNAME',
ascending: 'true',
};
const response = await axios.get('https://api.selsup.ru/api/promotion/product/find',
{
params,
headers: {
'Authorization': 'YOUR_API_KEY',
'Content-Type': 'application/json'
}
}
);
console.log(response.data);
import axios from 'axios';
interface QueryParams {
dateFrom?: string;
dateTo?: string;
promotionId?: number;
service?: string;
reDownload?: string;
clientOrganizationId?: number;
minMargin?: number;
minMarginPercent?: number;
isActive?: string;
isDeleted?: string;
query?: string;
promotionIdOnMp?: number;
categoryId?: number;
categoryIds?: string;
clientId?: number;
inStock?: string;
isNotFound?: string;
limit?: number;
page?: number;
count?: string;
sortBy?: string;
ascending?: string;
}
const params: QueryParams = {
dateFrom: '2024-01-15T10:30:00Z',
dateTo: '2024-01-15T10:30:00Z',
promotionId: '123',
service: 'NONE',
reDownload: 'true',
clientOrganizationId: 'АО "Торговый дом"',
minMargin: '1',
minMarginPercent: '0.15',
isActive: 'true',
isDeleted: 'false',
query: 'Пример query',
promotionIdOnMp: '123',
categoryId: '123',
categoryIds: '',
clientId: '123',
inStock: 'true',
isNotFound: 'true',
limit: '100',
page: '1',
count: 'Россия',
sortBy: 'CATEGORYNAME',
ascending: 'true',
};
const response = await axios.get<any>('https://api.selsup.ru/api/promotion/product/find',
{
params,
headers: {
'Authorization': 'YOUR_API_KEY',
'Content-Type': 'application/json'
}
}
);
console.log(response.data);
import requests
headers = {
'Authorization': 'YOUR_API_KEY',
'Content-Type': 'application/json'
}
params = {
'dateFrom': '2024-01-15T10:30:00Z',
'dateTo': '2024-01-15T10:30:00Z',
'promotionId': '123',
'service': 'NONE',
'reDownload': 'true',
'clientOrganizationId': 'АО "Торговый дом"',
'minMargin': '1',
'minMarginPercent': '0.15',
'isActive': 'true',
'isDeleted': 'false',
'query': 'Пример query',
'promotionIdOnMp': '123',
'categoryId': '123',
'categoryIds': '',
'clientId': '123',
'inStock': 'true',
'isNotFound': 'true',
'limit': '100',
'page': '1',
'count': 'Россия',
'sortBy': 'CATEGORYNAME',
'ascending': 'true',
}
response = requests.get(
'https://api.selsup.ru/api/promotion/product/find',
headers=headers,
params=params
)
print(response.json())
package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
)
func main() {
client := &http.Client{}
req, _ := http.NewRequest("get", "https://api.selsup.ru/api/promotion/product/find?dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&promotionId=123&service=NONE&reDownload=true&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&minMargin=1&minMarginPercent=0.15&isActive=true&isDeleted=false&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&promotionIdOnMp=123&categoryId=123&categoryIds=&clientId=123&inStock=true&isNotFound=true&limit=100&page=1&count=%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D1%8F&sortBy=CATEGORYNAME&ascending=true", nil)
req.Header.Set("Authorization", "YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
var result map[string]interface{}
json.NewDecoder(resp.Body).Decode(&result)
fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.selsup.ru/api/promotion/product/find?dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&promotionId=123&service=NONE&reDownload=true&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&minMargin=1&minMarginPercent=0.15&isActive=true&isDeleted=false&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&promotionIdOnMp=123&categoryId=123&categoryIds=&clientId=123&inStock=true&isNotFound=true&limit=100&page=1&count=%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D1%8F&sortBy=CATEGORYNAME&ascending=true"))
.header("Authorization", "YOUR_API_KEY")
.header("Content-Type", "application/json")
.get(HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();
$params = [
'dateFrom' => '2024-01-15T10:30:00Z',
'dateTo' => '2024-01-15T10:30:00Z',
'promotionId' => '123',
'service' => 'NONE',
'reDownload' => 'true',
'clientOrganizationId' => 'АО "Торговый дом"',
'minMargin' => '1',
'minMarginPercent' => '0.15',
'isActive' => 'true',
'isDeleted' => 'false',
'query' => 'Пример query',
'promotionIdOnMp' => '123',
'categoryId' => '123',
'categoryIds' => '',
'clientId' => '123',
'inStock' => 'true',
'isNotFound' => 'true',
'limit' => '100',
'page' => '1',
'count' => 'Россия',
'sortBy' => 'CATEGORYNAME',
'ascending' => 'true',
];
$url = 'https://api.selsup.ru/api/promotion/product/find?' . http_build_query($params);
curl_setopt_array($curl, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'get',
CURLOPT_HTTPHEADER => [
'Authorization: YOUR_API_KEY',
'Content-Type: application/json'
]
]);
$response = curl_exec($curl);
curl_close($curl);
echo $response;
?>
curl -X get \ 'https://api.selsup.ru/api/promotion/product/find?dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&promotionId=123&service=NONE&reDownload=true&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&minMargin=1&minMarginPercent=0.15&isActive=true&isDeleted=value&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&promotionIdOnMp=123&categoryId=123&categoryIds=&clientId=123&inStock=true&isNotFound=true&limit=100&page=1&count=%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D1%8F&sortBy=CATEGORYNAME&ascending=true' \ -H 'Authorization: YOUR_API_KEY' \ -H 'Content-Type: application/json'
🔗 Поиск акции
Метод возвращает все акции по фильтру
GET
/api/promotion/find
Параметры запроса QUERY
| Название | Тип | Обязательный | Описание |
|---|---|---|---|
| dateFrom | Date | Нет |
Дата начала акции
|
| dateTo | Date | Нет |
Дата окончания акции
|
| promotionId | integer | Нет |
Идентификатор акции
|
| service | "NONE""WILDBERRIES""OZON""YANDEX_MARKET""FAMILIYA""NATIONAL_CATALOG""ALIEXPRESS""OTHER""MOY_SKLAD""SBER_MEGA_MARKET""CISLINK""ONE_C""AVITO""LEROY_MERLIN""DETMIR""KAZAN_EXPRESS""EVOTOR""WEBASYST""AMAZON""EBAY""SIMALAND""INSALES""LAMODA""OZON_PERFORMANCE""WALMART""GOOGLE""YANDEX_DISC""EMAIL""WOOCOMMERCE" | Нет |
Сервис
|
| reDownload | boolean | Нет |
Идентификатор, что нужно перезакачать данные с МП
|
| clientOrganizationId | integer | Нет |
Идентификатор организации
|
| minMargin | number | Нет |
Минимальная маржа, руб
|
| minMarginPercent | number | Нет |
Минимальная маржинальность, %
|
| isActive | boolean | Нет |
передавать только если надо вывести уже примененные акции, в таком случае передается true. В остальных случаях можно не передавать, по дефолту будет false
|
| isDeleted | boolean | Нет |
Параметр isDeleted
|
| query | string | Нет |
по названию или артикулу товара
|
| promotionIdOnMp | integer | Нет |
Идентификатор акции на сервисе
|
| categoryId | integer | Нет |
Идентификатор категории
|
| categoryIds | integer | Нет |
Идентификатор категорий
|
| clientId | integer | Нет |
Идентификатор клиента
|
| inStock | boolean | Нет |
В наличии
|
| isNotFound | boolean | Нет |
Ошибочные товары (карточки не были найдены)
|
| limit | integer | Нет |
Ограничение на количество записей. Максимальное значение - 500
|
| page | integer | Нет |
Номер страницы начиная с 1
|
| count | boolean | Нет |
Возвратить в ответе общее количество записей
|
| sortBy | "CATEGORYNAME""BRANDNAME""PRODUCTNAME""ARTICLE""BARCODE""SERVICEARTICLE""CURRENTPRICEWITHOUTDISCOUNT""CURRENTPRICE""PLANNEDPRICE""CURRENTDISCOUNT""NEWDISCOUNTFORPROMOTION""CURRENTPROFIT""PROMOTIONPROFIT""CURRENTMARGINALITY""PROMOTIONMARGINALITY""CURRENTMARKUP""PLANNEDMARKUPRATIO""OZONPRODUCTIDONMP""WILDBERRIESPRODUCTIDONMP""PURCHASEPERCENT""FBOSTOCK""FBSSTOCK""TURNOVER" | Нет |
Поле для сортировки
|
| ascending | boolean | Нет |
Порядок сортировки - по возрастанию?. Работает только при получении списка.
|
Тело ответа
✓ 200
OK
▶
Content-Type:
application/json
| Поле | Тип | Описание | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| rows > | Array of Promotion | Строки с результатом поиска | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Структура Promotion
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| total > | integer | Общее количество найденных записей. Возвращается только, когда count = true | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| page > | integer | Номер запрошенной страницы | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| hasNextPage > | boolean | Есть ли следующая страница | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| emptyPurchase > | integer | Показатель пустой закупочной цены | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
⚠ 400
Ошибка с данными запроса
▶
Content-Type:
application/json
| Поле | Тип | Описание |
|---|---|---|
| error Обязательный > | string | Код ошибки |
| localMessage Обязательный > | string | Текст ошибки на языке пользователя |
| params > | object | Дополнительные параметры ошибки |
⚠ 403
Доступ запрещен
▶
Content-Type:
application/json
| Поле | Тип | Описание |
|---|---|---|
| error Обязательный > | string | Код ошибки |
✗ 500
Внутренняя ошибка сервера
▶
Content-Type:
application/json
| Поле | Тип | Описание |
|---|---|---|
| error Обязательный > | string | Код ошибки |
| message > | string | Описание ошибки |
| system > | string | Системная ошибки парсинга данных запроса |
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод
Примеры кода
const axios = require('axios');
const params = {
dateFrom: '2024-01-15T10:30:00Z',
dateTo: '2024-01-15T10:30:00Z',
promotionId: '123',
service: 'NONE',
reDownload: 'true',
clientOrganizationId: 'АО "Торговый дом"',
minMargin: '1',
minMarginPercent: '0.15',
isActive: 'true',
isDeleted: 'false',
query: 'Пример query',
promotionIdOnMp: '123',
categoryId: '123',
categoryIds: '',
clientId: '123',
inStock: 'true',
isNotFound: 'true',
limit: '100',
page: '1',
count: 'Россия',
sortBy: 'CATEGORYNAME',
ascending: 'true',
};
const response = await axios.get('https://api.selsup.ru/api/promotion/find',
{
params,
headers: {
'Authorization': 'YOUR_API_KEY',
'Content-Type': 'application/json'
}
}
);
console.log(response.data);
import axios from 'axios';
interface QueryParams {
dateFrom?: string;
dateTo?: string;
promotionId?: number;
service?: string;
reDownload?: string;
clientOrganizationId?: number;
minMargin?: number;
minMarginPercent?: number;
isActive?: string;
isDeleted?: string;
query?: string;
promotionIdOnMp?: number;
categoryId?: number;
categoryIds?: string;
clientId?: number;
inStock?: string;
isNotFound?: string;
limit?: number;
page?: number;
count?: string;
sortBy?: string;
ascending?: string;
}
const params: QueryParams = {
dateFrom: '2024-01-15T10:30:00Z',
dateTo: '2024-01-15T10:30:00Z',
promotionId: '123',
service: 'NONE',
reDownload: 'true',
clientOrganizationId: 'АО "Торговый дом"',
minMargin: '1',
minMarginPercent: '0.15',
isActive: 'true',
isDeleted: 'false',
query: 'Пример query',
promotionIdOnMp: '123',
categoryId: '123',
categoryIds: '',
clientId: '123',
inStock: 'true',
isNotFound: 'true',
limit: '100',
page: '1',
count: 'Россия',
sortBy: 'CATEGORYNAME',
ascending: 'true',
};
const response = await axios.get<any>('https://api.selsup.ru/api/promotion/find',
{
params,
headers: {
'Authorization': 'YOUR_API_KEY',
'Content-Type': 'application/json'
}
}
);
console.log(response.data);
import requests
headers = {
'Authorization': 'YOUR_API_KEY',
'Content-Type': 'application/json'
}
params = {
'dateFrom': '2024-01-15T10:30:00Z',
'dateTo': '2024-01-15T10:30:00Z',
'promotionId': '123',
'service': 'NONE',
'reDownload': 'true',
'clientOrganizationId': 'АО "Торговый дом"',
'minMargin': '1',
'minMarginPercent': '0.15',
'isActive': 'true',
'isDeleted': 'false',
'query': 'Пример query',
'promotionIdOnMp': '123',
'categoryId': '123',
'categoryIds': '',
'clientId': '123',
'inStock': 'true',
'isNotFound': 'true',
'limit': '100',
'page': '1',
'count': 'Россия',
'sortBy': 'CATEGORYNAME',
'ascending': 'true',
}
response = requests.get(
'https://api.selsup.ru/api/promotion/find',
headers=headers,
params=params
)
print(response.json())
package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
)
func main() {
client := &http.Client{}
req, _ := http.NewRequest("get", "https://api.selsup.ru/api/promotion/find?dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&promotionId=123&service=NONE&reDownload=true&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&minMargin=1&minMarginPercent=0.15&isActive=true&isDeleted=false&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&promotionIdOnMp=123&categoryId=123&categoryIds=&clientId=123&inStock=true&isNotFound=true&limit=100&page=1&count=%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D1%8F&sortBy=CATEGORYNAME&ascending=true", nil)
req.Header.Set("Authorization", "YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
var result map[string]interface{}
json.NewDecoder(resp.Body).Decode(&result)
fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.selsup.ru/api/promotion/find?dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&promotionId=123&service=NONE&reDownload=true&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&minMargin=1&minMarginPercent=0.15&isActive=true&isDeleted=false&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&promotionIdOnMp=123&categoryId=123&categoryIds=&clientId=123&inStock=true&isNotFound=true&limit=100&page=1&count=%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D1%8F&sortBy=CATEGORYNAME&ascending=true"))
.header("Authorization", "YOUR_API_KEY")
.header("Content-Type", "application/json")
.get(HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();
$params = [
'dateFrom' => '2024-01-15T10:30:00Z',
'dateTo' => '2024-01-15T10:30:00Z',
'promotionId' => '123',
'service' => 'NONE',
'reDownload' => 'true',
'clientOrganizationId' => 'АО "Торговый дом"',
'minMargin' => '1',
'minMarginPercent' => '0.15',
'isActive' => 'true',
'isDeleted' => 'false',
'query' => 'Пример query',
'promotionIdOnMp' => '123',
'categoryId' => '123',
'categoryIds' => '',
'clientId' => '123',
'inStock' => 'true',
'isNotFound' => 'true',
'limit' => '100',
'page' => '1',
'count' => 'Россия',
'sortBy' => 'CATEGORYNAME',
'ascending' => 'true',
];
$url = 'https://api.selsup.ru/api/promotion/find?' . http_build_query($params);
curl_setopt_array($curl, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'get',
CURLOPT_HTTPHEADER => [
'Authorization: YOUR_API_KEY',
'Content-Type: application/json'
]
]);
$response = curl_exec($curl);
curl_close($curl);
echo $response;
?>
curl -X get \ 'https://api.selsup.ru/api/promotion/find?dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&promotionId=123&service=NONE&reDownload=true&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&minMargin=1&minMarginPercent=0.15&isActive=true&isDeleted=value&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&promotionIdOnMp=123&categoryId=123&categoryIds=&clientId=123&inStock=true&isNotFound=true&limit=100&page=1&count=%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D1%8F&sortBy=CATEGORYNAME&ascending=true' \ -H 'Authorization: YOUR_API_KEY' \ -H 'Content-Type: application/json'
Управление API ключом
Ключ будет сохранен локально в браузере