Связи сущностей
Связь (link) соединяет проект, портфель или цель с другой сущностью: например, проект может
«зависеть от» другого проекта или «работать над» целью. yatracker предоставляет методы для
получения связей сущности, создания одной или сразу нескольких связей и удаления связи.
Обратите внимание
Как и все методы YaTracker, методы работы со связями сущностей являются асинхронными.
В примерах ниже вызовы показаны так, как будто мы уже находимся внутри корутины.
Родительская сущность — это не связь
Родительский портфель проекта или портфеля и родительская цель цели задаются не здесь, а
полем parentEntity через update_entity (см. «Проекты, портфели и цели»).
Официальная документация: https://yandex.ru/support/tracker/ru/api/entities/links/get-links
Получение связей
get_entity_links
async def get_entity_links(
self,
entity_type: EntityType,
entity_id: str | int,
*,
fields: str | Sequence[str] | None = None,
) -> list[EntityLinkInfo]: ...
Возвращает список связей сущности с другими сущностями.
links = await tracker.get_entity_links(
"project",
"655f3be523db2132",
fields=["id", "summary"],
)
for link in links:
print(link.relationship, link.link_field_values.id, link.link_field_values.summary)
entity_type—"project","portfolio"или"goal".entity_id— идентификатор илиshort_idсущности.fields— какие поля связанных сущностей вернуть (строка или последовательность имён). Без него связи приходят с пустымlink_field_values— то есть у каждой связи будет виден только тип, но не поля связанной сущности.
Источник: https://yandex.ru/support/tracker/ru/api/entities/links/get-links
Создание связи
link_entities
async def link_entities(
self,
entity_type: EntityType,
entity_id: str | int,
relationship: str,
entity: str | int | Sequence[str | int],
) -> bool: ...
Создаёт связь сущности с одной или несколькими другими сущностями. Возвращает True — сам
API документов ответа для этого запроса не описывает.
Одна связь:
await tracker.link_entities(
"project",
"655f3be523db2132",
"is dependent by",
"6582874de6db7f5f00000000",
)
Сразу несколько связей одного типа за один вызов:
await tracker.link_entities(
"project",
"655f3be523db2132",
"works towards",
["65868f3fe2b9ef7400000000", "65868f3fe2b9ef7400000001"],
)
entity_type—"project","portfolio"или"goal".entity_id— идентификатор илиshort_idсущности, от которой создаётся связь.relationship— тип связи:- для проектов и портфелей —
"depends on"(зависит от связанной),"is dependent by"(блокирует связанную) или"works towards"(связь проекта с целью); - для целей —
"parent entity"(родительская цель),"child entity"(подцель),"depends on","is dependent by"или"is supported by"(связь с проектом).
- для проектов и портфелей —
entity— идентификатор связываемой сущности, либо последовательность идентификаторов, чтобы создать сразу несколько связей с однимrelationship. Пустая последовательность вызываетValueError.
Источник: https://yandex.ru/support/tracker/ru/api/entities/links/add-links
Удаление связи
delete_entity_link
async def delete_entity_link(
self,
entity_type: EntityType,
entity_id: str | int,
right: str | int,
) -> bool: ...
Удаляет связь между двумя сущностями. Возвращает True при успехе.
entity_type—"project","portfolio"или"goal".entity_id— идентификатор илиshort_idсущности, у которой удаляется связь.right— идентификатор сущности, с которой удаляется связь.
Источник: https://yandex.ru/support/tracker/ru/api/entities/links/delete-link
Модель EntityLinkInfo
Одна связь сущности, элемент списка, который возвращает get_entity_links.
| Поле | Тип | Описание |
|---|---|---|
relationship |
str \| None |
Тип связи — те же значения, что и у параметра relationship метода link_entities |
link_field_values |
EntityFields |
Поля связанной сущности — только те, что запрошены через fields; при отсутствующем fields модель пуста |
type в ответе, relationship в запросе
Пример ответа API называет это поле type, а таблица параметров запроса — relationship.
EntityLinkInfo.relationship принимает оба имени из ответа API, но при сериализации
(например, model_dump) отдаётся уже как relationship — так же называется одноимённое
поле у EntityLink, который используют create_entity/update_entity для связей,
указанных прямо при создании или изменении сущности.