backend_contracts/oapi_scheme.yml

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