Files
no-copy/REST_API_DOCUMENTATION.md
T
backdev 7b7a366d78
Test Workflow / test (push) Has been cancelled
Add api key for use rest api
2026-07-01 11:49:54 +07:00

24 KiB

NoCopy REST API Documentation

Оглавление

  1. Authentication & User Management
  2. Search Settings
  3. Global Search
  4. Payments
  5. Payouts
  6. Files
  7. API Keys
  8. Health Check
  9. Migration

Authentication & User Management

Base URL

v1/api/user

1. Get User Info

Endpoint: GET /v1/api/user

Query Parameters:

  • email (string, required) - User email address

Response:

{
  "id": "string",
  "email": "user@example.com",
  "fullName": "John Doe",
  "phone": "string",
  "genderType": "string",
  "birthday": "2024-01-01",
  "createdAt": "2024-01-01T00:00:00Z",
  "verifiedStatus": "string",
  "company": "string",
  "active": true,
  "permission": {},
  "tariffs": [],
  "tariffInfo": {
    "id": "number",
    "tariffId": "number",
    "tariffName": "string",
    "tokens": "number",
    "status": "ACTIVE",
    "currentFileCounts": "number",
    "maxFileCounts": "number",
    "currentFileOnDisk": "number",
    "maxFileOnDisk": "number",
    "startTariff": "2024-01-01T00:00:00Z",
    "endTariff": "2024-01-01T00:00:00Z"
  }
}

Status Codes:

  • 200 - Success
  • 404 - User not found

2. Change Password

Endpoint: POST /v1/api/user/change-password

Headers:

  • Authorization - JWT token with userId

Request Body:

{
  "email": "user@example.com",
  "oldPassword": "string",
  "newPassword": "string"
}

Response: UserDTO object

Status Codes:

  • 200 - Success
  • 400 - Invalid email
  • 404 - User not found

3. Update User Profile

Endpoint: PATCH /v1/api/user/user-update

Headers:

  • Authorization - JWT token with userId

Request Body:

{
  "fullName": "string",
  "phone": "string",
  "genderType": "string",
  "birthday": "2024-01-01"
}

Response: Updated UserDTO

Status Codes:

  • 200 - Success
  • 404 - User not found

4. Create New User

Endpoint: POST /v1/api/user/create-user

Request Body:

{
  "fullName": "John Doe",
  "email": "user@example.com",
  "phone": "string",
  "password": "string"
}

Response:

{
  "user": {
    "id": "number",
    "email": "string",
    "fullName": "string"
  },
  "token": "jwt_token_string"
}

Status Codes:

  • 200 - Success
  • 409 - User already exists

5. Delete User

Endpoint: DELETE /v1/api/user/delete-user/{userId}

Path Parameters:

  • userId (number, required) - User ID

Response:

{
  "userId": "number",
  "deleted": "true"
}

Status Codes:

  • 200 - Success

Search Settings

Base URL

/api/search/settings

1. Get Search Settings

Endpoint: GET /api/search/settings

Response:

{
  "messageDesc": "Success",
  "messageBody": {
    "engines": {
      "yandex": true,
      "google": true
    },
    "proxyEnabled": true
  }
}

Status Codes:

  • 200 - Success

2. Update Search Settings

Endpoint: PUT /api/search/settings

Request Body:

{
  "engines": {
    "yandex": true,
    "google": false
  },
  "proxyEnabled": true
}

Response:

{
  "messageDesc": "Settings updated"
}

Status Codes:

  • 200 - Success

Base URL

/api/v1/global-search

Endpoint: POST /api/v1/global-search/start

Headers:

  • Authorization - JWT token with userId

Request Body:

{
  "fileIds": ["string", "string"],
  "engines": ["yandex", "google"],
  "searchType": "visual_matches"
}

Response:

{
  "taskId": "string",
  "status": "ACCEPTED",
  "totalFiles": "number"
}

Status Codes:

  • 200 - Success
  • 404 - Files not found

2. Get Current Task

Endpoint: GET /api/v1/global-search/actual-task

