Skitflow

Теги

Создавайте цветные теги и назначайте их проектам для фильтрации и организации ресурсов.

Теги — это метки уровня организации с именем и цветом. Назначайте их проектам, чтобы группировать и фильтровать ресурсы.

Создание тега

Для тега нужно указать имя (1–64 символа, уникальное в рамках организации). Цвет необязателен и должен быть hex-строкой формата #rrggbb или #rrggbbaa.

POST /api/trpc/tag.create
Content-Type: application/json

{
  "name": "production",
  "color": "#ef4444"
}

Требуется право services.create. Имена тегов должны быть уникальны в организации — попытка создать тег с уже существующим именем вернёт ошибку CONFLICT.

Каждое создание тега фиксируется в audit-логе как действие create над ресурсом tag.

Список тегов

Возвращает все теги активной организации, отсортированные по имени в алфавитном порядке.

GET /api/trpc/tag.all

Получение одного тега

И tag, и dashboard смонтированы в REST/OpenAPI-корне, поэтому tag.one доступен по плоскому пути с API-токеном — в отличие от вызовов /api/trpc/... выше, этот формат принимает обычные query-параметры без обёртки input= в JSON:

curl -X 'GET' \
  'https://your-domain/api/tag.one?tagId=<tag-id>' \
  -H 'accept: application/json' \
  -H 'x-api-key: <token>'

Вернёт NOT_FOUND, если тег не принадлежит активной организации.

Обновление тега

Оба поля name и color необязательны — передавайте только то, что нужно изменить.

POST /api/trpc/tag.update
Content-Type: application/json

{
  "tagId": "<tag-id>",
  "name": "staging",
  "color": "#f59e0b"
}

Требуется право services.update. Переименование в уже существующее имя вернёт CONFLICT.

Удаление тега

POST /api/trpc/tag.remove
Content-Type: application/json

{
  "tagId": "<tag-id>"
}

Требуется право services.delete.

Удаление тега также снимает его со всех проектов, которым он был назначен.

Назначение тега проекту

POST /api/trpc/tag.assignToProject
Content-Type: application/json

{
  "projectId": "<project-id>",
  "tagId": "<tag-id>"
}

Проект и тег должны принадлежать активной организации. Участники с кастомной ролью должны иметь проект в своём гранте accessedProjects; владельцы и администраторы имеют неограниченный доступ.

Повторное назначение одного и того же тега вернёт CONFLICT.

Снятие тега с проекта

POST /api/trpc/tag.removeFromProject
Content-Type: application/json

{
  "projectId": "<project-id>",
  "tagId": "<tag-id>"
}

Те же требования к доступу, что и у assignToProject.

Массовая замена тегов проекта

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

POST /api/trpc/tag.bulkAssign
Content-Type: application/json

{
  "projectId": "<project-id>",
  "tagIds": ["<tag-id-1>", "<tag-id-2>"]
}

Передайте пустой массив tagIds, чтобы снять все теги с проекта.

bulkAssign не включён в OpenAPI-схему, так как array-параметры не поддерживаются генератором tRPC OpenAPI.

Сводка по правам

ОперацияНеобходимое право
Создать тегservices.create
Обновить тегservices.update
Удалить тегservices.delete
Назначить / снять с проектаOwner, Admin или проект в accessedProjects
Список / получение теговЛюбой аутентифицированный участник

Связанное

On this page