components: schemas: sortBy: type: string description: The field to sort by from the request. example: 'media.metadata.title' sortDesc: name: sortDesc description: Whether to sort in descending order. type: boolean example: true 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 libraryInclude: type: string description: The fields from the response. example: 'rssfeed' requestBody: libraryName: name: name in: requestBody description: The name of the library. content: application/json: schema: type: string example: My Audiobooks libraryFolders: name: folders in: requestBody summary: The folders of the library. description: The folders of the library. Only specify the fullPath. content: application/json: schema: type: array items: $ref: '../objects/Folder.yaml#/components/schemas/folder' libraryDisplayOrder: name: displayOrder in: requestBody description: The display order of the library. Must be >= 1. schema: type: integer minimum: 1 example: 1 libraryIcon: name: icon in: requestBody summary: The icon of library. description: The icon of the library. See Library Icons for a list of possible icons. schema: type: string example: 'audiobookshelf' libraryMediaType: name: mediaType in: requestBody summary: The type of media the library contains. description: The type of media that the library contains. Must be `book` or `podcast`. schema: type: string example: 'book' libraryProvider: name: provider in: requestBody summary: Preferred metadata provider for the library. description: Preferred metadata provider for the library. See Metadata Providers for a list of possible providers. schema: type: string example: 'audible' librarySettings: name: settings in: requestBody summary: The settings for the library. description: The settings for the library. schema: $ref: '../objects/Library.yaml#/components/schemas/librarySettings' librarySort: name: sort in: requestBody summary: The sort order of the library. description: The sort order of the library. For example, to sort by title use 'sort=media.metadata.title'. schema: type: string example: 'media.metadata.title' libraryFilter: name: filter in: requestBody summary: The filter for the library. TODO description: The filter for the library. schema: type: string example: 'media.metadata.title' libraryCollapseSeries: name: collapseSeries in: requestBody description: Whether to collapse series. schema: type: boolean example: true default: false libraryInclude: name: include in: requestBody description: The fields to include in the response. The only current option is `rssfeed`. schema: type: string example: 'rssfeed' responses: library200: description: Library found. content: application/json: schema: $ref: '../objects/Library.yaml#/components/schemas/library' library404: description: Library not found. content: text/html: schema: type: string example: Library not found. paths: /api/libraries: get: operationId: getLibraries summary: Get all libraries on server description: Get all libraries on server. tags: - Libraries responses: '200': description: getLibraries OK content: application/json: schema: type: array items: $ref: '../objects/Library.yaml#/components/schemas/library' post: operationId: createLibrary summary: Create a new library on server description: Create a new library on server. required: [name, folders] tags: - Libraries requestBody: required: true description: The library object to create. content: application/json: schema: type: object properties: name: $ref: '#/components/requestBody/libraryName' folders: $ref: '#/components/requestBody/libraryFolders' displayOrder: $ref: '#/components/requestBody/libraryDisplayOrder' icon: $ref: '#/components/requestBody/libraryIcon' mediaType: $ref: '#/components/requestBody/libraryMediaType' provider: $ref: '#/components/requestBody/libraryProvider' settings: $ref: '#/components/requestBody/librarySettings' responses: '200': $ref: '#/components/responses/library200' '404': $ref: '#/components/responses/library404' /api/libraries/{id}: parameters: - name: id in: path description: The ID of the library. required: true schema: $ref: '../objects/Library.yaml#/components/schemas/libraryId' get: operationId: getLibraryById summary: Get a single library by ID on server description: Get a single library by ID on server. tags: - Libraries responses: '200': $ref: '#/components/responses/library200' '404': $ref: '#/components/responses/library404' patch: operationId: updateLibraryById summary: Update a single library by ID on server description: Update a single library by ID on server. tags: - Libraries requestBody: required: true description: The library object to update. content: application/json: schema: type: object properties: name: $ref: '#/components/requestBody/libraryName' folders: $ref: '#/components/requestBody/libraryFolders' displayOrder: $ref: '#/components/requestBody/libraryDisplayOrder' icon: $ref: '#/components/requestBody/libraryIcon' mediaType: $ref: '#/components/requestBody/libraryMediaType' provider: $ref: '#/components/requestBody/libraryProvider' settings: $ref: '#/components/requestBody/librarySettings' responses: '200': $ref: '#/components/responses/library200' '404': $ref: '#/components/responses/library404' delete: operationId: deleteLibraryById summary: Delete a single library by ID on server description: Delete a single library by ID on server and return the deleted object. tags: - Libraries responses: '200': $ref: '#/components/responses/library200' '404': $ref: '#/components/responses/library404' /api/libraries/{id}/items: parameters: - name: id in: path description: The ID of the library. required: true schema: $ref: '../objects/Library.yaml#/components/schemas/libraryId' get: operationId: getLibraryItems summary: Get all items in a library by ID on server description: Get all items in a library by ID on server. tags: - Libraries requestBody: required: false description: The filters to apply to the requested library items. content: application/json: schema: type: object properties: limit: $ref: '../schemas.yaml#/components/requestBody/limit' page: $ref: '../schemas.yaml#/components/requestBody/page' sort: $ref: '#/components/requestBody/librarySort' desc: $ref: '../schemas.yaml#/components/requestBody/sortDesc' filter: $ref: '#/components/requestBody/libraryFilter' minified: $ref: '../schemas.yaml#/components/requestBody/minified' collapseSeries: $ref: '#/components/requestBody/libraryCollapseSeries' include: $ref: '#/components/requestBody/libraryInclude' responses: '200': description: getLibraryItems OK content: application/json: schema: oneOf: - type: array items: $ref: '../objects/LibraryItem.yaml#/components/schemas/libraryItem' - $ref: '../schemas.yaml#/components/schemas/total' - $ref: '../schemas.yaml#/components/schemas/limit' - $ref: '../schemas.yaml#/components/schemas/page' - $ref: '#/components/schemas/sortBy' - $ref: '#/components/schemas/sortDesc' - $ref: '#/components/schemas/filterBy' - $ref: '../objects/mediaTypes/media.yaml#/components/schemas/mediaType' - $ref: '../schemas.yaml#/components/schemas/minified' - $ref: '#/components/schemas/collapseSeries' - $ref: '#/components/schemas/libraryInclude' '404': $ref: '#/components/responses/library404'