Headers:

  • Authorization - JWT token with userId

Response:

{
  "taskId": "string",
  "userId": "number",
  "status": "PROCESSING",
  "totalFiles": "number",
  "processedFiles": "number",
  "createdAt": "2024-01-01T00:00:00Z"
}

Status Codes:

  • 200 - Success
  • 404 - Task not found

3. Get Search Task Status

Endpoint: GET /api/v1/global-search/status/{taskId}

Path Parameters:

  • taskId (string, required) - Task ID

Headers:

  • Authorization - JWT token with userId

Response:

{
  "taskId": "string",
  "status": "PROCESSING",
  "progress": 50
}

Status Codes:

  • 200 - Success
  • 404 - Task not found

4. Get Violation Summary

Endpoint: GET /api/v1/global-search/violation-summary

Headers:

  • Authorization - JWT token with userId

Response:

[
  {
    "fileId": "string",
    "fileName": "string",
    "violationCount": "number",
    "severity": "HIGH"
  }
]

Status Codes:

  • 200 - Success
  • 404 - No violations found

5. Get Violations with Pagination

Endpoint: POST /api/v1/global-search/violation-summary-with-files

Headers:

  • Authorization - JWT token with userId

Request Body:

{
  "fileName": "string",
  "sortDirection": "DESC",
  "page": 0,
  "size": 20,
  "startDate": "2024-01-01T00:00:00Z",
  "endDate": "2024-12-31T23:59:59Z"
}

Response:

{
  "content": [],
  "page": 0,
  "size": 20,
  "totalElements": 100,
  "totalPages": 5,
  "hasNext": true,
  "hasPrevious": false
}

Status Codes:

  • 200 - Success

Payments

Base URL

/api/payments

1. Create Payment

Endpoint: POST /api/payments/create

Query Parameters:

  • email (string, required) - User email
  • tariffId (number, required) - Tariff ID
  • operationType (string, required) - Type of operation
  • operationUuid (string, required) - Operation UUID

Response:

{
  "id": "number",
  "userId": "number",
  "tariffId": "number",
  "amount": "number",
  "status": "PENDING",
  "createdAt": "2024-01-01T00:00:00Z"
}

Status Codes:

  • 200 - Success
  • 404 - User or Tariff not found
  • 500 - Internal server error

2. YooKassa Webhook

Endpoint: POST /api/payments/webhook/yookassa

Request Body:

{
  "type": "payment.succeeded",
  "object": {
    "id": "string",
    "status": "succeeded",
    "amount": {
      "value": "string",
      "currency": "RUB"
    }
  }
}

Status Codes:

  • 200 - Success

3. Change Auto-Renewal

Endpoint: POST /api/payments/auto-renewal

Headers:

  • Authorization - JWT token (required)

Query Parameters:

  • renewal (boolean, required) - Enable/disable auto-renewal

Response:

{
  "message": "Auto-renewal changed: true"
}

Status Codes:

  • 200 - Success
  • 400 - Invalid token
  • 404 - User not found

4. Get Payment Methods

Endpoint: GET /api/payments/methods

Headers:

  • Authorization - JWT token (required)

Response:

[
  {
    "id": "string",
    "type": "CARD",
    "lastFour": "1234",
    "isDefault": true
  }
]

Status Codes:

  • 200 - Success
  • 404 - User not found

5. Delete Payment Method

Endpoint: DELETE /api/payments/methods/{paymentMethodId}

Headers:

  • Authorization - JWT token (required)

Path Parameters:

  • paymentMethodId (string, required) - Payment method ID

Response:

{
  "message": "Payment method deleted"
}

Status Codes:

  • 200 - Success
  • 400 - Bad request
  • 404 - User not found

Payouts

Base URL

/api/payouts

1. Create Payout Request

Endpoint: POST /api/payouts/create-request

Headers:

  • Authorization - JWT token with userId

Request Body:

{
  "amount": "number",
  "methodId": "number",
  "description": "string"
}

Response:

{
  "id": "number",
  "userId": "number",
  "amount": "number",
  "status": "PENDING",
  "createdAt": "2024-01-01T00:00:00Z"
}

