127 lines
3.1 KiB
YAML
127 lines
3.1 KiB
YAML
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
|
|
username:
|
|
type: string
|
|
|
|
ConfigMetaDTO:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: Configuration file identifier
|
|
userId:
|
|
type: string
|
|
description: Owner user 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:
|
|
- file
|
|
- fileName
|
|
properties:
|
|
fileName:
|
|
type: string
|
|
description: Configuration file name
|
|
file:
|
|
type: string
|
|
format: binary
|
|
description: Binary contents of the file
|
|
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 |