"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.",
"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.",
"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.",
"summary":"Delete items with issues in a library.",
"description":"Delete all items with issues in a library by library ID on the server. This only removes the items from the ABS database and does not delete media files.",
"tags":[
"Libraries"
],
"responses":{
"200":{
"description":"deleteLibraryIssues OK",
"content":{
"application/json":{
"schema":{
"type":"string",
"example":"Issues deleted."
}
}
}
},
"404":{
"$ref":"#/components/responses/library404"
}
}
}
},
"/api/libraries/{id}/series":{
"parameters":[
{
"name":"id",
"in":"path",
"description":"The ID of the library.",
"required":true,
"schema":{
"$ref":"#/components/schemas/libraryId"
}
}
],
"get":{
"operationId":"getLibrarySeries",
"summary":"Get library series",
"description":"Get series in a library. Filtering and sorting can be applied.",
"tags":[
"Libraries"
],
"parameters":[
{
"in":"query",
"name":"limit",
"description":"The number of series to return. If 0, all series are returned.",
"example":10,
"schema":{
"type":"integer",
"default":0
}
},
{
"in":"query",
"name":"page",
"description":"The page number (zero indexed) to return. If no limit is specified, then page will have no effect.",
"example":0,
"schema":{
"type":"integer",
"default":0
}
},
{
"in":"query",
"name":"sort",
"description":"The field to sort by from the request.",
"example":"numBooks",
"schema":{
"type":"string",
"enum":[
"name",
"numBooks",
"totalDuration",
"addedAt",
"lastBookAdded",
"lastBookUpdated"
],
"default":"name"
}
},
{
"in":"query",
"name":"desc",
"description":"Return items in reversed order if true.",
"example":true,
"schema":{
"type":"boolean",
"default":false
}
},
{
"in":"query",
"name":"filter",
"description":"The filter for the library.",
"example":"media.metadata.title",
"schema":{
"type":"string"
}
},
{
"in":"query",
"name":"include",
"description":"The fields to include in the response. The only current option is `rssfeed`.",
"description":"The year the book was published. Will be null if unknown.",
"type":"string",
"nullable":true,
"example":"2008"
},
"publishedDate":{
"description":"The date the book was published. Will be null if unknown.",
"type":"string",
"nullable":true
},
"publisher":{
"description":"The publisher of the book. Will be null if unknown.",
"type":"string",
"nullable":true,
"example":"Brilliance Audio"
},
"description":{
"description":"A description for the book. Will be null if empty.",
"type":"string",
"nullable":true,
"example":"The masterpiece that started Terry Goodkind's New York Times bestselling epic Sword of Truth In the aftermath of the brutal murder of his father, a mysterious woman, Kahlan Amnell, appears in Richard Cypher's forest sanctuary seeking help...and more. His world, his very beliefs, are shattered when ancient debts come due with thundering violence. In a dark age it takes courage to live, and more than mere courage to challenge those who hold dominion, Richard and Kahlan must take up that challenge or become the next victims. Beyond awaits a bewitching land where even the best of their hearts could betray them. Yet, Richard fears nothing so much as what secrets his sword might reveal about his own soul. Falling in love would destroy them - for reasons Richard can't imagine and Kahlan dare not say. In their darkest hour, hunted relentlessly, tormented by treachery and loss, Kahlan calls upon Richard to reach beyond his sword - to invoke within himself something more noble. Neither knows that the rules of battle have just changed...or that their time has run out. Wizard's First Rule is the beginning. One book. One Rule. Witness the birth of a legend."
},
"isbn":{
"description":"The ISBN of the book. Will be null if unknown.",
"type":"string",
"nullable":true
},
"asin":{
"description":"The ASIN of the book. Will be null if unknown.",
"type":"string",
"nullable":true,
"example":"B002V0QK4C"
},
"language":{
"description":"The language of the book. Will be null if unknown.",
"type":"string",
"nullable":true
},
"explicit":{
"description":"Whether the book has been marked as explicit.",
"type":"boolean",
"example":false
}
}
},
"bookMetadataMinified":{
"type":"object",
"description":"The minified metadata for a book in the database.",
"allOf":[
{
"$ref":"#/components/schemas/bookMetadataBase"
},
{
"type":"object",
"properties":{
"titleIgnorePrefix":{
"description":"The title of the book with any prefix moved to the end.",
"type":"string"
},
"authorName":{
"description":"The name of the book's author(s).",
"type":"string",
"example":"Terry Goodkind"
},
"authorNameLF":{
"description":"The name of the book's author(s) with last names first.",
"type":"string",
"example":"Goodkind, Terry"
},
"narratorName":{
"description":"The name of the audiobook's narrator(s).",
"type":"string",
"example":"Sam Tsoutsouvas"
},
"seriesName":{
"description":"The name of the book's series.",
"type":"string",
"example":"Sword of Truth"
}
}
}
]
},
"bookCoverPath":{
"description":"The absolute path on the server of the cover file. Will be null if there is no cover.",
"type":"string",
"nullable":true,
"example":"/audiobooks/Terry Goodkind/Sword of Truth/Wizards First Rule/cover.jpg"
"description":"The number of tracks the book's audio files have.",
"type":"integer",
"example":1
},
"numAudioFiles":{
"description":"The number of audio files the book has.",
"type":"integer",
"example":1
},
"numChapters":{
"description":"The number of chapters the book has.",
"type":"integer",
"example":1
},
"numMissingParts":{
"description":"The total number of missing parts the book has.",
"type":"integer",
"example":0
},
"numInvalidAudioFiles":{
"description":"The number of invalid audio files the book has.",
"type":"integer",
"example":0
},
"duration":{
"$ref":"#/components/schemas/durationSec"
},
"size":{
"$ref":"#/components/schemas/size"
},
"ebookFormat":{
"description":"The format of ebook of the book. Will be null if the book is an audiobook.",
"type":"string",
"nullable":true
}
}
},
"mediaMinified":{
"description":"The minified media of the library item.",
"oneOf":[
{
"$ref":"#/components/schemas/bookMinified"
}
]
},
"libraryItemMinified":{
"type":"object",
"description":"A single item on the server, like a book or podcast. Minified media format.",
"allOf":[
{
"$ref":"#/components/schemas/libraryItemBase"
},
{
"type":"object",
"properties":{
"media":{
"$ref":"#/components/schemas/mediaMinified"
}
}
}
]
},
"seriesId":{
"type":"string",
"description":"The ID of the series.",
"format":"uuid",
"example":"e4bb1afb-4a4f-4dd6-8be0-e615d233185b"
},
"seriesName":{
"description":"The name of the series.",
"type":"string",
"example":"Sword of Truth"
},
"authorSeries":{
"type":"object",
"description":"Series and the included library items that an author has written.",
"properties":{
"id":{
"$ref":"#/components/schemas/seriesId"
},
"name":{
"$ref":"#/components/schemas/seriesName"
},
"items":{
"description":"The items in the series. Each library item's media's metadata will have a `series` attribute, a `Series Sequence`, which is the matching series.",
"type":"array",
"items":{
"$ref":"#/components/schemas/libraryItemMinified"
}
}
}
},
"author":{
"description":"An author object which includes a description and image path. The library items and series associated with the author are optionally included.",
"type":"object",
"properties":{
"id":{
"$ref":"#/components/schemas/authorId"
},
"asin":{
"$ref":"#/components/schemas/authorAsin"
},
"name":{
"$ref":"#/components/schemas/authorName"
},
"description":{
"$ref":"#/components/schemas/authorDescription"
},
"imagePath":{
"$ref":"#/components/schemas/authorImagePath"
},
"addedAt":{
"$ref":"#/components/schemas/addedAt"
},
"updatedAt":{
"$ref":"#/components/schemas/updatedAt"
},
"libraryItems":{
"description":"The items associated with the author",
"type":"array",
"items":{
"$ref":"#/components/schemas/libraryItemMinified"
}
},
"series":{
"description":"The series associated with the author",
"type":"array",
"items":{
"$ref":"#/components/schemas/authorSeries"
}
}
}
},
"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
},
"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
},
"imageUrl":{
"description":"The URL of the image to add to the server",
"description":"The total number of items in the response.",
"type":"integer",
"example":100
},
"sortBy":{
"type":"string",
"description":"The field to sort by from the request.",
"example":"media.metadata.title"
},
"filterBy":{
"type":"string",
"description":"The field to filter by from the request. TODO",
"example":"media.metadata.title"
},
"collapseSeries":{
"type":"boolean",
"description":"Whether collapse series was set in the request.",
"example":true
},
"sequence":{
"description":"The position in the series the book is.",
"type":"string",
"nullable":true
},
"libraryItemSequence":{
"type":"object",
"description":"A single item on the server, like a book or podcast. Includes series sequence information.",
"allOf":[
{
"$ref":"#/components/schemas/libraryItemBase"
},
{
"$ref":"#/components/schemas/sequence"
}
]
},
"seriesBooks":{
"type":"object",
"description":"A series object which includes the name and books in the series.",
"properties":{
"id":{
"$ref":"#/components/schemas/seriesId"
},
"name":{
"$ref":"#/components/schemas/seriesName"
},
"addedAt":{
"$ref":"#/components/schemas/addedAt"
},
"nameIgnorePrefix":{
"description":"The name of the series with any prefix moved to the end.",
"type":"string"
},
"nameIgnorePrefixSort":{
"description":"The name of the series with any prefix removed.",
"type":"string"
},
"type":{
"description":"Will always be `series`.",
"type":"string"
},
"books":{
"description":"The library items that contain the books in the series. A sequence attribute that denotes the position in the series the book is in, is tacked on.",
"type":"array",
"items":{
"$ref":"#/components/schemas/libraryItemSequence"
}
},
"totalDuration":{
"description":"The combined duration (in seconds) of all books in the series.",