Status Codes:

  • 201 - Created
  • 409 - Insufficient funds or pending payout exists

2. Process Payout Request

Endpoint: POST /api/payouts/requests/{requestId}/process

Path Parameters:

  • requestId (number, required) - Payout request ID

Response:

{
  "id": "number",
  "status": "PROCESSED",
  "updatedAt": "2024-01-01T00:00:00Z"
}

Status Codes:

  • 200 - Success

3. Cancel Payout Request

Endpoint: POST /api/payouts/requests/{requestId}/cancel

Headers:

  • Authorization - JWT token with userId

Path Parameters:

  • requestId (number, required) - Payout request ID

Response:

{
  "id": "number",
  "status": "CANCELLED",
  "updatedAt": "2024-01-01T00:00:00Z"
}

Status Codes:

  • 200 - Success
  • 404 - User or request not found

4. Get User Payout Requests

Endpoint: GET /api/payouts/requests

Headers:

  • Authorization - JWT token with userId

Response:

[
  {
    "id": "number",
    "amount": "number",
    "status": "PENDING",
    "createdAt": "2024-01-01T00:00:00Z"
  }
]

Status Codes:

  • 200 - Success
  • 404 - User not found

5. Get Payout Request by ID

Endpoint: GET /api/payouts/requests/{requestId}

Headers:

  • Authorization - JWT token with userId

Path Parameters:

  • requestId (number, required) - Payout request ID

Response:

{
  "id": "number",
  "userId": "number",
  "amount": "number",
  "status": "PENDING",
  "methodId": "number"
}

Status Codes:

  • 200 - Success
  • 404 - User or request not found

6. Get Available Payout Methods

Endpoint: GET /api/payouts/payout-methods

Response:

[
  {
    "code": "CARD",
    "name": "Bank Card"
  },
  {
    "code": "BANK_TRANSFER",
    "name": "Bank Transfer"
  }
]

Status Codes:

  • 200 - Success

7. Get User Payout Methods

Endpoint: GET /api/payouts/user/payout-methods

Headers:

  • Authorization - JWT token with userId

Response:

[
  {
    "id": "number",
    "type": "CARD",
    "lastFour": "1234",
    "isDefault": true
  }
]

Status Codes:

  • 200 - Success
  • 404 - User not found

8. Add Card Payout Method

Endpoint: POST /api/payouts/payout-method/card

Headers:

  • Authorization - JWT token with userId

Request Body:

{
  "cardNumber": "string",
  "expiryMonth": "number",
  "expiryYear": "number",
  "cvv": "string"
}

Response:

{
  "id": "number",
  "type": "CARD",
  "lastFour": "1234",
  "isDefault": false
}

Status Codes:

  • 201 - Created
  • 404 - User not found

9. Add Bank Transfer Payout Method

Endpoint: POST /api/payouts/payout-method/bank-transfer

Headers:

  • Authorization - JWT token with userId

Request Body:

{
  "bankName": "string",
  "accountNumber": "string",
  "routingNumber": "string",
  "accountHolder": "string"
}

Response:

{
  "id": "number",
  "type": "BANK_TRANSFER",
  "lastFour": "0123",
  "isDefault": false
}

Status Codes:

  • 201 - Created
  • 404 - User not found

10. Set Default Payout Method

Endpoint: PUT /api/payouts/payout-method/{methodId}/default

Headers:

  • Authorization - JWT token with userId

Path Parameters:

  • methodId (number, required) - Payout method ID

Status Codes:

  • 200 - Success
  • 404 - User not found

Files

Base URL

/api/files

1. Get Public File

Endpoint: GET /api/files/public/{fileId}

Path Parameters:

  • fileId (string, required) - File ID

Response: File stream with appropriate headers

Status Codes:

  • 200 - Success
  • 404 - File not found
  • 500 - Internal server error

2. Get Public File Info

Endpoint: GET /api/files/public/file-info/{fileId}

Path Parameters:

  • fileId (string, required) - File ID

Response:

