nyanimedb/api/openapi.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