1212 lines
40 KiB
YAML
1212 lines
40 KiB
YAML
openapi: 3.0.3
|
||||
|
|
info:
|
|||
|
|
title: NoCopy API
|
|||
|
|
description: API NoCopy
|
|||
|
|
version: 1.0.0
|
|||
|
|
contact:
|
|||
|
|
name: NoCopy
|
|||
|
|
|
|||
|
|
servers:
|
|||
|
|
- url: http://localhost:8080
|
|||
|
|
description: Локальный
|
|||
|
|
- url: https://dev-workspace.not-copy.com/
|
|||
|
|
description: Дев
|
|||
|
|
|
|||
|
|
tags:
|
|||
|
|
- name: Auth
|
|||
|
|
description: Аутентификация и регистрация
|
|||
|
|
- name: Files
|
|||
|
|
description: Работа с файлами (загрузка, скачивание, проверка)
|
|||
|
|
- name: Data
|
|||
|
|
description: Основные операции с данными
|
|||
|
|
- name: Internal
|
|||
|
|
description: Внутренние эндпоинты для администрирования
|
|||
|
|
|
|||
|
|
paths:
|
|||
|
|
/api/auth:
|
|||
|
|
post:
|
|||
|
|
tags:
|
|||
|
|
- Auth
|
|||
|
|
summary: Универсальный эндпоинт аутентификации
|
|||
|
|
description: |
|
|||
|
|
Обрабатывает запросы аутентификации по msg_id:
|
|||
|
|
- **20001** - Вход в систему
|
|||
|
|
- **20002** - Регистрация
|
|||
|
|
- **20010** - Сброс пароля
|
|||
|
|
operationId: handleAuth
|
|||
|
|
requestBody:
|
|||
|
|
required: true
|
|||
|
|
content:
|
|||
|
|
application/json:
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/components/schemas/BaseRequest'
|
|||
|
|
examples:
|
|||
|
|
login:
|
|||
|
|
summary: Вход в систему
|
|||
|
|
value:
|
|||
|
|
msg_id: 20001
|
|||
|
|
message_body:
|
|||
|
|
email: "user@example.com"
|
|||
|
|
password: "securePassword123"
|
|||
|
|
register:
|
|||
|
|
summary: Регистрация
|
|||
|
|
value:
|
|||
|
|
msg_id: 20002
|
|||
|
|
message_body:
|
|||
|
|
fullName: "Vladislav Sergevich"
|
|||
|
|
email: "321@mail.ru"
|
|||
|
|
password: "qweqweqwe123"
|
|||
|
|
phone: "+79994521523"
|
|||
|
|
mail_verified: "false"
|
|||
|
|
accountType: "b2c"
|
|||
|
|
ip: "127.0.0.1"
|
|||
|
|
user_agent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)"
|
|||
|
|
resetPassword:
|
|||
|
|
summary: Сброс пароля
|
|||
|
|
value:
|
|||
|
|
version: 1
|
|||
|
|
msg_id: 20010
|
|||
|
|
message_body:
|
|||
|
|
email: "user@example.com"
|
|||
|
|
responses:
|
|||
|
|
'200':
|
|||
|
|
description: Успешный ответ
|
|||
|
|
content:
|
|||
|
|
application/json:
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/components/schemas/BaseResponse'
|
|||
|
|
examples:
|
|||
|
|
loginSuccess:
|
|||
|
|
summary: Успешный вход
|
|||
|
|
value:
|
|||
|
|
msg_id: 20001
|
|||
|
|
message_code: 0
|
|||
|
|
message_desc: "Operation successful"
|
|||
|
|
message_body:
|
|||
|
|
token: "eyJhbGciOiJIUzI1NiIs..."
|
|||
|
|
user_id: 123
|
|||
|
|
invalidCredentials:
|
|||
|
|
summary: Неверные учетные данные
|
|||
|
|
value:
|
|||
|
|
msg_id: 20001
|
|||
|
|
message_code: 2
|
|||
|
|
message_desc: "Invalid credentials"
|
|||
|
|
message_body: {}
|
|||
|
|
userNotFound:
|
|||
|
|
summary: Пользователь не найден
|
|||
|
|
value:
|
|||
|
|
msg_id: 20010
|
|||
|
|
message_code: 2
|
|||
|
|
message_desc: "User not found"
|
|||
|
|
message_body: {}
|
|||
|
|
|
|||
|
|
# = INTERNAL ENDPOINTS предназначены для работы с данными =
|
|||
|
|
# = Для использования эндпоинтов предусмотрен только внутренний ключ X-Internal-Key (header) =
|
|||
|
|
|
|||
|
|
/api/internal/data-info:
|
|||
|
|
post:
|
|||
|
|
tags:
|
|||
|
|
- Internal
|
|||
|
|
summary: Внутренняя информация (статистика)
|
|||
|
|
description: |
|
|||
|
|
Эндпоинт для получения внутренней статистики и информации.
|
|||
|
|
operationId: handleInternalInfo
|
|||
|
|
parameters:
|
|||
|
|
- name: X-Internal-Key
|
|||
|
|
in: header
|
|||
|
|
required: true
|
|||
|
|
description: Внутренний ключ для доступа к API
|
|||
|
|
schema:
|
|||
|
|
type: string
|
|||
|
|
example: "your-internal-key-here"
|
|||
|
|
requestBody:
|
|||
|
|
required: true
|
|||
|
|
content:
|
|||
|
|
application/json:
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/components/schemas/BaseRequest'
|
|||
|
|
examples:
|
|||
|
|
userInfo:
|
|||
|
|
summary: Информация о пользователе
|
|||
|
|
value:
|
|||
|
|
msg_id: 30014
|
|||
|
|
message_body:
|
|||
|
|
user_id: 123
|
|||
|
|
userFileInfo:
|
|||
|
|
summary: Информация по файлам
|
|||
|
|
value:
|
|||
|
|
msg_id: 30019
|
|||
|
|
message_body:
|
|||
|
|
top: 10,
|
|||
|
|
type: "image"
|
|||
|
|
tariffStatistic:
|
|||
|
|
summary: Информация по таррифам
|
|||
|
|
value:
|
|||
|
|
msg_id: 30020
|
|||
|
|
message_body:
|
|||
|
|
active_only: true
|
|||
|
|
dynamicStatistic:
|
|||
|
|
summary: Динамика
|
|||
|
|
value:
|
|||
|
|
msg_id: 30021
|
|||
|
|
fileUserStatistic:
|
|||
|
|
summary: Статистика по файлам пользователей
|
|||
|
|
value:
|
|||
|
|
msg_id: 30022
|
|||
|
|
message_body:
|
|||
|
|
active_only: true
|
|||
|
|
violations:
|
|||
|
|
summary: Нарушения
|
|||
|
|
value:
|
|||
|
|
msg_id: 30023
|
|||
|
|
subscribesStatistic:
|
|||
|
|
summary: Подписки
|
|||
|
|
value:
|
|||
|
|
msg_id: 30024
|
|||
|
|
tokenStatistic:
|
|||
|
|
summary: Подписки
|
|||
|
|
value:
|
|||
|
|
msg_id: 30025
|
|||
|
|
incomingStatistic:
|
|||
|
|
summary: Доходы статистика
|
|||
|
|
value:
|
|||
|
|
msg_id: 30026
|
|||
|
|
complaintStatistic:
|
|||
|
|
summary: Жалобы
|
|||
|
|
value:
|
|||
|
|
msg_id: 30029
|
|||
|
|
filesInfo:
|
|||
|
|
summary: Информация о файлах
|
|||
|
|
value:
|
|||
|
|
msg_id: 40001
|
|||
|
|
message_body:
|
|||
|
|
action: "get_all"
|
|||
|
|
page: 1
|
|||
|
|
page_size: 10
|
|||
|
|
sort_by: "createdAt"
|
|||
|
|
sort_direction: "desc"
|
|||
|
|
tariffsInfo:
|
|||
|
|
summary: Информация о тарифах
|
|||
|
|
value:
|
|||
|
|
msg_id: 40004
|
|||
|
|
message_body:
|
|||
|
|
action: "get_all"
|
|||
|
|
page: 1
|
|||
|
|
page_size: 10
|
|||
|
|
sort_by: "createdAt"
|
|||
|
|
sort_direction: "desc"
|
|||
|
|
|
|||
|
|
responses:
|
|||
|
|
'200':
|
|||
|
|
description: Ответ с запрашиваемой информацией
|
|||
|
|
content:
|
|||
|
|
application/json:
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/components/schemas/BaseResponse'
|
|||
|
|
|
|||
|
|
/api/internal/data-control:
|
|||
|
|
post:
|
|||
|
|
tags:
|
|||
|
|
- Internal
|
|||
|
|
summary: Управление контентом
|
|||
|
|
description: Эндпоинт для модерации и управления контентом.
|
|||
|
|
operationId: handleInternalControl
|
|||
|
|
parameters:
|
|||
|
|
- name: X-Internal-Key
|
|||
|
|
in: header
|
|||
|
|
required: true
|
|||
|
|
description: Внутренний ключ для доступа к API
|
|||
|
|
schema:
|
|||
|
|
type: string
|
|||
|
|
requestBody:
|
|||
|
|
required: true
|
|||
|
|
content:
|
|||
|
|
application/json:
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/components/schemas/BaseRequest'
|
|||
|
|
examples:
|
|||
|
|
userInfoGetAll:
|
|||
|
|
summary: Получить всех пользователей с пагинацией
|
|||
|
|
value:
|
|||
|
|
msg_id: 30014
|
|||
|
|
message_body:
|
|||
|
|
action: "getAllWithPagination"
|
|||
|
|
page: 0
|
|||
|
|
size: 10
|
|||
|
|
sort_by: "createdAt"
|
|||
|
|
sort_direction: "desc"
|
|||
|
|
userInfoGetById:
|
|||
|
|
summary: Получить информацию о пользователе по ID
|
|||
|
|
value:
|
|||
|
|
msg_id: 30014
|
|||
|
|
message_body:
|
|||
|
|
action: "getInfoById"
|
|||
|
|
user_id: 123
|
|||
|
|
userInfoUpdate:
|
|||
|
|
summary: Обновить дополнительную информацию пользователя
|
|||
|
|
value:
|
|||
|
|
msg_id: 30014
|
|||
|
|
message_body:
|
|||
|
|
action: "update"
|
|||
|
|
user_id: 123
|
|||
|
|
ip_address: "192.168.1.1"
|
|||
|
|
user_agent: "Mozilla/5.0"
|
|||
|
|
userInfoDelete:
|
|||
|
|
summary: Удалить дополнительную информацию пользователя
|
|||
|
|
value:
|
|||
|
|
msg_id: 30014
|
|||
|
|
message_body:
|
|||
|
|
action: "delete"
|
|||
|
|
user_id: 123
|
|||
|
|
complaintCreate:
|
|||
|
|
summary: Создать жалобу
|
|||
|
|
value:
|
|||
|
|
msg_id: 30030
|
|||
|
|
message_body:
|
|||
|
|
action: "create"
|
|||
|
|
violation_id: 456
|
|||
|
|
complaint_text: "Нарушение правил использования"
|
|||
|
|
complaintUpdateStatus:
|
|||
|
|
summary: Обновить статус жалобы
|
|||
|
|
value:
|
|||
|
|
msg_id: 30030
|
|||
|
|
message_body:
|
|||
|
|
action: "update_status"
|
|||
|
|
id: "complaint-uuid"
|
|||
|
|
status: "RESOLVED"
|
|||
|
|
complaintUpdate:
|
|||
|
|
summary: Обновить жалобу
|
|||
|
|
value:
|
|||
|
|
msg_id: 30030
|
|||
|
|
message_body:
|
|||
|
|
action: "update"
|
|||
|
|
id: "complaint-uuid"
|
|||
|
|
complaint_text: "Обновленный текст жалобы"
|
|||
|
|
complaintDelete:
|
|||
|
|
summary: Удалить жалобу
|
|||
|
|
value:
|
|||
|
|
msg_id: 30030
|
|||
|
|
message_body:
|
|||
|
|
action: "delete"
|
|||
|
|
id: "complaint-uuid"
|
|||
|
|
fileModerate:
|
|||
|
|
summary: Модерировать файл
|
|||
|
|
value:
|
|||
|
|
msg_id: 40002
|
|||
|
|
message_body:
|
|||
|
|
action: "moderate_file"
|
|||
|
|
file_id: "file-uuid"
|
|||
|
|
file_status: "APPROVED"
|
|||
|
|
comment: "Файл проверен"
|
|||
|
|
fileChangeStatus:
|
|||
|
|
summary: Изменить статус файла
|
|||
|
|
value:
|
|||
|
|
msg_id: 40002
|
|||
|
|
message_body:
|
|||
|
|
action: "change_file_status"
|
|||
|
|
file_id: "file-uuid"
|
|||
|
|
file_status: "BLOCKED"
|
|||
|
|
fileReviewAppeal:
|
|||
|
|
summary: Рассмотреть апелляцию
|
|||
|
|
value:
|
|||
|
|
msg_id: 40002
|
|||
|
|
message_body:
|
|||
|
|
action: "review_appeal"
|
|||
|
|
appeal_id: "appeal-uuid"
|
|||
|
|
approve: true
|
|||
|
|
comment: "Апелляция одобрена"
|
|||
|
|
tariffAdd:
|
|||
|
|
summary: Добавить тариф
|
|||
|
|
value:
|
|||
|
|
msg_id: 40003
|
|||
|
|
message_body:
|
|||
|
|
action: "add"
|
|||
|
|
name: "Premium"
|
|||
|
|
price: 999.99
|
|||
|
|
type: "MONTHLY"
|
|||
|
|
tokens: 1000
|
|||
|
|
disk_size: 50
|
|||
|
|
max_users: 5
|
|||
|
|
max_files_count: 100
|
|||
|
|
tariff_term: "MONTHLY"
|
|||
|
|
description: "Премиум тариф"
|
|||
|
|
account_type: "PREMIUM"
|
|||
|
|
tariffRemove:
|
|||
|
|
summary: Удалить тариф
|
|||
|
|
value:
|
|||
|
|
msg_id: 40003
|
|||
|
|
message_body:
|
|||
|
|
action: "remove"
|
|||
|
|
id: "tariff-uuid"
|
|||
|
|
tariffUpdate:
|
|||
|
|
summary: Обновить тариф
|
|||
|
|
value:
|
|||
|
|
msg_id: 40003
|
|||
|
|
message_body:
|
|||
|
|
action: "update"
|
|||
|
|
id: "tariff-uuid"
|
|||
|
|
name: "Premium Plus"
|
|||
|
|
price: 1499.99
|
|||
|
|
description: "Обновленный премиум тариф"
|
|||
|
|
responses:
|
|||
|
|
'200':
|
|||
|
|
description: Результат операции управления
|
|||
|
|
content:
|
|||
|
|
application/json:
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/components/schemas/BaseResponse'
|
|||
|
|
'401':
|
|||
|
|
description: Неверный или отсутствующий внутренний ключ
|
|||
|
|
content:
|
|||
|
|
application/json:
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/components/schemas/BaseResponse'
|
|||
|
|
|
|||
|
|
/api/internal/data-download/{fileId}:
|
|||
|
|
get:
|
|||
|
|
tags:
|
|||
|
|
- Internal
|
|||
|
|
summary: Внутреннее скачивание файла
|
|||
|
|
description: Прямое скачивание файла из хранилища для внутренних нужд
|
|||
|
|
operationId: internalDownloadFile
|
|||
|
|
parameters:
|
|||
|
|
- name: X-Internal-Key
|
|||
|
|
in: header
|
|||
|
|
required: true
|
|||
|
|
description: Внутренний ключ для доступа к API
|
|||
|
|
schema:
|
|||
|
|
type: string
|
|||
|
|
- name: fileId
|
|||
|
|
in: path
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
type: string
|
|||
|
|
description: ID файла
|
|||
|
|
responses:
|
|||
|
|
'200':
|
|||
|
|
description: Файл
|
|||
|
|
content:
|
|||
|
|
application/octet-stream:
|
|||
|
|
schema:
|
|||
|
|
type: string
|
|||
|
|
format: binary
|
|||
|
|
'404':
|
|||
|
|
description: Файл не найден
|
|||
|
|
|
|||
|
|
# ========== DATA ENDPOINTS TODO ==========
|
|||
|
|
/api/v{version}/data:
|
|||
|
|
post:
|
|||
|
|
tags:
|
|||
|
|
- Data
|
|||
|
|
summary: Основной эндпоинт обработки данных
|
|||
|
|
description: |
|
|||
|
|
Обрабатывает запросы по msg_id. Доступные операции:
|
|||
|
|
|
|||
|
|
**Файлы:**
|
|||
|
|
- **20004** - Инициализация загрузки/информация о типах файлов/статус чанков (FileUploadHandler)
|
|||
|
|
- **20005** - Операции с файлами (FileEntityHandler)
|
|||
|
|
- **20007** - Поиск по изображению (ImageFoundRequestHandler)
|
|||
|
|
|
|||
|
|
**Пользователи:**
|
|||
|
|
- **20008** - Авторизация через сторонние сервисы (AuthRequestHandler)
|
|||
|
|
- **20009** - Верификация регистрации (VerifyRegisterUserHandler)
|
|||
|
|
- **30014** - Информация о пользователе (UserInfoHandler)
|
|||
|
|
- **30016** - Верификация пользователя (UserVerificationHandler)
|
|||
|
|
|
|||
|
|
**Компании и тарифы:**
|
|||
|
|
- **30000** - Управление компанией (CompanyHandler)
|
|||
|
|
- **30001** - Управление тарифами (TariffHandler)
|
|||
|
|
- **30002** - Информация о тарифах (TariffInfoHandler)
|
|||
|
|
- **30003** - Реферальная система (ReferralHandler)
|
|||
|
|
|
|||
|
|
**Платежи:**
|
|||
|
|
- **30005** - Платежи (PaymentHandler)
|
|||
|
|
- **30008** - Расчет стоимости (CostHandler)
|
|||
|
|
|
|||
|
|
**Мониторинг и нарушения:**
|
|||
|
|
- **30007** - Мониторинг (MonitoringHandler)
|
|||
|
|
- **30009** - Нарушения (ViolationHandler)
|
|||
|
|
- **30010** - Статистика нарушений (ViolationStatisticsHandler)
|
|||
|
|
- **30027** - Статистика мониторинга (MonitoringStatisticHandler)
|
|||
|
|
|
|||
|
|
**Поиск и жалобы:**
|
|||
|
|
- **30011** - Глобальный поиск (GlobalSearchHandler)
|
|||
|
|
- **30012** - Уведомления о нарушениях (ViolationNotionHandler)
|
|||
|
|
- **30013** - Жалобы (ComplaintEntityHandler)
|
|||
|
|
|
|||
|
|
**Уведомления:**
|
|||
|
|
- **30015** - Уведомления (NotificationHandler)
|
|||
|
|
|
|||
|
|
**Юридические дела:**
|
|||
|
|
- **30017** - Управление делами (LawCaseHandler)
|
|||
|
|
|
|||
|
|
**Токены:**
|
|||
|
|
- **30018** - Операции с токенами (TokenOperationHandler)
|
|||
|
|
|
|||
|
|
**Просмотр документов:**
|
|||
|
|
- **30028** - Просмотр документов (DockViewFileHandler)
|
|||
|
|
operationId: handleDataRequest
|
|||
|
|
parameters:
|
|||
|
|
- name: version
|
|||
|
|
in: path
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
type: integer
|
|||
|
|
minimum: 1
|
|||
|
|
description: Версия API
|
|||
|
|
example: 1
|
|||
|
|
requestBody:
|
|||
|
|
required: true
|
|||
|
|
content:
|
|||
|
|
application/json:
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/components/schemas/BaseRequest'
|
|||
|
|
examples:
|
|||
|
|
fileUploadInit:
|
|||
|
|
summary: Инициализация загрузки файла
|
|||
|
|
value:
|
|||
|
|
msg_id: 20004
|
|||
|
|
message_body:
|
|||
|
|
action: "init"
|
|||
|
|
file_name: "document.pdf"
|
|||
|
|
file_type: "document"
|
|||
|
|
extension: "pdf"
|
|||
|
|
convert_to: "protected"
|
|||
|
|
file_size: 1048576
|
|||
|
|
fileTypes:
|
|||
|
|
summary: Получение типов файлов
|
|||
|
|
value:
|
|||
|
|
msg_id: 20004
|
|||
|
|
message_body:
|
|||
|
|
action: "file_types"
|
|||
|
|
fileExtensions:
|
|||
|
|
summary: Получение расширений для типа
|
|||
|
|
value:
|
|||
|
|
msg_id: 20004
|
|||
|
|
message_body:
|
|||
|
|
action: "file_extension"
|
|||
|
|
file_type: "image"
|
|||
|
|
companyInfo:
|
|||
|
|
summary: Информация о компании
|
|||
|
|
value:
|
|||
|
|
msg_id: 30000
|
|||
|
|
message_body:
|
|||
|
|
action: "get_info"
|
|||
|
|
globalSearch:
|
|||
|
|
summary: Глобальный поиск
|
|||
|
|
value:
|
|||
|
|
msg_id: 30011
|
|||
|
|
message_body:
|
|||
|
|
query: "изображение кота"
|
|||
|
|
filters:
|
|||
|
|
file_type: "image"
|
|||
|
|
responses:
|
|||
|
|
'200':
|
|||
|
|
description: Успешный ответ
|
|||
|
|
content:
|
|||
|
|
application/json:
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/components/schemas/BaseResponse'
|
|||
|
|
examples:
|
|||
|
|
fileUploadInitSuccess:
|
|||
|
|
summary: Успешная инициализация загрузки
|
|||
|
|
value:
|
|||
|
|
msg_id: 20004
|
|||
|
|
message_code: 0
|
|||
|
|
message_desc: "Operation successful"
|
|||
|
|
message_body:
|
|||
|
|
upload_id: "550e8400-e29b-41d4-a716-446655440000"
|
|||
|
|
file_name: "document.pdf"
|
|||
|
|
total_chunks: 5
|
|||
|
|
chunk_size: 209715
|
|||
|
|
status: "INITIALIZED"
|
|||
|
|
fileTypesSuccess:
|
|||
|
|
summary: Типы файлов
|
|||
|
|
value:
|
|||
|
|
msg_id: 20004
|
|||
|
|
message_code: 0
|
|||
|
|
message_desc: "Operation successful"
|
|||
|
|
message_body:
|
|||
|
|
file_types:
|
|||
|
|
- "IMAGE"
|
|||
|
|
- "DOCUMENT"
|
|||
|
|
- "AUDIO"
|
|||
|
|
count: 3
|
|||
|
|
invalidMsgId:
|
|||
|
|
summary: Неверный msg_id
|
|||
|
|
value:
|
|||
|
|
msg_id: 99999
|
|||
|
|
message_code: 4
|
|||
|
|
message_desc: "Message id not found"
|
|||
|
|
message_body: {}
|
|||
|
|
|
|||
|
|
# ========== FILE UPLOAD ENDPOINTS ==========
|
|||
|
|
/api/v{version}/files/chunk:
|
|||
|
|
post:
|
|||
|
|
tags:
|
|||
|
|
- Files
|
|||
|
|
summary: Загрузка чанка файла
|
|||
|
|
description: Загрузка части файла (чанка) в рамках multipart-загрузки
|
|||
|
|
operationId: uploadChunk
|
|||
|
|
parameters:
|
|||
|
|
- name: version
|
|||
|
|
in: path
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
type: integer
|
|||
|
|
description: Версия API
|
|||
|
|
- name: upload_id
|
|||
|
|
in: query
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
type: string
|
|||
|
|
format: uuid
|
|||
|
|
description: ID сессии загрузки
|
|||
|
|
- name: chunk_number
|
|||
|
|
in: query
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
type: integer
|
|||
|
|
minimum: 0
|
|||
|
|
description: Номер чанка (начиная с 0)
|
|||
|
|
- name: findSimilar
|
|||
|
|
in: query
|
|||
|
|
required: false
|
|||
|
|
schema:
|
|||
|
|
type: integer
|
|||
|
|
default: 0
|
|||
|
|
description: Искать похожие файлы (1 - да, 0 - нет)
|
|||
|
|
requestBody:
|
|||
|
|
required: true
|
|||
|
|
content:
|
|||
|
|
multipart/form-data:
|
|||
|
|
schema:
|
|||
|
|
type: object
|
|||
|
|
required:
|
|||
|
|
- chunk
|
|||
|
|
properties:
|
|||
|
|
chunk:
|
|||
|
|
type: string
|
|||
|
|
format: binary
|
|||
|
|
description: Файл чанка
|
|||
|
|
responses:
|
|||
|
|
'200':
|
|||
|
|
description: Результат загрузки чанка
|
|||
|
|
content:
|
|||
|
|
application/json:
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/components/schemas/BaseResponse'
|
|||
|
|
examples:
|
|||
|
|
success:
|
|||
|
|
summary: Чанк загружен успешно
|
|||
|
|
value:
|
|||
|
|
msg_id: 20000
|
|||
|
|
message_code: 0
|
|||
|
|
message_desc: "Chunk uploaded successfully"
|
|||
|
|
message_body:
|
|||
|
|
upload_id: "550e8400-e29b-41d4-a716-446655440000"
|
|||
|
|
chunk_number: 0
|
|||
|
|
chunk_size: 209715
|
|||
|
|
file_id: "abc123"
|
|||
|
|
message: "Chunk uploaded successfully"
|
|||
|
|
duplicateFile:
|
|||
|
|
summary: Найден дубликат файла
|
|||
|
|
value:
|
|||
|
|
msg_id: 20004
|
|||
|
|
message_code: 2
|
|||
|
|
message_desc: "Duplicate file upload"
|
|||
|
|
message_body:
|
|||
|
|
duplicate_file_id: "xyz789"
|
|||
|
|
user_id: 123
|
|||
|
|
message: "Duplicate file found"
|
|||
|
|
|
|||
|
|
/api/v{version}/files/{uploadId}/complete:
|
|||
|
|
post:
|
|||
|
|
tags:
|
|||
|
|
- Files
|
|||
|
|
summary: Завершение загрузки файла
|
|||
|
|
description: Подтверждение завершения загрузки всех чанков
|
|||
|
|
operationId: completeUpload
|
|||
|
|
parameters:
|
|||
|
|
- name: version
|
|||
|
|
in: path
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
type: integer
|
|||
|
|
description: Версия API
|
|||
|
|
- name: uploadId
|
|||
|
|
in: path
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
type: string
|
|||
|
|
format: uuid
|
|||
|
|
description: ID сессии загрузки
|
|||
|
|
responses:
|
|||
|
|
'200':
|
|||
|
|
description: Статус завершения загрузки
|
|||
|
|
content:
|
|||
|
|
application/json:
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/components/schemas/BaseResponse'
|
|||
|
|
examples:
|
|||
|
|
success:
|
|||
|
|
summary: Сборка файла запущена
|
|||
|
|
value:
|
|||
|
|
msg_id: 20004
|
|||
|
|
message_code: 0
|
|||
|
|
message_desc: "File assembly in progress"
|
|||
|
|
message_body:
|
|||
|
|
upload_id: "550e8400-e29b-41d4-a716-446655440000"
|
|||
|
|
status: "COMPLETING"
|
|||
|
|
uploaded_chunks: 5
|
|||
|
|
total_chunks: 5
|
|||
|
|
message: "File assembly in progress"
|
|||
|
|
incomplete:
|
|||
|
|
summary: Не все чанки загружены
|
|||
|
|
value:
|
|||
|
|
msg_id: 20004
|
|||
|
|
message_code: 2
|
|||
|
|
message_desc: "Not all chunks uploaded"
|
|||
|
|
message_body:
|
|||
|
|
upload_id: "550e8400-e29b-41d4-a716-446655440000"
|
|||
|
|
status: "IN_PROGRESS"
|
|||
|
|
uploaded_chunks: 3
|
|||
|
|
total_chunks: 5
|
|||
|
|
message: "Not all chunks uploaded"
|
|||
|
|
|
|||
|
|
/api/v{version}/files/progress/{uploadId}:
|
|||
|
|
get:
|
|||
|
|
tags:
|
|||
|
|
- Files
|
|||
|
|
summary: Прогресс загрузки файла
|
|||
|
|
description: Получение текущего статуса загрузки
|
|||
|
|
operationId: getUploadProgress
|
|||
|
|
parameters:
|
|||
|
|
- name: version
|
|||
|
|
in: path
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
type: integer
|
|||
|
|
description: Версия API
|
|||
|
|
- name: uploadId
|
|||
|
|
in: path
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
type: string
|
|||
|
|
format: uuid
|
|||
|
|
description: ID сессии загрузки
|
|||
|
|
responses:
|
|||
|
|
'200':
|
|||
|
|
description: Прогресс загрузки
|
|||
|
|
content:
|
|||
|
|
application/json:
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/components/schemas/BaseResponse'
|
|||
|
|
examples:
|
|||
|
|
inProgress:
|
|||
|
|
summary: Загрузка в процессе
|
|||
|
|
value:
|
|||
|
|
msg_id: 20004
|
|||
|
|
message_code: 0
|
|||
|
|
message_desc: "Operation successful"
|
|||
|
|
message_body:
|
|||
|
|
upload_id: "550e8400-e29b-41d4-a716-446655440000"
|
|||
|
|
file_name: "document.pdf"
|
|||
|
|
total_chunks: 5
|
|||
|
|
uploaded_chunks: 3
|
|||
|
|
status: "IN_PROGRESS"
|
|||
|
|
progress_percentage: 60.0
|
|||
|
|
file_path: "/uploads/user123/doc.pdf"
|
|||
|
|
remaining_chunks: 2
|
|||
|
|
|
|||
|
|
# ========== FILE DOWNLOAD ENDPOINTS ==========
|
|||
|
|
/api/v{version}/files/download/{fileId}:
|
|||
|
|
get:
|
|||
|
|
tags:
|
|||
|
|
- Files
|
|||
|
|
summary: Скачивание защищенного файла
|
|||
|
|
description: |
|
|||
|
|
Скачивание файла с проверкой прав доступа. Требуется авторизация.
|
|||
|
|
Проверяет права пользователя на скачивание файла.
|
|||
|
|
operationId: downloadFile
|
|||
|
|
parameters:
|
|||
|
|
- name: version
|
|||
|
|
in: path
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
type: integer
|
|||
|
|
description: Версия API
|
|||
|
|
- name: fileId
|
|||
|
|
in: path
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
type: string
|
|||
|
|
description: ID файла
|
|||
|
|
- name: Authorization
|
|||
|
|
in: header
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
type: string
|
|||
|
|
description: Токен авторизации
|
|||
|
|
example: "Bearer eyJhbGciOiJIUzI1NiIs..."
|
|||
|
|
responses:
|
|||
|
|
'200':
|
|||
|
|
description: Файл для скачивания
|
|||
|
|
content:
|
|||
|
|
application/octet-stream:
|
|||
|
|
schema:
|
|||
|
|
type: string
|
|||
|
|
format: binary
|
|||
|
|
headers:
|
|||
|
|
Content-Disposition:
|
|||
|
|
schema:
|
|||
|
|
type: string
|
|||
|
|
description: Имя файла для сохранения
|
|||
|
|
example: 'attachment; filename="document.pdf"'
|
|||
|
|
'200-json':
|
|||
|
|
description: Ошибка при скачивании
|
|||
|
|
content:
|
|||
|
|
application/json:
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/components/schemas/BaseResponse'
|
|||
|
|
examples:
|
|||
|
|
fileBlocked:
|
|||
|
|
summary: Файл заблокирован
|
|||
|
|
value:
|
|||
|
|
msg_id: 20004
|
|||
|
|
message_code: 1
|
|||
|
|
message_desc: "File is blocked,deleted or removed"
|
|||
|
|
message_body:
|
|||
|
|
file_id: "abc123"
|
|||
|
|
noPermission:
|
|||
|
|
summary: Нет прав на скачивание
|
|||
|
|
value:
|
|||
|
|
msg_id: 20004
|
|||
|
|
message_code: 2
|
|||
|
|
message_desc: "Not have permission for download"
|
|||
|
|
message_body:
|
|||
|
|
file_id: "abc123"
|
|||
|
|
|
|||
|
|
/api/v{version}/files/public-download/{fileId}:
|
|||
|
|
get:
|
|||
|
|
tags:
|
|||
|
|
- Files
|
|||
|
|
summary: Публичное скачивание файла
|
|||
|
|
description: Скачивание файла без авторизации (если разрешено)
|
|||
|
|
operationId: publicDownloadFile
|
|||
|
|
parameters:
|
|||
|
|
- name: version
|
|||
|
|
in: path
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
type: integer
|
|||
|
|
description: Версия API
|
|||
|
|
- name: fileId
|
|||
|
|
in: path
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
type: string
|
|||
|
|
description: ID файла
|
|||
|
|
responses:
|
|||
|
|
'200':
|
|||
|
|
description: Файл для скачивания
|
|||
|
|
content:
|
|||
|
|
application/octet-stream:
|
|||
|
|
schema:
|
|||
|
|
type: string
|
|||
|
|
format: binary
|
|||
|
|
|
|||
|
|
/api/file/link:
|
|||
|
|
post:
|
|||
|
|
tags:
|
|||
|
|
- Files
|
|||
|
|
summary: Получение ссылки на файл для DocViewer
|
|||
|
|
description: Создает ссылку для просмотра документа и логирует просмотр
|
|||
|
|
operationId: getFileLink
|
|||
|
|
requestBody:
|
|||
|
|
required: true
|
|||
|
|
content:
|
|||
|
|
application/json:
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/components/schemas/DocViewerRequest'
|
|||
|
|
responses:
|
|||
|
|
'200':
|
|||
|
|
description: Файл для скачивания/просмотра
|
|||
|
|
content:
|
|||
|
|
application/octet-stream:
|
|||
|
|
schema:
|
|||
|
|
type: string
|
|||
|
|
format: binary
|
|||
|
|
|
|||
|
|
# ========== FILE SIMILARITY ENDPOINTS ==========
|
|||
|
|
/api/v{version}/files/{fileId}/similar:
|
|||
|
|
get:
|
|||
|
|
tags:
|
|||
|
|
- Files
|
|||
|
|
summary: Поиск похожих файлов
|
|||
|
|
description: |
|
|||
|
|
Поиск файлов, похожих на указанный.
|
|||
|
|
Для изображений использует алгоритм перцептивного хеша.
|
|||
|
|
Для документов и аудио проверяет на полные дубликаты.
|
|||
|
|
operationId: findSimilarFiles
|
|||
|
|
parameters:
|
|||
|
|
- name: version
|
|||
|
|
in: path
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
type: integer
|
|||
|
|
description: Версия API
|
|||
|
|
- name: fileId
|
|||
|
|
in: path
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
type: string
|
|||
|
|
description: ID файла для поиска похожих
|
|||
|
|
- name: similarityLevels
|
|||
|
|
in: query
|
|||
|
|
required: false
|
|||
|
|
schema:
|
|||
|
|
type: array
|
|||
|
|
items:
|
|||
|
|
type: string
|
|||
|
|
description: Уровни схожести для фильтрации
|
|||
|
|
example: ["HIGH", "MEDIUM"]
|
|||
|
|
- name: page
|
|||
|
|
in: query
|
|||
|
|
required: false
|
|||
|
|
schema:
|
|||
|
|
type: integer
|
|||
|
|
default: 0
|
|||
|
|
description: Номер страницы
|
|||
|
|
- name: size
|
|||
|
|
in: query
|
|||
|
|
required: false
|
|||
|
|
schema:
|
|||
|
|
type: integer
|
|||
|
|
default: 20
|
|||
|
|
description: Размер страницы
|
|||
|
|
- name: sort
|
|||
|
|
in: query
|
|||
|
|
required: false
|
|||
|
|
schema:
|
|||
|
|
type: string
|
|||
|
|
default: "hammingDistance"
|
|||
|
|
description: Поле для сортировки
|
|||
|
|
responses:
|
|||
|
|
'200':
|
|||
|
|
description: Список похожих файлов
|
|||
|
|
content:
|
|||
|
|
application/json:
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/components/schemas/BaseResponse'
|
|||
|
|
examples:
|
|||
|
|
success:
|
|||
|
|
summary: Найдены похожие файлы
|
|||
|
|
value:
|
|||
|
|
msg_id: 20004
|
|||
|
|
message_code: 0
|
|||
|
|
message_desc: "Similar files found"
|
|||
|
|
message_body:
|
|||
|
|
content:
|
|||
|
|
- file_id: "xyz789"
|
|||
|
|
similarity: 95.5
|
|||
|
|
file_name: "similar_image.jpg"
|
|||
|
|
page: 0
|
|||
|
|
size: 20
|
|||
|
|
total_elements: 1
|
|||
|
|
total_pages: 1
|
|||
|
|
has_next: false
|
|||
|
|
has_previous: false
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
/api/check/{fileId}:
|
|||
|
|
get:
|
|||
|
|
tags:
|
|||
|
|
- Files
|
|||
|
|
summary: Проверка защиты файла
|
|||
|
|
description: Проверяет, защищен ли файл системой NoCopy
|
|||
|
|
operationId: checkFileProtection
|
|||
|
|
parameters:
|
|||
|
|
- name: fileId
|
|||
|
|
in: path
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
type: string
|
|||
|
|
description: ID файла для проверки
|
|||
|
|
responses:
|
|||
|
|
'200':
|
|||
|
|
description: Результат проверки
|
|||
|
|
content:
|
|||
|
|
application/json:
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/components/schemas/BaseResponse'
|
|||
|
|
|
|||
|
|
/api/check/file_stats:
|
|||
|
|
get:
|
|||
|
|
tags:
|
|||
|
|
- Files
|
|||
|
|
summary: Статистика защиты файлов
|
|||
|
|
description: Получение статистики по защищенным файлам пользователя
|
|||
|
|
operationId: checkFileProtectStats
|
|||
|
|
responses:
|
|||
|
|
'200':
|
|||
|
|
description: Статистика по типам файлов
|
|||
|
|
content:
|
|||
|
|
application/json:
|
|||
|
|
schema:
|
|||
|
|
type: object
|
|||
|
|
additionalProperties: true
|
|||
|
|
example:
|
|||
|
|
IMAGE: 150
|
|||
|
|
DOCUMENT: 45
|
|||
|
|
AUDIO: 12
|
|||
|
|
|
|||
|
|
# ========== COMPONENTS ==========
|
|||
|
|
components:
|
|||
|
|
schemas:
|
|||
|
|
BaseRequest:
|
|||
|
|
type: object
|
|||
|
|
required:
|
|||
|
|
- msg_id
|
|||
|
|
- message_body
|
|||
|
|
properties:
|
|||
|
|
msg_id:
|
|||
|
|
type: integer
|
|||
|
|
description: Идентификатор сообщения/операции
|
|||
|
|
example: 20004
|
|||
|
|
message_body:
|
|||
|
|
type: object
|
|||
|
|
description: Тело запроса с параметрами операции
|
|||
|
|
additionalProperties: true
|
|||
|
|
|
|||
|
|
BaseResponse:
|
|||
|
|
type: object
|
|||
|
|
properties:
|
|||
|
|
msg_id:
|
|||
|
|
type: integer
|
|||
|
|
description: Идентификатор сообщения (копируется из запроса)
|
|||
|
|
example: 20004
|
|||
|
|
message_code:
|
|||
|
|
type: integer
|
|||
|
|
description: |
|
|||
|
|
Код результата:
|
|||
|
|
- 0 - Успешно
|
|||
|
|
- 1 - Предупреждение/особый случай
|
|||
|
|
- 2 - Ошибка валидации/бизнес-логики
|
|||
|
|
- 4 - Ресурс не найден
|
|||
|
|
example: 0
|
|||
|
|
message_desc:
|
|||
|
|
type: string
|
|||
|
|
description: Описание результата операции
|
|||
|
|
example: "Operation successful"
|
|||
|
|
message_body:
|
|||
|
|
type: object
|
|||
|
|
description: Данные ответа
|
|||
|
|
additionalProperties: true
|
|||
|
|
|
|||
|
|
DocViewerRequest:
|
|||
|
|
type: object
|
|||
|
|
required:
|
|||
|
|
- file_id
|
|||
|
|
properties:
|
|||
|
|
file_id:
|
|||
|
|
type: string
|
|||
|
|
description: ID файла для просмотра
|
|||
|
|
user_id:
|
|||
|
|
type: integer
|
|||
|
|
description: ID пользователя (если не передан в заголовке)
|
|||
|
|
action:
|
|||
|
|
type: string
|
|||
|
|
description: Действие с документом
|
|||
|
|
|
|||
|
|
FileUploadRequest:
|
|||
|
|
type: object
|
|||
|
|
properties:
|
|||
|
|
action:
|
|||
|
|
type: string
|
|||
|
|
description: |
|
|||
|
|
Действие с загрузкой:
|
|||
|
|
- init - инициализация загрузки
|
|||
|
|
- file_types - получение доступных типов файлов
|
|||
|
|
- file_extension - получение расширений для типа
|
|||
|
|
- chunks - статус чанков
|
|||
|
|
- cancel - отмена загрузки
|
|||
|
|
- progress - прогресс загрузки
|
|||
|
|
enum: [init, file_types, file_extension, chunks, cancel, progress]
|
|||
|
|
example: init
|
|||
|
|
file_name:
|
|||
|
|
type: string
|
|||
|
|
description: Имя файла (для action=init)
|
|||
|
|
example: "document.pdf"
|
|||
|
|
file_type:
|
|||
|
|
type: string
|
|||
|
|
description: Тип файла (image, document, audio)
|
|||
|
|
enum: [IMAGE, DOCUMENT, AUDIO]
|
|||
|
|
example: DOCUMENT
|
|||
|
|
extension:
|
|||
|
|
type: string
|
|||
|
|
description: Расширение файла
|
|||
|
|
example: "pdf"
|
|||
|
|
convert_to:
|
|||
|
|
type: string
|
|||
|
|
description: Формат конвертации
|
|||
|
|
example: "protected"
|
|||
|
|
file_size:
|
|||
|
|
type: integer
|
|||
|
|
format: int64
|
|||
|
|
description: Размер файла в байтах
|
|||
|
|
example: 1048576
|
|||
|
|
upload_id:
|
|||
|
|
type: string
|
|||
|
|
format: uuid
|
|||
|
|
description: ID сессии загрузки (для action=cancel, chunks, progress)
|
|||
|
|
|
|||
|
|
InitFileResponse:
|
|||
|
|
type: object
|
|||
|
|
properties:
|
|||
|
|
upload_id:
|
|||
|
|
type: string
|
|||
|
|
format: uuid
|
|||
|
|
description: ID сессии загрузки
|
|||
|
|
file_name:
|
|||
|
|
type: string
|
|||
|
|
description: Имя файла
|
|||
|
|
total_chunks:
|
|||
|
|
type: integer
|
|||
|
|
description: Общее количество чанков
|
|||
|
|
chunk_size:
|
|||
|
|
type: integer
|
|||
|
|
description: Размер одного чанка в байтах
|
|||
|
|
status:
|
|||
|
|
type: string
|
|||
|
|
description: Статус загрузки
|
|||
|
|
example: "INITIALIZED"
|
|||
|
|
|
|||
|
|
ChunkUploadResponse:
|
|||
|
|
type: object
|
|||
|
|
properties:
|
|||
|
|
upload_id:
|
|||
|
|
type: string
|
|||
|
|
format: uuid
|
|||
|
|
chunk_number:
|
|||
|
|
type: integer
|
|||
|
|
chunk_size:
|
|||
|
|
type: integer
|
|||
|
|
format: int64
|
|||
|
|
file_id:
|
|||
|
|
type: string
|
|||
|
|
message:
|
|||
|
|
type: string
|
|||
|
|
|
|||
|
|
UploadProgressResponse:
|
|||
|
|
type: object
|
|||
|
|
properties:
|
|||
|
|
upload_id:
|
|||
|
|
type: string
|
|||
|
|
format: uuid
|
|||
|
|
file_name:
|
|||
|
|
type: string
|
|||
|
|
total_chunks:
|
|||
|
|
type: integer
|
|||
|
|
uploaded_chunks:
|
|||
|
|
type: integer
|
|||
|
|
status:
|
|||
|
|
type: string
|
|||
|
|
progress_percentage:
|
|||
|
|
type: number
|
|||
|
|
format: float
|
|||
|
|
file_path:
|
|||
|
|
type: string
|
|||
|
|
remaining_chunks:
|
|||
|
|
type: integer
|
|||
|
|
|
|||
|
|
CompleteUploadResponse:
|
|||
|
|
type: object
|
|||
|
|
properties:
|
|||
|
|
upload_id:
|
|||
|
|
type: string
|
|||
|
|
format: uuid
|
|||
|
|
status:
|
|||
|
|
type: string
|
|||
|
|
uploaded_chunks:
|
|||
|
|
type: integer
|
|||
|
|
total_chunks:
|
|||
|
|
type: integer
|
|||
|
|
message:
|
|||
|
|
type: string
|
|||
|
|
file_path:
|
|||
|
|
type: string
|
|||
|
|
|
|||
|
|
ChunkStatusResponse:
|
|||
|
|
type: object
|
|||
|
|
properties:
|
|||
|
|
upload_id:
|
|||
|
|
type: string
|
|||
|
|
format: uuid
|
|||
|
|
total_chunks:
|
|||
|
|
type: integer
|
|||
|
|
uploaded_chunks:
|
|||
|
|
type: integer
|
|||
|
|
missing_chunks:
|
|||
|
|
type: integer
|
|||
|
|
chunk_status:
|
|||
|
|
type: object
|
|||
|
|
additionalProperties:
|
|||
|
|
type: boolean
|
|||
|
|
|
|||
|
|
FileTypesResponse:
|
|||
|
|
type: object
|
|||
|
|
properties:
|
|||
|
|
file_types:
|
|||
|
|
type: array
|
|||
|
|
items:
|
|||
|
|
type: string
|
|||
|
|
example: ["IMAGE", "DOCUMENT", "AUDIO"]
|
|||
|
|
count:
|
|||
|
|
type: integer
|
|||
|
|
example: 3
|
|||
|
|
|
|||
|
|
FileExtensionResponse:
|
|||
|
|
type: object
|
|||
|
|
properties:
|
|||
|
|
extension:
|
|||
|
|
type: array
|
|||
|
|
items:
|
|||
|
|
type: string
|
|||
|
|
example: ["jpg", "jpeg", "png", "gif"]
|
|||
|
|
count:
|
|||
|
|
type: integer
|
|||
|
|
max_file_size:
|
|||
|
|
type: integer
|
|||
|
|
format: int64
|
|||
|
|
description: Максимальный размер файла в байтах
|
|||
|
|
|
|||
|
|
CanceledUploadResponse:
|
|||
|
|
type: object
|
|||
|
|
properties:
|
|||
|
|
upload_id:
|
|||
|
|
type: string
|
|||
|
|
format: uuid
|
|||
|
|
message:
|
|||
|
|
type: string
|
|||
|
|
|
|||
|
|
ActionResponse:
|
|||
|
|
type: object
|
|||
|
|
properties:
|
|||
|
|
action:
|
|||
|
|
type: string
|
|||
|
|
available_actions:
|
|||
|
|
type: array
|
|||
|
|
items:
|
|||
|
|
type: string
|
|||
|
|
|
|||
|
|
securitySchemes:
|
|||
|
|
BearerAuth:
|
|||
|
|
type: http
|
|||
|
|
scheme: bearer
|
|||
|
|
bearerFormat: JWT
|
|||
|
|
description: JWT токен для авторизации
|
|||
|
|
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|