{
  "id": "string",
  "fileName": "string",
  "fileSize": "number",
  "mimeType": "string",
  "createdAt": "2024-01-01T00:00:00Z"
}

Status Codes:

  • 200 - Success
  • 404 - File not found

3. Get Protected File

Endpoint: GET /api/files/protected/{fileId}/{type}

Path Parameters:

  • fileId (string, required) - File ID
  • type (string, required) - "file" or "thumbnail"

Response: File stream

Status Codes:

  • 200 - Success
  • 400 - File is not protected
  • 500 - File not found

4. Get File with Type

Endpoint: GET /api/files/public/{fileId}/{type}

Path Parameters:

  • fileId (string, required) - File ID
  • type (string, required) - "file" or "thumbnail"

Response: File stream

Status Codes:

  • 200 - Success
  • 400 - File is not protected

5. Get Check Status

Endpoint: GET /api/files/check-file/status/{userId}

Path Parameters:

  • userId (number, required) - User ID

Response:

{
  "userId": "number",
  "checksRemaining": "number",
  "checksUsed": "number",
  "totalChecks": "number"
}

Status Codes:

  • 200 - Success

6. Update Check Limit

Endpoint: POST /api/files/check-file/update-limit/{userId}/{limit}

Path Parameters:

  • userId (number, required) - User ID
  • limit (number, required) - New limit

Response:

{
  "userId": "number",
  "limit": "number",
  "updatedAt": "2024-01-01T00:00:00Z"
}

Status Codes:

  • 200 - Success

7. Protect File

Endpoint: POST /api/files/protect/{fileId}/{convertTo}

Path Parameters:

  • fileId (string, required) - File ID
  • convertTo (string, required) - Convert format

Response:

{
  "id": "string",
  "name": "string",
  "path": "string",
  "type": "string"
}

Status Codes:

  • 200 - Success

8. Download Passport Zip

Endpoint: GET /api/files/download/user-passport/archive/{userId}

Path Parameters:

  • userId (number, required) - User ID

Response: ZIP file stream

Status Codes:

  • 200 - Success
  • 500 - Failed to assemble passport

API Keys

Base URL

/api/user

1. Create API Key

Endpoint: POST /api/user/api-keys

Headers:

  • Authorization - JWT token with userId

Request Body:

{
  "name": "My API Key"
}

Response:

{
  "messageCode": "number",
  "messageDesc": "string",
  "messageBody": {
    "apiKey": "string"
  }
}

Status Codes:

  • 200 - Success

2. List User API Keys

Endpoint: GET /api/user/api-keys

Headers:

  • Authorization - JWT token with userId

Response:

{
  "messageCode": "number",
  "messageBody": [
    {
      "id": "number",
      "name": "string",
      "prefix": "string",
      "isActive": true,
      "createdAt": "2024-01-01T00:00:00Z",
      "lastUsedAt": "2024-01-01T00:00:00Z"
    }
  ]
}

Status Codes:

  • 200 - Success

3. Revoke API Key

Endpoint: DELETE /api/user/api-keys/{keyId}

Headers:

  • Authorization - JWT token with userId

Path Parameters:

  • keyId (number, required) - API Key ID

Response:

{
  "messageCode": "number"
}

Status Codes:

  • 200 - Success

Main API

Base URL

/api

1. Handle API Request (Versioned)

Endpoint: POST /api/v{version}/data

Path Parameters:

  • version (number, required) - API version (e.g., 1, 2)

Request Body:

{
  "msgId": "number",
  "data": {}
}

Response:

{
  "msgId": "number",
  "code": "number",
  "messageDesc": "string",
  "messageBody": {}
}

Status Codes:

  • 200 - Success

2. Handle Auth Request

Endpoint: POST /api/auth

Request Body:

{
  "msgId": "number",
  "data": {}
}

Response:

{
  "msgId": "number",
  "code": "number",
  "messageDesc": "string"
}

Status Codes:

  • 200 - Success

3. Internal Data Info

Endpoint: POST /api/internal/data-info

Request Body:

{
  "msgId": "number",
  "data": {}
}

