Описание методов (old)
- Описание методов (old)
- /api/lite/pub/settings/catalog
- Методы API для системы "Кактус"
- /api/lite/pub/order
- Копия /api/lite/file/image
Описание методов (old)
Запрос данных аккаунта (публичный)
/api/lite/pub/account_info
Документация обновляется.
Получение информации по предзаказу (публичный)
/api/lite/pub/order
Документация обновляется.
Создание / обновление товарного предложения
/api/lite/offer
создает или обновляет (если задан sku.humanID) товарное предложение
Запрос:
{
"sku": {
"id": "12345", - опциональный параметр, только для обновления существующего предложения. значение генерируется при создании предложения.
"shortName": "краткое наименование",
"fullName": "полное наименование",
"article": "234234",
"description": "описание"
},
"price": 33.45,
"discountPrice": 20,
"weight": 357, - единица измерения: грамм
"dimensions":{
"height":12, - единица измерения: сантиметр
"width":20, - единица измерения: сантиметр
"depth":8 - единица измерения: сантиметр
},
"enabled":true,
"pos": 123.456
}
Успех:
{
"success": true,
"humanId": "12345"
}
Ошибка:
/api/lite/offer/pos
{
"success": false,
"errors": [
{
"code": 0,
"message": "Текст ошибки"
}
]
}
Обновление позиции товарного предложения
/api/lite/offer/pos
Обновляет значение позиции для сортировки предложений в списке
Запрос:
{
"id": "1002",
"pos": 123.456
}
Ответ:
{
"success": true
}
Создание картинки к товарному предложению
/api/lite/offer/image
Загружает на сервер картинку и привязывает изображение к товару.
Используется заголовок запроса Content-type: multipart/form-data.
В качестве параметров запроса передается:
- id - идентификатор товара
- upfile - картинка
На стороне сервера:
- Сохраняется оригинал картинки (но с ограничением в максимальное количество пикселей) - original
- Сохраняется обрезанное изображение 1х1 (ближе к центру) - cropper
- Сохраняется миниатюра обрезанного изображения - thumbnail
В ответ возвращается информация о загруженной картинке:
Успех:
{
"success": true,
"image": {
"orig": "https://img.kak2c.ru/g/d/123abc.jpg",
"crop": "https://img.kak2c.ru/g/d/123abc_crop.jpg",
"prev": "https://img.kak2c.ru/g/d/123abc_p.jpg",
"id": "6F9619FF-8B86-D011-B42D-00CF4FC964FF",
"pos": 123.456,
"crop_p": [
10,
500,
400,
150
]
}
}
Параметры:
- orig - прямая ссылка на оригинал картинки
- crop - прямая ссылка на кропнутое изображение
- prev - прямая ссылка
- id - идентификатор картинки (для последующего обновления или удаления)
- crop_p - координаты кропнутого изображения относительно оригинала (topLeftX, topLeftY, bottomRightX, bottomRightY)
Ошибка:
{
"success": false,
"errors": [
{
"code": 0,
"message": "Текст ошибки"
}
]
}
Загрузка картинки без привязки к предложению
/api/lite/image
Загружает на сервер картинку в исходных размерах без сжатия.
Используется заголовок запроса Content-type: multipart/form-data.
В качестве параметров запроса передается:
- upfile - картинка
На стороне сервера:
- Сохраняется оригинал картинки (без ограничений) - original
В ответ возвращается информация о загруженной картинке:
Успех:
{
"success": true,
"orig": "https://img.kak2c.ru/g/d/123abc.jpg"
}
Параметры:
- orig - прямая ссылка на оригинал картинки
ошибка:
{
"success": false,
"errors": [
{
"code": 0,
"message": "Текст ошибки"
}
]
}
Обновление кропа картинки к товарному предложению
/api/lite/offer/image/crop
Обновляет параметры кропа (обрезки) у картинки товарного предложения.
Запрос:
{
"id": "6F9619FF-8B86-D011-B42D-00CF4FC964FF",
"crop_p": [
10,
500,
400,
150
]
}
В ответ возвращается результат операции, id обновленной картинки и новый url на кропнутое изображение и превью.
Пример успешного ответа:
{
"success": true,
"id": "6F9619FF-8B86-D011-B42D-00CF4FC964FF",
"crop": "https://img.kak2c.ru/g/d/123abc_cropped.jpg",
"prev": "https://img.kak2c.ru/g/d/123abc_preview.jpg"
}
В случае ошибки:
{
"success": false,
"errors": [
{
"code": 0,
"message": "Картинки с указанным id не существует"
}
]
}
Удаление картинки у товарного предложения
/api/lite/offer/image
Для удаления метки, выполняется следующий POST запрос с указанием идентификатора картинки.
Пример запроса:
{
"id": "6F9619FF-8B86-D011-B42D-00CF4FC964FF"
}
В ответ возвращается результат операции и id удаленной картинки.
Пример успешного ответа:
{
"success": true,
"id": "6F9619FF-8B86-D011-B42D-00CF4FC964FF"
}
В случае ошибки:
{
"success": false,
"errors": [
{
"code": 0,
"message": "Картинки с указанным id не существует"
}
]
}
Обновление позиции картинки
/api/lite/offer/image/pos
Обновляет значение позиции для сортировки картинок в списке
Запрос:
{
"id": "6F9619FF-8B86-D011-B42D-00CF4FC964FF",
"pos": 123.456
}
Ответ:
{
"success": true
}
В случае ошибки:
{
"success": false,
"errors": [
{
"code": 0,
"message": "текст ошибки"
}
]
}
Создание/обновление заказа
/api/lite/order
Создает новый заказ в системе Кактус или обновляет существующий.
Доставка выгружается как позиция в items (id = "delivery").
Цены позиций задаются в запросе.
Пример запроса:
{
"order": {
"comment": "",
"confirmStatus": "NEED_CONFIRM",
"paymentStatus": "NOT_PAID",
"paymentMethodCode": "online",
"totalOrderSum": 1212,
"delivery": {
"receiver": {
"name": "Олег",
"surname": "Коробов",
"patronymic": "",
"phone": "9153112255",
"alternativePhone": "",
"email": "korobov.oleg@gmail.com"
},
"deliveryCode": "courier",
"timeFrom": "10:30",
"timeTo": "20:00",
"desiredDeliveryDate": "2018-10-18",
"deliveryComment": "",
"address": {
"regionFias":"18133adf-90c2-438e-88c4-62c41656de70",
"areaFias":"b502ae45-897e-4b6f-9776-6ff49740b537",
"cityFias":"",
"settlementFias":"",
"country": "RU",
"region": "Москва",
"area": "",
"city": "Москва",
"settlement": "",
"street": "Боровское ш.",
"house": "20",
"block": "",
"building": "",
"flat": "120",
"fullAddress": "",
"zip": ""
},
"pickupPointId": ""
},
"items": [
{
"num":1,
"id": "48488",
"quantity": 1,
"price": 1212
}
]
}
}
В ответ возвращается
успех:
{
"success": true,
"orderId": "12345"
}
ошибка:
{
"success": false,
"errors": [
{
"code": 0,
"message": "Текст ошибки"
}
]
}
Заказ → обновление контактной информации получателя
/api/lite/order/receiver
Возможность обновить только контактную информацию
Запрос:
{
"orderId": "1234",
"name": "Олег",
"surname": "Коробов",
"patronymic": "",
"phone": "9153112255",
"alternativePhone": "",
"email": "korobov.oleg@gmail.com"
}
В ответ возвращается
успех:
{
"success": true
}
ошибка:
{
"success": false,
"errors": [
{
"code": 0,
"message": "Текст ошибки"
}
]
}
Заказ → обновление товарной части
/api/lite/order/items
Возможность обновить только табличную часть заказа
Необходимо в запросе передать новое желаемое состояние табличной части в виде непустого перечня позиций
Запрос:
{
"orderId": "1234",
"items": [
{
"num":1,
"id": "48488",
"quantity": 1,
"price": 1212
}
]
}
В ответ возвращается
успех:
{
"success": true
}
ошибка:
{
"success": false,
"errors": [
{
"code": 0,
"message": "Текст ошибки"
}
]
}
Заказ → отменить
/api/lite/order/cancelled
Производит отмену заказа.
Пример запроса
{
"orderId":"1029"
}
В ответ возвращается
успех:
{
"success": true
}
ошибка:
{
"success": false,
"errors": [
{
"code": 0,
"message": "Текст ошибки"
}
]
}
Заказ → пометить оплаченным получателем
/api/lite/order/payment
Ставит статус оплаты покупателем.
Пример запроса
{
"orderId":"1029"
}
В ответ возвращается
успех:
{
"success": true
}
ошибка:
{
"success": false,
"errors": [
{
"code": 0,
"message": "Текст ошибки"
}
]
}
Заказ → снять пометку оплаты заказа получателем
/api/lite/order/payment
Снимает статус оплаты покупателем.
Пример запроса
{
"orderId":"1029"
}
В ответ возвращается
успех:
{
"success": true
}
ошибка:
{
"success": false,
"errors": [
{
"code": 0,
"message": "Текст ошибки"
}
]
}
Пример ошибки:
Документация обновляется.
Заказ → получить акт приема передачи
/api/lite/order/takeout_list
Получение печатной формы в pdf для указанного списка заказов
Печатная форма возвращается в формате base64.
Пример ошибки:
{
"orders": ["1001", "1002", "1003"]
}
Успех:
{
"success": true,
"content" : "base64data"
}
Ошибка:
{
"success": false,
"errors": [
{
"code": 0,
"message": "Текст ошибки"
}
]
}
Оплатить доставку заказа/заказов
/api/lite/order_delivery_payment
Производит списание средств за доставку указанных заказов.
После успешного списания - создает заявку на сбор курьером на указанную дату. Если заявка уже есть - новая не создается. Если на указанную дату заявку оформить уже нельзя (опоздал) - автоматом создается заявка на ближайшую возможную дату.
{
"orders": ["1005", "1008"],
"date": "2018-01-01", - обязательные для всех способов отгрузки кроме Своих курьеров
"timeFrom": "09:00", - см выше
"timeTo": "14:00", - см выше
"courierId": "aa23s" - обязательный только для способа отгрузки Свои курьеры
}
Успех:
Возвращается дата и интервал запрошенного приезда курьера.
{
"success": true,
"date": "2018-01-01",
"timeFrom": "09:00",
"timeTo": "14:00"
}
Ошибка:
{
"success": false,
"errors": [
{
"code": 0,
"message": "текст ошибки"
}
]
}
Отменить оплату доставки заказа/заказов
/api/lite/order_delivery_payment
Пока не реализуем этот метод.
Вариант:
Производит отмену списания с баланса доставки указанных заказов, если по ним не было статусов от GD по сбору. Если какие то статусы по заказу поступали от GD - значит они уже забрали груз - тогда все заказы данного реестра отгрузки автоматом помечаются отгруженными и вернуть сумму по ним нельзя.
Оформить вызов курьера
/api/lite/courier_call
Создает заявку на сбор курьером на указанную дату. Если заявка уже есть - возвращает ошибку, что заявка уже есть.
Пример ошибки:
{
"date": "2018-01-01",
"timeFrom": "09:00",
"timeTo": "14:00"
}
Успех:
{
"success": true
}
Ошибка:
{
"success": false,
"errors": [
{
"code": 0,
"message": "текст ошибки"
}
]
}
Отменить вызов курьера
/api/lite/courier_call
Отменяет заявку на вызов курьера, если заявка на эту дату и интервал есть. если заявки нет - возвращает ошибку.
Пример ошибки:
{
"date": "2018-01-01",
"timeFrom": "09:00",
"timeTo": "14:00"
}
Успех:
{
"success": true
}
Ошибка:
{
"success": false,
"errors": [
{
"code": 0,
"message": "текст ошибки"
}
]
}
Получить список транзакций
/api/lite/transaction
Получение списка транзакций баланса аккаунта.
Пример ошибки:
{
"transactions":[
{
"date": "2019-03-01 17:53:23.538",
"sum": 1500.50,
"documentId": "1003",
"documentType": "PAYMENT",
"description": "Пополнение баланса по счету", // из справочника
"orderId": null
},
{
"date": "2019-03-02 19:57:23.538",
"sum": -265.57,
"documentId": "1050",
"documentType": "ORDER_PAYMENT_DOC_FACT",
"description": "Оплата доставки заказа 1024 (доставка)", // в скобках - справочник статей расхода: доставка, страховка, наложенный платеж
"orderId": "1024"
}
]
}
Ошибка:
{
"success": false,
"errors": [
{
"code": 0,
"message": "текст ошибки"
}
]
}
Получить список транзакций по заказу
/api/lite/order/transaction
Получение списка транзакций баланса оплаты доставки и услуг указанного заказа
запрос должен содержать параметр orderId с номером заказа, например
?orderId=1020
Результат запроса:
{
"transactions":[
{
"date": "2019-03-02 19:57:23.538",
"sum": -265.57,
"documentId": "1050",
"documentType": "ORDER_EXPENSE_PAYMENT_DOC",
"description": "Списание по расходам на оплату услуг заказа 1020 (доставка)",
"orderId": "1020"
},
{
"date": "2019-03-02 19:57:23.538",
"sum": 265.57,
"documentId": "1052",
"documentType": "ORDER_PAYMENT_DOC_FACT",
"description": "Оплата доставки заказа 1020 (доставка)",
"orderId": "1020"
}
]
}
Ошибка:
{
"success": false,
"errors": [
{
"code": 0,
"message": "текст ошибки"
}
]
}
Создать счет на оплату и получить информацию для оплаты
/api/lite/payment
Запрос:
{
"sum" : "222"
}
Ответ:
{
"success": true,
"errors": [],
"redirectData": {
"data": {
"entries": [
{
"num": 0,
"name": "MERCHANT",
"value": "kaktwocr"
},
{
"num": 1,
"name": "ORDER_REF",
"value": "25567175-8d84-e371-90fa-8a6e86a69aa4"
},
{
"num": 2,
"name": "ORDER_DATE",
"value": "2019-03-11 17:09:35"
},
{
"num": 3,
"name": "ORDER_PNAME[]",
"value": "Пополнение баланса аккаунта №6419855"
},
{
"num": 4,
"name": "ORDER_PCODE[]",
"value": "balance"
},
{
"num": 5,
"name": "ORDER_PRICE[]",
"value": "222.00"
},
{
"num": 6,
"name": "ORDER_QTY[]",
"value": "1"
},
{
"num": 7,
"name": "ORDER_VAT[]",
"value": "0"
},
{
"num": 8,
"name": "PRICES_CURRENCY",
"value": "RUB"
},
{
"num": 9,
"name": "DESTINATION_CITY",
"value": ""
},
{
"num": 10,
"name": "DESTINATION_STATE",
"value": ""
},
{
"num": 11,
"name": "DESTINATION_COUNTRY",
"value": ""
},
{
"num": 12,
"name": "PAY_METHOD",
"value": "CCVISAMC"
},
{
"num": 13,
"name": "ORDER_PRICE_TYPE[]",
"value": "GROSS"
},
{
"num": 14,
"name": "ORDER_HASH",
"value": "6fe466d056fcc82836a861c322070381"
},
{
"num": 15,
"name": "BILL_FNAME",
"value": "Петр"
},
{
"num": 16,
"name": "BILL_LNAME",
"value": "Петров"
},
{
"num": 17,
"name": "BILL_EMAIL",
"value": "abc3@abc.ru"
},
{
"num": 18,
"name": "BILL_PHONE",
"value": "111111"
},
{
"num": 19,
"name": "BILL_COUNTRYCODE",
"value": "RU"
},
{
"num": 20,
"name": "BACK_REF",
"value": ""
},
{
"num": 21,
"name": "LANGUAGE",
"value": "RU"
},
{
"num": 22,
"name": "CURRENCY",
"value": "RUB"
}
],
"url": "https://sandbox.payu.ru/order/lu.php"
},
"paymentProvider": "PAYU"
}
}
Для работы в песочнице PayU использовать карты из https://secure.payu.ru/docs/integration-sandbox/ru/
Пример формы, которую нужно сгенерировать на клиенте:
<html>
<head></head>
<body>
<form name="example" method="POST" action="https://sandbox.payu.ru/order/lu.php">
<input type="hidden" name="MERCHANT" value="kaktwocr">
<input type="hidden" name="ORDER_REF" value="25567175-8d84-e371-90fa-8a6e86a69aa4">
<input type="hidden" name="ORDER_DATE" value="2019-03-11 17:09:35">
<input type="hidden" name="ORDER_PNAME[]" value="Пополнение баланса аккаунта №6419855">
<input type="hidden" name="ORDER_PCODE[]" value="balance">
<input type="hidden" name="ORDER_PRICE[]" value="222.00">
<input type="hidden" name="ORDER_QTY[]" value="1">
<input type="hidden" name="ORDER_VAT[]" value="0">
<input type="hidden" name="PRICES_CURRENCY" value="RUB">
<input type="hidden" name="DESTINATION_CITY" value="">
<input type="hidden" name="DESTINATION_STATE" value="">
<input type="hidden" name="DESTINATION_COUNTRY" value="">
<input type="hidden" name="PAY_METHOD" value="CCVISAMC">
<input type="hidden" name="ORDER_PRICE_TYPE[]" value="GROSS">
<input type="hidden" name="ORDER_HASH" value="6fe466d056fcc82836a861c322070381">
<input type="hidden" name="BILL_FNAME" value="Петр">
<input type="hidden" name="BILL_LNAME" value="Петров">
<input type="hidden" name="BILL_EMAIL" value="abc3@abc.ru">
<input type="hidden" name="BILL_PHONE" value="111111">
<input type="hidden" name="BILL_COUNTRYCODE" value="RU">
<input type="hidden" name="BACK_REF" value="">
<input type="hidden" name="LANGUAGE" value="RU">
<input type="hidden" name="CURRENCY" value="RUB">
<button type="submit">Оплатить</button>
</form>
</body>
</html>
Получить список своих курьеров
/api/lite/own_courier
Получение списка своих курьеров.
Пример ошибки:
{
"couriers":[
{
"id": "123456abc",
"fullName": "Василий",
"phone": "+7(901)1122121"
},
{
"id": "123457abc",
"fullName": "Петр",
"phone": "+7(901)1122122"
}
]
}
Ошибка:
{
"success": false,
"errors": [
{
"code": 0,
"message": "текст ошибки"
}
]
}
Создать/обновить своего курьера
/api/lite/own_courier
Создание или обновление (если задан id) своего курьера
Пример запроса:
{
"id": "123456abc",
"fullName": "Василий",
"phone": "+7(901)1122121"
}
Ошибка:
{
"success": false,
"errors": [
{
"code": 0,
"message": "текст ошибки"
}
]
}
Удаление курьера
/api/lite/own_courier
Для удаления курьера, выполняется следующий POST запрос с указанием идентификатора курьера.
Пример запроса:
{
"id": "6F9619FF-8B86-D011-B42D-00CF4FC964FF"
}
В ответ возвращается результат операции
Пример успешного ответа:
{
"success": true
}
В случае ошибки:
{
"success": false,
"errors": [
{
"code": 0,
"message": "курьера с указанным id не существует"
}
]
}
Заказ - отметить доставку
/api/lite/delivery_result
Для доставки своими курьерами - простановка результата доставки: доставлен/отказ/утеря.
Пример запроса:
{
"orderId": "123456abc",
"result": "DELIVERED", //LOST,RETURNING,RETURNED
"comment": "abcd"
}
Ошибка:
{
"success": false,
"errors": [
{
"code": 0,
"message": "текст ошибки"
}
]
}
Ответ:
Документация обновляется.
Пример ошибки:
Документация обновляется.
Записать данные собственного аккаунта Робокасса
/api/lite/settings/payment/robokassa
Записать данные аккаунта робокасса для прямого зачисления оплат заказов покупателей.
Пример запроса:
{
"merchantId": "abcd",
"accountSecret": "abcd",
"accountSecret2": "abcd"
}
Результат запроса:
{
"success":true,
"accountId": "abcd",
"resultUrl": "abcd", - основной адрес приема ipn уведомлений (только оплаченные)
"failUrl": "abcd", - адрес приема ipn уведомлений (только неоплаченные/отказ покупателя)
"successesUrl": "abcd" - адрес редиректа в магазин после оплаты
}
Ошибка:
Документация обновляется.
Получить макет витрины(публичный)
/api/lite/pub/settings/template
Получение макета витрины магазина аккаунта, в формате, предназначенном для ui витрины
Результат запроса:
{
"templates" : [
{
"id": "123456",
"isDefault": true,
"htmlContent": "<html>...."
}
]
}
Ошибка:
{
"success": false,
"errors": [
{
"code": 0,
"message": "текст ошибки"
}
]
}
Получить макеты витрин
/api/lite/settings/template
Получение перечня макетов витрин магазинов аккаунта, в формате, предназначенном для ui конструктора витрины
Для получения одного макета по id - использовать параметр в url вида ?id=123456
Результат запроса:
{
"templates" : [
{
"id": "123456",
"isDefault": true,
"content": "contentData...."
}
]
}
Ошибка:
{
"success": false,
"errors": [
{
"code": 0,
"message": "текст ошибки"
}
]
}
Создать/обновить макет витрины
/api/lite/settings/template
Создание/обновление данных о макете витрины в формате для ui конструтора
Пример запроса:
{
"id": "123456", // при наличии параметра - обновляет существующий макет по его id
"isDefault": true,
"content": "contentData....",
"htmlContent": "html content Data"
}
Результат запроса:
{
"success": true,
"id": "123456"
}
Ошибка:
{
"success": false,
"errors": [
{
"code": 0,
"message": "текст ошибки"
}
]
}
Удалить макет витрины
/api/lite/settings/template
Удаление одного макета. Использовать параметр в url вида ?id=123456
Результат запроса:
{
"success": true
}
Ошибка:
{
"success": false,
"errors": [
{
"code": 0,
"message": "текст ошибки"
}
]
}
Получить общие макеты витрин
/api/lite/settings/template/general
Получение перечня стандартных макетов витрин магазинов в формате, предназначенном для ui конструктора витрины
Для получения одного макета по id - использовать параметр в url вида ?id=123456
Результат запроса:
{
"templates" : [
{
"id": "123456",
"isDefault": true,
"content": "contentData...."
}
]
}
Ошибка:
{
"success": false,
"errors": [
{
"code": 0,
"message": "текст ошибки"
}
]
}
Получить общие шаблоны блоков витрин
/api/lite/settings/template/block
Получение перечня стандартных блоков витрин магазинов в формате, предназначенном для ui конструктора витрины
Для получения одного блока по id - использовать параметр в url вида ?id=123456
Результат запроса:
{
"blocks": [
{
"id": "f4173840-f409-424d-a000-24542b391c5d",
"name": "block name",
"content": "contentData...."
}
]
}
Ошибка:
{
"success": false,
"errors": [
{
"code": 0,
"message": "текст ошибки"
}
]
}
Получить заявки на сбор
/api/lite/gather
Получение списка заявок на сбор, сортировка - свежие по полю date - сначала
Результат запроса:
{
"gathers": [
{
"success": true,
"comment": null,
"id": "1000-GD",
"date": "2019-03-07 12:37:18",
"desiredDate": "2019-03-15",
"desiredHourStart": "09:00",
"desiredHourEnd": "14:00",
"status": "AWAITING_CARGO", //CREATED,CARGO_SHIPPED,HOLD,CANCELED
"trackingNumber": "100039439"
}
]
}
Ошибка:
{
"success": false,
"errors": [
{
"code": 0,
"message": "текст ошибки"
}
]
}
Получить варианты курьерских пакетов
/api/lite/pub/courier_pack
Получение списка доступных типов курьерских пакетов с размерами
Результат запроса:
{
"courier_packs": [
{
"success": true,
"type": "PACKET", // PAPERBOX
"sizeType": "S", // M/L
"cargoWeight": 1500, // максимальный вес содержимого в граммах
"dimensions": {
"height": 12,
"width": 20,
"depth": 8
}
}
]
}
Ошибка:
{
"success": false,
"errors": [
{
"code": 0,
"message": "текст ошибки"
}
]
}
Создать пользователя для Expert
/api/lite/settings/go-expert
Метод только для админов системы. Генерирует для аккаунта Lite нового пользователя чтобы под ним можно было рабоатть в интерфейсе Expert.
Логин равен логину исходного аккаунта (тенанта) + суффикс "-expert", например: manager@shop.ru-expert
Пароль равен паролю исходного аккаунта. При смене пароля исходного пользователя - expert логин останется с прошлым паролем.
Параметр URL: ?с=123 - проверочный код.
Результат запроса:
{
"success": true
}
Ошибка:
{
"success": false,
"errors": [
{
"code": 0,
"message": "текст ошибки"
}
]
}
/api/lite/pub/settings/catalog
Получение текущего основного каталога
/api/lite/pub/settings/catalog
Пример успешного ответа:
{
"success": true,
"name": "Каталог 1",
"code": "1000",
"items": [
{
"title": "Смартфоны iPhone",
"code": null,
"collectionId": "1026",
"defaultImage": "https://items.s1.citilink.ru/811882_v03_s.jpg",
"items": null
}
]
}
Методы API для системы "Кактус"
api/lite/courier_callЧасть методов представлена из "надстройки" – Кактус Лайт (/api/lite/*), часть методов относится к работе подсказок (/api/prompter/*), а часть к работе механизма по доставкам.
Необходимо во всех вызовах, содержащих /pub, /dlv, /prompter, кроме регистрации и авторизации, (например /api/lite/pub/order) указывать имя текущего домена в заголовках запроса (Header) в параметре Domain. Если в вызове нет /pub, /dlv, /prompter - (например /api/lite/offer) - то нужно указывать токен доступа, полученный в методе регистрации/авторизации.
Запрос | Метод | Авторизация | Описание | Разработано | Комментарии для бэкенда |
---|---|---|---|---|---|
Создание нового аккаунта Кактус Lite | POST /api/lite/pub/register | нет | public | ✓ | |
Запрос на сброс пароля Кактус Lite | POST /api/lite/pub/password_reset | нет | public | ✓ | |
Сброс пароля | POST /api/lite/pub/password_reset_confirm | нет |
public, защита по временному токену сброса пароля
|
✓ | |
Методы для автоподсказок по вводу адресов | |||||
Подсказка населенного пункта |
GET /api/prompter/location | нет | По переданной части населенного пункта, возвращает варианты возможных населенных пунктов | ✓ | |
Подсказка полного адреса | GET /api/prompter/address | нет | По переданной части адреса, возвращает варианты адресов | ✓ | |
Методы для работы CMS составляющий Кактус Лайт | |||||
Запрос данных аккаунта (публичный) |
GET /api/lite/pub/account_info |
нет |
По указанному имени домена получает информацию об аккаунте - только данные для публичного использования. Например, настройки виджета. Также используется для проверки домена на доступность.
|
для проверки доступности домена и его присвоения есть отдельный метод: /api/lite/settings/domainAlias - работает по токену доступа
-публичные настройки виджета: порог бесплатной доставки 2 |
|
Получение информации по заказу | GET /api/lite/pub/order | нет | По указанному домену и номеру заказа, возвращает текущее состояние заказа и публичную информацию | ✓ |
-по новой dto заказа ?требуется маппинг инфостатусов заказа и статусов lite 6 |
Получение информации по предзаказу | GET /api/lite/pub/preorder | нет | Получает информацию по предзаказу (метод доступен только если заказ еще в состоянии предзаказа) |
-по новой dto заказа 2 |
|
Проверка адреса сбора на возможность обслуживания | GET /api/lite/pub/check_pickup_location | нет |
По указанному населенному пункту (код по базе ФИАС), возвращает возможность указание данного адреса как точки сбора.
|
✓ |
в кактусе - нетенантная таблица с фиас кодами доступных городов сбора и опциональными часами сбора залить данные от gd
8 |
Список товарных предложений/предложение | GET /api/lite/pub/offer | нет |
Возвращает список товаров + цены + фото
|
✓ |
-добавить фото
1 |
Создание заказа для виджета | POST /api/lite/pub/order | нет | Для указанного домена, возможность оформить заказ из виджета обычному покупателю | ✓ |
-по новой dto 4 |
Методы для административного интерфейса Кактус Лайт | |||||
Авторизация | POST /api/lite/auth | – |
Создает новую пользовательскую сессию, получая токен. С данным токеном возможно последующее обращение к API. |
✓ | |
Запрос данных аккаунта (админский) |
GET /api/lite/account_info | session token |
Возвращает сведения о текущем аккаунте – имя аккаунта, баланс, настройки и т.п.
|
✓ | |
Информация о датах приезда курьера | GET /api/lite/pickup_dates | session token |
Возвращает информацию о датах приезда курьера за указанный период.
|
-в кактусе из настроек заявок на сбор выбираются ближайшие доступные дни. с учетом города сбора и доступного времени сбора - стоит скопировать реализацию настроек в части календаря в нетенантую область чтобы можно было разом для всех учетных записей лайта править
часы сбора и географию брать в той же таблице как в методе /api/lite/pub/check_pickup_location 5 |
|
Перечень уведомлений для пользователя | GET /api/lite/notifications | session token | Возвращает информацию об уведомлениях для пользователя. Либо по с фильтрацией по последним (с глубиной выборки), либо по определенному ID сообщения. |
отложили |
|
Сводка по аккаунту | GET /api/lite/brief_report | session token |
Возвращает срез отчетности по аккаунту. Например, информация о заказах (общая). |
-рефакторинг в отдельный сервис имеющихся методов отчетов DevApiController:
reportGetOrderCount, reportGetOrderMeanBill, reportGetOrderSum -вызов этих методов из апи лайта 8 |
|
Запрос списка заказов / определенного заказа |
GET /api/lite/order | session token |
Возвращает информацию о списке заказов, или о конкретном заказе. Возможно задавать фильтрацию, а также требуемый набор полей. |
✓ |
-по новой dto или ее расширенной версии для админа магазина -фильтрация по статусам, меткам, строке(номер заказа, телефон покупателя, фио покупателя) -набор полей, задаваемый в запросе пока не делаем 4 |
Сохранение настроек точки сбора | POST /api/lite/settings/pickup | session token |
Сохраняет информацию об адресе и контактах для сбора заказов
|
✓ | |
Проверка доступности домена 3 уровня | GET /api/lite/settings/domainAlias | session token | Проверка свободного желаемого домена 3 уровня | ✓ | |
Обновление домена 3 уровня | POST /api/lite/settings/domainAlias | session token | Обновление текущего домена 3 уровня (помимо автосозданного) | ✓ | |
Сохранение настроек уведомлений | POST /api/lite/settings/user_notification | session token |
Сохраняет настройки уведомлений пользователя о событиях
|
отложили | |
Запрос настроек виджета чекаута | GET /api/lite/settings/checkout | Выводит настройки виджета чекаута | ✓ | ||
Сохранение настроек работы виджета чекаута | POST /api/lite/settings/checkout | session token |
Сохраняет настройки виджета чекаута
|
✓ |
-добавить тенантую сущность настроек виджета с указанными полями
2 |
Список товарных предложений/предложение | GET /api/lite/offer | session token |
Возвращает список товаров + цены + фото
|
✓ | |
Создание / обновление товарного предложения | POST /api/lite/offer | session token |
Обновление полей товара, цен, веса, отображения в каталоге
|
✓ |
3 |
Создание/удаление картинки к товару |
POST /api/lite/offer/image DELETE /api/lite/offer/image |
session token | создание картинки к товару с ресайзом / удаление указанной картинки | ✓ |
-интеграция с хранилищем картинок + ресайз картинок
8 |
Обновление параметров кропа картинки к товару | POST /api/lite/offer/image/crop | session token | Обновляет параметры кропа (обрезки) картинки | ✓ | |
Создание/редактирование/удаление метки |
POST /api/lite/tag DELETE /api/lite/tag |
session token | Редактирование меток для заказов | ✓ |
4 |
Получение списка меток | GET /api/lite/tag | session token | Получить все созданные метки заказов | ✓ | 1 |
Создание заказа | POST /api/lite/order | session token |
Возможность создать новый заказ. Также, возможность создать заказ в статусе “Предзаказ”, когда только указана табличная часть, а все остальное должен заполнить покупатель |
✓ |
-если полный заказ: копия метода публичного создания заказа -если предзаказ: не проверять данные заказа не относящиеся к табличной части в OrderDocManager (по наличию домена определить что учетка - лайт и не проверять)
3 |
Заказ → обновление контактной информации получателя |
POST /api/lite/order/receiver | session token |
Имя, телефон, email
|
-используется новая dto заказа -обрабатывается только та ее часть которая относится к указанным данным: в заказе не обновлются никакие иные поля
2 |
|
Заказ → обновление товарной части | POST /api/lite/order/items | session token | Обновить только товарную часть заказа |
-аналогично 2 |
|
Заказ → упаковать | POST /api/lite/order/packing | session token | Помечает заказ упакованным | ✓ |
-вызывается быстрая упаковка в одно место 4 |
Заказ → распаковать | DELETE /api/lite/order/packing | session token | Удаляет упаковку заказа | ✓ |
-распроводит все имеющиеся упакованные места 2 |
Заказ → пометить оплаченным получателем | POST /api/lite/order/payment | session token | Помечает заказ полностью оплаченным | ✓ |
-ставит статус PAID в заказе 1 |
Заказ → снять пометку оплаты заказа получателем | DELETE /api/lite/order/payment | session token |
Удаляет оплату заказа
|
✓ |
-ставит статус PAID в заказе 0 |
Заказ → установить метку на заказе | POST /api/lite/order/tag | session token | Устанавливает метку на заказ | ✓ | 2 |
Заказ → снять метку с заказа | DELETE /api/lite/order/tag | session token | Снимает метку с заказа | ✓ | 2 |
Заказ → получить инвойс + стикер к заказу | GET /api/lite/order/invoice_and_stiker | session token | Получает инвойс для заказа (также содержит стикер) | ✓ |
-dlv - сделать слепленную ПФ (инвойс + стикер), добавить в enum запроса ПФ -кактус: вызывать при упаковке места ПФ с указанным enum -по вызову данного метода апи - возвращение base64 с данными ПФ 3 |
Оплатить доставку заказа/заказов | POST /api/lite/order_delivery_payment | session token |
Блокирует средства с баланса для указанного перечня заказов.
|
-реализовать регистр баланса аккаунта (16) -документ оплаты со статусами подготовлен (средства блокируются) и оплачен (средства списаны) ?требуется описание схемы работы |
|
Отменить оплату доставки заказа/заказов | DELETE /api/lite/order_delivery_payment | session token | Отменяет оплату заказа | ?требуется описание схемы работы | |
Оформить вызов курьера | POST /api/lite/courier_call | session token | Создает в системе заявку на вызов курьера | - не делаем. заявка на вызов курьера автоматом делается при успешной оплате доставки указанных заказов в методе order_delivery_payment | |
Отменить вызов курьера | DELETE /api/lite/courier_call | session token | Удаляет заявку на вызов курьера |
-удаляет по humanId 2 |
|
Получить список транзакций | GET /api/lite/transaction | session token | С фильтрацией по дате, номеру заказу (или номеру трекинга) | ?требуется описание схемы работы | |
Создать счет на оплату и получить информацию для оплаты | POST /api/lite/payment | session token |
Создает новый счет к оплате на указанную сумму, затем возвращает данные для последующей оплаты (PayU)
|
?требуется описание схемы работы | |
Методы для работы с доставкой (в большей степени требуются для работы чекаута) | |||||
Получить тарифы и способы доставки для указанного населенного пункта | GET /api/dlv/tariffs | нет | с фильтрацией по городу (guid ФИАС) - запрос тарифа от точки сбора до указанной точки | ✓ |
-добавить fias код в сущность адреса -авторизация по домену -добавить проксирование в кактусе с возможностью на лету в тарифы добавить процентную и фиксированную часть из настроек виджета данного клиента 4 |
Получить список пунктов выдачи заказов | GET /api/dlv/delivery_points | нет |
с фильтрацией по городу (guid ФИАС) / по курьерской службе, получает доступный список пунктов выдачи заказов. Возможно запрашивать краткий и полный списки, с фильтрацией по ID пункта выдачи. |
✓ |
-авторизация по домену -прокси до dlv по методу запроса постаматов и фильтром по городу (фиас), коду постамата 4 |
/api/lite/pub/order
Получение информации по заказу (публичный)
/api/lite/pub/order
Метод получает информацию о заказе, доступную покупателю. например по ссылке из email
Обязательный параметр: query - содержащий номер (id) заказа.
например, ?id=FF6Z-000017
Результат запроса
Найденный заказ, по форамату аналогичный методу добавления заказа (POST /api/lite/pub/order)
{
"orders": [
{
"success": true,
"comment": "",
"id": "FF6Z-000017",
"date": "2019-06-25 16:48:36",
"updateTs": "2019-06-25 16:48:44.180",
"confirmStatus": "APPROVED",
"paymentStatus": "NOT_PAID",
"status": "NEW",
"paymentMethodCode": "no-cod",
"trackingNumber": null,
"customData": null,
"totalOrderSum": 3715,
"delivery": {
"deliveryCode": "GLOBAL_DELIVERY",
"timeFrom": "09:00",
"timeTo": "20:00",
"desiredDeliveryDate": null,
"deliveryComment": "",
"pickupPointId": "",
"address": {
"country": "Россия",
"countryCode": "RU",
"region": "Москва",
"area": null,
"city": "Москва",
"settlement": null,
"street": "",
"house": "",
"block": "",
"building": "",
"flat": "",
"fullAddress": "Москва",
"fullCity": null,
"rawData": null,
"zip": "",
"regionFias": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
"areaFias": null,
"cityFias": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
"settlementFias": null
},
"receiver": {
"name": "Тест4",
"surname": "",
"patronymic": "",
"phone": "9151321211",
"alternativePhone": "",
"email": ""
},
"type": "COURIER",
"courier": "Global Delivery",
"trackingLink": "https://global-delivery.ru/monitoring/",
"logoUrl": "https://app.kak2c.ru/VAADIN/themes/valo-oms/img/logos/delivery-resized/global_delivery.png"
},
"items": [
{
"num": 1,
"id": "1001",
"quantity": 8,
"price": 237,
"name": "Lavazza Passionale",
"img": "https://img.kak2c.ru/i/c/H/lQS7nFGe_c.png?1561052854",
"variants": null
},
{
"num": 2,
"id": "1002",
"quantity": 5,
"price": 289,
"name": "Lavazza Bio Organic",
"img": "https://img.kak2c.ru/i/C/f/jhqOneIC_c.png?1561052854",
"variants": null
},
{
"num": 3,
"id": "delivery",
"quantity": 1,
"price": 374,
"name": "Доставка",
"img": null,
"variants": null
}
],
"tags": [],
"packings": null,
"expenses": null,
"needCustomerPayment": false,
"customerPaymentInProcess": false,
"promocode": "testpercent",
"promocodeAppliedDiscount": 1169,
"c": "29726802-015c-3c2b-14d2-9f84e1a8be9a"
}
]
}
Копия /api/lite/file/image
Закачка картинки в облако
/api/lite/file/image
Закачка картинки в облако и получение url
Одновременно выполняет ресайз картинки в несколько разрешений, аналогично методу POST /api/lite/products/image
Принимает файл в виде multipart запроса в параметре upfile.
Хедер - только Authorization
Пример из Postman:
Пример ответа:
{
"success": true,
"url": "https://storage.yandexcloud.net/images-k2c/66ac26ec-08b2-4d4a-ae22-44c182847984.jpg",
"id": "66ac26ec-08b2-4d4a-ae22-44c182847984.jpg"
}