stihirus-reader / openapi.yaml
opex792's picture
Create openapi.yaml
8b34dfb verified
openapi: 3.0.0
info:
title: StihiRus Reader API
description: Provides access to author data and poems from stihirus.ru via the stihirus-reader library.
version: 1.2.0
servers:
- url: /
description: Current server
paths:
/author/{identifier}:
get:
summary: Get Author Data and Poems
description: Fetches author profile information and optionally poems based on the page parameter.
parameters:
- name: identifier
in: path
required: true
description: Author identifier (numeric ID or string username/URL part).
schema:
type: string # Use string even for ID to simplify path handling
example: "oreh-orehov"
- name: page
in: query
required: false
description: Controls poem fetching. `null` or empty = all poems, `0` = profile only, `N > 0` = specific page N. Defaults to `null`.
schema:
type: string # Allow 'null', '0', or positive integers as strings
example: "1"
- name: delay
in: query
required: false
description: Delay in ms between requests when fetching all pages (`page=null`). Defaults to 500ms.
schema:
type: integer
format: int32
minimum: 0
example: 500
responses:
'200':
description: Successful response with author data.
content:
application/json:
schema:
$ref: '#/components/schemas/StihirusSuccessResponse'
'400':
description: Invalid input parameter (identifier, page, or delay).
content:
application/json:
schema:
$ref: '#/components/schemas/StihirusErrorResponse'
'404':
description: Author not found.
content:
application/json:
schema:
$ref: '#/components/schemas/StihirusErrorResponse'
'500':
description: Internal server error or error fetching/parsing data from stihirus.ru.
content:
application/json:
schema:
$ref: '#/components/schemas/StihirusErrorResponse'
'502':
description: Bad Gateway (HTTP error from stihirus.ru).
content:
application/json:
schema:
$ref: '#/components/schemas/StihirusErrorResponse'
'503':
description: Service Unavailable (Network error connecting to stihirus.ru).
content:
application/json:
schema:
$ref: '#/components/schemas/StihirusErrorResponse'
/author/{identifier}/filters:
get:
summary: Get Author Poem Filters
description: Fetches available filter options (rubrics, dates) for an author's poems.
parameters:
- name: identifier
in: path
required: true
description: Author identifier (numeric ID or string username/URL part).
schema:
type: string
example: "14260"
responses:
'200':
description: Successful response with filter data.
content:
application/json:
schema:
$ref: '#/components/schemas/StihirusFiltersSuccessResponse'
'400':
description: Invalid identifier format.
content:
application/json:
schema:
$ref: '#/components/schemas/StihirusErrorResponse'
'404':
description: Author not found.
content:
application/json:
schema:
$ref: '#/components/schemas/StihirusErrorResponse'
'500':
description: Internal server error or error fetching/parsing data from stihirus.ru.
content:
application/json:
schema:
$ref: '#/components/schemas/StihirusErrorResponse'
'502':
description: Bad Gateway (HTTP error from stihirus.ru).
content:
application/json:
schema:
$ref: '#/components/schemas/StihirusErrorResponse'
'503':
description: Service Unavailable (Network error connecting to stihirus.ru).
content:
application/json:
schema:
$ref: '#/components/schemas/StihirusErrorResponse'
components:
schemas:
StihirusError:
type: object
properties:
code:
type: integer
format: int32
description: HTTP status or custom error code.
message:
type: string
description: Error message.
originalMessage:
type: string
description: Optional underlying error message.
required:
- code
- message
StihirusErrorResponse:
type: object
properties:
status:
type: string
enum: [error]
error:
$ref: '#/components/schemas/StihirusError'
required:
- status
- error
StihirusAuthorStats:
type: object
properties:
poems:
type: integer
description: Total number of poems (from profile HTML).
reviewsSent:
type: integer
description: Number of reviews sent.
reviewsReceived:
type: integer
description: Number of reviews received.
required:
- poems
- reviewsSent
- reviewsReceived
StihirusCollectionInfo:
type: object
properties:
name:
type: string
description: Collection name.
url:
type: string
format: url
description: Full URL to the collection.
required:
- name
- url
StihirusPoemRubric:
type: object
properties:
name:
type: string
description: Rubric name.
url:
type: string
format: url
nullable: true
description: Full URL to the rubric page, or null.
required:
- name
- url
StihirusPoem:
type: object
properties:
id:
type: integer
format: int64
description: Unique ID.
title:
type: string
description: Title (or '***').
text:
type: string
description: Full text.
created:
type: string
description: Creation date/time string (e.g., "27.03.2025 20:19").
rubric:
$ref: '#/components/schemas/StihirusPoemRubric'
collection:
type: string
nullable: true
description: Author's collection name, or null.
rating:
type: integer
description: Likes count.
commentsCount:
type: integer
description: Comments count.
imageUrl:
type: string
format: url
nullable: true
description: URL to poem's image, or null.
hasCertificate:
type: boolean
description: Whether it has a certificate.
required:
- id
- title
- text
- created
- rubric
- collection
- rating
- commentsCount
- imageUrl
- hasCertificate
StihirusAuthorData:
type: object
properties:
authorId:
type: integer
format: int64
username:
type: string
profileUrl:
type: string
format: url
canonicalUsername:
type: string
description:
type: string
avatarUrl:
type: string
format: url
nullable: true
headerUrl:
type: string
format: url
nullable: true
status:
type: string
lastVisit:
type: string
stats:
$ref: '#/components/schemas/StihirusAuthorStats'
collections:
type: array
items:
$ref: '#/components/schemas/StihirusCollectionInfo'
poems:
type: array
items:
$ref: '#/components/schemas/StihirusPoem'
required:
- authorId
- username
- profileUrl
- canonicalUsername
- description
- avatarUrl
- headerUrl
- status
- lastVisit
- stats
- collections
- poems
StihirusSuccessResponse:
type: object
properties:
status:
type: string
enum: [success]
data:
$ref: '#/components/schemas/StihirusAuthorData'
required:
- status
- data
StihirusFilterRubric:
type: object
properties:
id:
type: integer
description: Rubric ID used for filtering.
name:
type: string
description: Display name of the rubric.
count:
type: integer
description: Number of poems in this rubric.
required:
- id
- name
- count
StihirusFilterDate:
type: object
properties:
year:
type: integer
description: Year used for filtering.
month:
type: integer
description: Month used for filtering (1-12).
count:
type: integer
description: Number of poems published in this month/year.
required:
- year
- month
- count
StihirusAuthorFiltersData:
type: object
properties:
rubrics:
type: array
items:
$ref: '#/components/schemas/StihirusFilterRubric'
dates:
type: array
items:
$ref: '#/components/schemas/StihirusFilterDate'
required:
- rubrics
- dates
StihirusFiltersSuccessResponse:
type: object
properties:
status:
type: string
enum: [success]
data:
$ref: '#/components/schemas/StihirusAuthorFiltersData'
required:
- status
- data