Response:

{
  "msgId": "number",
  "code": "number"
}

Status Codes:

  • 200 - Success

4. Internal Data Download

Endpoint: GET /api/internal/data-download/{fileId}

Path Parameters:

  • fileId (string, required) - File ID

Response: File bytes

Status Codes:

  • 200 - Success
  • 404 - File not found

5. Internal Data Control

Endpoint: POST /api/internal/data-control

Request Body:

{
  "msgId": "number",
  "data": {}
}

Response:

{
  "msgId": "number",
  "code": "number"
}

Status Codes:

  • 200 - Success

6. Upload File Chunk

Endpoint: POST /api/v{version}/files/chunk

Path Parameters:

  • version (number, required) - API version

Query Parameters:

  • upload_id (string, required) - Upload session ID
  • chunk_number (number, required) - Chunk number
  • chunk (file, required) - Chunk file
  • findSimilar (number, optional) - Find similar files flag

Response:

{
  "msgId": "number",
  "code": "number",
  "messageBody": {
    "uploadId": "string",
    "chunkNumber": "number",
    "chunkSize": "number",
    "fileId": "string",
    "message": "Chunk uploaded successfully"
  }
}

Status Codes:

  • 200 - Success
  • 409 - Duplicate file

7. Upload Private File Chunk

Endpoint: POST /api/v{version}/private/files/chunk

Headers:

  • Authorization - JWT token with userId

Query Parameters:

  • upload_id (string, required) - Upload session ID
  • chunk_number (number, required) - Chunk number
  • chunk (file, required) - Chunk file
  • last_file (boolean, optional) - Is this the last file

Response:

{
  "msgId": "number",
  "code": "number",
  "messageBody": {
    "uploadId": "string",
    "chunkNumber": "number",
    "fileId": "string"
  }
}

Status Codes:

  • 200 - Success

8. Check File

Endpoint: GET /api/check/{fileId}

Path Parameters:

  • fileId (string, required) - File ID

Response:

{
  "msgId": "number",
  "code": "number",
  "messageBody": {
    "fileId": "string",
    "checkResult": {}
  }
}

Status Codes:

  • 200 - Success

9. Find Similar Files

Endpoint: GET /api/v{version}/files/{fileId}/similar

Path Parameters:

  • version (number, required) - API version
  • fileId (string, required) - File ID

Query Parameters:

  • similarityLevels (array, optional) - Similarity level filters
  • page (number, optional, default: 0) - Page number
  • size (number, optional, default: 20) - Page size
  • sort (string, optional, default: "hammingDistance") - Sort field

Response:

{
  "msgId": "number",
  "code": "number",
  "messageBody": {
    "content": [
      {
        "fileId": "string",
        "fileName": "string",
        "similarity": "number"
      }
    ],
    "page": "number",
    "size": "number",
    "totalElements": "number",
    "totalPages": "number",
    "hasNext": "boolean"
  }
}

Status Codes:

  • 200 - Success
  • 400 - Invalid file

10. Get Upload Progress

Endpoint: GET /api/v{version}/files/progress/{uploadId}

Path Parameters:

  • version (number, required) - API version
  • uploadId (string, required) - Upload ID

Response:

{
  "msgId": "number",
  "code": "number",
  "messageBody": {
    "uploadId": "string",
    "fileName": "string",
    "totalChunks": "number",
    "uploadedChunks": "number",
    "status": "UPLOADING",
    "progressPercentage": "number",
    "filePath": "string",
    "remainingChunks": "number"
  }
}

Status Codes:

  • 200 - Success

11. Complete Upload

Endpoint: POST /api/v{version}/files/{uploadId}/complete

Path Parameters:

  • version (number, required) - API version
  • uploadId (string, required) - Upload ID

Response:

{
  "msgId": "number",
  "code": "number",
  "messageBody": {
    "uploadId": "string",
    "status": "COMPLETED",
    "uploadedChunks": "number",
    "totalChunks": "number",
    "message": "File assembly in progress",
    "filePath": "string"
  }
}

Status Codes:

  • 200 - Success

