FSP 1.0

Fulfillment Services Protocol

Общий язык для фулфилмента

Чтобы сравнить двух операторов, сегодня нужно созвониться и получить Excel. FSP описывает прайс, свободные мощности и заявку машиночитаемо: сравнение и смета считаются, а не выясняются перепиской.

4модуля stable
59услуг в каталоге
92поля условий цены
68нормативных правил
40проверок целостности

Модули

Протокол собран из модулей, каждый со своей версией. Правка в описании цен не поднимает версию каталога услуг и не заставляет никого переделывать интеграцию.

order и tracking не описаны намеренно: спецификация вперёд спроса переписывается после первой живой интеграции.

Три механики

Сторона объявляет, что умеет

Манифест по адресу /.well-known/fsp перечисляет поддерживаемые модули, версии и уровни. Две стороны сводят манифесты и работают по пересечению — до первого запроса, а не после. Как это устроено.

Уровни вместо порога входа

Требовать от всех максимальной глубины бессмысленно: прайс из Excel так и останется прайсом из Excel. Поэтому модуль цен определяет 3 уровня, и оператор объявляет достигнутый.

УровеньНазваниеТипичный источник
L1 Плоский прайс Прайс-лист, где у строки есть услуга, единица начисления и одна ставка
L2 Условия и модификаторы Ставка зависит от габаритов, схемы, маршрута или объёма; наценки за срочность и минимальный чек
L3 Ступенчатые тарифы Бесплатный период хранения, разная цена первой и последующих единиц, матрицы цены по количеству

Запрос уровня выше не выкидывает оператора из выдачи, а возвращает код pricing_level_insufficient: понятную задачу, а не отказ.

Промах объясняется кодом

Ответ на запрос сметы несёт причины непокрытия из закрытого реестра из 21 кода: не берёт категорию, нет режима хранения, объём ниже минимального. Заявитель понимает, почему выдача узкая; оператор видит, что поправить. Все коды.

Проверяемость

Стандарт, который нельзя прогнать, — это PDF. Здесь канон машиночитаем, а его целостность проверяет валидатор из 40 блокирующих проверок: ссылочная целостность реестров, состав и зависимости модулей, уровни соответствия, перечисления схем против реестров, разрешимость ссылок между схемами.

git clone https://github.com/open-fsp/fsp.git
cd fsp && python3 validate.py

Проверяли не на придуманных примерах: 166 тарифных варианта из трёх реальных прайс-листов операторов разобраны в термины стандарта. Сами прайсы не публикуются — это данные их владельцев. Публично лежит результат: какие конструкции понадобились и что осталось непокрытым, 8 строк в реестре открытых дыр.

Машиночитаемые артефакты отдаются по постоянным адресам: /1.0/<модуль>/schema.json, реестры в JSON и CSV, схема манифеста. Список.