Tec.Delivery требования к REST API для получения данных SCU

Документ описывает обязательные требования к REST API в части получения данных, включая поддержку GET и альтернативного режима POST с JSON-телом запроса.


1. Общие требования к endpoint получения данных

1.1 Поддерживаемые методы

Назначение POST:


2. Формат запроса (POST / JSON body)

Пример запроса:

{
  "modified_since": "2026-02-01T00:00:00Z",
  "limit": 100,
  "offset": 0,
  "parent": 123,
  "ids": ["20020", "20021"]
}

Допустимые параметры:

Примечание по наименованиям полей: Наименования полей, приведённые в документе (например, modified_at, modified_since, image_url, image_hash, parent, next_cursor), указаны в качестве примера и могут отличаться в конкретной реализации.

При этом реализация API должна обеспечивать наличие эквивалентных по смыслу полей/параметров, которые однозначно интерпретируются и позволяют реализовать синхронизацию без потери функциональности:

Требования:


3. Идентификаторы сущностей

Каждый объект должен содержать:

Требования:


4. Контроль изменений данных

Каждый объект должен содержать:

Пример:

"modified_at": "2026-02-09T12:45:33Z"

Назначение: определение изменений с момента последней синхронизации.


5. Инкрементальное получение данных

API должно поддерживать получение только изменённых данных.

Параметр: modified_since

Поддерживается как:

Пример GET:

GET /api/v1/catalog?modified_since=2026-02-01T00:00:00Z

Пример POST:

{
  "modified_since": "2026-02-01T00:00:00Z"
}

Поведение:


6. Пагинация (обязательная)

API должно поддерживать пагинацию.

Варианты:

Пример ответа (limit / offset):

{
  "data": [...],
  "total": 15420,
  "limit": 100,
  "offset": 200
}

Пример ответа (cursor):

{
  "data": [...],
  "next_cursor": "eyJpZCI6MjAwfQ==",
  "has_more": true
}

7. Отдельная передача изображений

Запрещено:

В ответе допускается только:

Пример:

{
  "id": "20020",
  "type": "product",
  "name": "Греча ядрица 900г Националь",
  "image_url": "https://example.com/images/20020.jpg",
  "image_hash": "a94a8fe5ccb19ba61c4c0873d391e987"
}

Требования к URL:


8. Иерархическая структура (parent → child)

Модель синхронизации — древовидная. Глубина вложенности на меене 2 и не более 3:

Пример данных:

{"name": "Бакалея", "type": "category", "parent": 0, "id": "123"}
{"name": "Крупа", "type": "category", "parent": 123, "id": "1020"}
{"type": "product", "name": "Греча ядрица 900г Националь", "sku": "4600935000043", "parent": "1020", "id": "20020"}

Поддержка фильтра:

{
  "parent": 123
}

Требования:


9. Удалённые объекты

Удалённые объекты должны возвращаться при инкрементальной синхронизации.

Допустимые поля:


Итоговые обязательные требования