Files

1625 lines
46 KiB
YAML
Raw Permalink Normal View History

2026-06-30 23:32:57 +07:00
openapi: 3.0.3
info:
title: NoCopy API - Files, Payments, Payouts, Search, User
description: |
API для работы с файлами, платежами, выплатами, поиском и пользователями.
Включает контроллеры:
2026-07-01 11:49:54 +07:00
- FileController (GET/POST файлы, защита, проверка)
- GlobalSearchController (глобальный поиск, нарушения, статус)
- PaymentController (платежи, методы оплаты, авто-продление)
- PayoutController (выплаты, методы выплат, управление)
- SearchSettingsController (настройки поисковых систем)
- UserController (профиль, регистрация, смена пароля)
- ApiKeyController (управление API ключами)
- HealtCheckController (мониторинг здоровья, информация о приложении)
- MigrationController (администраторские инструменты миграции)
2026-06-30 23:32:57 +07:00
version: 1.0.0
contact:
name: NoCopy
servers:
- url: http://localhost:8080
description: Локальный
- url: https://dev-workspace.not-copy.com/
description: Дев
tags:
- name: Files
description: Работа с файлами (публичный доступ, защита, проверка)
- name: Search
description: Глобальный поиск и настройки поисковых систем
- name: Payments
description: Платежи и управление методами оплаты
- name: Payouts
description: Выплаты и управление методами выплат
- name: User
description: Управление пользователями и профилем
2026-07-01 11:49:54 +07:00
- name: API Keys
description: Управление API ключами пользователя
- name: Health Check
description: Мониторинг здоровья приложения
- name: Migration
description: Администраторские инструменты миграции
2026-06-30 23:32:57 +07:00
paths:
/api/files/public/{fileId}:
get:
tags:
- Files
summary: Публичное получение файла
description: |
Получение файла по ID без авторизации.
Поддерживает стриминг для больших файлов.
operationId: getPublicFile
parameters:
- name: fileId
in: path
required: true
schema:
type: string
description: ID файла
responses:
'200':
description: Файл
content:
application/octet-stream:
schema:
type: string
format: binary
image/jpeg:
schema:
type: string
format: binary
image/png:
schema:
type: string
format: binary
application/pdf:
schema:
type: string
format: binary
headers:
Content-Disposition:
schema:
type: string
description: Имя файла
example: 'inline; filename="document.pdf"'
Cache-Control:
schema:
type: string
example: "public, max-age=3600"
'404':
description: Файл не найден
'500':
description: Внутренняя ошибка сервера
/api/files/public/file-info/{fileId}:
get:
tags:
- Files
summary: Публичная информация о файле
description: Получение метаданных файла по ID без авторизации
operationId: getPublicFileInfo
parameters:
- name: fileId
in: path
required: true
schema:
type: string
description: ID файла
responses:
'200':
description: Информация о файле
content:
application/json:
schema:
$ref: '#/components/schemas/FileEntityResponse'
'404':
description: Файл не найден
/api/files/protected/{fileId}/{type}:
get:
tags:
- Files
summary: Получение защищённого файла
description: |
Получение защищённого файла или его миниатюры.
Доступен только для защищённых файлов.
operationId: getProtectedFile
parameters:
- name: fileId
in: path
required: true
schema:
type: string
description: ID файла
- name: type
in: path
required: true
schema:
type: string
enum: [file, thumbnail]
description: Тип файла (file или thumbnail)
example: file
responses:
'200':
description: Защищённый файл или миниатюра
content:
application/octet-stream:
schema:
type: string
format: binary
image/jpeg:
schema:
type: string
format: binary
image/png:
schema:
type: string
format: binary
headers:
Content-Disposition:
schema:
type: string
example: 'inline; filename*=UTF-8''''document_nocopy_protected.pdf'
'404':
description: Файл не найден
'500':
description: Файл не защищён или ошибка обработки
/api/files/public/{fileId}/{type}:
get:
tags:
- Files
summary: Публичное получение файла с типом
description: Получение файла или миниатюры по ID и типу
operationId: getPublicFileWithType
parameters:
- name: fileId
in: path
required: true
schema:
type: string
description: ID файла
- name: type
in: path
required: true
schema:
type: string
enum: [file, thumbnail]
description: Тип файла (file или thumbnail)
responses:
'200':
description: Файл или миниатюра
content:
application/octet-stream:
schema:
type: string
format: binary
'404':
description: Файл не найден
/api/files/check-file/status/{userId}:
get:
tags:
- Files
summary: Статус проверки файлов пользователя
description: Получение текущего статуса лимитов проверки файлов
operationId: getCheckStatus
parameters:
- name: userId
in: path
required: true
schema:
type: integer
format: int64
description: ID пользователя
responses:
'200':
description: Статус проверки
content:
application/json:
schema:
$ref: '#/components/schemas/CheckStatus'
/api/files/check-file/update-limit/{userId}/{limit}:
post:
tags:
- Files
summary: Обновление лимита проверок
description: Обновление лимита проверок файлов для пользователя
operationId: updateCheckLimit
parameters:
- name: userId
in: path
required: true
schema:
type: integer
format: int64
description: ID пользователя
- name: limit
in: path
required: true
schema:
type: integer
description: Новый лимит проверок
responses:
'200':
description: Лимит обновлён
content:
application/json:
schema:
$ref: '#/components/schemas/ProtectedFileCheck'
/api/files/protect/{fileId}/{convertTo}:
post:
tags:
- Files
summary: Защита файла
description: Запуск процесса защиты файла с конвертацией в указанный формат
operationId: protectFile
parameters:
- name: fileId
in: path
required: true
schema:
type: string
description: ID файла
- name: convertTo
in: path
required: true
schema:
type: string
description: Формат конвертации (например, protected)
example: protected
responses:
'200':
description: Информация о защите файла
content:
application/json:
schema:
$ref: '#/components/schemas/FileInfo'
/api/files/download/user-passport/archive/{userId}:
get:
tags:
- Files
summary: Скачивание архива паспорта
description: Сборка и скачивание ZIP-архива с данными паспорта пользователя
operationId: downloadPassportZip
parameters:
- name: userId
in: path
required: true
schema:
type: integer
format: int64
description: ID пользователя
responses:
'200':
description: ZIP архив
content:
application/zip:
schema:
type: string
format: binary
headers:
Content-Disposition:
schema:
type: string
example: 'attachment; filename=passport_123.zip'
'500':
description: Ошибка сборки архива
/api/v1/global-search/start:
post:
tags:
- Search
summary: Запуск глобального поиска
description: Запуск задачи глобального поиска по файлам пользователя
operationId: startGlobalSearch
security:
- BearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/GlobalSearchStartRequest'
responses:
'200':
description: Задача поиска создана или файлы не найдены
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/GlobalSearchStartResponse'
- type: string
example: "Files for search not found"
/api/v1/global-search/actual-task:
get:
tags:
- Search
summary: Получение активной задачи поиска
description: Получение текущей активной (PROCESSING) задачи поиска пользователя
operationId: getActualSearchTask
security:
- BearerAuth: []
responses:
'200':
description: Активная задача или сообщение об отсутствии
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/GlobalSearchTask'
- type: string
example: "Task not found"
/api/v1/global-search/violation-summary:
get:
tags:
- Search
summary: Сводка по нарушениям
description: Получение сводки по нарушениям для файлов пользователя
operationId: getViolationSummary
security:
- BearerAuth: []
responses:
'200':
description: Сводка по нарушениям
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/FileViolationSummaryDTO'
/api/v1/global-search/violation-summary-with-files:
post:
tags:
- Search
summary: Сводка по нарушениям с пагинацией
description: Получение сводки по нарушениям с фильтрацией и пагинацией
operationId: getViolationSummaryWithFiles
security:
- BearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
file_name:
type: string
sort_direction:
type: string
enum: [asc, desc]
page:
type: integer
size:
type: integer
start_date:
type: string
end_date:
type: string
responses:
'200':
description: Сводка по нарушениям с пагинацией
content:
application/json:
schema:
type: object
properties:
content:
type: array
items:
$ref: '#/components/schemas/FileViolationSummaryDTO'
total_elements:
type: integer
total_pages:
type: integer
number:
type: integer
size:
type: integer
/api/v1/global-search/status/{taskId}:
get:
tags:
- Search
summary: Статус задачи поиска
description: Получение статуса и прогресса задачи глобального поиска
operationId: getSearchTaskStatus
security:
- BearerAuth: []
parameters:
- name: taskId
in: path
required: true
schema:
type: string
description: ID задачи поиска
responses:
'200':
description: Статус задачи
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/GlobalSearchStatusResponse'
- type: string
example: "Task not found"
/api/payments/create:
post:
tags:
- Payments
summary: Создание платежа
description: Создание нового платежа для пользователя
operationId: createPayment
parameters:
- name: email
in: query
required: true
schema:
type: string
description: Email пользователя
- name: tariffId
in: query
required: true
schema:
type: integer
format: int64
description: ID тарифа
- name: operationType
in: query
required: true
schema:
type: string
description: Тип операции
- name: operationUuid
in: query
required: true
schema:
type: string
description: UUID операции
responses:
'200':
description: Платёж создан
content:
application/json:
schema:
$ref: '#/components/schemas/Payment'
'404':
description: Тариф или пользователь не найден
/api/payments/webhook/yookassa:
post:
tags:
- Payments
summary: Webhook ЮKassa
description: Обработка уведомлений от ЮKassa
operationId: handleYooKassaNotification
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
'200':
description: Уведомление обработано
/api/payments/auto-renewal:
post:
tags:
- Payments
summary: Управление автопродлением
description: Включение или отключение автопродления подписки
operationId: setAutoRenewal
security:
- BearerAuth: []
parameters:
- name: renewal
in: query
required: true
schema:
type: boolean
description: Включить (true) или отключить (false) автопродление
responses:
'200':
description: Статус автопродления изменён
content:
application/json:
schema:
type: object
properties:
message:
type: string
'404':
description: Пользователь не найден
/api/payments/methods:
get:
tags:
- Payments
summary: Список методов оплаты
description: Получение сохранённых методов оплаты пользователя
operationId: getPaymentMethods
security:
- BearerAuth: []
responses:
'200':
description: Список методов оплаты
content:
application/json:
schema:
type: array
items:
type: object
'404':
description: Пользователь не найден
/api/payments/methods/{paymentMethodId}:
delete:
tags:
- Payments
summary: Удаление метода оплаты
description: Удаление сохранённого метода оплаты
operationId: deletePaymentMethod
security:
- BearerAuth: []
parameters:
- name: paymentMethodId
in: path
required: true
schema:
type: string
description: ID метода оплаты
responses:
'200':
description: Метод оплаты удалён
content:
application/json:
schema:
type: object
properties:
message:
type: string
'404':
description: Пользователь не найден
/api/payouts/create-request:
post:
tags:
- Payouts
summary: Создание заявки на выплату
description: Создание новой заявки на выплату средств
operationId: createPayoutRequest
security:
- BearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PayoutRequestDTO'
responses:
'201':
description: Заявка создана
content:
application/json:
schema:
$ref: '#/components/schemas/PayoutRequest'
'404':
description: Пользователь не найден
'409':
description: Недостаточно средств, уже есть активная заявка или неверный метод выплаты
/api/payouts/requests:
get:
tags:
- Payouts
summary: Список заявок на выплату
description: Получение всех заявок на выплату пользователя
operationId: getUserPayoutRequests
security:
- BearerAuth: []
responses:
'200':
description: Список заявок
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/PayoutRequest'
'404':
description: Пользователь не найден
/api/payouts/requests/{requestId}:
get:
tags:
- Payouts
summary: Получение заявки по ID
description: Получение конкретной заявки на выплату
operationId: getPayoutRequest
security:
- BearerAuth: []
parameters:
- name: requestId
in: path
required: true
schema:
type: integer
format: int64
description: ID заявки
responses:
'200':
description: Заявка найдена
content:
application/json:
schema:
$ref: '#/components/schemas/PayoutRequest'
'404':
description: Пользователь не найден
/api/payouts/requests/{requestId}/process:
post:
tags:
- Payouts
summary: Обработка заявки на выплату
description: Запуск обработки заявки на выплату (административное действие)
operationId: processPayoutRequest
parameters:
- name: requestId
in: path
required: true
schema:
type: integer
format: int64
description: ID заявки
responses:
'200':
description: Заявка обработана
content:
application/json:
schema:
$ref: '#/components/schemas/PayoutRequest'
/api/payouts/requests/{requestId}/cancel:
post:
tags:
- Payouts
summary: Отмена заявки на выплату
description: Отмена заявки на выплату пользователем
operationId: cancelPayoutRequest
security:
- BearerAuth: []
parameters:
- name: requestId
in: path
required: true
schema:
type: integer
format: int64
description: ID заявки
responses:
'200':
description: Заявка отменена
content:
application/json:
schema:
$ref: '#/components/schemas/PayoutRequest'
'404':
description: Пользователь не найден
/api/payouts/user/payout-methods:
get:
tags:
- Payouts
summary: Методы выплат пользователя
description: Получение сохранённых методов выплат пользователя
operationId: getUserPayoutMethods
security:
- BearerAuth: []
responses:
'200':
description: Список методов выплат
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/PayoutMethodDTO'
'404':
description: Пользователь не найден
/api/payouts/payout-methods:
get:
tags:
- Payouts
summary: Доступные типы методов выплат
description: Получение списка доступных типов методов выплат
operationId: getAvailablePayoutMethodTypes
responses:
'200':
description: Список типов методов выплат
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/PayoutMethodTypeDTO'
/api/payouts/payout-method/card:
post:
tags:
- Payouts
summary: Добавление карты для выплат
description: Добавление банковской карты как метода выплаты
operationId: addCardPayoutMethod
security:
- BearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AddCardRequest'
responses:
'201':
description: Карта добавлена
content:
application/json:
schema:
$ref: '#/components/schemas/PayoutMethodDTO'
'404':
description: Пользователь не найден
/api/payouts/payout-method/bank-transfer:
post:
tags:
- Payouts
summary: Добавление банковского перевода для выплат
description: Добавление банковского счёта как метода выплаты
operationId: addBankTransferPayoutMethod
security:
- BearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AddBankTransferRequest'
responses:
'201':
description: Банковский перевод добавлен
content:
application/json:
schema:
$ref: '#/components/schemas/PayoutMethodDTO'
'404':
description: Пользователь не найден
/api/payouts/payout-method/{methodId}/default:
put:
tags:
- Payouts
summary: Установка метода выплаты по умолчанию
description: Установка указанного метода выплаты как основного
operationId: setDefaultPayoutMethod
security:
- BearerAuth: []
parameters:
- name: methodId
in: path
required: true
schema:
type: integer
format: int64
description: ID метода выплаты
responses:
'200':
description: Метод установлен по умолчанию
'404':
description: Пользователь не найден
/api/search/settings:
get:
tags:
- Search
summary: Получение настроек поиска
description: Получение текущих настроек поисковых систем и прокси
operationId: getSearchSettings
responses:
'200':
description: Настройки поиска
content:
application/json:
schema:
$ref: '#/components/schemas/BaseResponse'
put:
tags:
- Search
summary: Обновление настроек поиска
description: Обновление настроек поисковых систем и прокси
operationId: updateSearchSettings
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SearchSettingsDto'
responses:
'200':
description: Настройки обновлены
content:
application/json:
schema:
$ref: '#/components/schemas/BaseResponse'
/v1/api/user:
get:
tags:
- User
summary: Получение информации о пользователе
description: Получение полной информации о пользователе по email
operationId: getUserByEmail
parameters:
- name: email
in: query
required: true
schema:
type: string
description: Email пользователя
responses:
'200':
description: Информация о пользователе
content:
application/json:
schema:
$ref: '#/components/schemas/UserDTO'
'404':
description: Пользователь не найден
patch:
tags:
- User
summary: Обновление пользователя
description: Частичное обновление данных пользователя
operationId: updateUser
security:
- BearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UserRequest'
responses:
'200':
description: Пользователь обновлён
content:
application/json:
schema:
$ref: '#/components/schemas/UserDTO'
/v1/api/user/change-password:
post:
tags:
- User
summary: Смена пароля
description: Смена пароля пользователя
operationId: changePassword
security:
- BearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ChangePasswordRequest'
responses:
'200':
description: Пароль изменён
content:
application/json:
schema:
$ref: '#/components/schemas/UserDTO'
/v1/api/user/create-user:
post:
tags:
- User
summary: Создание пользователя
description: Создание нового пользователя (административное действие)
operationId: createUser
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RegRequest'
responses:
'200':
description: Пользователь создан
content:
application/json:
schema:
type: object
properties:
user:
type: object
token:
type: string
/v1/api/user/delete-user/{userId}:
delete:
tags:
- User
summary: Удаление пользователя
description: Удаление пользователя по ID
operationId: deleteUser
parameters:
- name: userId
in: path
required: true
schema:
type: integer
format: int64
description: ID пользователя
responses:
'200':
description: Пользователь удалён
content:
application/json:
schema:
type: object
properties:
userId:
type: integer
deleted:
type: string
example: "true"
2026-07-01 11:49:54 +07:00
/api/user/api-keys:
post:
tags:
- API Keys
summary: Создание API ключа
description: Создаёт новый API ключ для текущего пользователя
operationId: createApiKey
security:
- BearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: Название ключа
example: "Production Key"
responses:
'200':
description: API ключ создан
content:
application/json:
schema:
$ref: '#/components/schemas/BaseResponse'
get:
tags:
- API Keys
summary: Получение списка API ключей
description: Получение всех API ключей текущего пользователя
operationId: listApiKeys
security:
- BearerAuth: []
responses:
'200':
description: Список API ключей
content:
application/json:
schema:
$ref: '#/components/schemas/BaseResponse'
/api/user/api-keys/{keyId}:
delete:
tags:
- API Keys
summary: Отзыв API ключа
description: Деактивирует API ключ пользователя
operationId: revokeApiKey
security:
- BearerAuth: []
parameters:
- name: keyId
in: path
required: true
schema:
type: integer
format: int64
description: ID ключа для отзыва
responses:
'200':
description: Ключ отозван
content:
application/json:
schema:
$ref: '#/components/schemas/BaseResponse'
/check/api/healt:
get:
tags:
- Health Check
summary: Проверка здоровья приложения
description: Проверяет, работает ли приложение
operationId: healthCheck
responses:
'200':
description: Приложение работает нормально
/check/api/build:
get:
tags:
- Health Check
summary: Информация о сборке
description: Получение информации о времени сборки приложения
operationId: getBuildInfo
responses:
'200':
description: Информация о сборке
content:
application/json:
schema:
type: object
properties:
buildTimeBack:
type: string
example: "2025-06-30T10:30:00Z"
/check/api/api/debug/memory:
get:
tags:
- Health Check
summary: Информация о памяти
description: Получение информации об использовании памяти JVM
operationId: getMemoryInfo
responses:
'200':
description: Информация о памяти
content:
application/json:
schema:
type: object
properties:
maxMemory (MB):
type: string
totalMemory (MB):
type: string
freeMemory (MB):
type: string
usedMemory (MB):
type: string
availableProcessors:
type: string
/check/api/test/monitoring/{fileId}:
post:
tags:
- Health Check
summary: Тестирование мониторинга
description: Запускает тестовый мониторинг для файла
operationId: testMonitoring
parameters:
- name: fileId
in: path
required: true
schema:
type: string
description: ID файла для тестирования
responses:
'200':
description: Мониторинг запущен
content:
application/json:
schema:
type: object
properties:
status:
type: string
example: "OK"
/api/admin/migration/start:
post:
tags:
- Migration
summary: Запуск миграции
description: Запускает миграцию файлов в S3 хранилище
operationId: startMigration
responses:
'200':
description: Миграция запущена
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: "Migration started. Check logs for progress."
/api/admin/migration/status:
post:
tags:
- Migration
summary: Статус миграции
description: Получение статуса выполняемой миграции
operationId: getMigrationStatus
responses:
'200':
description: Статус миграции
content:
application/json:
schema:
type: object
properties:
message:
type: string
/api/admin/migration/fill-dock-view:
post:
tags:
- Migration
summary: Заполнение dock view
description: Заполнение данных просмотров документов из миграции
operationId: fillDockView
responses:
'200':
description: Данные заполнены
content:
application/json:
schema:
type: object
properties:
message:
type: string
2026-06-30 23:32:57 +07:00
components:
schemas:
BaseResponse:
type: object
properties:
msg_id:
type: integer
message_code:
type: integer
message_desc:
type: string
message_body:
type: object
FileEntityResponse:
type: object
properties:
id:
type: string
user_id:
type: integer
format: int64
original_file_name:
type: string
stored_file_name:
type: string
file_path:
type: string
protected_file_path:
type: string
thumbnail_file_url:
type: string
file_size:
type: integer
format: int64
mime_type:
type: string
file_extension:
type: string
checksum:
type: string
upload_session_id:
type: string
status:
type: string
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
formatted_size:
type: string
download_url:
type: string
exists_on_disk:
type: boolean
support_id:
type: integer
protect_status:
type: string
owner_name:
type: string
owner_email:
type: string
owner_company:
type: string
file_name:
type: string
file_format:
type: string
checks_count:
type: integer
file_upload_date:
type: string
format: date-time
monitoring:
type: string
permissions:
type: object
appeal_infos:
type: array
items:
type: object
CheckStatus:
type: object
properties:
checks_today:
type: integer
checks_limit:
type: integer
can_check:
type: boolean
ProtectedFileCheck:
type: object
properties:
id:
type: integer
user_id:
type: integer
checks_today:
type: integer
checks_limit:
type: integer
last_check_date:
type: string
format: date-time
FileInfo:
type: object
properties:
id:
type: string
file_name:
type: string
file_path:
type: string
mime_type:
type: string
GlobalSearchStartRequest:
type: object
properties:
search_type:
type: string
file_types:
type: array
items:
type: string
date_from:
type: string
date_to:
type: string
GlobalSearchStartResponse:
type: object
properties:
task_id:
type: string
status:
type: string
total_files:
type: integer
GlobalSearchTask:
type: object
properties:
task_id:
type: string
status:
type: string
total_files:
type: integer
processed_files:
type: integer
created_at:
type: string
format: date-time
GlobalSearchStatusResponse:
type: object
properties:
task_id:
type: string
status:
type: string
search_type:
type: string
progress:
type: integer
FileViolationSummaryDTO:
type: object
properties:
file_id:
type: string
support_id:
type: integer
file_name:
type: string
file_size:
type: integer
format: int64
mime_type:
type: string
status:
type: string
created_at:
type: string
format: date-time
violation_count:
type: integer
format: int64
count_law_case:
type: integer
format: int64
count_complaint:
type: integer
format: int64
latest_violation_date:
type: string
format: date-time
Payment:
type: object
properties:
id:
type: integer
format: int64
status:
type: string
payment_uuid:
type: string
amount:
type: number
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
operation_type:
type: string
PayoutRequestDTO:
type: object
properties:
amount:
type: number
payout_method_id:
type: integer
format: int64
payout_type:
type: string
PayoutRequest:
type: object
properties:
id:
type: integer
format: int64
amount:
type: number
status:
type: string
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
PayoutMethodDTO:
type: object
properties:
id:
type: integer
format: int64
type:
type: string
display_name:
type: string
masked_details:
type: string
card_number:
type: string
is_default:
type: boolean
is_verified:
type: boolean
PayoutMethodTypeDTO:
type: object
properties:
code:
type: string
name:
type: string
AddCardRequest:
type: object
properties:
card_number:
type: string
card_holder:
type: string
expiry_date:
type: string
AddBankTransferRequest:
type: object
properties:
bank_name:
type: string
bic:
type: string
correspondent_account:
type: string
account_number:
type: string
account_holder:
type: string
inn:
type: string
kpp:
type: string
SearchSettingsDto:
type: object
properties:
engines:
type: object
additionalProperties:
type: boolean
example:
yandex: true
google: true
proxy_enabled:
type: boolean
UserDTO:
type: object
properties:
id:
type: integer
format: int64
email:
type: string
full_name:
type: string
phone:
type: string
verified_status:
type: string
active:
type: boolean
company:
type: string
tariffs:
type: array
items:
type: object
tariff_info:
$ref: '#/components/schemas/TariffInfoDTO'
gender_type:
type: string
birthday:
type: string
created_at:
type: string
format: date-time
permission:
type: object
TariffInfoDTO:
type: object
properties:
id:
type: string
status:
type: string
start_tariff:
type: string
format: date-time
end_tariff:
type: string
format: date-time
tariff_id:
type: integer
format: int64
tariff_name:
type: string
tokens:
type: integer
max_file_on_disk:
type: integer
format: int64
current_file_on_disk:
type: integer
format: int64
current_file_counts:
type: integer
max_file_counts:
type: integer
UserRequest:
type: object
properties:
full_name:
type: string
phone:
type: string
gender_type:
type: string
birthday:
type: string
ChangePasswordRequest:
type: object
properties:
email:
type: string
old_password:
type: string
new_password:
type: string
RegRequest:
type: object
properties:
full_name:
type: string
email:
type: string
password:
type: string
phone:
type: string
securitySchemes:
BearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
description: JWT токен для авторизации
security:
- BearerAuth: []