Связи (Relations)

Ресурс Relations - хранит связи между записями.

Ресурс Relations - хранит связи между записями.

Получить связи

URL: {domain}/api/v1/catalogs/{catalogId}/records/{recordId}/relations

Метод: GET

Данный API-метод возвращает перечень каталогов, полей связи и конкретных записей, которые используют указанную запись как связанную, включая метаинформацию о каталогах, правах доступа пользователя и общее количество связанных записей.

Параметры пути:

  • catalogId (number) — идентификатор каталога

  • recordId (number) — идентификатор записи

Ответ: 200 OK (application/json)

[{ "id": "1", "sectionId": "1", "icon": "content-1", "title": "Название", "privilegeCode": "admin", "fieldId": "2", "fieldName": "Документы", "records": [{ "id": "1", "title": "Название связанного объекта", "created": "2019-08-02T12:21:58.421Z" }], "recordsTotal": 1 }]

Параметры запроса

Все параметры передаются в query-строке URL и являются опциональными. Параметры можно комбинировать для более точной фильтрации результатов.

Фильтрация

**catalogId** — фильтр по каталогам

Фильтрует связи, возвращая только записи из указанных каталогов.

Один каталог:

URL: {domain}/api/v1/catalogs/{catalogId}/records/{recordId}/relations?catalogId={catalogId}

Несколько каталогов:

URL: {domain}/api/v1/catalogs/{catalogId}/records/{recordId}/relations?catalogId={catalogId1}&catalogId={catalogId2}&catalogId={catalogId3}

Где catalogId в query-параметрах — это ID каталога, по которому формируется фильтрация (возвращаемый каталог). При указании нескольких каталогов они перечисляются через знак &.

**fieldId** — фильтр по полю связи

Фильтрует записи по конкретному полю типа "связанный каталог" в указанном каталоге.

Важно: Данный фильтр используется только совместно с фильтром catalogId.

URL: {domain}/api/v1/catalogs/{catalogId}/records/{recordId}/relations?catalogId={catalogId}&fieldId=2

Где 2 — это ID поля типа "связанный каталог" в каталоге, указанном в query-параметре catalogId.

Пример с несколькими каталогами:

URL: {domain}/api/v1/catalogs/27/records/1/relations?catalogId=29&catalogId=28&fieldId=6

В этом случае будут отфильтрованы записи:

  • в каталоге 29 — по полю с id = 6 этого каталога

  • в каталоге 28 — по полю с id = 6 этого каталога

Фильтрация выполняется отдельно внутри каждого указанного каталога по полю с соответствующим id.

**hiddenFields** — отображение скрытых полей

Отображает скрытые поля каталога, указанного в query-параметре catalogId. Если в query-параметре не указаны каталоги фильтрации, то отображение сработает по всем связанным каталогам.

По умолчанию скрытые поля не возвращаются.

URL: {domain}/api/v1/catalogs/{catalogId}/records/{recordId}/relations?catalogId={catalogId}&hiddenFields=true

Пагинация

**limit** — лимит записей

Ограничивает количество возвращаемых записей.

URL: {domain}/api/v1/catalogs/{catalogId}/records/{recordId}/relations?limit=50

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

Пример:

URL: {domain}/api/v1/catalogs/{catalogId}/records/{recordId}/relations?catalogId=29&catalogId=28&limit=50

В таком случае отобразится:

  • 50 записей из каталога 29

  • 50 записей из каталога 28

**offset** — смещение для пагинации

Количество записей, которое необходимо пропустить для смещения (отсчёт начинается с 0).

URL: {domain}/api/v1/catalogs/{catalogId}/records/{recordId}/relations?catalogId={catalogId1}&catalogId={catalogId2}&offset=3

При указании нескольких каталогов фильтрации параметр offset применяется ко всем указанным каталогам.

Сортировка

**sortField** — поле для сортировки

ID поля в каталоге, по которому выполняется сортировка возвращаемых записей.

URL: {domain}/api/v1/catalogs/{catalogId}/records/{recordId}/relations?sortField=7

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

Пример:

URL: {domain}/api/v1/catalogs/{catalogId}/records/{recordId}/relations?catalogId=29&catalogId=28&sortField=7

В таком случае сортировка выполнится по следующему принципу:

  • сортировка значений каталога 29 по его полю с id=7

  • сортировка значений каталога 28 по его полю с id=7

В случае, если в одном из каталогов отсутствует поле с указанным id для сортировки, значения берутся в том порядке, как они указаны в каталоге.

**sortType** — тип сортировки

Тип сортировки (работает только совместно с фильтром sortField).

  • sortType=1 — по возрастанию

  • sortType=-1 — по убыванию

URL: {domain}/api/v1/catalogs/{catalogId}/records/{recordId}/relations?catalogId={catalogId}&sortField=7&sortType=-1