# Поиск грузов на площадках

Метод возвращает грузы с закрытых площадок, к которым у контакта есть доступ. Биржа ATI.SU в поиск не входит. Для запроса нужен [токен API ATI.SU](https://ati.su/developers/raw/auth/auth.md).

Если `board_ids` не передан или пустой, поиск идёт по всем закрытым площадкам контакта. Чтобы выбрать несколько площадок, повторите параметр: `board_ids=644bdc87dbd6fc3747887c7b&board_ids=644bdc87dbd6fc3747887c7c`.

### Пагинация

Ответ содержит массив `cargos` и общее число грузов `total`. Параметр `take` задаёт размер страницы от 1 до 100, по умолчанию 100; `skip` — число пропускаемых грузов, по умолчанию 0.

Запрос с `skip=0` создаёт снимок выдачи на 15 минут. Следующие страницы запрашивайте с теми же фильтрами, увеличивая `skip` на `take`. Снятый с площадок груз может выпасть из страницы, поэтому короткая страница сама по себе не означает конец выдачи. Сумма `skip + take` не должна превышать 10 000; для более глубокой выдачи сузьте поиск через `updated_since` или `board_ids`.

### Переход с byboards

Новый метод заменяет `GET /v1.0/loads/search/byboards`. При переходе измените адрес запроса, параметры и обработку ответа:

- Используйте `board_ids` вместо `boardIds`. Старое имя новый метод игнорирует, что приведёт к поиску по всем закрытым площадкам контакта.
- Читайте грузы из `cargos`, а число результатов — из `total`; загружайте следующие страницы через `skip` и `take`.
- Модель груза основана на вебхуке `cargoes.on_boards`. Даты погрузки и разгрузки передаются как `YYYY-MM-DD`; поля со значением `null` отсутствуют. Модель отличается от ответа прежнего метода, поэтому одной замены URL недостаточно.
- Id торгов находится в `payment.auction_id` при `payment.type=auction` вместо прежнего `AuctionID`.

<a id="get-integration-v1-loads-search-by-boards"></a>

Возвращает страницу грузов с закрытых площадок контакта в модели вебхука cargoes.on_boards.

API для интеграции. Ищет грузы на закрытых площадках, к которым у контакта есть доступ; Биржа ATI.SU в поиск не входит. Авторизация — токен API ATI.SU: https://ati.su/developers/auth/auth/. Порядок выдачи: сначала грузы только с закрытых площадок, затем по added_at от новых к старым. Запрос с skip = 0 ищет заново и запоминает выдачу на 15 минут; запросы с skip > 0 листают запомненную выдачу. Груз, снятый с площадок между запросами, из страницы выпадает, поэтому страница бывает короче take. skip + take — не больше 10 000: дальше выдачу сужают через updated_since или board_ids. Модель груза основана на вебхуке cargoes.on_boards. Отличия: даты погрузки и разгрузки — YYYY-MM-DD, у промежуточных точек нет organization; поля со значением null не пишутся.

**Пример запроса (curl):**

```bash
curl 'https://api.ati.su/gw/search_loads/integration/v1/loads/search/by-boards?board_ids=%5B%22644bdc87dbd6fc3747887c7b%22%5D&updated_since=2026-09-28T07%3A00%3A00.000Z&skip=0&take=100' \
  -X 'GET' \
  -H 'Authorization: Bearer {authorizationToken}' \
  -H 'Content-Type: application/json'
```

**OpenAPI схема:** [JSON](https://ati.su/developers/raw/api/loads/search.openapi.json)

**Описание параметров запроса**
- `board_ids (query, тип: array)` — Id закрытых площадок контакта, 24 шестнадцатеричных символа. Параметр повторяется: board_ids=644bdc87dbd6fc3747887c7b&board_ids=644bdc87dbd6fc3747887c7c. Не передан или пустой — поиск по всем закрытым площадкам контакта. В /v1.0/loads/search/byboards параметр назывался boardIds; неизвестные параметры метод не проверяет, а пропускает. Остальные параметры передаются один раз
- `updated_since (query, тип: string)` — Отбирает грузы с updated_at не раньше этого момента. ISO 8601 с часовым поясом, например 2026-09-28T07:00:00.000Z. Смещение передавайте с экранированным плюсом (%2B03:00): неэкранированный «+» в query string читается как пробел. Время без часового пояса метод отклоняет с ошибкой 400
- `skip (query, тип: integer,string)` — Сколько грузов выдачи пропустить, от 0. По умолчанию 0. skip + take — не больше 10 000: дальше выдачу сужают через updated_since или board_ids
- `take (query, тип: integer,string)` — Сколько грузов вернуть, от 1 до 100. По умолчанию 100

**Пример ответа (200)**

```json
{
  "cargos": [
    {
      "cargo_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "cargo_number": "ABC1234",
      "added_at": "2026-09-28T07:00:00.123+00:00",
      "updated_at": "2026-09-28T09:15:30.25+00:00",
      "refreshed_at": "2026-09-28T10:00:00+00:00",
      "persistent_user_id": 1234567,
      "ati_id": 1234567,
      "route": {
        "loading": {
          "city_id": 3611,
          "address": "ул. Ленина, д. 10",
          "coordinates": {
            "longitude": 37.6173,
            "latitude": 55.7558
          },
          "organization": {
            "name": "ООО Транспорт",
            "ownership": 3
          },
          "near_cities": [
            0
          ],
          "dates": {
            "type": "ready",
            "is_available_tomorrow": false,
            "time": {
              "type": "bounded",
              "start": "08:00:00",
              "end": "18:00:00",
              "offset": "03:00:00"
            },
            "first_date": "2026-09-28",
            "last_date": "2026-09-30"
          },
          "cargos": [
            {
              "name_id": 112,
              "name": "Трубы",
              "packaging": {
                "type": 2,
                "quantity": 20
              },
              "cargo_id": 1,
              "weight": {
                "type": "tons",
                "quantity": 20
              },
              "volume": {
                "quantity": 82
              },
              "sizes": {
                "length": {
                  "value": 13.6,
                  "is_highlighted": false
                },
                "height": {
                  "value": 13.6,
                  "is_highlighted": false
                },
                "width": {
                  "value": 13.6,
                  "is_highlighted": false
                },
                "diameter": 1.2
              }
            }
          ]
        },
        "unloading": {
          "city_id": 1,
          "address": "ул. Ленина, д. 10",
          "coordinates": {
            "longitude": 37.6173,
            "latitude": 55.7558
          },
          "organization": {
            "name": "ООО Транспорт",
            "ownership": 3
          },
          "near_cities": [
            0
          ],
          "dates": {
            "first_date": "2026-09-28",
            "last_date": "2026-09-30",
            "time": {
              "type": "bounded",
              "start": "08:00:00",
              "end": "18:00:00",
              "offset": "03:00:00"
            }
          }
        },
        "way_points": [
          {
            "type": "loading",
            "cargos": [
              {
                "name_id": 112,
                "name": "Трубы",
                "packaging": {
                  "type": 2,
                  "quantity": 20
                },
                "cargo_id": 1,
                "weight": {
                  "type": "tons",
                  "quantity": 20
                },
                "volume": {
                  "quantity": 82
                },
                "sizes": {
                  "length": {
                    "value": 13.6,
                    "is_highlighted": false
                  },
                  "height": {
                    "value": 13.6,
                    "is_highlighted": false
                  },
                  "width": {
                    "value": 13.6,
                    "is_highlighted": false
                  },
                  "diameter": 1.2
                }
              }
            ],
            "loading_date": {
              "first_date": "2026-09-28",
              "last_date": "2026-09-30",
              "time": {
                "type": "bounded",
                "start": "08:00:00",
                "end": "18:00:00",
                "offset": "03:00:00"
              }
            },
            "city_id": 3611,
            "address": "ул. Ленина, д. 10",
            "coordinates": {
              "longitude": 37.6173,
              "latitude": 55.7558
            },
            "catalogs_organization": {
              "name": "ООО Транспорт",
              "ownership": 3
            }
          }
        ],
        "is_round_trip": false
      },
      "truck": {
        "trucks_count": 1,
        "load_type": "ftl",
        "body_types": [
          0
        ],
        "body_loading": {
          "types": [
            0
          ],
          "is_all_required": false
        },
        "body_unloading": {
          "types": [
            0
          ],
          "is_all_required": false
        },
        "temperature": {
          "from": -18,
          "to": -15
        },
        "documents": {
          "tir": false,
          "cmr": true,
          "t1": false,
          "medical_card": false
        },
        "requirements": {
          "logging_truck": false,
          "road_train": false,
          "air_suspension": false,
          "team_driving": false
        },
        "adr": 3,
        "belts_count": 4,
        "is_tracking": true,
        "required_capacity": 20
      },
      "payment": {
        "type": "auction",
        "auction_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
        "direct_offer": false,
        "prepayment": {
          "percent": 30,
          "using_fuel": false
        },
        "payment_mode": {
          "type": "delayed-payment",
          "payment_delay_days": 5
        }
      },
      "documents": [
        {
          "id": "644bdc87dbd6fc3747887c7b",
          "name": "ТТН",
          "link": "https://files.example.com/documents/ttn.pdf"
        }
      ],
      "boards": [
        {
          "id": "644bdc87dbd6fc3747887c7b",
          "reservation_enabled": true
        }
      ],
      "note": "Нужен гидроборт",
      "contacts": [
        0
      ],
      "distance": 715,
      "offer_count": 3
    }
  ],
  "total": 154
}
```

**Описание полей ответа**
- `cargos` — Грузы страницы в модели вебхука cargoes.on_boards
- `cargos[].cargo_id` — Id груза
- `cargos[].cargo_number` — Номер груза, который присваивает ATI.SU
- `cargos[].added_at` — Время добавления груза, UTC
- `cargos[].updated_at` — Время последнего изменения груза, UTC
- `cargos[].refreshed_at` — Время последнего поднятия груза, UTC
- `cargos[].persistent_user_id` — Id фирмы-владельца груза
- `cargos[].ati_id` — Код АТИ фирмы-владельца груза. Поля нет, если код временно недоступен
- `cargos[].route` — Маршрут
- `cargos[].route.loading` — Погрузка
- `cargos[].route.loading.city_id` — Id населённого пункта. dict: POST /gw/gis-dict/v1/cities/by-ids → city_id
- `cargos[].route.loading.address` — Адрес в населённом пункте
- `cargos[].route.loading.coordinates` — Координаты адреса
- `cargos[].route.loading.coordinates.longitude` — Долгота
- `cargos[].route.loading.coordinates.latitude` — Широта
- `cargos[].route.loading.organization` — Организация из справочника, если в точке указана организация
- `cargos[].route.loading.organization.name` — Название организации
- `cargos[].route.loading.organization.ownership` — Id организационно-правовой формы. dict: GET /v1.0/dictionaries/ownerships → Id
- `cargos[].route.loading.near_cities` — Id ближайших крупных населённых пунктов. dict: POST /gw/gis-dict/v1/cities/by-ids → city_id
- `cargos[].route.loading.dates` — Даты погрузки
- `cargos[].route.loading.dates.type` — Даты погрузки. Тип в поле type: ready — готов к погрузке, from-date — с указанной даты, permanent — постоянный груз, rate-request — запрос ставки, груза ещё нет
- `cargos[].route.loading.dates.is_available_tomorrow` — Груз готов к погрузке сегодня и завтра
- `cargos[].route.loading.dates.time` — Время погрузки
- `cargos[].route.loading.dates.time.type` — Время погрузки или разгрузки. Тип в поле type: bounded — интервал, round-the-clock — круглосуточно
- `cargos[].route.loading.dates.time.start` — Начало интервала, HH:mm:ss
- `cargos[].route.loading.dates.time.end` — Конец интервала, HH:mm:ss
- `cargos[].route.loading.dates.time.offset` — Смещение часового пояса точки от UTC, HH:mm:ss; западнее Гринвича — со знаком минус
- `cargos[].route.loading.dates.first_date` — Первый день погрузки, календарная дата в формате YYYY-MM-DD
- `cargos[].route.loading.dates.last_date` — Последний день погрузки, календарная дата в формате YYYY-MM-DD
- `cargos[].route.loading.cargos` — Грузы на погрузку
- `cargos[].route.loading.cargos[].name_id` — Id наименования груза. dict: GET /v1.0/dictionaries/cargoTypes → Id
- `cargos[].route.loading.cargos[].name` — Наименование груза
- `cargos[].route.loading.cargos[].packaging` — Упаковка
- `cargos[].route.loading.cargos[].packaging.type` — Id типа упаковки. dict: GET /v1.0/dictionaries/packTypes → Id
- `cargos[].route.loading.cargos[].packaging.quantity` — Количество мест
- `cargos[].route.loading.cargos[].cargo_id` — Порядковый номер груза внутри заявки
- `cargos[].route.loading.cargos[].weight` — Вес
- `cargos[].route.loading.cargos[].weight.type` — Единица веса: tons — тонны, kilos — килограммы
- `cargos[].route.loading.cargos[].weight.quantity` — Вес в единицах из type
- `cargos[].route.loading.cargos[].volume` — Объём
- `cargos[].route.loading.cargos[].volume.quantity` — Объём, м³
- `cargos[].route.loading.cargos[].sizes` — Габариты
- `cargos[].route.loading.cargos[].sizes.length` — Длина
- `cargos[].route.loading.cargos[].sizes.length.value` — Значение, метры
- `cargos[].route.loading.cargos[].sizes.length.is_highlighted` — Выделять значение цветом в результатах поиска
- `cargos[].route.loading.cargos[].sizes.height` — Высота
- `cargos[].route.loading.cargos[].sizes.height.value` — Значение, метры
- `cargos[].route.loading.cargos[].sizes.height.is_highlighted` — Выделять значение цветом в результатах поиска
- `cargos[].route.loading.cargos[].sizes.width` — Ширина
- `cargos[].route.loading.cargos[].sizes.width.value` — Значение, метры
- `cargos[].route.loading.cargos[].sizes.width.is_highlighted` — Выделять значение цветом в результатах поиска
- `cargos[].route.loading.cargos[].sizes.diameter` — Диаметр, метры
- `cargos[].route.unloading` — Разгрузка
- `cargos[].route.unloading.city_id` — Id населённого пункта. dict: POST /gw/gis-dict/v1/cities/by-ids → city_id
- `cargos[].route.unloading.address` — Адрес в населённом пункте
- `cargos[].route.unloading.coordinates` — Координаты адреса
- `cargos[].route.unloading.coordinates.longitude` — Долгота
- `cargos[].route.unloading.coordinates.latitude` — Широта
- `cargos[].route.unloading.organization` — Организация из справочника, если в точке указана организация
- `cargos[].route.unloading.organization.name` — Название организации
- `cargos[].route.unloading.organization.ownership` — Id организационно-правовой формы. dict: GET /v1.0/dictionaries/ownerships → Id
- `cargos[].route.unloading.near_cities` — Id ближайших крупных населённых пунктов. dict: POST /gw/gis-dict/v1/cities/by-ids → city_id
- `cargos[].route.unloading.dates` — Даты разгрузки. Поля нет, если даты и время разгрузки не указаны
- `cargos[].route.unloading.dates.first_date` — Первый день разгрузки, календарная дата в формате YYYY-MM-DD
- `cargos[].route.unloading.dates.last_date` — Последний день разгрузки, календарная дата в формате YYYY-MM-DD
- `cargos[].route.unloading.dates.time` — Время разгрузки
- `cargos[].route.unloading.dates.time.type` — Время погрузки или разгрузки. Тип в поле type: bounded — интервал, round-the-clock — круглосуточно
- `cargos[].route.unloading.dates.time.start` — Начало интервала, HH:mm:ss
- `cargos[].route.unloading.dates.time.end` — Конец интервала, HH:mm:ss
- `cargos[].route.unloading.dates.time.offset` — Смещение часового пояса точки от UTC, HH:mm:ss; западнее Гринвича — со знаком минус
- `cargos[].route.way_points` — Промежуточные точки в порядке следования
- `cargos[].route.way_points[].type` — Промежуточная точка маршрута. Тип в поле type: loading — погрузка, unloading — разгрузка, customs — таможня, go-through — ехать через
- `cargos[].route.way_points[].cargos` — Грузы на погрузку
- `cargos[].route.way_points[].cargos[].name_id` — Id наименования груза. dict: GET /v1.0/dictionaries/cargoTypes → Id
- `cargos[].route.way_points[].cargos[].name` — Наименование груза
- `cargos[].route.way_points[].cargos[].packaging` — Упаковка
- `cargos[].route.way_points[].cargos[].packaging.type` — Id типа упаковки. dict: GET /v1.0/dictionaries/packTypes → Id
- `cargos[].route.way_points[].cargos[].packaging.quantity` — Количество мест
- `cargos[].route.way_points[].cargos[].cargo_id` — Порядковый номер груза внутри заявки
- `cargos[].route.way_points[].cargos[].weight` — Вес
- `cargos[].route.way_points[].cargos[].weight.type` — Единица веса: tons — тонны, kilos — килограммы
- `cargos[].route.way_points[].cargos[].weight.quantity` — Вес в единицах из type
- `cargos[].route.way_points[].cargos[].volume` — Объём
- `cargos[].route.way_points[].cargos[].volume.quantity` — Объём, м³
- `cargos[].route.way_points[].cargos[].sizes` — Габариты
- `cargos[].route.way_points[].cargos[].sizes.length` — Длина
- `cargos[].route.way_points[].cargos[].sizes.length.value` — Значение, метры
- `cargos[].route.way_points[].cargos[].sizes.length.is_highlighted` — Выделять значение цветом в результатах поиска
- `cargos[].route.way_points[].cargos[].sizes.height` — Высота
- `cargos[].route.way_points[].cargos[].sizes.height.value` — Значение, метры
- `cargos[].route.way_points[].cargos[].sizes.height.is_highlighted` — Выделять значение цветом в результатах поиска
- `cargos[].route.way_points[].cargos[].sizes.width` — Ширина
- `cargos[].route.way_points[].cargos[].sizes.width.value` — Значение, метры
- `cargos[].route.way_points[].cargos[].sizes.width.is_highlighted` — Выделять значение цветом в результатах поиска
- `cargos[].route.way_points[].cargos[].sizes.diameter` — Диаметр, метры
- `cargos[].route.way_points[].loading_date` — Даты погрузки в точке
- `cargos[].route.way_points[].loading_date.first_date` — Первый день прибытия в точку, календарная дата в формате YYYY-MM-DD
- `cargos[].route.way_points[].loading_date.last_date` — Последний день прибытия в точку, календарная дата в формате YYYY-MM-DD
- `cargos[].route.way_points[].loading_date.time` — Время в точке
- `cargos[].route.way_points[].loading_date.time.type` — Время погрузки или разгрузки. Тип в поле type: bounded — интервал, round-the-clock — круглосуточно
- `cargos[].route.way_points[].loading_date.time.start` — Начало интервала, HH:mm:ss
- `cargos[].route.way_points[].loading_date.time.end` — Конец интервала, HH:mm:ss
- `cargos[].route.way_points[].loading_date.time.offset` — Смещение часового пояса точки от UTC, HH:mm:ss; западнее Гринвича — со знаком минус
- `cargos[].route.way_points[].city_id` — Id населённого пункта. dict: POST /gw/gis-dict/v1/cities/by-ids → city_id
- `cargos[].route.way_points[].address` — Адрес в населённом пункте
- `cargos[].route.way_points[].coordinates` — Координаты адреса
- `cargos[].route.way_points[].coordinates.longitude` — Долгота
- `cargos[].route.way_points[].coordinates.latitude` — Широта
- `cargos[].route.way_points[].catalogs_organization` — Организация из справочника, если в точке указана организация. Поле называется как в вебхуке cargoes.on_boards
- `cargos[].route.way_points[].catalogs_organization.name` — Название организации
- `cargos[].route.way_points[].catalogs_organization.ownership` — Id организационно-правовой формы. dict: GET /v1.0/dictionaries/ownerships → Id
- `cargos[].route.is_round_trip` — Кругорейс
- `cargos[].truck` — Требования к транспорту
- `cargos[].truck.trucks_count` — Сколько машин нужно
- `cargos[].truck.load_type` — Загрузка: ftl — отдельной машиной, dont-care — не важно
- `cargos[].truck.body_types` — Типы кузова. dict: GET /v1.0/dictionaries/carTypes → TypeId
- `cargos[].truck.body_loading` — Способы погрузки
- `cargos[].truck.body_loading.types` — Id способов. dict: GET /v1.0/dictionaries/loadingTypes → Id
- `cargos[].truck.body_loading.is_all_required` — Нужны все перечисленные способы, а не любой из них
- `cargos[].truck.body_unloading` — Способы разгрузки
- `cargos[].truck.body_unloading.types` — Id способов. dict: GET /v1.0/dictionaries/loadingTypes → Id
- `cargos[].truck.body_unloading.is_all_required` — Нужны все перечисленные способы, а не любой из них
- `cargos[].truck.temperature` — Температурный режим
- `cargos[].truck.temperature.from` — Нижняя граница
- `cargos[].truck.temperature.to` — Верхняя граница
- `cargos[].truck.documents` — Разрешения
- `cargos[].truck.documents.tir` — Нужна книжка TIR
- `cargos[].truck.documents.cmr` — Нужна накладная CMR
- `cargos[].truck.documents.t1` — Нужна декларация T1
- `cargos[].truck.documents.medical_card` — Нужна медкнижка
- `cargos[].truck.requirements` — Требования к машине
- `cargos[].truck.requirements.logging_truck` — Нужны коники
- `cargos[].truck.requirements.road_train` — Нужна сцепка
- `cargos[].truck.requirements.air_suspension` — Нужен пневмоход
- `cargos[].truck.requirements.team_driving` — Нужен экипаж — два водителя
- `cargos[].truck.adr` — Класс опасности груза ADR
- `cargos[].truck.belts_count` — Сколько нужно ремней
- `cargos[].truck.is_tracking` — Нужен трекинг через АТИ Водитель
- `cargos[].truck.required_capacity` — Требуемая грузоподъёмность, т
- `cargos[].payment` — Условия оплаты
- `cargos[].payment.type` — Условия оплаты. Тип в поле type: with-bargaining — ставка с торгом, without-bargaining — ставка без торга, rate-request — запрос ставки, auction — торги
- `cargos[].payment.auction_id` — Id торгов
- `cargos[].payment.direct_offer` — Прямой договор с грузовладельцем
- `cargos[].payment.prepayment` — Предоплата
- `cargos[].payment.prepayment.percent` — Процент предоплаты
- `cargos[].payment.prepayment.using_fuel` — Предоплата топливом
- `cargos[].payment.payment_mode` — Момент оплаты
- `cargos[].payment.payment_mode.type` — Момент оплаты. Тип в поле type: delayed-payment — с отсрочкой, on-unloading — на выгрузке
- `cargos[].payment.payment_mode.payment_delay_days` — Отсрочка, банковских дней
- `cargos[].documents` — Фото груза и документы
- `cargos[].documents[].id` — Id файла
- `cargos[].documents[].name` — Название
- `cargos[].documents[].link` — Ссылка на файл
- `cargos[].boards` — Опубликованные размещения груза на площадках из запроса, видимые фирме. На площадке, где участники видят только свои грузы, фирма видит только размещения своих грузов
- `cargos[].boards[].id` — Id площадки
- `cargos[].boards[].reservation_enabled` — Перевозчики могут забронировать груз
- `cargos[].note` — Примечание к грузу
- `cargos[].contacts` — Id контактов фирмы-владельца, указанных в грузе
- `cargos[].distance` — Расстояние маршрута, км. 0, если маршрут ещё не посчитан
- `cargos[].offer_count` — Число встречных предложений. Перевозчик видит его на сайте как «Предложений: N». Поля нет, если счётчик временно недоступен
- `total` — Число грузов во всей выдаче, а не на странице

**Пример ответа (400)**

```json
{
  "error": "validation_errors",
  "reason": "Некорректные параметры запроса",
  "error_list": [
    {
      "error": "invalid_take",
      "reason": "take должен быть от 1 до 100"
    }
  ],
  "details": {
    "board_ids": [
      "string"
    ]
  }
}
```

**Описание полей ответа**
- `error` — Код ошибки: validation_errors, unauthorized, search_forbidden, access_denied, boards_access_denied, unknown_server_error
- `reason` — Описание ошибки для человека
- `error_list` — Ошибки по отдельным параметрам запроса. Есть только у ошибки validation_errors
- `error_list[].error` — Код ошибки
- `error_list[].reason` — Описание ошибки для человека
- `details` — Подробности ошибки. Есть только у ошибки boards_access_denied
- `details.board_ids` — Id площадок из запроса, к которым у контакта нет доступа: Биржа ATI.SU или чужие закрытые площадки
---

## llms.txt

Индекс ключевых страниц документации для LLM и AI-агентов доступен в [основном llms.txt](https://ati.su/developers/llms.txt).
