@opsregistry/adapter-pecom
v0.3.0
Published
PEK adapter for opsregistry logistics shipment and pickup operations.
Readme
@opsregistry/adapter-pecom
Адаптер ПЭК для универсальных логистических операций opsregistry.
Пакет принимает единый формат @opsregistry/contracts и преобразует его в запросы
ПЭК. Один и тот же контракт можно использовать для публичного расчета, расчета по
учетной записи, создания предварительной заявки и оформления забора груза.
Возможности
it.identity.authenticate- выбор публичного режима или HTTP Basic для личного кабинета.logistics.shipment.quote- публичный калькулятор или API личного кабинета.logistics.shipment.create- создание отправления через/preregistration/submit/.logistics.shipment.list- список доступных грузов через/cargos/listallorderbylogin/.logistics.shipment.track- текущий статус и история движения через/cargos/status/.logistics.pickup.create- оформление забора груза через/cargopickup/submit/.- Несколько грузовых мест в одном расчете.
Публичный расчет
Для публичного расчета ключи не нужны. Адаптер сам найдет города для калькулятора ПЭК по названию.
import { createAdapter } from '@opsregistry/adapter-pecom';
const pecom = createAdapter();
const quote = await pecom.quoteShipment({
origin: { city: 'Самара' },
destination: { city: 'Москва' },
deliveryMode: 'terminal_terminal',
packages: [
{ weightKg: 10, lengthCm: 100, widthCm: 20, heightCm: 20 },
{ weightKg: 5, lengthCm: 20, widthCm: 20, heightCm: 50 }
]
});
console.log(quote.options);Расчет и создание по учетной записи
Для персонального расчета, создания отправления и забора груза передайте логин и API-ключ. Секреты должны храниться в окружении или защищенном хранилище приложения.
const pecom = createAdapter({
login: process.env.PECOM_LOGIN,
apiKey: process.env.PECOM_API_KEY
});
const quote = await pecom.quoteShipment({
origin: { city: 'Самара' },
destination: { city: 'Москва' },
deliveryMode: 'terminal_terminal',
packages: [
{ weightKg: 10, lengthCm: 100, widthCm: 20, heightCm: 20 },
{ weightKg: 5, lengthCm: 20, widthCm: 20, heightCm: 50 }
]
});Создание отправления использует те же места и добавляет отправителя и получателя:
const shipment = await pecom.createShipment({
customerReference: 'ORDER-1001',
origin: { city: 'Самара' },
destination: { city: 'Москва' },
deliveryMode: 'terminal_terminal',
sender: {
kind: 'person',
name: 'Иванов И.И.',
phone: '+79990000001'
},
recipient: {
kind: 'person',
name: 'Петров П.П.',
phone: '+79990000002'
},
packages: [
{ weightKg: 10, lengthCm: 100, widthCm: 20, heightCm: 20 },
{ weightKg: 5, lengthCm: 20, widthCm: 20, heightCm: 50 }
]
});
console.log(shipment.shipmentId);Список грузов из личного кабинета:
const shipments = await pecom.listShipments({
dateFrom: '2026-07-01T00:00:00Z',
dateTo: '2026-07-10T00:00:00Z'
});
console.log(shipments.items);Отследить груз можно по коду груза, который вернуло создание отправления:
const tracking = await pecom.trackShipment({
trackingNumber: shipment.trackingNumber
});
console.log(tracking.status, tracking.events);