592 lines
14 KiB
YAML
592 lines
14 KiB
YAML
openapi: 3.1.1
|
|
info:
|
|
title: Titles, Users, Reviews, Tags, and Media API
|
|
version: 1.0.0
|
|
servers:
|
|
- url: https://api.example.com
|
|
paths:
|
|
/title:
|
|
get:
|
|
summary: Get titles
|
|
parameters:
|
|
- in: query
|
|
name: query
|
|
schema:
|
|
type: string
|
|
- in: query
|
|
name: limit
|
|
schema:
|
|
type: integer
|
|
default: 10
|
|
- in: query
|
|
name: offset
|
|
schema:
|
|
type: integer
|
|
default: 0
|
|
- in: query
|
|
name: fields
|
|
schema:
|
|
type: string
|
|
default: all
|
|
responses:
|
|
'200':
|
|
description: List of titles
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Title'
|
|
'204':
|
|
description: No titles found
|
|
|
|
/title/{title_id}:
|
|
get:
|
|
summary: Get title description
|
|
parameters:
|
|
- in: path
|
|
name: title_id
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- in: query
|
|
name: fields
|
|
schema:
|
|
type: string
|
|
default: all
|
|
responses:
|
|
'200':
|
|
description: Title description
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Title'
|
|
'404':
|
|
description: Title not found
|
|
|
|
patch:
|
|
summary: Update title info
|
|
parameters:
|
|
- in: path
|
|
name: title_id
|
|
required: true
|
|
schema:
|
|
type: string
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Title'
|
|
responses:
|
|
'200':
|
|
description: Update result
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
error:
|
|
type: string
|
|
user_json:
|
|
$ref: '#/components/schemas/User'
|
|
|
|
/title/{title_id}/reviews:
|
|
get:
|
|
summary: Get title reviews
|
|
parameters:
|
|
- in: path
|
|
name: title_id
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- in: query
|
|
name: limit
|
|
schema:
|
|
type: integer
|
|
default: 10
|
|
- in: query
|
|
name: offset
|
|
schema:
|
|
type: integer
|
|
default: 0
|
|
responses:
|
|
'200':
|
|
description: List of reviews
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Review'
|
|
'204':
|
|
description: No reviews found
|
|
|
|
/users/{user_id}:
|
|
get:
|
|
summary: Get user info
|
|
parameters:
|
|
- in: path
|
|
name: user_id
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- in: query
|
|
name: fields
|
|
schema:
|
|
type: string
|
|
default: all
|
|
responses:
|
|
'200':
|
|
description: User info
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/User'
|
|
'404':
|
|
description: User not found
|
|
|
|
patch:
|
|
summary: Update user
|
|
parameters:
|
|
- in: path
|
|
name: user_id
|
|
required: true
|
|
schema:
|
|
type: string
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/User'
|
|
responses:
|
|
'200':
|
|
description: Update result
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
error:
|
|
type: string
|
|
|
|
delete:
|
|
summary: Delete user
|
|
parameters:
|
|
- in: path
|
|
name: user_id
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: Delete result
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
error:
|
|
type: string
|
|
|
|
/users:
|
|
get:
|
|
summary: Search user
|
|
parameters:
|
|
- in: query
|
|
name: query
|
|
schema:
|
|
type: string
|
|
- in: query
|
|
name: fields
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: List of users
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/User'
|
|
|
|
post:
|
|
summary: Add new user
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/User'
|
|
responses:
|
|
'200':
|
|
description: Add result
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
error:
|
|
type: string
|
|
user_json:
|
|
$ref: '#/components/schemas/User'
|
|
|
|
/users/{user_id}/titles:
|
|
get:
|
|
summary: Get user titles
|
|
parameters:
|
|
- in: path
|
|
name: user_id
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- in: query
|
|
name: query
|
|
schema:
|
|
type: string
|
|
- in: query
|
|
name: limit
|
|
schema:
|
|
type: integer
|
|
default: 10
|
|
- in: query
|
|
name: offset
|
|
schema:
|
|
type: integer
|
|
default: 0
|
|
- in: query
|
|
name: fields
|
|
schema:
|
|
type: string
|
|
default: all
|
|
responses:
|
|
'200':
|
|
description: List of user titles
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/UserTitle'
|
|
'204':
|
|
description: No titles found
|
|
|
|
post:
|
|
summary: Add user title
|
|
parameters:
|
|
- in: path
|
|
name: user_id
|
|
required: true
|
|
schema:
|
|
type: string
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
title_id:
|
|
type: string
|
|
status:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: Add result
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
error:
|
|
type: string
|
|
|
|
patch:
|
|
summary: Update user title
|
|
parameters:
|
|
- in: path
|
|
name: user_id
|
|
required: true
|
|
schema:
|
|
type: string
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/UserTitle'
|
|
responses:
|
|
'200':
|
|
description: Update result
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
error:
|
|
type: string
|
|
|
|
delete:
|
|
summary: Delete user title
|
|
parameters:
|
|
- in: path
|
|
name: user_id
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- in: query
|
|
name: title_id
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: Delete result
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
error:
|
|
type: string
|
|
|
|
/users/{user_id}/reviews:
|
|
get:
|
|
summary: Get user reviews
|
|
parameters:
|
|
- in: path
|
|
name: user_id
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- in: query
|
|
name: limit
|
|
schema:
|
|
type: integer
|
|
default: 10
|
|
- in: query
|
|
name: offset
|
|
schema:
|
|
type: integer
|
|
default: 0
|
|
responses:
|
|
'200':
|
|
description: List of reviews
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Review'
|
|
|
|
/reviews:
|
|
post:
|
|
summary: Add review
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Review'
|
|
responses:
|
|
'200':
|
|
description: Add result
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
error:
|
|
type: string
|
|
|
|
/reviews/{review_id}:
|
|
patch:
|
|
summary: Update review
|
|
parameters:
|
|
- in: path
|
|
name: review_id
|
|
required: true
|
|
schema:
|
|
type: string
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Review'
|
|
responses:
|
|
'200':
|
|
description: Update result
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
error:
|
|
type: string
|
|
delete:
|
|
summary: Delete review
|
|
parameters:
|
|
- in: path
|
|
name: review_id
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: Delete result
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
error:
|
|
type: string
|
|
|
|
/tags:
|
|
get:
|
|
summary: Get tags
|
|
parameters:
|
|
- in: query
|
|
name: limit
|
|
schema:
|
|
type: integer
|
|
default: 10
|
|
- in: query
|
|
name: offset
|
|
schema:
|
|
type: integer
|
|
default: 0
|
|
- in: query
|
|
name: fields
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: List of tags
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Tag'
|
|
|
|
/media:
|
|
post:
|
|
summary: Upload image
|
|
responses:
|
|
'200':
|
|
description: Upload result
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
error:
|
|
type: string
|
|
image_id:
|
|
type: string
|
|
|
|
get:
|
|
summary: Get image path
|
|
parameters:
|
|
- in: query
|
|
name: image_id
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: Image path
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
error:
|
|
type: string
|
|
image_path:
|
|
type: string
|
|
|
|
components:
|
|
schemas:
|
|
Title:
|
|
type: object
|
|
additionalProperties: true
|
|
User:
|
|
type: object
|
|
properties:
|
|
user_id:
|
|
type: integer
|
|
format: int32
|
|
description: Unique user ID (primary key)
|
|
example: 1
|
|
avatar_id:
|
|
type: integer
|
|
format: int32
|
|
description: ID of the user avatar (references images table)
|
|
nullable: true
|
|
example: null
|
|
mail:
|
|
type: string
|
|
format: email
|
|
description: User email
|
|
example: "john.doe@example.com"
|
|
nickname:
|
|
type: string
|
|
description: Username (alphanumeric + _ or -)
|
|
maxLength: 16
|
|
example: "john_doe_42"
|
|
disp_name:
|
|
type: string
|
|
description: Display name
|
|
maxLength: 32
|
|
example: "John Doe"
|
|
user_desc:
|
|
type: string
|
|
description: User description
|
|
maxLength: 512
|
|
example: "Just a regular user."
|
|
creation_date:
|
|
type: string
|
|
format: date-time
|
|
description: Timestamp when the user was created
|
|
example: "2025-10-10T23:45:47.908073Z"
|
|
required:
|
|
- user_id
|
|
- nickname
|
|
- creation_date
|
|
UserTitle:
|
|
type: object
|
|
additionalProperties: true
|
|
Review:
|
|
type: object
|
|
additionalProperties: true
|
|
Tag:
|
|
type: object
|
|
additionalProperties: true
|