Теги
Создавайте цветные теги и назначайте их проектам для фильтрации и организации ресурсов.
Теги — это метки уровня организации с именем и цветом. Назначайте их проектам, чтобы группировать и фильтровать ресурсы.
Создание тега
Для тега нужно указать имя (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 |
| Список / получение тегов | Любой аутентифицированный участник |