Справочники и значения

Большинство полей вида *_id ссылаются на записи базы данных. Их значения могут отличаться между средами и меняться при настройке проекта. Поэтому API-клиент должен получать живой список, а не копировать ID из примера документации.

Как определить тип значения

ТипПримерКак использовать
Динамический справочникstorage_unit_id, role_id, category_idПолучить list endpoint, сохранить id → объект, периодически обновлять
Значение конкретного методаwebhook event order.paidИспользовать только значения, перечисленные в контракте этого метода
Состояние доменной сущностистатус подписки или доставкиЧитать из доменной страницы; не переносить значения между разными ресурсами
UI-меткацвет, tone, иконкаНе считать частью бизнес-контракта, если поле явно не возвращается API

Seed, запись тестовой базы и пример JSON не превращают ID в стабильную константу.

Рекомендуемый flow

  1. При запуске интеграции запросите нужные справочники.
  2. Сохраните весь объект, а не только название: id, name и дополнительные поля могут понадобиться позже.
  3. Передавайте в write-запрос фактический id.
  4. Обновляйте кэш по TTL либо после 404/422, указывающих на устаревшую ссылку.
  5. Не подбирайте соседний ID и не делайте вывод по пропуску в последовательности.

Готовый запрос: единицы измерения

Endpoint называется storage_units, но wrapper ответа называется units.

curl --request GET 
  --url https://api.gigma.ru/api/storage_units 
  --header 'Accept: application/json' 
  --header 'Authorization: Bearer <erp_access_token>'

Сокращённый успешный ответ:

{
  "units": [
    {
      "id": 7,
      "name": "Штука",
      "abbreviation": "шт"
    }
  ],
  "unitsCount": 1
}

Используйте путь GET /api/storage_units. Пути /api/units в backend нет.

Готовый запрос: способы оплаты витрины

Способы оплаты относятся к клиентскому commerce-контуру и требуют App Token:

curl --request GET 
  --url https://api.gigma.ru/api/counterparty/payment_types 
  --header 'Accept: application/json' 
  --header 'Token: <application_token>'

Сокращённый успешный ответ:

{
  "paymentTypes": [
    {
      "id": 3,
      "photo": null,
      "name": "Оплата при получении",
      "description": null
    }
  ],
  "paymentTypesCount": 1
}

Значения в примерах иллюстративные. Стабильным контрактом являются поля ответа и живые данные конкретного проекта, а не показанные ID.

ERP-справочники

Эти маршруты находятся в административном контуре и требуют ERP Bearer.

НазначениеEndpoint
Статусы заказовGET /api/order_statuses
Типы контрагентовGET /api/counterparty_types
РолиGET /api/roles
РазрешенияGET /api/permissions
ЭкраныGET /api/screens
ОтделыGET /api/departments
Бизнесы и филиалыGET /api/branches
Менеджеры для фильтровGET /api/managers
Ответственные пользователиGET /api/responsible_users
ПользователиGET /api/users?query=<строка>
ГородаGET /api/cities
СтраныGET /api/countries
БрендыGET /api/brands
Категории номенклатурыGET /api/categories
ОбъектыGET /api/objects
Типы номенклатурыGET /api/nomenclature_types
Виды номенклатурыGET /api/nomenclature_kinds
Единицы измеренияGET /api/storage_units
Ставки НДСGET /api/vats
Каналы продажGET /api/sales_channels
Стратегии продажGET /api/sales_strategies
Типы файловGET /api/file_types
Типы страницGET /api/page_types
Способы доставкиGET /api/delivery_types

Некоторые из этих endpoint реализованы как полноценные resources, а некоторые доступны только для чтения. Наличие list endpoint не означает разрешение создавать или изменять его записи.

Справочники клиентского приложения

Эти маршруты находятся под /api/counterparty и требуют App Token.

НазначениеEndpoint
Способы оплатыGET /api/counterparty/payment_types
Способы доставкиGET /api/counterparty/delivery_types
Подтипы доставкиGET /api/counterparty/delivery_types/{type}/subtypes
Категории витриныGET /api/counterparty/categories
Бренды витриныGET /api/counterparty/brands
СтраныGET /api/counterparty/countries
Сводный набор справочниковGET /api/counterparty/dictionaries
Типы страницGET /api/counterparty/page_types
Тарифы подписокGET /api/counterparty/subscription-plans
Каталог подписокGET /api/counterparty/subscription-catalog

Набор и порядок записей определяются настройками Application и Project.

Wrapper тоже является контрактом

Исторические Resource-классы используют разные стили имён:

  • GET /api/storage_unitsunits, unitsCount;
  • GET /api/counterparty/payment_typespaymentTypes, paymentTypesCount;
  • другие справочники могут использовать snake_case, camelCase или собственный wrapper.

Не вычисляйте wrapper из пути. Берите его из карточки метода или OpenAPI и покрывайте контрактным тестом.

Ошибки и реакция клиента

КодПричинаЧто делать
401Не передан либо невалиден Bearer/App TokenВосстановить правильный контекст авторизации
403Нет административного permissionНе повторять; запросить доступ
404Неверный путь, ID либо объект скрыт границей проектаПроверить endpoint и project/application context
422Передан устаревший или недопустимый IDОбновить справочник и повторить пользовательское действие
429Слишком частое обновление спискаИспользовать кэш, Retry-After и backoff

Что запрещено хардкодить

  • числовые ID ролей, разрешений, статусов, типов контрагентов и способов оплаты;
  • предположения о «пропущенном» ID;
  • значения из локального seed как production-контракт;
  • wrapper, выведенный из имени endpoint;
  • UI-tone как доменный статус.

OpenAPI добавляет к известным *_id расширение x-gigma-dictionary со ссылкой на list endpoint, но намеренно не публикует снимок ID как enum.

Следующие шаги

© 2026 Gigma