openapi: 3.0.3 info: title: 'deniskorbakov API Documentation' description: 'Документация API проекта' version: 1.0.0 servers: - url: 'https://deniskorbakov.ru' tags: - name: Авторизация description: '' - name: 'Все запросы' description: '' - name: Пользователи description: '' - name: Почта description: '' components: securitySchemes: default: type: http scheme: bearer description: null security: - default: [] paths: /api/register: post: summary: 'Регистрация пользователя' operationId: '' description: '' parameters: [] responses: { } tags: - Авторизация requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'Имя пользователя' example: name nullable: false email: type: string description: Почта example: test@example.com nullable: false role: type: string description: 'Получить роль для регистрации "/api/users/roles/"' example: user nullable: false password: type: string description: Пароль example: password nullable: false required: - name - email - role - password security: [] /api/login: post: summary: 'Авторизация пользователя' operationId: '' description: '' parameters: [] responses: { } tags: - Авторизация requestBody: required: true content: application/json: schema: type: object properties: email: type: string description: Почта example: test@example.com nullable: false password: type: string description: Пароль example: password nullable: false required: - email - password security: [] /api/logout: post: summary: 'Выход из аккаунта' operationId: '' description: '' parameters: [] responses: { } tags: - Авторизация /api/statistics: get: summary: '' operationId: getApiStatistics description: '' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: actual: 7216 places_order: - place: 1 members: - number: 1 color: '#ff0000' - number: 5 color: '#7F00FF' - number: 1 color: '#ff0000' - number: 4 color: '#00ff00' - number: 6 color: '#000000' - number: 1 color: '#ff0000' - number: 2 color: '#0000ff' - number: 5 color: '#7F00FF' - number: 6 color: '#000000' - number: 4 color: '#00ff00' - place: 2 members: - number: 3 color: '#FFA500' - number: 3 color: '#FFA500' - number: 6 color: '#000000' - number: 2 color: '#0000ff' - number: 1 color: '#ff0000' - number: 3 color: '#FFA500' - number: 3 color: '#FFA500' - number: 2 color: '#0000ff' - number: 4 color: '#00ff00' - number: 5 color: '#7F00FF' - place: 3 members: - number: 6 color: '#000000' - number: 4 color: '#00ff00' - number: 2 color: '#0000ff' - number: 6 color: '#000000' - number: 5 color: '#7F00FF' - number: 6 color: '#000000' - number: 6 color: '#000000' - number: 4 color: '#00ff00' - number: 3 color: '#FFA500' - number: 1 color: '#ff0000' - place: 4 members: - number: 5 color: '#7F00FF' - number: 6 color: '#000000' - number: 4 color: '#00ff00' - number: 1 color: '#ff0000' - number: 2 color: '#0000ff' - number: 5 color: '#7F00FF' - number: 1 color: '#ff0000' - number: 1 color: '#ff0000' - number: 1 color: '#ff0000' - number: 2 color: '#0000ff' - place: 5 members: - number: 2 color: '#0000ff' - number: 1 color: '#ff0000' - number: 3 color: '#FFA500' - number: 5 color: '#7F00FF' - number: 3 color: '#FFA500' - number: 4 color: '#00ff00' - number: 5 color: '#7F00FF' - number: 3 color: '#FFA500' - number: 2 color: '#0000ff' - number: 3 color: '#FFA500' - place: 6 members: - number: 4 color: '#00ff00' - number: 2 color: '#0000ff' - number: 5 color: '#7F00FF' - number: 3 color: '#FFA500' - number: 4 color: '#00ff00' - number: 2 color: '#0000ff' - number: 4 color: '#00ff00' - number: 6 color: '#000000' - number: 5 color: '#7F00FF' - number: 6 color: '#000000' single_probabilities: - number: 1 color: '#ff0000' '1': 0.3 '2': 0.1 '3': 0.1 '4': 0.4 '5': 0.1 '6': 0 topTwo: 0.4 topThree: 0.5 - number: 2 color: '#0000ff' '1': 0.1 '2': 0.2 '3': 0.1 '4': 0.2 '5': 0.2 '6': 0.2 topTwo: 0.3 topThree: 0.4 - number: 3 color: '#FFA500' '1': 0 '2': 0.4 '3': 0.1 '4': 0 '5': 0.4 '6': 0.1 topTwo: 0.4 topThree: 0.5 - number: 4 color: '#00ff00' '1': 0.2 '2': 0.1 '3': 0.2 '4': 0.1 '5': 0.1 '6': 0.3 topTwo: 0.3 topThree: 0.5 - number: 5 color: '#7F00FF' '1': 0.2 '2': 0.1 '3': 0.1 '4': 0.2 '5': 0.2 '6': 0.2 topTwo: 0.3 topThree: 0.4 - number: 6 color: '#000000' '1': 0.2 '2': 0.1 '3': 0.4 '4': 0.1 '5': 0 '6': 0.2 topTwo: 0.3 topThree: 0.7 pair_probabilities: - number: 1 color: '#ff0000' '1': null '2': 0 '3': 0.33 '4': 0 '5': 0 '6': 0.33 - number: 2 color: '#0000ff' '1': 0 '2': null '3': 0.17 '4': 0.17 '5': 0.17 '6': 0 - number: 3 color: '#FFA500' '1': 0.33 '2': 0.17 '3': null '4': 0 '5': 0.17 '6': 0 - number: 4 color: '#00ff00' '1': 0 '2': 0.17 '3': 0 '4': null '5': 0.17 '6': 0.17 - number: 5 color: '#7F00FF' '1': 0 '2': 0.17 '3': 0.17 '4': 0.17 '5': null '6': 0 - number: 6 color: '#000000' '1': 0.33 '2': 0 '3': 0 '4': 0.17 '5': 0 '6': null properties: actual: type: integer example: 7216 places_order: type: array example: - place: 1 members: - number: 1 color: '#ff0000' - number: 5 color: '#7F00FF' - number: 1 color: '#ff0000' - number: 4 color: '#00ff00' - number: 6 color: '#000000' - number: 1 color: '#ff0000' - number: 2 color: '#0000ff' - number: 5 color: '#7F00FF' - number: 6 color: '#000000' - number: 4 color: '#00ff00' - place: 2 members: - number: 3 color: '#FFA500' - number: 3 color: '#FFA500' - number: 6 color: '#000000' - number: 2 color: '#0000ff' - number: 1 color: '#ff0000' - number: 3 color: '#FFA500' - number: 3 color: '#FFA500' - number: 2 color: '#0000ff' - number: 4 color: '#00ff00' - number: 5 color: '#7F00FF' - place: 3 members: - number: 6 color: '#000000' - number: 4 color: '#00ff00' - number: 2 color: '#0000ff' - number: 6 color: '#000000' - number: 5 color: '#7F00FF' - number: 6 color: '#000000' - number: 6 color: '#000000' - number: 4 color: '#00ff00' - number: 3 color: '#FFA500' - number: 1 color: '#ff0000' - place: 4 members: - number: 5 color: '#7F00FF' - number: 6 color: '#000000' - number: 4 color: '#00ff00' - number: 1 color: '#ff0000' - number: 2 color: '#0000ff' - number: 5 color: '#7F00FF' - number: 1 color: '#ff0000' - number: 1 color: '#ff0000' - number: 1 color: '#ff0000' - number: 2 color: '#0000ff' - place: 5 members: - number: 2 color: '#0000ff' - number: 1 color: '#ff0000' - number: 3 color: '#FFA500' - number: 5 color: '#7F00FF' - number: 3 color: '#FFA500' - number: 4 color: '#00ff00' - number: 5 color: '#7F00FF' - number: 3 color: '#FFA500' - number: 2 color: '#0000ff' - number: 3 color: '#FFA500' - place: 6 members: - number: 4 color: '#00ff00' - number: 2 color: '#0000ff' - number: 5 color: '#7F00FF' - number: 3 color: '#FFA500' - number: 4 color: '#00ff00' - number: 2 color: '#0000ff' - number: 4 color: '#00ff00' - number: 6 color: '#000000' - number: 5 color: '#7F00FF' - number: 6 color: '#000000' items: type: object properties: place: type: integer example: 1 members: type: array example: - number: 1 color: '#ff0000' - number: 5 color: '#7F00FF' - number: 1 color: '#ff0000' - number: 4 color: '#00ff00' - number: 6 color: '#000000' - number: 1 color: '#ff0000' - number: 2 color: '#0000ff' - number: 5 color: '#7F00FF' - number: 6 color: '#000000' - number: 4 color: '#00ff00' items: type: object properties: number: type: integer example: 1 color: type: string example: '#ff0000' single_probabilities: type: array example: - number: 1 color: '#ff0000' 1: 0.3 2: 0.1 3: 0.1 4: 0.4 5: 0.1 6: 0 topTwo: 0.4 topThree: 0.5 - number: 2 color: '#0000ff' 1: 0.1 2: 0.2 3: 0.1 4: 0.2 5: 0.2 6: 0.2 topTwo: 0.3 topThree: 0.4 - number: 3 color: '#FFA500' 1: 0 2: 0.4 3: 0.1 4: 0 5: 0.4 6: 0.1 topTwo: 0.4 topThree: 0.5 - number: 4 color: '#00ff00' 1: 0.2 2: 0.1 3: 0.2 4: 0.1 5: 0.1 6: 0.3 topTwo: 0.3 topThree: 0.5 - number: 5 color: '#7F00FF' 1: 0.2 2: 0.1 3: 0.1 4: 0.2 5: 0.2 6: 0.2 topTwo: 0.3 topThree: 0.4 - number: 6 color: '#000000' 1: 0.2 2: 0.1 3: 0.4 4: 0.1 5: 0 6: 0.2 topTwo: 0.3 topThree: 0.7 items: type: object properties: number: type: integer example: 1 color: type: string example: '#ff0000' 1: type: number example: 0.3 2: type: number example: 0.1 3: type: number example: 0.1 4: type: number example: 0.4 5: type: number example: 0.1 6: type: integer example: 0 topTwo: type: number example: 0.4 topThree: type: number example: 0.5 pair_probabilities: type: array example: - number: 1 color: '#ff0000' 1: null 2: 0 3: 0.33 4: 0 5: 0 6: 0.33 - number: 2 color: '#0000ff' 1: 0 2: null 3: 0.17 4: 0.17 5: 0.17 6: 0 - number: 3 color: '#FFA500' 1: 0.33 2: 0.17 3: null 4: 0 5: 0.17 6: 0 - number: 4 color: '#00ff00' 1: 0 2: 0.17 3: 0 4: null 5: 0.17 6: 0.17 - number: 5 color: '#7F00FF' 1: 0 2: 0.17 3: 0.17 4: 0.17 5: null 6: 0 - number: 6 color: '#000000' 1: 0.33 2: 0 3: 0 4: 0.17 5: 0 6: null items: type: object properties: number: type: integer example: 1 color: type: string example: '#ff0000' 1: type: string example: null 2: type: integer example: 0 3: type: number example: 0.33 4: type: integer example: 0 5: type: integer example: 0 6: type: number example: 0.33 tags: - 'Все запросы' security: [] /api/characteristics: get: summary: '' operationId: getApiCharacteristics description: '' parameters: [] responses: 200: description: '' content: application/json: schema: type: array items: type: object example: - id: 1 reaction_time: 0.12 boost: 4.5 max_speed: 11.2 speed_loss: 0.18 stability_from: 0 stability_to: 1 number: 1 color: '#ff0000' created_at: '2025-04-06T11:04:53.000000Z' updated_at: '2025-04-06T11:04:53.000000Z' - id: 2 reaction_time: 0.12 boost: 4.5 max_speed: 11.2 speed_loss: 0.18 stability_from: 0 stability_to: 1 number: 2 color: '#0000ff' created_at: '2025-04-06T11:04:53.000000Z' updated_at: '2025-04-06T11:04:53.000000Z' - id: 3 reaction_time: 0.12 boost: 4.5 max_speed: 11.2 speed_loss: 0.18 stability_from: 0 stability_to: 1 number: 3 color: '#FFA500' created_at: '2025-04-06T11:04:53.000000Z' updated_at: '2025-04-06T11:04:53.000000Z' - id: 4 reaction_time: 0.12 boost: 4.5 max_speed: 11.2 speed_loss: 0.18 stability_from: 0 stability_to: 1 number: 4 color: '#00ff00' created_at: '2025-04-06T11:04:53.000000Z' updated_at: '2025-04-06T11:04:53.000000Z' - id: 5 reaction_time: 0.12 boost: 4.5 max_speed: 11.2 speed_loss: 0.18 stability_from: 0 stability_to: 1 number: 5 color: '#7F00FF' created_at: '2025-04-06T11:04:53.000000Z' updated_at: '2025-04-06T11:04:53.000000Z' - id: 6 reaction_time: 0.12 boost: 4.5 max_speed: 11.2 speed_loss: 0.18 stability_from: 0 stability_to: 1 number: 6 color: '#000000' created_at: '2025-04-06T11:04:53.000000Z' updated_at: '2025-04-06T11:04:53.000000Z' tags: - 'Все запросы' security: [] /api/users/roles: get: summary: 'Получить роли для регистрации' operationId: '' description: '' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: roles: - id: user name: Пользователь properties: roles: type: array example: - id: user name: Пользователь items: type: object properties: id: type: string example: user name: type: string example: Пользователь tags: - Пользователи security: [] '/api/users/{userId}': get: summary: 'Просмотреть пользователя' operationId: '' description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Пользователи post: summary: 'Обновить данные пользователя' operationId: '' description: '' parameters: [] responses: { } tags: - Пользователи requestBody: required: true content: multipart/form-data: schema: type: object properties: name: type: string description: 'Имя пользователя' example: username nullable: false email: type: string description: Почта example: test@example.com nullable: false avatar: type: string format: binary description: Аватарка nullable: true required: - name - email parameters: - in: path name: userId description: 'ID пользователя' example: 1 required: true schema: type: string /api/emails/send-verify-code: get: summary: 'Отправить код на почту' operationId: '' description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Почта /api/emails/verify-code: post: summary: 'Проверить код' operationId: '' description: 'Стоит ограничение на проверку кода (3 попытки в минуту)' parameters: [] responses: { } tags: - Почта requestBody: required: true content: application/json: schema: type: object properties: code: type: integer description: 'Код подтверждения' example: '1234' nullable: false required: - code