12. Download Public File

Endpoint: GET /api/v{version}/files/public-download/{fileId}

Path Parameters:

  • version (number, required) - API version
  • fileId (string, required) - File ID

Response: File bytes

Status Codes:

  • 200 - Success
  • 400 - File is blocked or no download permission

13. Download File with Auth

Endpoint: GET /api/v{version}/files/download/{fileId}

Headers:

  • Authorization - JWT token (required)

Path Parameters:

  • version (number, required) - API version
  • fileId (string, required) - File ID

Response: File bytes

Status Codes:

  • 200 - Success
  • 400 - File is blocked
  • 401 - Invalid token
  • 403 - No permission

Endpoint: POST /api/file/link

Headers:

  • Authorization - JWT token (optional)

Request Body:

{
  "fileId": "string",
  "viewerIp": "string",
  "viewerUserAgent": "string"
}

Response: File bytes with download headers

Status Codes:

  • 200 - Success
  • 400 - File is blocked

15. Get File Protection Stats

Endpoint: GET /api/check/file_stats

Headers:

  • Authorization - JWT token with userId

Response:

{
  "imageProtections": "number",
  "documentProtections": "number",
  "audioProtections": "number",
  "totalProtections": "number"
}

Status Codes:

  • 200 - Success

Health Check

Base URL

check/api

1. Health Check

Endpoint: GET /check/api/healt

Response: HTTP Status OK

Status Codes:

  • 200 - Service is healthy

2. Get Build Info

Endpoint: GET /check/api/build

Response:

{
  "buildTimeBack": "string"
}

Status Codes:

  • 200 - Success

3. Get Memory Info

Endpoint: GET /check/api/api/debug/memory

Response:

{
  "maxMemory (MB)": "string",
  "totalMemory (MB)": "string",
  "freeMemory (MB)": "string",
  "usedMemory (MB)": "string",
  "availableProcessors": "string",
  "JAVA_TOOL_OPTIONS": "string",
  "JAVA_OPTS": "string"
}

Status Codes:

  • 200 - Success

4. Test Monitoring

Endpoint: POST /check/api/test/monitoring/{fileId}

Path Parameters:

  • fileId (string, required) - File ID

Response:

"OK"

Status Codes:

  • 200 - Success

Migration

Base URL

/api/admin/migration

1. Start Migration

Endpoint: POST /api/admin/migration/start

Response:

Migration started. Check logs for progress.

Status Codes:

  • 200 - Success

2. Get Migration Status

Endpoint: POST /api/admin/migration/status

Response:

Check application logs and migration_failed.txt for details

Status Codes:

  • 200 - Success

3. Fill Dock View

Endpoint: POST /api/admin/migration/fill-dock-view

Response:

fill old dock view

Status Codes:

  • 200 - Success

Error Handling

Common Error Codes

Code Description
200 Success
201 Created
400 Bad Request / Invalid parameters
401 Unauthorized
403 Forbidden / No permission
404 Not Found
409 Conflict / Resource already exists
500 Internal Server Error

Error Response Format

{
  "messageCode": "number",
  "messageDesc": "string",
  "messageBody": {
    "error": "string",
    "message": "string"
  }
}

Authentication

Most endpoints require JWT authentication via the Authorization header:

Authorization: Bearer <jwt_token>

The JWT token should contain the userId claim, which is extracted from the request attributes.


Request/Response Headers

Common Request Headers

  • Content-Type: application/json
  • Authorization: Bearer <jwt_token> (where required)

Common Response Headers

  • Content-Type: application/json or application/octet-stream (for file downloads)
  • Cache-Control: Cache directives
  • Content-Disposition: For file downloads

Rate Limiting

Currently, there are no documented rate limits. Please contact support for information about rate limiting policies.


Versioning

The API uses URL versioning. Different endpoints may use different versions:

  • /v1/api/... - Version 1
  • /api/v{version}/... - Dynamic versioning

Date Format

All dates and timestamps should use ISO 8601 format:

2024-01-01T00:00:00Z

Last Updated: 2026-07-01