{"openapi":"3.1.0","info":{"title":"QA Деск — публичный REST API","version":"1.0 (сборка f4213d3)","description":"Все ручки живут под `/api/v1`. Версия — часть пути: ломающее изменение выйдет как `/api/v2`, `/api/v1` продолжит отвечать.\n\n**Токен.** Ручки с замком принимают `Authorization: Bearer <токен>` двух видов: персональный токен `qdpt_…` (Настройки → MCP, действует от имени владельца в одном пространстве) и access-JWT сессии кабинета. Персональный токен зовёт только ручки со своим `{workspaceId}`; на чужое пространство и на выпуск токенов — 403 `token_scope`.\n\n**Ошибки.** Единое тело `{ \"error\": { \"code\", \"message\", \"details\", \"requestId\" } }`; `requestId` дублируется заголовком `X-Request-Id` — по нему ищется запрос в журнале.\n\nЗагрузка отчётов автотестов (JUnit/Allure) — не здесь: это токены приёма `qdit_…` и `qadesk-cli upload`, см. `docs/ru/ingest-contract.md`. Инструменты для ИИ-агентов — `POST /mcp`, см. `docs/ru/mcp.md`."},"tags":[{"name":"auth","description":"Аутентификация и профиль"},{"name":"workspaces","description":"Пространства"},{"name":"members","description":"Участники"},{"name":"invites","description":"Приглашения"},{"name":"projects","description":"Проекты"},{"name":"bugs","description":"Дефекты"},{"name":"duplicates","description":"Дубли дефектов"},{"name":"cases","description":"Тест-кейсы"},{"name":"case-folders","description":"Папки кейсов"},{"name":"case-tags","description":"Теги кейсов"},{"name":"plans","description":"Тест-планы"},{"name":"runs","description":"Прогоны"},{"name":"run-configs","description":"Конфигурации прогонов"},{"name":"ingest-tokens","description":"Токены приёма отчётов (CI)"},{"name":"mcp-tokens","description":"Персональные токены"},{"name":"agents","description":"Агенты (AU-25)"},{"name":"seats","description":"Учёт мест"},{"name":"onboarding","description":"Онбординг"},{"name":"sso","description":"SSO пространства"},{"name":"bitrix","description":"Битрикс24"},{"name":"sourcecraft","description":"SourceCraft"},{"name":"sentry","description":"Sentry"},{"name":"alerts","description":"Алёрты мониторинга"},{"name":"ai","description":"ИИ-помощник (свой LLM)"},{"name":"market","description":"Каталог маркета (ML)"},{"name":"meta","description":"Служебное"}],"paths":{"/api/v1/auth/email/confirm":{"post":{"operationId":"Auth_confirm","tags":["auth"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Подтверждение e-mail по токену из письма","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string"}},"required":["token"]}}}}}},"/api/v1/auth/email/resend":{"post":{"operationId":"Auth_resend","tags":["auth"],"responses":{"204":{"description":"Без содержимого"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Повторное письмо подтверждения","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string"}},"required":["email"]}}}}}},"/api/v1/auth/invite/accept":{"post":{"operationId":"InviteAccept_accept","tags":["auth"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Принять приглашение в пространство","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string"},"name":{"type":"string"},"password":{"type":"string"}},"required":["token"]}}}}}},"/api/v1/auth/invite/inspect":{"post":{"operationId":"InviteAccept_inspect","tags":["auth"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Проверить приглашение по токену","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string"}},"required":["token"]}}}}}},"/api/v1/auth/ldap":{"get":{"operationId":"Ldap_status","tags":["auth"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Включён ли вход через LDAP/AD и подпись формы"}},"/api/v1/auth/ldap/login":{"post":{"operationId":"Ldap_login","tags":["auth"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Вход через LDAP/AD: логин и пароль каталога","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"login":{"type":"string"},"password":{"type":"string"}},"required":["login","password"]}}}}}},"/api/v1/auth/login":{"post":{"operationId":"Auth_login","tags":["auth"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Вход: access-JWT и refresh-токен","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string"},"password":{"type":"string"}},"required":["email","password"]}}}}}},"/api/v1/auth/logout":{"post":{"operationId":"Auth_logout","tags":["auth"],"responses":{"204":{"description":"Без содержимого"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Выход: отзыв цепочки refresh","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"refreshToken":{"type":"string"}},"required":["refreshToken"]}}}}}},"/api/v1/auth/mail-settings":{"get":{"operationId":"Auth_mailSettings","tags":["auth"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Настройки почтовых уведомлений","security":[{"bearerAuth":[]}]},"put":{"operationId":"Auth_updateMailSettings","tags":["auth"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Изменить настройки почтовых уведомлений","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"digest":{"type":"string","enum":["off","daily","weekly"]}},"required":["digest"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/auth/mail/unsubscribe":{"post":{"operationId":"Auth_unsubscribe","tags":["auth"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Отписка от рассылки по ссылке из письма","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string"}},"required":["token"]}}}}}},"/api/v1/auth/me":{"get":{"operationId":"Auth_me","tags":["auth"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Профиль текущего пользователя","security":[{"bearerAuth":[]}]}},"/api/v1/auth/oauth/{provider}":{"delete":{"operationId":"Oauth_unlink","tags":["auth"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/auth/oauth/{provider}/callback":{"get":{"operationId":"Oauth_callback","tags":["auth"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string"}}]}},"/api/v1/auth/oauth/{provider}/link":{"post":{"operationId":"Oauth_link","tags":["auth"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/auth/oauth/{provider}/start":{"get":{"operationId":"Oauth_start","tags":["auth"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string"}},{"name":"ws","in":"query","required":false,"schema":{"type":"string"}}]}},"/api/v1/auth/oauth/providers":{"get":{"operationId":"Oauth_providers","tags":["auth"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/auth/oauth/sso/resolve":{"post":{"operationId":"Oauth_resolveSso","tags":["auth"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string"}},"required":["email"]}}}}}},"/api/v1/auth/password/forgot":{"post":{"operationId":"Auth_forgot","tags":["auth"],"responses":{"204":{"description":"Без содержимого"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Запрос сброса пароля (всегда 204)","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string"}},"required":["email"]}}}}}},"/api/v1/auth/password/reset":{"post":{"operationId":"Auth_reset","tags":["auth"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Задать новый пароль по токену из письма","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string"},"password":{"type":"string"}},"required":["token","password"]}}}}}},"/api/v1/auth/refresh":{"post":{"operationId":"Auth_refresh","tags":["auth"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Обмен refresh-токена (ротация)","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"refreshToken":{"type":"string"},"workspaceId":{"type":"string","format":"uuid"}},"required":["refreshToken"]}}}}}},"/api/v1/auth/register":{"post":{"operationId":"Auth_register","tags":["auth"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Регистрация по e-mail и паролю","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string"},"name":{"type":"string"},"password":{"type":"string"}},"required":["email","name","password"]}}}}}},"/api/v1/market/access/{workspaceId}":{"get":{"operationId":"MarketCatalog_access","tags":["market"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/market/catalog":{"get":{"operationId":"MarketCatalog_catalog","tags":["market"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"tag","in":"query","required":false,"schema":{"type":"string"}},{"name":"q","in":"query","required":false,"schema":{"type":"string"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/market/catalog/{slug}":{"get":{"operationId":"MarketCatalog_card","tags":["market"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/market/catalog/{slug}/install":{"post":{"operationId":"MarketCatalog_install","tags":["market"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"workspaceId":{"type":"string","format":"uuid"},"projectId":{"type":"string","format":"uuid"},"folderId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"default":null}},"required":["workspaceId","projectId"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/market/catalog/{slug}/preview":{"get":{"operationId":"MarketCatalog_preview","tags":["market"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/market/catalog/count":{"get":{"operationId":"MarketCatalog_catalogCount","tags":["market"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/market/installs":{"get":{"operationId":"MarketCatalog_installs","tags":["market"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"workspaceId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/market/installs/{installId}/plan":{"get":{"operationId":"MarketCatalog_plan","tags":["market"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"installId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/market/installs/{installId}/remove":{"post":{"operationId":"MarketCatalog_remove","tags":["market"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"installId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/market/installs/{installId}/update":{"post":{"operationId":"MarketCatalog_update","tags":["market"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"installId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"confirmCaseIds":{"type":"array","items":{"type":"string","format":"uuid"},"default":[]}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/market/moderation/entitlements":{"post":{"operationId":"MarketModeration_grant","tags":["market"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"workspaceId":{"type":"string","format":"uuid"},"endsAt":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null}},"required":["workspaceId"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/market/moderation/entitlements/{entitlementId}/revoke":{"post":{"operationId":"MarketModeration_revoke","tags":["market"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"entitlementId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/market/moderation/entitlements/{workspaceId}":{"get":{"operationId":"MarketModeration_entitlements","tags":["market"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/market/moderation/me":{"get":{"operationId":"MarketModeration_me","tags":["market"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/market/moderation/queue":{"get":{"operationId":"MarketModeration_queue","tags":["market"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/market/moderation/versions/{versionId}":{"get":{"operationId":"MarketModeration_detail","tags":["market"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"versionId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/market/moderation/versions/{versionId}/publish":{"post":{"operationId":"MarketModeration_publish","tags":["market"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"versionId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/market/moderation/versions/{versionId}/reject":{"post":{"operationId":"MarketModeration_reject","tags":["market"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"versionId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/market/packages":{"get":{"operationId":"Market_list","tags":["market"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"Market_create","tags":["market"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"summary":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"tags":{"type":"array","items":{"type":"string"},"default":[]}},"required":["slug","name","summary"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/market/packages/{packageId}":{"get":{"operationId":"Market_get","tags":["market"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"packageId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]},"patch":{"operationId":"Market_update","tags":["market"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"packageId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"summary":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"tags":{"type":"array","items":{"type":"string"},"default":[]}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/market/packages/{packageId}/relist":{"post":{"operationId":"Market_relist","tags":["market"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"packageId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/market/packages/{packageId}/unlist":{"post":{"operationId":"Market_unlist","tags":["market"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"packageId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/market/packages/{packageId}/versions":{"post":{"operationId":"Market_createVersion","tags":["market"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"packageId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"workspaceId":{"type":"string","format":"uuid"},"projectId":{"type":"string","format":"uuid"},"caseIds":{"type":"array","items":{"type":"string","format":"uuid"}},"changelog":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null}},"required":["workspaceId","projectId","caseIds"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/market/packages/{packageId}/versions/{version}":{"get":{"operationId":"Market_getVersion","tags":["market"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"packageId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"version","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":[]}]},"delete":{"operationId":"Market_deleteVersion","tags":["market"],"responses":{"204":{"description":"Без содержимого"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"packageId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"version","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/market/packages/{packageId}/versions/{version}/submit":{"post":{"operationId":"Market_submit","tags":["market"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"packageId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"version","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/market/packages/{packageId}/versions/{version}/withdraw":{"post":{"operationId":"Market_withdraw","tags":["market"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"packageId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"version","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/market/publisher":{"get":{"operationId":"Market_profile","tags":["market"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"Market_upsertProfile","tags":["market"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"displayName":{"type":"string"},"bio":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["displayName","bio"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/meta":{"get":{"operationId":"Meta_meta","tags":["meta"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/workspaces":{"get":{"operationId":"Workspace_listMine","tags":["workspaces"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Мои пространства и роли в них","security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}":{"patch":{"operationId":"Workspace_rename","tags":["workspaces"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Переименовать пространство","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/agents":{"get":{"operationId":"Agent_list","tags":["agents"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Агенты пространства","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]},"post":{"operationId":"Agent_create","tags":["agents"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Завести агента (самостоятельный актор, без почты и входа)","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"purpose":{"type":"string"},"role":{"type":"string","enum":["qa","dev","manager","analyst","viewer"]},"ownerId":{"type":"string","format":"uuid"}},"required":["name","role"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/agents/{agentId}":{"patch":{"operationId":"Agent_update","tags":["agents"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Изменить агента: имя, назначение, роль, владелец","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"agentId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"purpose":{"anyOf":[{"type":"string"},{"type":"null"}]},"role":{"type":"string","enum":["qa","dev","manager","analyst","viewer"]},"ownerId":{"type":"string","format":"uuid"}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/agents/{agentId}/disable":{"post":{"operationId":"Agent_disable","tags":["agents"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Выключить агента: все его токены перестают приниматься","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"agentId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/agents/{agentId}/enable":{"post":{"operationId":"Agent_enable","tags":["agents"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Включить агента обратно","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"agentId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/agents/{agentId}/mcp-tokens":{"post":{"operationId":"Agent_createToken","tags":["agents"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Выпустить MCP-токен qdpt_… агенту (секрет один раз)","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"agentId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"]}}}},"security":[{"bearerAuth":[]}]},"get":{"operationId":"Agent_listTokens","tags":["agents"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"MCP-токены агента","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"agentId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/agents/{agentId}/mcp-tokens/{tokenId}/revoke":{"post":{"operationId":"Agent_revokeToken","tags":["agents"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Отозвать MCP-токен агента","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"agentId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"tokenId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/ai":{"get":{"operationId":"Ai_get","tags":["ai"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]},"put":{"operationId":"Ai_put","tags":["ai"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"preset":{"type":"string","enum":["deepseek","openai","custom"],"default":"deepseek"},"baseUrl":{"type":"string"},"model":{"type":"string"},"apiKey":{"type":"string"},"label":{"type":"string","default":"ИИ-помощник"},"enabled":{"type":"boolean","default":true}},"required":["baseUrl","model"]}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"Ai_remove","tags":["ai"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/ai/check":{"post":{"operationId":"Ai_check","tags":["ai"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/ai/generate":{"post":{"operationId":"Ai_generate","tags":["ai"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"bug_title"},"description":{"type":"string"},"steps":{"type":"string"},"actual":{"type":"string"},"expected":{"type":"string"}},"required":["kind","description"]},{"type":"object","properties":{"kind":{"type":"string","const":"case_from_text"},"text":{"type":"string"},"hint":{"type":"string"}},"required":["kind","text"]}],"discriminator":{"propertyName":"kind"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/ai/status":{"get":{"operationId":"Ai_status","tags":["ai"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/alerts":{"get":{"operationId":"AlertConnection_list","tags":["alerts"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/alerts/connections":{"post":{"operationId":"AlertConnection_create","tags":["alerts"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","format":"uuid"},"label":{"type":"string","default":"Мониторинг"},"enabled":{"type":"boolean","default":true},"environment":{"type":"string","enum":["prod","stage","test","dev","local"],"default":"prod"},"platform":{"type":"string","enum":["web","ios","android","desktop","api"],"default":"api"},"severity":{"anyOf":[{"type":"string","enum":["major","minor","trivial"]},{"type":"null"}],"default":null},"standLabel":{"type":"string","default":"env"},"ignoreSeverities":{"type":"array","items":{"type":"string"},"default":["info","information","none","not classified","warning"]}},"required":["projectId"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/alerts/connections/{id}":{"put":{"operationId":"AlertConnection_update","tags":["alerts"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","format":"uuid"},"label":{"type":"string","default":"Мониторинг"},"enabled":{"type":"boolean","default":true},"environment":{"type":"string","enum":["prod","stage","test","dev","local"],"default":"prod"},"platform":{"type":"string","enum":["web","ios","android","desktop","api"],"default":"api"},"severity":{"anyOf":[{"type":"string","enum":["major","minor","trivial"]},{"type":"null"}],"default":null},"standLabel":{"type":"string","default":"env"},"ignoreSeverities":{"type":"array","items":{"type":"string"},"default":["info","information","none","not classified","warning"]}},"required":["projectId"]}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"AlertConnection_remove","tags":["alerts"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/alerts/connections/{id}/rotate-secret":{"post":{"operationId":"AlertConnection_rotate","tags":["alerts"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/bitrix":{"get":{"operationId":"BitrixIntegration_status","tags":["bitrix"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/bitrix/bind":{"post":{"operationId":"BitrixIntegration_bind","tags":["bitrix"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"memberId":{"type":"string"}},"required":["memberId"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/bitrix/departments":{"get":{"operationId":"BitrixIntegration_departments","tags":["bitrix"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/bitrix/groups":{"get":{"operationId":"BitrixIntegration_groups","tags":["bitrix"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"q","in":"query","required":false,"schema":{"type":"string"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/bitrix/links":{"get":{"operationId":"BitrixIntegration_links","tags":["bitrix"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]},"post":{"operationId":"BitrixIntegration_createLink","tags":["bitrix"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"groupId":{"type":"integer"},"projectId":{"type":"string","format":"uuid"}},"required":["groupId","projectId"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/bitrix/links/{linkId}":{"delete":{"operationId":"BitrixIntegration_removeLink","tags":["bitrix"],"responses":{"204":{"description":"Без содержимого"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"linkId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/bitrix/notices":{"put":{"operationId":"BitrixIntegration_setNotices","tags":["bitrix"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"stages":{"type":"boolean"},"comments":{"type":"boolean"}},"required":["stages","comments"],"additionalProperties":false}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/bitrix/portal-groups":{"get":{"operationId":"BitrixIntegration_portalGroups","tags":["bitrix"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]},"post":{"operationId":"BitrixIntegration_decideGroups","tags":["bitrix"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"decisions":{"type":"array","items":{"type":"object","properties":{"groupId":{"type":"integer"},"decision":{"type":"string","enum":["import","skip"]}},"required":["groupId","decision"]}},"sync":{"type":"boolean"}},"required":["decisions"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/bitrix/role-rules":{"get":{"operationId":"BitrixIntegration_roleRules","tags":["bitrix"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]},"put":{"operationId":"BitrixIntegration_putRoleRules","tags":["bitrix"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"rules":{"type":"array","items":{"type":"object","properties":{"priority":{"type":"integer"},"pattern":{"type":"string","default":""},"role":{"type":"string","enum":["qa","dev","manager","analyst","viewer"]},"enabled":{"type":"boolean"},"deptId":{"anyOf":[{"type":"integer"},{"type":"null"}]},"includeChildren":{"type":"boolean"},"headsOnly":{"type":"boolean"}},"required":["priority","role"]}},"groupFallback":{"type":"boolean"}},"required":["rules"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/bitrix/role-rules/apply":{"post":{"operationId":"BitrixIntegration_applyRoleRules","tags":["bitrix"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"align":{"type":"boolean","default":false}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/bitrix/role-rules/preview":{"get":{"operationId":"BitrixIntegration_previewRoleRules","tags":["bitrix"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/bitrix/sync":{"get":{"operationId":"BitrixIntegration_syncStatus","tags":["bitrix"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]},"post":{"operationId":"BitrixIntegration_startSync","tags":["bitrix"],"responses":{"202":{"description":"202"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/bitrix/task-links":{"post":{"operationId":"BitrixIntegration_linkTask","tags":["bitrix"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"bugId":{"type":"string","format":"uuid"},"taskId":{"type":"string"}},"required":["bugId","taskId"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/bitrix/task-links/unlink":{"post":{"operationId":"BitrixIntegration_unlinkTask","tags":["bitrix"],"responses":{"204":{"description":"Без содержимого"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"bugId":{"type":"string","format":"uuid"},"taskId":{"type":"string"}},"required":["bugId","taskId"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/bitrix/tasks":{"get":{"operationId":"BitrixIntegration_tasks","tags":["bitrix"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"q","in":"query","required":false,"schema":{"type":"string"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/bitrix/unbind":{"post":{"operationId":"BitrixIntegration_unbind","tags":["bitrix"],"responses":{"204":{"description":"Без содержимого"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/bugs":{"get":{"operationId":"Bug_list","tags":["bugs"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Список дефектов с фильтрами и курсором","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}},{"name":"itemKind","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}},{"name":"severity","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}},{"name":"priority","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}},{"name":"projectId","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}},{"name":"assignee","in":"query","required":false,"schema":{"anyOf":[{"type":"string","const":"none"},{"type":"string","format":"uuid"}]}},{"name":"b24TaskId","in":"query","required":false,"schema":{"anyOf":[{"type":"string","const":"none"},{"type":"string"}]}},{"name":"q","in":"query","required":false,"schema":{"type":"string"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["createdAt","updatedAt","severity","priority"],"default":"createdAt"}},{"name":"order","in":"query","required":false,"schema":{"type":"string","enum":["asc","desc"],"default":"desc"}}],"security":[{"bearerAuth":[]}]},"post":{"operationId":"Bug_create","tags":["bugs"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Завести дефект (ключ выдаёт сервер: QAD-17)","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","format":"uuid"},"itemKind":{"type":"string","enum":["bug","question","suggestion"],"default":"bug"},"title":{"type":"string"},"description":{"type":"string"},"preconditions":{"anyOf":[{"type":"string"},{"type":"null"}]},"steps":{"anyOf":[{"type":"string"},{"type":"null"}]},"actual":{"anyOf":[{"type":"string"},{"type":"null"}]},"expected":{"anyOf":[{"type":"string"},{"type":"null"}]},"severity":{"anyOf":[{"type":"string","enum":["blocker","critical","major","minor","trivial"]},{"type":"null"}]},"priority":{"anyOf":[{"type":"string","enum":["highest","high","medium","low"]},{"type":"null"}]},"environment":{"type":"string","enum":["prod","stage","test","dev","local"]},"platform":{"type":"string","enum":["web","ios","android","desktop","api"]},"build":{"anyOf":[{"type":"string"},{"type":"null"}]},"assigneeId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]},"attachments":{"type":"array","items":{"type":"object","properties":{"filename":{"type":"string"},"contentType":{"type":"string"},"dataBase64":{"type":"string"}},"required":["filename","contentType","dataBase64"]}}},"required":["projectId","title","description","environment","platform"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/bugs/{bugId}":{"patch":{"operationId":"Bug_update","tags":["bugs"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Изменить поля дефекта","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"bugId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"itemKind":{"type":"string","enum":["bug","question","suggestion"]},"title":{"type":"string"},"description":{"type":"string"},"preconditions":{"anyOf":[{"type":"string"},{"type":"null"}]},"steps":{"anyOf":[{"type":"string"},{"type":"null"}]},"actual":{"anyOf":[{"type":"string"},{"type":"null"}]},"expected":{"anyOf":[{"type":"string"},{"type":"null"}]},"severity":{"anyOf":[{"type":"string","enum":["blocker","critical","major","minor","trivial"]},{"type":"null"}]},"priority":{"anyOf":[{"type":"string","enum":["highest","high","medium","low"]},{"type":"null"}]},"environment":{"type":"string","enum":["prod","stage","test","dev","local"]},"platform":{"type":"string","enum":["web","ios","android","desktop","api"]},"build":{"anyOf":[{"type":"string"},{"type":"null"}]},"projectId":{"type":"string","format":"uuid"}},"additionalProperties":false}}}},"security":[{"bearerAuth":[]}]},"get":{"operationId":"Bug_getById","tags":["bugs"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Карточка дефекта с хвостом ленты","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"bugId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/bugs/{bugId}/assignee":{"post":{"operationId":"Bug_setAssignee","tags":["bugs"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Назначить исполнителя","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"bugId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]}},"required":["userId"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/bugs/{bugId}/attachments":{"post":{"operationId":"Bug_upload","tags":["bugs"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Загрузить вложение к дефекту","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"bugId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/bugs/{bugId}/attachments/{attachmentId}":{"get":{"operationId":"Bug_download","tags":["bugs"],"responses":{"200":{"description":"OK","content":{"application/octet-stream":{"schema":{"type":"string"}}}},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Скачать вложение (файл или 302 на S3)","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"bugId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"attachmentId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]},"delete":{"operationId":"Bug_removeAttachment","tags":["bugs"],"responses":{"204":{"description":"Без содержимого"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Удалить вложение","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"bugId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"attachmentId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/bugs/{bugId}/comments":{"post":{"operationId":"Bug_addComment","tags":["bugs"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Добавить комментарий","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"bugId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"body":{"type":"string"}},"required":["body"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/bugs/{bugId}/comments/{commentId}":{"patch":{"operationId":"Bug_updateComment","tags":["bugs"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Изменить комментарий","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"bugId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"commentId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"body":{"type":"string"}},"required":["body"]}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"Bug_deleteComment","tags":["bugs"],"responses":{"204":{"description":"Без содержимого"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Удалить комментарий","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"bugId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"commentId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/bugs/{bugId}/comments/{commentId}/attachments":{"post":{"operationId":"Bug_uploadCommentAttachment","tags":["bugs"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Загрузить вложение к комментарию","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"bugId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"commentId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/bugs/{bugId}/comments/{commentId}/attachments/{attachmentId}":{"delete":{"operationId":"Bug_removeCommentAttachment","tags":["bugs"],"responses":{"204":{"description":"Без содержимого"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Удалить вложение комментария","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"bugId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"commentId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"attachmentId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/bugs/{bugId}/delete":{"post":{"operationId":"Bug_remove","tags":["bugs"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Удалить дефект (мягко)","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"bugId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string"}},"required":["reason"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/bugs/{bugId}/feed":{"get":{"operationId":"Bug_feed","tags":["bugs"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Лента дефекта (комментарии и события) страницей","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"bugId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":30}},{"name":"before","in":"query","required":false,"schema":{"type":"string"}},{"name":"kind","in":"query","required":false,"schema":{"type":"string","enum":["all","comments","events"],"default":"all"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/bugs/{bugId}/restore":{"post":{"operationId":"Bug_restore","tags":["bugs"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Восстановить удалённый дефект","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"bugId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/bugs/{bugId}/sentry":{"get":{"operationId":"SentryIssue_ofBug","tags":["bugs"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Связи дефекта с issue Sentry","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"bugId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/bugs/{bugId}/sentry/links":{"post":{"operationId":"SentryIssue_link","tags":["bugs"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Связать дефект с issue Sentry","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"bugId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"connectionId":{"type":"string","format":"uuid"},"issue":{"type":"string"}},"required":["connectionId","issue"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/bugs/{bugId}/sentry/links/{linkId}":{"delete":{"operationId":"SentryIssue_unlink","tags":["bugs"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Снять связь с issue Sentry","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"bugId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"linkId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/bugs/{bugId}/sourcecraft":{"get":{"operationId":"SourceCraftIssue_ofBug","tags":["bugs"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Связи дефекта с issue SourceCraft","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"bugId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/bugs/{bugId}/sourcecraft/issues":{"post":{"operationId":"SourceCraftIssue_create","tags":["bugs"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Завести задачу в SourceCraft по дефекту","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"bugId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"repoLinkId":{"type":"string","format":"uuid"}},"required":["repoLinkId"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/bugs/{bugId}/sourcecraft/links":{"post":{"operationId":"SourceCraftIssue_link","tags":["bugs"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Связать дефект с issue SourceCraft","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"bugId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"repoLinkId":{"type":"string","format":"uuid"},"issueSlug":{"type":"string"}},"required":["repoLinkId","issueSlug"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/bugs/{bugId}/sourcecraft/links/{linkId}":{"delete":{"operationId":"SourceCraftIssue_unlink","tags":["bugs"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Снять связь с issue SourceCraft","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"bugId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"linkId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/bugs/{bugId}/sourcecraft/refresh":{"post":{"operationId":"SourceCraftIssue_refresh","tags":["bugs"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Создать issue в SourceCraft из дефекта","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"bugId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/bugs/{bugId}/transition":{"post":{"operationId":"Bug_transition","tags":["bugs"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Перевести дефект по стадиям воркфлоу","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"bugId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"to":{"type":"string","enum":["new","in_progress","resolved","retest","closed","reopened","not_a_bug","deferred"]},"nabReason":{"type":"string","enum":["by_design","cannot_reproduce","duplicate","env_issue","outdated"]},"duplicateOf":{"type":"string","format":"uuid"},"comment":{"type":"string"}},"required":["to"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/bugs/attachments/limits":{"get":{"operationId":"Bug_limits","tags":["bugs"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Лимиты вложений (размер, число)","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/bugs/counts":{"get":{"operationId":"Bug_counts","tags":["bugs"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Счётчики дефектов по стадиям","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}},{"name":"itemKind","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}},{"name":"severity","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}},{"name":"priority","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}},{"name":"projectId","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}},{"name":"assignee","in":"query","required":false,"schema":{"anyOf":[{"type":"string","const":"none"},{"type":"string","format":"uuid"}]}},{"name":"b24TaskId","in":"query","required":false,"schema":{"anyOf":[{"type":"string","const":"none"},{"type":"string"}]}},{"name":"q","in":"query","required":false,"schema":{"type":"string"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/bugs/export.csv":{"get":{"operationId":"Bug_exportCsv","tags":["bugs"],"responses":{"200":{"description":"OK","content":{"text/csv":{"schema":{"type":"string"}}}},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Выгрузка дефектов в CSV","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}},{"name":"itemKind","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}},{"name":"severity","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}},{"name":"priority","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}},{"name":"projectId","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}},{"name":"assignee","in":"query","required":false,"schema":{"anyOf":[{"type":"string","const":"none"},{"type":"string","format":"uuid"}]}},{"name":"b24TaskId","in":"query","required":false,"schema":{"anyOf":[{"type":"string","const":"none"},{"type":"string"}]}},{"name":"q","in":"query","required":false,"schema":{"type":"string"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["createdAt","updatedAt","severity","priority"],"default":"createdAt"}},{"name":"order","in":"query","required":false,"schema":{"type":"string","enum":["asc","desc"],"default":"desc"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/duplicates":{"get":{"operationId":"Workspace_listDuplicates","tags":["duplicates"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Дубли личностей в пространстве (AU-16)","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/duplicates/merge":{"post":{"operationId":"Workspace_merge","tags":["duplicates"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Объединить дубли личности","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"keepUserId":{"type":"string","format":"uuid"},"mergeUserIds":{"type":"array","items":{"type":"string","format":"uuid"}}},"required":["keepUserId","mergeUserIds"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/duplicates/unmerge":{"post":{"operationId":"Workspace_unmerge","tags":["duplicates"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Разъединить объединённую личность","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"userIds":{"type":"array","items":{"type":"string","format":"uuid"}}},"required":["userIds"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/invites":{"post":{"operationId":"Workspace_createInvite","tags":["invites"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Пригласить по e-mail","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string"},"role":{"type":"string","enum":["admin","qa","dev","manager","analyst","viewer"]},"force":{"type":"boolean"}},"required":["email","role"]}}}},"security":[{"bearerAuth":[]}]},"get":{"operationId":"Workspace_listInvites","tags":["invites"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Открытые приглашения","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/invites/{inviteId}":{"delete":{"operationId":"Workspace_revokeInvite","tags":["invites"],"responses":{"204":{"description":"Без содержимого"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Отозвать приглашение","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"inviteId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/mcp-tokens":{"post":{"operationId":"McpToken_create","tags":["mcp-tokens"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Выпустить персональный токен qdpt_… (секрет один раз)","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"]}}}},"security":[{"bearerAuth":[]}]},"get":{"operationId":"McpToken_list","tags":["mcp-tokens"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Мои персональные токены","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/mcp-tokens/{tokenId}/revoke":{"post":{"operationId":"McpToken_revoke","tags":["mcp-tokens"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Отозвать персональный токен","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"tokenId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/members":{"get":{"operationId":"Workspace_listMembers","tags":["members"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Участники пространства","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/members/{userId}/role":{"patch":{"operationId":"Workspace_changeMemberRole","tags":["members"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Сменить роль участника","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"userId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"role":{"type":"string","enum":["admin","qa","dev","manager","analyst","viewer"]}},"required":["role"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/onboarding":{"get":{"operationId":"Onboarding_state","tags":["onboarding"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]},"patch":{"operationId":"Onboarding_patch","tags":["onboarding"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"wizardDone":{"type":"boolean","const":true},"hidden":{"type":"boolean"}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/onboarding/demo":{"post":{"operationId":"Onboarding_seedDemo","tags":["onboarding"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/projects":{"get":{"operationId":"Project_list","tags":["projects"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Проекты пространства","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]},"post":{"operationId":"Project_create","tags":["projects"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Создать проект (код — префикс ключей дефектов)","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"code":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","code"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/projects/{projectId}":{"patch":{"operationId":"Project_update","tags":["projects"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Изменить проект","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"code":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]}}}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"Project_remove","tags":["projects"],"responses":{"204":{"description":"Без содержимого"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Удалить проект","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/projects/{projectId}/case-folders":{"get":{"operationId":"CaseFolder_tree","tags":["case-folders"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Дерево папок кейсов","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]},"post":{"operationId":"CaseFolder_create","tags":["case-folders"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Создать папку","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"parentId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]},"name":{"type":"string"}},"required":["name"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/projects/{projectId}/case-folders/{folderId}":{"patch":{"operationId":"CaseFolder_update","tags":["case-folders"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Переименовать/переместить папку","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"folderId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"parentId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]},"position":{"type":"integer"}}}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"CaseFolder_remove","tags":["case-folders"],"responses":{"204":{"description":"Без содержимого"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Удалить папку","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"folderId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/projects/{projectId}/case-tags":{"get":{"operationId":"CaseTag_list","tags":["case-tags"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Теги кейсов проекта","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]},"post":{"operationId":"CaseTag_create","tags":["case-tags"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Создать тег","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"color":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/projects/{projectId}/case-tags/{tagId}":{"patch":{"operationId":"CaseTag_update","tags":["case-tags"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Переименовать тег","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"tagId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"color":{"anyOf":[{"type":"string"},{"type":"null"}]}}}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"CaseTag_remove","tags":["case-tags"],"responses":{"204":{"description":"Без содержимого"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Удалить тег","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"tagId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/projects/{projectId}/cases":{"get":{"operationId":"Case_list","tags":["cases"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Список тест-кейсов с фильтрами","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}},{"name":"folderId","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"string","const":"root"}]}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["draft","actual","archived"]}},{"name":"tagId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"q","in":"query","required":false,"schema":{"type":"string"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["createdAt","updatedAt"],"default":"createdAt"}},{"name":"order","in":"query","required":false,"schema":{"type":"string","enum":["asc","desc"],"default":"asc"}}],"security":[{"bearerAuth":[]}]},"post":{"operationId":"Case_create","tags":["cases"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Создать тест-кейс","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string"},"preconditions":{"anyOf":[{"type":"string"},{"type":"null"}]},"priority":{"type":"string","enum":["highest","high","medium","low"],"default":"medium"},"steps":{"type":"array","items":{"type":"object","properties":{"action":{"type":"string"},"expected":{"anyOf":[{"type":"string"},{"type":"null"}]},"data":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["action"]}},"folderId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]},"tagIds":{"type":"array","items":{"type":"string","format":"uuid"}}},"required":["title","steps"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/projects/{projectId}/cases/{caseId}":{"get":{"operationId":"Case_get","tags":["cases"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Тест-кейс (текущая версия)","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"caseId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]},"patch":{"operationId":"Case_newVersion","tags":["cases"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Изменить кейс — новая версия","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"caseId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string"},"preconditions":{"anyOf":[{"type":"string"},{"type":"null"}]},"priority":{"type":"string","enum":["highest","high","medium","low"],"default":"medium"},"steps":{"type":"array","items":{"type":"object","properties":{"action":{"type":"string"},"expected":{"anyOf":[{"type":"string"},{"type":"null"}]},"data":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["action"]}},"baseVersion":{"type":"integer"},"note":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["title","steps","baseVersion"]}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"Case_remove","tags":["cases"],"responses":{"204":{"description":"Без содержимого"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Удалить тест-кейс","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"caseId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/projects/{projectId}/cases/{caseId}/bugs":{"get":{"operationId":"Case_linkedBugs","tags":["cases"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Дефекты, связанные с кейсом","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"caseId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]},"post":{"operationId":"Case_linkBug","tags":["cases"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Связать кейс с дефектом","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"caseId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"key":{"type":"string"}},"required":["key"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/projects/{projectId}/cases/{caseId}/bugs/unlink":{"post":{"operationId":"Case_unlinkBug","tags":["cases"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Снять связь кейса с дефектом","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"caseId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"bugId":{"type":"string","format":"uuid"}},"required":["bugId"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/projects/{projectId}/cases/{caseId}/diff":{"get":{"operationId":"Case_diff","tags":["cases"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Разница между версиями кейса","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"caseId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"from","in":"query","required":false,"schema":{"type":"integer"}},{"name":"to","in":"query","required":false,"schema":{"type":"integer"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/projects/{projectId}/cases/{caseId}/status":{"post":{"operationId":"Case_setStatus","tags":["cases"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Сменить статус кейса","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"caseId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["draft","actual","archived"]}},"required":["status"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/projects/{projectId}/cases/{caseId}/tags":{"put":{"operationId":"Case_setTags","tags":["cases"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Задать теги кейса","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"caseId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tagIds":{"type":"array","items":{"type":"string","format":"uuid"}}},"required":["tagIds"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/projects/{projectId}/cases/{caseId}/versions":{"get":{"operationId":"Case_listVersions","tags":["cases"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"История версий кейса","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"caseId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/projects/{projectId}/cases/{caseId}/versions/{version}":{"get":{"operationId":"Case_getVersion","tags":["cases"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Версия кейса по номеру","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"caseId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"version","in":"path","required":true,"schema":{"type":"integer"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/projects/{projectId}/cases/export.csv":{"get":{"operationId":"Case_exportCsv","tags":["cases"],"responses":{"200":{"description":"OK","content":{"text/csv":{"schema":{"type":"string"}}}},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Выгрузка кейсов в CSV","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"folderId","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"string","const":"root"}]}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["draft","actual","archived"]}},{"name":"tagId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"q","in":"query","required":false,"schema":{"type":"string"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/projects/{projectId}/cases/import.csv":{"post":{"operationId":"Case_importCsv","tags":["cases"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Импорт кейсов из CSV","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"text/csv":{"schema":{}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/projects/{projectId}/cases/import.testit":{"post":{"operationId":"Case_importTestIt","tags":["cases"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Импорт кейсов из выгрузки Test IT","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"workItems":{"type":"array","items":{"type":"object","additionalProperties":{}}},"sections":{"type":"array","items":{"type":"object","additionalProperties":{}},"default":[]}},"required":["workItems"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/projects/{projectId}/cases/move":{"post":{"operationId":"Case_move","tags":["cases"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Переместить кейсы в папку","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"caseIds":{"type":"array","items":{"type":"string","format":"uuid"}},"folderId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]}},"required":["caseIds","folderId"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/projects/{projectId}/ingest-tokens":{"post":{"operationId":"IngestToken_create","tags":["ingest-tokens"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Выпустить токен приёма qdit_… для CI (секрет один раз)","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"agentId":{"type":"string","format":"uuid"}},"required":["name"]}}}},"security":[{"bearerAuth":[]}]},"get":{"operationId":"IngestToken_list","tags":["ingest-tokens"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Токены приёма проекта","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/projects/{projectId}/ingest-tokens/{tokenId}/revoke":{"post":{"operationId":"IngestToken_revoke","tags":["ingest-tokens"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Отозвать токен приёма","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"tokenId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/projects/{projectId}/members":{"get":{"operationId":"Project_members","tags":["members"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Участники проекта","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/projects/{projectId}/plans":{"get":{"operationId":"Plan_list","tags":["plans"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Тест-планы проекта","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["active","archived"]}}],"security":[{"bearerAuth":[]}]},"post":{"operationId":"Plan_create","tags":["plans"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Создать тест-план","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/projects/{projectId}/plans/{planId}":{"get":{"operationId":"Plan_get","tags":["plans"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Тест-план","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"planId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]},"patch":{"operationId":"Plan_update","tags":["plans"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Изменить тест-план","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"planId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]}}}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"Plan_remove","tags":["plans"],"responses":{"204":{"description":"Без содержимого"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Удалить тест-план","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"planId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/projects/{projectId}/plans/{planId}/cases":{"get":{"operationId":"Plan_listCases","tags":["plans"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Кейсы плана в порядке выполнения","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"planId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]},"post":{"operationId":"Plan_addCases","tags":["plans"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Добавить кейсы в план","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"planId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"caseIds":{"type":"array","items":{"type":"string","format":"uuid"}}},"required":["caseIds"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/projects/{projectId}/plans/{planId}/cases/remove":{"post":{"operationId":"Plan_removeCases","tags":["plans"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Убрать кейсы из плана","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"planId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"caseIds":{"type":"array","items":{"type":"string","format":"uuid"}}},"required":["caseIds"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/projects/{projectId}/plans/{planId}/cases/reorder":{"post":{"operationId":"Plan_reorderCases","tags":["plans"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Переупорядочить кейсы плана","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"planId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"caseId":{"type":"string","format":"uuid"},"afterCaseId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]}},"required":["caseId","afterCaseId"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/projects/{projectId}/plans/{planId}/cases/select":{"post":{"operationId":"Plan_sliceCases","tags":["plans"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Подобрать кейсы по фильтру в план","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"planId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"folderIds":{"type":"array","items":{"anyOf":[{"type":"string","format":"uuid"},{"type":"string","const":"root"}]}},"tagIds":{"type":"array","items":{"type":"string","format":"uuid"}},"dryRun":{"type":"boolean","default":false}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/projects/{projectId}/plans/{planId}/runs":{"post":{"operationId":"Run_start","tags":["plans"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Запустить прогон по плану","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"planId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"environment":{"type":"string","enum":["prod","stage","test","dev","local"]},"platform":{"type":"string","enum":["web","ios","android","desktop","api"]},"build":{"anyOf":[{"type":"string"},{"type":"null"}]},"configIds":{"type":"array","items":{"type":"string","format":"uuid"}}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/projects/{projectId}/plans/{planId}/status":{"post":{"operationId":"Plan_setStatus","tags":["plans"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Сменить статус плана","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"planId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["active","archived"]}},"required":["status"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/projects/{projectId}/run-configs":{"get":{"operationId":"RunConfig_list","tags":["run-configs"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Конфигурации прогонов проекта","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]},"post":{"operationId":"RunConfig_create","tags":["run-configs"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Создать конфигурацию","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"values":{"type":"object","additionalProperties":{"type":"string"}}},"required":["name","values"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/projects/{projectId}/run-configs/{configId}":{"patch":{"operationId":"RunConfig_update","tags":["run-configs"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Изменить конфигурацию","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"configId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"values":{"type":"object","additionalProperties":{"type":"string"}}}}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"RunConfig_remove","tags":["run-configs"],"responses":{"204":{"description":"Без содержимого"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Удалить конфигурацию","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"configId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/projects/{projectId}/runs":{"get":{"operationId":"Run_list","tags":["runs"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Прогоны проекта","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"planId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["in_progress","completed","aborted"]}},{"name":"configId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/projects/{projectId}/runs/{runId}":{"get":{"operationId":"Run_get","tags":["runs"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Прогон со сводкой","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"runId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/projects/{projectId}/runs/{runId}/cases":{"get":{"operationId":"Run_listCases","tags":["runs"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Кейсы прогона с результатами","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"runId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/projects/{projectId}/runs/{runId}/cases/{caseId}":{"get":{"operationId":"Run_getCase","tags":["runs"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Кейс прогона","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"runId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"caseId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/projects/{projectId}/runs/{runId}/cases/{caseId}/bugs":{"post":{"operationId":"Run_createBug","tags":["runs"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Завести дефект из кейса прогона","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"runId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"caseId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"stepId":{"type":"string","format":"uuid"},"title":{"type":"string"},"actual":{"anyOf":[{"type":"string"},{"type":"null"}]},"severity":{"anyOf":[{"type":"string","enum":["blocker","critical","major","minor","trivial"]},{"type":"null"}]},"priority":{"anyOf":[{"type":"string","enum":["highest","high","medium","low"]},{"type":"null"}]},"environment":{"type":"string","enum":["prod","stage","test","dev","local"]},"platform":{"type":"string","enum":["web","ios","android","desktop","api"]},"build":{"anyOf":[{"type":"string"},{"type":"null"}]},"assigneeId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]},"attachments":{"type":"array","items":{"type":"object","properties":{"filename":{"type":"string"},"contentType":{"type":"string"},"dataBase64":{"type":"string"}},"required":["filename","contentType","dataBase64"]}}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/projects/{projectId}/runs/{runId}/cases/{caseId}/result":{"post":{"operationId":"Run_recordResult","tags":["runs"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Записать результат кейса в прогоне","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"runId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"caseId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"baseVersion":{"type":"integer"},"result":{"type":"string","enum":["untested","passed","failed","blocked","skipped"]},"note":{"anyOf":[{"type":"string"},{"type":"null"}]},"steps":{"type":"array","items":{"type":"object","properties":{"stepId":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["passed","failed","blocked","skipped"]},"note":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["stepId","status"]}}},"required":["baseVersion"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/projects/{projectId}/runs/{runId}/cases/{caseId}/time":{"post":{"operationId":"Run_addTime","tags":["runs"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Добавить затраченное время","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"runId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"caseId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"seconds":{"type":"integer"}},"required":["seconds"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/projects/{projectId}/runs/{runId}/status":{"post":{"operationId":"Run_setStatus","tags":["runs"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Сменить статус прогона","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"runId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["in_progress","completed","aborted"]}},"required":["status"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/projects/{projectId}/runs/dashboard":{"get":{"operationId":"Run_dashboard","tags":["runs"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Сводка по прогонам проекта","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/seats":{"get":{"operationId":"Workspace_seats","tags":["seats"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"summary":"Учёт мест: редакторы, наблюдатели, агенты","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/sentry":{"get":{"operationId":"SentryConnection_list","tags":["sentry"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/sentry/connections":{"post":{"operationId":"SentryConnection_create","tags":["sentry"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"baseUrl":{"type":"string","default":"https://sentry.io"},"orgSlug":{"type":"string"},"projectSlug":{"type":"string"},"projectId":{"type":"string","format":"uuid"},"token":{"type":"string"},"clientSecret":{"type":"string"},"label":{"type":"string","default":"Sentry"},"enabled":{"type":"boolean","default":true},"environment":{"type":"string","enum":["prod","stage","test","dev","local"],"default":"prod"},"platform":{"type":"string","enum":["web","ios","android","desktop","api"],"default":"api"},"severity":{"anyOf":[{"type":"string","enum":["major","minor","trivial"]},{"type":"null"}],"default":null}},"required":["orgSlug","projectSlug","projectId"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/sentry/connections/{id}":{"put":{"operationId":"SentryConnection_update","tags":["sentry"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"baseUrl":{"type":"string","default":"https://sentry.io"},"orgSlug":{"type":"string"},"projectSlug":{"type":"string"},"projectId":{"type":"string","format":"uuid"},"token":{"type":"string"},"clientSecret":{"type":"string"},"label":{"type":"string","default":"Sentry"},"enabled":{"type":"boolean","default":true},"environment":{"type":"string","enum":["prod","stage","test","dev","local"],"default":"prod"},"platform":{"type":"string","enum":["web","ios","android","desktop","api"],"default":"api"},"severity":{"anyOf":[{"type":"string","enum":["major","minor","trivial"]},{"type":"null"}],"default":null}},"required":["orgSlug","projectSlug","projectId"]}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"SentryConnection_remove","tags":["sentry"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/sentry/connections/{id}/check":{"post":{"operationId":"SentryConnection_check","tags":["sentry"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/sentry/connections/{id}/rotate-secret":{"post":{"operationId":"SentryConnection_rotate","tags":["sentry"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/sourcecraft":{"get":{"operationId":"SourceCraftConnection_list","tags":["sourcecraft"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/sourcecraft/connections":{"post":{"operationId":"SourceCraftConnection_create","tags":["sourcecraft"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"orgSlug":{"type":"string"},"pat":{"type":"string"},"label":{"type":"string","default":"SourceCraft"},"expiresAt":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"enabled":{"type":"boolean","default":true}},"required":["orgSlug"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/sourcecraft/connections/{id}":{"put":{"operationId":"SourceCraftConnection_update","tags":["sourcecraft"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"orgSlug":{"type":"string"},"pat":{"type":"string"},"label":{"type":"string","default":"SourceCraft"},"expiresAt":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"enabled":{"type":"boolean","default":true}},"required":["orgSlug"]}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"SourceCraftConnection_remove","tags":["sourcecraft"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/sourcecraft/connections/{id}/check":{"post":{"operationId":"SourceCraftConnection_check","tags":["sourcecraft"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/sourcecraft/connections/{id}/repos":{"post":{"operationId":"SourceCraftConnection_linkRepo","tags":["sourcecraft"],"responses":{"201":{"description":"Создано"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"repoSlug":{"type":"string"},"projectId":{"type":"string","format":"uuid"}},"required":["repoSlug","projectId"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/sourcecraft/connections/{id}/repos/{linkId}":{"delete":{"operationId":"SourceCraftConnection_unlinkRepo","tags":["sourcecraft"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"linkId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/sso":{"get":{"operationId":"Sso_get","tags":["sso"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]},"put":{"operationId":"Sso_upsert","tags":["sso"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"issuer":{"type":"string"},"clientId":{"type":"string"},"clientSecret":{"type":"string"},"label":{"type":"string","default":"Корпоративный вход (SSO)"},"scope":{"type":"string","default":"openid profile email"},"trustEmail":{"type":"boolean","default":false},"emailDomains":{"type":"array","items":{"type":"string"},"default":[]},"defaultRole":{"type":"string","enum":["admin","qa","dev","manager","analyst","viewer"],"default":"viewer"},"enabled":{"type":"boolean","default":true}},"required":["issuer","clientId","scope"]}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"Sso_remove","tags":["sso"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}},"/api/v1/workspaces/{workspaceId}/sso/check":{"post":{"operationId":"Sso_check","tags":["sso"],"responses":{"200":{"description":"OK"},"400":{"description":"Тело или параметры не прошли проверку (`validation_failed`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Нет токена или токен не принят (`unauthorized`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Нет права по роли или токен вне своего пространства (`forbidden`, `token_scope`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]}]}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Персональный токен `qdpt_…` (Настройки → MCP) или access-JWT сессии кабинета"}},"schemas":{"Error":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{},"requestId":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}}