Endpoints API отгрузок (Shipments)
Дата: 2025-02-10 Подзадача: 2-11 - Document all Shipments API endpoints Статус: ✅ ЗАВЕРШЕНО
Обзор
Lamoda предоставляет 8 endpoints для управления отгрузками через B2B Platform API:
- B2B Platform API: 8 endpoints (REST) - полное управление отгрузками (входящие и исходящие)
API отгрузок поддерживает две основные модели работы:
- Входящие поставки (Fulfilment/Incoming) - FBO модель, товары на склад Lamoda
- Исходящие поставки (Outgoing) - FBS/DBS модели, товары со склада продавца
1. B2B Platform API - Отгрузки
Base URL: https://api-b2b.lamoda.ru
API Format: REST (OpenAPI 3.0.0)
Authentication: OAuth2 Bearer Token
Total Endpoints: 8
Категории endpoints:
1.1 Входящие поставки (Fulfilment Shipments) - 5 endpoints
- GET /api/v1/shipments/fulfilment - Список входящих поставок
- POST /api/v1/shipments/fulfilment - Создание входящей поставки
- GET /api/v1/shipments/fulfilment/{id} - Детали поставки
- GET /api/v1/shipments/fulfilment/{id}/items - Товары в поставке
- POST /api/v1/brand-packing/pack-shipment - Упаковочные материалы
1.2 Исходящие поставки (Outgoing Shipments) - 3 endpoints
- GET /api/v1/shipments - Список всех поставок
- POST /api/v1/shipments/out - Создание исходящей поставки
- POST /api/v1/shipments/out/{id}/events - События поставки
2. Входящие поставки (Fulfilment Shipments)
2.1 Список входящих поставок
Method: GET
Path: /api/v1/shipments/fulfilment
Operation ID: get_v1-shipments-fulfilment
Tags: Входящие поставки
Описание: Получение списка всех входящих поставок с постраничной навигацией. Используется для FBO модели - товаров, которые продавец отправляет на склад Lamoda.
Параметры запроса:
- Query parameters:
limit(integer, optional): Количество элементов на странице (по умолчанию 25)page(integer, optional): Номер запрашиваемой страницы (по умолчанию 1)
Ответы:
- 200 OK: Список поставок получен
{
"page": 1,
"limit": 25,
"pages": 10,
"total": 250,
"_links": {
"self": "href",
"first": "href",
"last": "href",
"next": "href",
"prev": "href"
},
"_embedded": {
"fulfilment_shipments": [
{
"date": "2024-04-17 10:00:00",
"shipmentId": "FF123",
"itemsQuantity": 10
}
]
}
} - 400 Bad Request: Неверный параметр
- 401 Unauthorized: Отказ в доступе
- 403 Forbidden: Доступ запрещен
- 500 Internal Server Error: Внутренняя ошибка сервера
Пример запроса:
curl -X GET 'https://api-b2b.lamoda.ru/api/v1/shipments/fulfilment?page=1&limit=25' \
-H 'Authorization: Bearer YOUR_TOKEN'
2.2 Создание входящей поставки
Method: POST
Path: /api/v1/shipments/fulfilment
Operation ID: post_v1-shipments-fulfilment
Tags: Входящие поставки
Описание: Создание новой входящей поставки на склад Lamoda. Используется для FBO модели - когда продавец отправляет товары на склад Lamoda для последующей продажи.
Параметры запроса:
-
Body: Схема поставки (Shipments.Fulfilment)
{
"date": "10.09.2017",
"id": "187-000-157",
"documentNumber": "1aa2706f-cacd-4040-b094-c5f9fd844b2b",
"items": [
{
"sku": "SELLERSK157",
"quantity": 25,
"price": 999.99,
"ean": "EANK157",
"weight": 500.5,
"uit": "0104670039709513211nQLE3OjFqRC6Oi0nUXY98aI8a7gNkEDQv8NKNBPH4NJv31fK==",
"uitn": "030467003970951321@QLE3OjFqRC6Oi0nUXY98aI8a7gNkEDQv8NKNBPH4NJv31fK==",
"attributes": {
"color": "BLACK",
"size": "M"
}
}
]
}Поля запроса:
date(string, required): Дата поставки в формате DD.MM.YYYYid(string, required): Уникальный номер поставки (max 20 символов)documentNumber(string, optional): GUID документа (обязателен если есть UIT/UITN)items(array, required): Массив товаровsku(string, required): SKU товара (max 50 символов)quantity(integer, required): Количество единицprice(number, required): Цена в рублях (float, не более 2 знаков после запятой)ean(string, optional): EAN код (max 80 символов)weight(number, optional): Вес в граммах (float)uit(string, optional): Код маркировки (грачные товары)uitn(string, optional): Код маркировки (упаковка)attributes(object, optional): Атрибуты товара (цвет, размер и т.д.)
Ответы:
- 201 Created: Поставка успешно создана
{
"id": "FF123",
"date": "2020-01-01",
"shipmentId": "187-000-157"
}id: Номер поставки Lamodadate: Дата создания поставкиshipmentId: Номер поставки поставщика
- 400 Bad Request: Неверный параметр
- 401 Unauthorized: Отказ в доступе
- 403 Forbidden: Доступ запрещен
- 500 Internal Server Error: Внутренняя ошибка сервера
Пример запроса:
curl -X POST 'https://api-b2b.lamoda.ru/api/v1/shipments/fulfilment' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"date": "10.09.2017",
"id": "187-000-157",
"items": [
{
"sku": "SELLERSK157",
"quantity": 25,
"price": 999.99
}
]
}'
Важные замечания:
- Используется только для FBO модели (товары на складе Lamoda)
- Для маркированных товаров обязателен
documentNumber(GUID) uitиuitnобязательны для маркированных товаров (табак, обувь, одежда и т.д.)- Цена указывается в рублях с точностью до 2 знаков после запятой
- Вес указывается в граммах
2.3 Получение деталей поставки
Method: GET
Path: /api/v1/shipments/fulfilment/{id}
Operation ID: get_v1-shipments-fulfilment-id
Tags: Входящие поставки
Описание: Получение детальной информации о конкретной входящей поставке.
Параметры запроса:
- Path parameters:
id(string, required): Номер поставки Lamoda
Ответы:
- 200 OK: Данные о поставке получены
{
"id": "FF123",
"date": "2024-04-17 10:00:00",
"shipmentId": "187-000-157",
"status": "ACCEPTED",
"items": [...]
} - 400 Bad Request: Неверный параметр
- 401 Unauthorized: Отказ в доступе
- 403 Forbidden: Доступ запрещен
- 500 Internal Server Error: Внутренняя ошибка сервера
Пример запроса:
curl -X GET 'https://api-b2b.lamoda.ru/api/v1/shipments/fulfilment/FF123' \
-H 'Authorization: Bearer YOUR_TOKEN'
2.4 Товары в поставке
Method: GET
Path: /api/v1/shipments/fulfilment/{id}/items
Operation ID: get_v1-shipments-fulfilment-items
Tags: Входящие поставки
Описание: Получение списка товаров в конкретной входящей поставке с деталями по каждому товару.
Параметры запроса:
- Path parameters:
id(string, required): Номер поставки Lamoda
Ответы:
- 200 OK: Массив товаров в поставке
{
"items": [
{
"sku": "SELLERSK157",
"quantity": 25,
"accepted": 20,
"rejected": 5,
"price": 999.99,
"attributes": {
"color": "BLACK",
"size": "M"
}
}
],
"total": 25
} - 400 Bad Request: Неверный параметр
- 401 Unauthorized: Отказ в доступе
- 403 Forbidden: Доступ запрещен
- 500 Internal Server Error: Внутренняя ошибка сервера
Пример запроса:
curl -X GET 'https://api-b2b.lamoda.ru/api/v1/shipments/fulfilment/FF123/items' \
-H 'Authorization: Bearer YOUR_TOKEN'
2.5 Создание поставки упаковочных материалов
Method: POST
Path: /api/v1/brand-packing/pack-shipment
Operation ID: post_v1-brand_packing-pack_shipment
Tags: Входящие поставки
Описание: Метод для создания поставки с упаковочными материалами (УМ). Используется для учета упаковки, которую продавец поставляет на склад Lamoda.
Параметры запроса:
- Body: Схема поставки упаковочных материалов (ShipmentBP)
{
"date": "2020-01-01",
"items": [
{
"sku": "PACK_001",
"quantity": 100
}
]
}
Ответы:
- 201 Created: Поставка создана
{
"lamodaShipmentId": "FF1440",
"date": "2020-01-01",
"shipmentId": "ZAPH-821468"
}lamodaShipmentId: Номер поставки Lamodadate: Ожидаемая дата поставкиshipmentId: Номер поставки поставщика
- 400 Bad Request: Неверный параметр
- 401 Unauthorized: Отказ в доступе
- 403 Forbidden: Доступ запрещен
- 500 Internal Server Error: Внутренняя ошибка сервера
Пример запроса:
curl -X POST 'https://api-b2b.lamoda.ru/api/v1/brand-packing/pack-shipment' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"date": "2020-01-01",
"items": [
{
"sku": "PACK_001",
"quantity": 100
}
]
}'
3. Исходящие поставки (Outgoing Shipments)
3.1 Список всех поставок
Method: GET
Path: /api/v1/shipments
Operation ID: get_v1-shipments
Tags: Управление поставками
Описание: Получение списка всех поставок (как входящих, так и исходящих) с возможностью фильтрации по направлению.
Параметры запроса:
- Query parameters:
limit(integer, optional): Количество элементов на странице (по умолчанию 25)page(integer, optional): Номер запрашиваемой страницы (по умолчанию 1)filter(string, optional): Фильтр по направлениюdirection=in: Входящие поставкиdirection=out: Исходящие поставки
Ответы:
- 200 OK: Список поставок получен
{
"page": 1,
"limit": 25,
"pages": 5,
"total": 125,
"_links": {
"self": "href",
"first": "href",
"last": "href",
"next": "href",
"prev": "href"
},
"_embedded": {
"shipments": [
{
"id": "OUT123",
"direction": "out",
"status": "SHIPPED",
"date": "2024-04-17 10:00:00"
}
]
}
} - 400 Bad Request: Неверный параметр
- 401 Unauthorized: Отказ в доступе
- 500 Internal Server Error: Внутренняя ошибка сервера
Пример запроса:
# Все поставки
curl -X GET 'https://api-b2b.lamoda.ru/api/v1/shipments?page=1&limit=25' \
-H 'Authorization: Bearer YOUR_TOKEN'
# Только исходящие поставки
curl -X GET 'https://api-b2b.lamoda.ru/api/v1/shipments?filter=direction%3Dout&page=1&limit=25' \
-H 'Authorization: Bearer YOUR_TOKEN'
3.2 Создание исходящей поставки
Method: POST
Path: /api/v1/shipments/out
Operation ID: post_v1-shipments-out
Tags: Управление поставками
Описание: Создание новой исходящей поставки для FBS/DBS моделей - когда продавец отгружает товары со своего склада. Если информация о поставке успешно принята и обработана, возвращается уникальный идентификатор поставки.
Параметры запроса:
-
Body: Схема исходящей поставки (Shipment.Out)
{
"shipmentId": "OUT-2024-001",
"orderNr": "123456789",
"items": [
{
"sku": "SELLERSK157",
"quantity": 1
}
],
"deliveryMethod": "COURIER",
"trackingNumber": "TRACK123456",
"shipmentDate": "2024-04-17"
}Основные поля:
shipmentId: Уникальный номер поставкиorderNr: Номер заказаitems: Массив товаров в поставкеdeliveryMethod: Метод доставкиtrackingNumber: Трекинг-номер отгрузкиshipmentDate: Дата отгрузки
Ответы:
- 200 OK: Поставка создана
{
"id": "12345",
"shipmentId": "OUT-2024-001",
"status": "CREATED",
"message": "Shipment created successfully"
} - 400 Bad Request: Ошибка валидации
- 401 Unauthorized: Ошибка авторизации
- 500 Internal Server Error: Внутренняя ошибка сервера
Пример запроса:
curl -X POST 'https://api-b2b.lamoda.ru/api/v1/shipments/out' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"shipmentId": "OUT-2024-001",
"orderNr": "123456789",
"items": [
{
"sku": "SELLERSK157",
"quantity": 1
}
],
"deliveryMethod": "COURIER",
"trackingNumber": "TRACK123456",
"shipmentDate": "2024-04-17"
}'
Важные замечания:
- Используется для FBS и DBS моделей
- Трекинг-номер обязателен для отслеживания доставки
- Метод доставки должен соответствовать доступным методам
3.3 События поставки
Method: POST
Path: /api/v1/shipments/out/{id}/events
Operation ID: post_v1-shipments-out-events
Tags: Управление поставками
Описание: Подтверждение или отмена исходящей поставки. Используется только если отключена опция автоподтверждения поставок.
Параметры запроса:
-
Path parameters:
id(string, required): Номер поставки
-
Body: Схема события поставки (Shipment.Out.EventType)
{
"eventType": "CONFIRMED",
"comment": "Товары отправлены",
"eventDate": "2024-04-17T10:00:00"
}Типы событий:
CONFIRMED: Подтверждение поставкиCANCELED: Отмена поставки
Ответы:
- 201 Created: Событие успешно создано
{
"id": "EVT123",
"shipmentId": "12345",
"eventType": "CONFIRMED",
"eventDate": "2024-04-17T10:00:00",
"status": "PROCESSED"
} - 400 Bad Request: Ошибка валидации
- 401 Unauthorized: Ошибка авторизации
- 500 Internal Server Error: Внутренняя ошибка сервера
Пример запроса:
# Подтверждение поставки
curl -X POST 'https://api-b2b.lamoda.ru/api/v1/shipments/out/12345/events' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"eventType": "CONFIRMED",
"comment": "Товары отправлены",
"eventDate": "2024-04-17T10:00:00"
}'
# Отмена поставки
curl -X POST 'https://api-b2b.lamoda.ru/api/v1/shipments/out/12345/events' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"eventType": "CANCELED",
"comment": "Товары недоступны",
"eventDate": "2024-04-17T10:00:00"
}'
Важные замечания:
- Подтверждение используется только если отключена автоподтверждение
- Отмена возможна только до подтверждения поставки
- Комментарий рекомендуется для отмены поставки
4. Сводная таблица всех endpoints
| Method | Path | Operation ID | Описание | Категория |
|---|---|---|---|---|
| GET | /api/v1/shipments/fulfilment | get_v1-shipments-fulfilment | Список входящих поставок | Fulfilment |
| POST | /api/v1/shipments/fulfilment | post_v1-shipments-fulfilment | Создание входящей поставки | Fulfilment |
| GET | /api/v1/shipments/fulfilment/{id} | get_v1-shipments-fulfilment-id | Детали поставки | Fulfilment |
| GET | /api/v1/shipments/fulfilment/{id}/items | get_v1-shipments-fulfilment-items | Товары в поставке | Fulfilment |
| POST | /api/v1/brand-packing/pack-shipment | post_v1-brand_packing-pack_shipment | Упаковочные материалы | Fulfilment |
| GET | /api/v1/shipments | get_v1-shipments | Список всех поставок | General |
| POST | /api/v1/shipments/out | post_v1-shipments-out | Создание исходящей поставки | Outgoing |
| POST | /api/v1/shipments/out/{id}/events | post_v1-shipments-out-events | События поставки | Outgoing |
5. Статусы поставок
Входящие поставки (Fulfilment)
CREATED: Поставка созданаIN_TRANSIT: В путиACCEPTED: Принята на складеPARTIALLY_ACCEPTED: Принята частичноREJECTED: Отклонена
Исходящие поставки (Outgoing)
CREATED: СозданаCONFIRMED: ПодтвержденаSHIPPED: ОтгруженаDELIVERED: ДоставленаCANCELED: ОтмененаRETURNED: Возвращена
6. Особенности использования по бизнес-моделям
FBO (Fulfillment by Operator/Lamoda)
Используемые endpoints:
- POST /api/v1/shipments/fulfilment - Создание поставки на склад
- GET /api/v1/shipments/fulfilment - Список поставок
- GET /api/v1/shipments/fulfilment/{id} - Детали поставки
- GET /api/v1/shipments/fulfilment/{id}/items - Товары в поставке
Рабочий процесс:
- Создать поставку через POST /api/v1/shipments/fulfilment
- Получить ID поставки Lamoda
- Отследить статус поставки
- Проверить принятые товары
FBS (Fulfillment by Seller)
Используемые endpoints:
- POST /api/v1/shipments/out - Сообщить об отгрузке
- POST /api/v1/shipments/out/{id}/events - Подтвердить/отменить поставку
- GET /api/v1/shipments - Список поставок
Рабочий процесс:
- Получить заказ через Orders API
- Собрать заказ на своем складе
- Создать исходящую поставку через POST /api/v1/shipments/out
- Подтвердить отправку (если не автоподтверждение)
- Отследить доставку
DBS (Delivery by Seller)
Используемые endpoints:
- POST /api/v1/shipments/out - Сообщить о доставке своим курьером
- GET /api/v1/shipments - История поставок
Рабочий процесс:
- Получить заказ через Orders API
- Доставить своим курьером
- Сообщить о доставке через POST /api/v1/shipments/out
7. Маркировка товаров (Честный ЗНАК)
Для маркированных товаров обязательно указание:
documentNumber: GUID документа (для поставок с маркировкой)uit: Код маркировки DataMatrix (для единицы товара)uitn: Код маркировки (для групповой упаковки)
Категории маркируемых товаров:
- Табачные изделия
- Обувь
- Одежда
- Парфюмерия
- Фотоаппараты и вспышки
- Шины и покрышки
Пример запроса с маркировкой:
{
"date": "10.09.2017",
"id": "187-000-157",
"documentNumber": "1aa2706f-cacd-4040-b094-c5f9fd844b2b",
"items": [
{
"sku": "SELLERSK157",
"quantity": 25,
"price": 999.99,
"uit": "0104670039709513211nQLE3OjFqRC6Oi0nUXY98aI8a7gNkEDQv8NKNBPH4NJv31fK=="
}
]
}
8. Примеры интеграции
Пример 1: Создание FBO поставки
import requests
import json
url = "https://api-b2b.lamoda.ru/api/v1/shipments/fulfilment"
token = "YOUR_OAUTH_TOKEN"
headers = {
"Authorization": f"Bearer {token}",
"Content-Type": "application/json"
}
shipment_data = {
"date": "10.09.2024",
"id": "SHIP-2024-001",
"items": [
{
"sku": "PRODUCT001",
"quantity": 50,
"price": 1999.99,
"weight": 500.0,
"attributes": {
"color": "BLACK",
"size": "L"
}
}
]
}
response = requests.post(url, headers=headers, json=shipment_data)
print(f"Shipment ID: {response.json()['id']}")
Пример 2: Создание FBS отгрузки
import requests
import json
url = "https://api-b2b.lamoda.ru/api/v1/shipments/out"
token = "YOUR_OAUTH_TOKEN"
headers = {
"Authorization": f"Bearer {token}",
"Content-Type": "application/json"
}
shipment_data = {
"shipmentId": "FBS-2024-001",
"orderNr": "123456789",
"items": [
{
"sku": "PRODUCT001",
"quantity": 1
}
],
"deliveryMethod": "COURIER",
"trackingNumber": "TRACK123456",
"shipmentDate": "2024-04-17"
}
response = requests.post(url, headers=headers, json=shipment_data)
print(f"Shipment created: {response.json()['id']}")
Пример 3: Получение списка поставок
import requests
url = "https://api-b2b.lamoda.ru/api/v1/shipments"
token = "YOUR_OAUTH_TOKEN"
headers = {
"Authorization": f"Bearer {token}"
}
params = {
"page": 1,
"limit": 25,
"filter": "direction=in" # Только входящие
}
response = requests.get(url, headers=headers, params=params)
shipments = response.json()["_embedded"]["shipments"]
for shipment in shipments:
print(f"ID: {shipment['id']}, Status: {shipment['status']}")
9. Лучшие практики
1. Идентификация поставок
- Используйте уникальные ID поставок с префиксом вашего магазина
- Храните соответствие ID продавца и ID Lamoda
- Используйте дату в ID для удобства сортировки
2. Обработка ошибок
- Проверяйте статус ответа
- Логируйте все ошибки 400 и 500
- Повторяйте запросы при ошибках 500 с exponential backoff
3. Маркировка товаров
- Проверяйте обязательность маркировки для категории товара
- Храните UIT/UITN коды в вашей системе
- Используйте правильный формат documentNumber (GUID)
4. Отслеживание статусов
- Периодически проверяйте статус поставок
- Используйте вебхуки для уведомлений о смене статуса
- Храните историю всех изменений статусов
5. Работа с большим количеством товаров
- Разбивайте большие поставки на чанки (до 1000 товаров)
- Используйте пагинацию при получении списков
- Кэшируйте данные о поставках для оптимизации
10. Связанные разделы
Дополнительные endpoints для работы с поставками:
Управление ставками:
- GET /api/v1/stock/goods - Остатки на складе
- POST /api/v1/stock/goods - Обновление остатков
Заказы:
- GET /api/v1/orders - Список заказов
- GET /api/v1/orders/{orderNr} - Детали заказа
Уведомления:
- Webhook shipments notifications - Статус поставки
Товары:
- GET /api/v1/nomenclatures - Справочник номенклатуры
11. Часто задаваемые вопросы (FAQ)
Q: Какое максимальное количество товаров в одной поставке? A: Рекомендуется не более 1000 товаров в одной поставке. Для больших объемов разбивайте на несколько поставок.
Q: Можно ли изменить уже созданную поставку? A: Нет, после создания поставку нельзя изменить. Можно только создать новую или отменить (для исходящих).
Q: Что делать если товар пришел с браком? A: Для FBO: свяжитесь с поддержкой Lamoda. Для FBS: укажите это в событии поставки или при возврате.
Q: Как быстро обрабатывается поставка? A: Обычно от нескольких минут до нескольких часов. Зависит от размера поставки и нагрузки на склад.
Q: Обязателен ли documentNumber для всех поставок? A: Только если в поставке есть товары с маркировкой (UIT/UITN).
Q: Можно ли создать поставку задним числом? A: Да, можно указать любую дату в прошлом, но рекомендуется использовать актуальные даты.
12. Контакты и поддержка
Техническая поддержка:
- Email: api-integration@lamoda.ru
- SLA: 4 часа
Документация:
- Lamoda Seller Academy: https://academy.lamoda.ru/
- B2B Guide: https://b2b-guide.lamoda.ru/
GitHub ресурсы:
- PHP SDK: https://github.com/lamoda/lamoda-b2b-platform.php-sdk
- DTO Repository: https://github.com/lamoda/lamoda-b2b-platform.dto
13. Статистика
Общее количество endpoints: 8 Входящие поставки (Fulfilment): 5 endpoints Исходящие поставки (Outgoing): 3 endpoints Поддерживаемые бизнес-модели: FBO, FBS, DBS, B2B FF, B2B FBS Максимальное количество товаров в поставке: 1000 (рекомендовано) Токен: OAuth2 Bearer Token (TTL: 24 часа)
Дата создания: 2025-02-10 Версия спецификации: OpenAPI 3.0.0 Статус документации: Полная