Тема
Заявки
Заявка (order) — доставка одной посылки в постомат для одного получателя. Заявка создаётся в статусе CREATED, после закладки посылки курьером переходит в DELIVERED, после выдачи — в COMPLETED или SUBTRACTED (см. Статусы заявки).
Все пути указаны относительно {host}/api/v1/integration/company, все запросы требуют заголовок Authorization: Bearer YOUR_API_KEY.
Создание заявки
POST /order/create
Content-Type: application/jsonПоля тела запроса
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
toUserPhone | string | да | Телефон получателя в международном формате: + и только цифры, до 20 символов, например +996700000000. Пробелы по краям обрезаются |
postomatId | string (cuid2) | да | ID постомата из GET /postomat/list |
sendMessage | boolean | да | true — отправить получателю SMS с кодом получения и ссылкой на постомат, когда посылка будет заложена в ячейку. false — не отправлять (код получения вы передаёте получателю сами) |
days | integer, ≥ 1 | нет | Срок хранения в днях, сохраняется в заявке. Если не передан, берётся значение по умолчанию из настроек вашей компании |
weight | number, ≥ 0 | нет | Вес посылки. По умолчанию 0 |
customData | string | нет | Произвольная строка, например ваш внешний идентификатор заказа. Возвращается в данных заявки |
pay | boolean | нет | true — оплатить заявку с баланса вашей компании в InLog |
sendMessage — обязательное поле
Если не передать sendMessage, API вернёт 400 с ошибкой валидации. Передавайте значение явно в каждом запросе.
Срок хранения
Срок хранения отсчитывается с момента закладки посылки в ячейку. Значение срока по умолчанию и правила его применения задаются в настройках вашей компании в InLog — уточните их у менеджера.
Пример
bash
curl -X POST "https://postomat-api-1.inlog.ai/api/v1/integration/company/order/create" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"toUserPhone": "+996700000000",
"postomatId": "tz4a98xxat96iws9zmbrgj3a",
"sendMessage": true,
"days": 3,
"weight": 1.2,
"customData": "partner-order-12345"
}'js
const order = await client.orders.create({
toUserPhone: '+996700000000',
postomatId: 'tz4a98xxat96iws9zmbrgj3a',
sendMessage: true,
days: 3,
weight: 1.2,
customData: 'partner-order-12345',
})java
// NonNullCreateOrderBody — см. «SDK Java → Известные ограничения»
CreateOrderBody body = new NonNullCreateOrderBody();
body.setToUserPhone("+996700000000");
body.setPostomatId("tz4a98xxat96iws9zmbrgj3a");
body.setSendMessage(true);
body.setDays(3);
body.setWeight(1.2);
body.setCustomData("partner-order-12345");
Order order = client.orders().create(body);Ответ
200 OK — созданная заявка. Основные поля:
| Поле | Тип | Описание |
|---|---|---|
id | string (cuid2) | ID заявки — используйте его во всех последующих запросах |
postomatId | string | ID постомата |
companyId | string | ID вашей компании |
toUserId | string | Внутренний ID получателя (получатель определяется по номеру телефона) |
cellId | string | null | ID ячейки; заполняется после закладки |
currentStatusId | string | null | ID записи текущего статуса |
days | integer | Срок хранения в днях |
weight | number | Вес |
customData | string | null | Ваши данные |
sendMessage | boolean | Отправлять ли SMS получателю |
isActive | boolean | Признак активной заявки |
price, deliveryPrice, paidAmount, notPaidAmount | number | Стоимость и оплата по заявке |
startDateTime, endDateTime | string (ISO 8601) | null | Начало и окончание срока хранения |
createdAt, updatedAt | string (ISO 8601) | Время создания и изменения |
Ответ может содержать и другие поля — не завязывайте логику на отсутствие незнакомых полей.
Ошибки
| HTTP | Когда |
|---|---|
400 | Не прошла валидация: нет обязательного поля, неверный формат телефона или postomatId, days < 1 и т. п. |
401 | Нет или неверный заголовок авторизации |
Передавайте только существующий postomatId, полученный из GET /postomat/list: запрос с несуществующим ID завершится ошибкой.
Список заявок
GET /order/listВозвращает активные заявки вашей компании, отсортированные по времени создания (новые первыми).
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
page | integer, ≥ 1 | 1 | Номер страницы |
pageSize | integer, ≥ 1 | 10 | Размер страницы |
status | CREATED | DELIVERED | COMPLETED | SUBTRACTED | — | Фильтр по текущему статусу |
withToUser | boolean | — | Добавить данные получателя (toUser) |
withCell | boolean | — | Добавить ячейку (cell) вместе с постоматом |
withPostomat | boolean | — | Добавить постомат (postomat) |
withCurrentStatus | boolean | — | Добавить текущий статус (currentStatus) |
withStatuses | boolean | — | Добавить историю статусов (statuses) |
withRent | boolean | — | Добавить данные аренды ячейки (rent), если есть |
withPasswords | boolean | — | См. примечание о кодах ниже |
bash
curl "https://postomat-api-1.inlog.ai/api/v1/integration/company/order/list?page=1&pageSize=20&status=DELIVERED&withCurrentStatus=true" \
-H "Authorization: Bearer YOUR_API_KEY"js
const list = await client.orders.list({
page: 1,
pageSize: 20,
status: 'DELIVERED',
withCurrentStatus: true,
})
console.log(list.total, list.data.length)java
import ai.inlog.sdk.postomat.model.GetOrdersListQuery;
import ai.inlog.sdk.postomat.model.OrderStatusType;
import ai.inlog.sdk.postomat.model.OrdersListResponse;
OrdersListResponse list = client.orders().list(
GetOrdersListQuery.listBuilder()
.page(1)
.pageSize(20)
.status(OrderStatusType.DELIVERED)
.withCurrentStatus(true)
.build()
);
System.out.println(list.getTotal() + " " + list.getOrders().size());Ответ:
json
{
"total": 1,
"data": [
{
"id": "gfb0sfr5ahkhu9dns4bja2ly",
"postomatId": "tz4a98xxat96iws9zmbrgj3a",
"customData": "partner-order-12345",
"currentStatus": { "id": "b3v8r0c9u1h2y7x4w5z6a1q2", "type": "DELIVERED", "orderId": "gfb0sfr5ahkhu9dns4bja2ly" },
"passwords": [{ "type": "DOWN", "password": "4821" }]
}
],
"aggregate": { "_sum": { "price": 0, "deliveryPrice": 0, "paidAmount": 0, "notPaidAmount": 0, "promoCodeAmount": 0 } },
"expiredAggregate": { "_sum": { "price": 0, "deliveryPrice": 0, "paidAmount": 0, "notPaidAmount": 0, "promoCodeAmount": 0 }, "_count": 0 }
}total— общее количество заявок, подходящих под фильтр;data— заявки текущей страницы.aggregate— суммы по всей выборке;expiredAggregate— суммы и количество заявок в статусеDELIVERED, у которых истёк срок хранения.
Коды в ответе
Поле passwords в списке и в карточке заявки всегда содержит только код закладки (DOWN), независимо от withPasswords. Коды получения и изъятия запрашивайте отдельными эндпоинтами (см. ниже).
Получение заявки
GET /order/{id}| Параметр | Где | Тип | Описание |
|---|---|---|---|
id | path | string (cuid2) | ID заявки |
withToUser, withCell, withPostomat, withCurrentStatus, withStatuses, withRent, withPasswords | query | boolean | Те же флаги, что у списка |
bash
curl "https://postomat-api-1.inlog.ai/api/v1/integration/company/order/gfb0sfr5ahkhu9dns4bja2ly?withCurrentStatus=true&withStatuses=true" \
-H "Authorization: Bearer YOUR_API_KEY"js
const order = await client.orders.getById('gfb0sfr5ahkhu9dns4bja2ly', {
withCurrentStatus: true,
withStatuses: true,
})
console.log(order.currentStatus?.type)java
import ai.inlog.sdk.postomat.model.GetOrderByIdQuery;
Order order = client.orders().getById(
"gfb0sfr5ahkhu9dns4bja2ly",
GetOrderByIdQuery.builder().withCurrentStatus(true).withStatuses(true).build()
);
System.out.println(order.getCurrentStatus().getType());Если заявка не найдена или принадлежит другой компании, API вернёт 404 с кодом ORDER_NOT_FOUND. Некорректный формат id (не cuid2) — 400.
Коды заявки
| Эндпоинт | Код | Кто и когда использует |
|---|---|---|
GET /order/{id}/down-code | Код закладки (DOWN) | Курьер вводит его на постомате, чтобы заложить посылку в ячейку |
GET /order/{id}/up-code | Код получения (UP) | Получатель вводит его на постомате, чтобы забрать посылку. Если при создании передан sendMessage: true, код придёт получателю в SMS после закладки |
GET /order/{id}/subtract-code | Код изъятия (SUBTRACT) | Используется, чтобы изъять посылку из ячейки без выдачи получателю |
Все три кода создаются вместе с заявкой. Код — строка из четырёх цифр; коды одного типа не повторяются среди активных заявок одного постомата.
bash
curl "https://postomat-api-1.inlog.ai/api/v1/integration/company/order/gfb0sfr5ahkhu9dns4bja2ly/up-code" \
-H "Authorization: Bearer YOUR_API_KEY"js
const upCode = await client.orders.getUpCode('gfb0sfr5ahkhu9dns4bja2ly')
const subtractCode = await client.orders.getSubtractCode('gfb0sfr5ahkhu9dns4bja2ly')java
Code upCode = client.orders().getUpCode("gfb0sfr5ahkhu9dns4bja2ly");
Code subtractCode = client.orders().getSubtractCode("gfb0sfr5ahkhu9dns4bja2ly");Ответ:
json
{
"id": "u2c6h8u7l0y8f2t3z6x1q9vw",
"type": "UP",
"password": "7305",
"orderId": "gfb0sfr5ahkhu9dns4bja2ly",
"createdAt": "2026-09-29T08:00:00.000Z",
"updatedAt": "2026-09-29T08:00:00.000Z"
}Если заявка не найдена или принадлежит другой компании — 404 с кодом ORDER_NOT_FOUND.
Коды — секрет получателя
Код получения даёт доступ к посылке. Не показывайте его третьим лицам и не пишите в открытые логи.