openapi: 3.0.4 info: title: VPN Core API version: 1.0.0 servers: - url: https://api.yourdomain.com/v1 components: schemas: UserCreateRequestDTO: type: object required: - username properties: username: type: string description: Unique username UserResponseDTO: type: object properties: id: type: string description: Internal user identifier ConfigMetaDTO: type: object properties: id: type: string description: Configuration file identifier name: type: string description: Configuration name paths: /users: post: summary: Create user description: | Creates a user on first request. If a user with this username already exists — returns the existing user. requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/UserCreateRequestDTO" responses: "201": description: User created content: application/json: schema: $ref: "#/components/schemas/UserResponseDTO" "200": description: User already exists content: application/json: schema: $ref: "#/components/schemas/UserResponseDTO" "400": description: Bad request /configs: post: summary: Upload binary configuration file description: | Uploads a binary configuration file associated with a user. requestBody: required: true content: multipart/form-data: schema: type: object required: - fileName properties: fileName: type: string description: Configuration file name responses: "201": description: File successfully uploaded content: application/json: schema: $ref: "#/components/schemas/ConfigMetaDTO" "400": description: Invalid input get: summary: Get user configuration files description: Returns a list of all configuration files for the given user. parameters: - in: query name: userId required: true schema: type: string description: User identifier responses: "200": description: List of configuration files content: application/json: schema: type: array items: $ref: "#/components/schemas/ConfigMetaDTO" "400": description: Bad request