audiobookshelf/docs/controllers/AuthorController.yaml
Nicholas W baf5f7fbc3
Initial library endpoints (#3012)
* Fix: extra type in `Author.yaml`

* Fix: formatting

* Initial library schema

* Additional debugging

* Fix: spec relative paths

* Add: ebook file spec

* Fix: response type should be string

* Linting updates

* Add: missing librarySettings

* Temporary fix: Library cron can be null or false

* Author controller updates

* Add: `/api/libraries/{id}` endpoint

* Update library responses

* Add: descriptions

* Fix: queries should be in body

* Fix: `body` should be `requestBody`

* Move: `libraryController` paths, clean up `requestBody`

* Clean up libraryController parameters

* Move: author endpoints to controller

* Add `get` for author images

* Simplify author schema with items

* Remove: unused response type

* Update: formatting

* Update json

* Update requestBody on LibraryController

* LibrarySettings update

* Replace: generic parameter with path specific parameter

* Fix: requestBody descriptions

* Fix: match post operation

* Temporary: nullable Author schemas

* LibraryController items endpoint

* Add: delete library items with issues

* Massive cleanup and violation fixing

* Update bundled spec

* Add: remove library items with issues

* Add: library items endpoint

* Fix: errors

* Fix: base schemas

* Add: series schemas

* Add: library series endpoint

* Fix: oneOf and array issues

* Add: author search region for matching

* Add: series endpoints

* Fix: series issues

* Add library series endpoint and update deprecation

* Fix: series endpoint deprecation

* Fix: `name` in `sortDesc` schema

* Add: workflow for linting spec

* Update OpenAPI readme
2024-06-13 17:09:02 -05:00

295 lines
10 KiB
YAML

components:
schemas:
authorUpdated:
description: Whether the author was updated without errors. Will not exist if author was merged.
type: boolean
nullable: true
authorMerged:
description: Whether the author was merged with another author. Will not exist if author was updated.
type: boolean
nullable: true
authorInclude:
description: A comma separated list of what to include with the author. The options are `items` and `series`. `series` will only have an effect if `items` is included. For example, the value `items,series` will include both library items and series.
type: string
example: 'items'
authorLibraryId:
$ref: '../objects/Library.yaml#/components/schemas/libraryId'
authorSearchName:
description: The name of the author to use for searching.
type: string
example: Terry Goodkind
authorName:
$ref: '../objects/entities/Author.yaml#/components/schemas/authorName'
imageUrl:
description: The URL of the image to add to the server
type: string
format: uri
example: https://images-na.ssl-images-amazon.com/images/I/51NoQTm33OL.__01_SX120_CR0,0,120,120__.jpg
imageWidth:
description: The requested width of image in pixels.
type: integer
default: 400
example: 400
imageHeight:
description: The requested height of image in pixels. If `null`, the height is scaled to maintain aspect ratio based on the requested width.
type: integer
nullable: true
default: null
example: 600
imageFormat:
description: The requested output format.
type: string
default: jpeg
example: webp
imageRaw:
description: Return the raw image without scaling if true.
type: boolean
default: false
responses:
author200:
description: Author found.
content:
application/json:
schema:
$ref: '../objects/entities/Author.yaml#/components/schemas/author'
author404:
description: Author not found.
content:
text/html:
schema:
type: string
example: Author not found.
paths:
/api/authors/{id}:
parameters:
- name: id
in: path
description: Author ID
required: true
schema:
$ref: '../objects/entities/Author.yaml#/components/schemas/authorId'
get:
operationId: getAuthorById
summary: Get an author by ID
description: Get an author by ID. The author's books and series can be included in the response.
tags:
- Authors
requestBody:
required: false
description: The author object to create.
content:
application/json:
schema:
properties:
include:
$ref: '#/components/schemas/authorInclude'
library:
$ref: '#/components/schemas/authorLibraryId'
responses:
'200':
description: getAuthorById OK
content:
application/json:
schema:
$ref: '../objects/entities/Author.yaml#/components/schemas/author'
'404':
$ref: '#/components/responses/author404'
patch:
operationId: updateAuthorById
summary: Update an author by ID
description: Update an author by ID. The author's name and description can be updated. This endpoint will merge two authors if the new author name matches another author name in the database.
tags:
- Authors
requestBody:
description: The author object to update.
content:
application/json:
schema:
properties:
name:
$ref: '#/components/schemas/authorName'
description:
$ref: '../objects/entities/Author.yaml#/components/schemas/authorDescription'
imagePath:
$ref: '../objects/entities/Author.yaml#/components/schemas/authorImagePath'
asin:
$ref: '../objects/entities/Author.yaml#/components/schemas/authorAsin'
responses:
'200':
description: updateAuthorById OK
content:
application/json:
schema:
oneOf:
- $ref: '../objects/entities/Author.yaml#/components/schemas/author'
- $ref: '#/components/schemas/authorUpdated'
- $ref: '#/components/schemas/authorMerged'
'404':
$ref: '#/components/responses/author404'
delete:
operationId: deleteAuthorById
summary: Delete an author by ID
description: Delete an author by ID. This will remove the author from all books.
tags:
- Authors
responses:
'200':
description: deleteAuthorById OK
content:
text/plain:
schema:
type: string
example: Author deleted.
'404':
$ref: '#/components/responses/author404'
/api/authors/{id}/image:
parameters:
- name: id
in: path
description: Author ID
required: true
schema:
$ref: '../objects/entities/Author.yaml#/components/schemas/authorId'
get:
operationId: getAuthorImageById
summary: Get an author image by author ID
description: Get an author image by author ID. The image will be returned in the requested format and size.
tags:
- Authors
requestBody:
required: false
description: The author image to get.
content:
application/json:
schema:
properties:
width:
$ref: '#/components/schemas/imageWidth'
height:
$ref: '#/components/schemas/imageHeight'
format:
$ref: '#/components/schemas/imageFormat'
raw:
$ref: '#/components/schemas/imageRaw'
responses:
'200':
description: getAuthorImageById OK
content:
image/webp:
schema:
type: string
format: binary
image/jpeg:
schema:
type: string
format: binary
image/*:
schema:
type: string
format: binary
'404':
$ref: '#/components/responses/author404'
post:
operationId: addAuthorImageById
summary: Add an author image to the server
description: Add an author image to the server. The image will be downloaded from the provided URL and stored on the server.
tags:
- Authors
requestBody:
required: true
description: The author image to add by URL.
content:
application/json:
schema:
$ref: '#/components/schemas/imageUrl'
responses:
'200':
description: addAuthorImageById OK
content:
image/*:
schema:
type: string
format: binary
'404':
$ref: '#/components/responses/author404'
patch:
operationId: updateAuthorImageById
summary: Update an author image by author ID
description: Update an author image by author ID. The image will be resized if the width, height, or format is provided.
tags:
- Authors
requestBody:
description: The author image to update.
content:
application/json:
schema:
properties:
width:
$ref: '#/components/schemas/imageWidth'
height:
$ref: '#/components/schemas/imageHeight'
format:
$ref: '#/components/schemas/imageFormat'
raw:
$ref: '#/components/schemas/imageRaw'
responses:
'200':
description: updateAuthorImageById OK
content:
image/*:
schema:
type: string
format: binary
'404':
$ref: '#/components/responses/author404'
delete:
operationId: deleteAuthorImageById
summary: Delete an author image by author ID
description: Delete an author image by author ID. This will remove the image from the server and the database.
tags:
- Authors
responses:
'200':
description: deleteAuthorImageById OK
'404':
$ref: '#/components/responses/author404'
/api/authors/{id}/match:
parameters:
- name: id
in: path
description: Author ID
required: true
schema:
$ref: '../objects/entities/Author.yaml#/components/schemas/authorId'
post:
operationId: matchAuthorById
summary: Match the author against Audible using quick match
description: Match the author against Audible using quick match. Quick match updates the author's description and image (if no image already existed) with information from audible. Either `asin` or `q` must be provided, with `asin` taking priority if both are provided.
tags:
- Authors
requestBody:
required: true
description: The author object to match against an online provider.
content:
application/json:
schema:
type: object
properties:
q:
$ref: '#/components/schemas/authorSearchName'
asin:
$ref: '../objects/entities/Author.yaml#/components/schemas/authorAsin'
region:
$ref: '../schemas.yaml#/components/schemas/region'
responses:
'200':
description: matchAuthorById OK
content:
application/json:
schema:
oneOf:
- $ref: '../objects/entities/Author.yaml#/components/schemas/author'
- $ref: '#/components/schemas/authorUpdated'
'404':
$ref: '#/components/responses/author404'