feat: added openapi spec #2

Merged
nihonium merged 1 commit from dev-ars into master 2025-10-09 03:28:11 +03:00

552
api/openapi.yaml Normal file
View file

@ -0,0 +1,552 @@
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
additionalProperties: true
UserTitle:
type: object
additionalProperties: true
Review:
type: object
additionalProperties: true
Tag:
type: object
additionalProperties: true