2024-02-19 19:19:01 +00:00
{
"openapi" : "3.1.0" ,
"info" : {
"title" : "Audiobookshelf API" ,
"version" : "1.0.0" ,
"description" : "Audiobookshelf API with autogenerated OpenAPI doc"
} ,
"paths" : {
"/api/collections" : {
"post" : {
"operationId" : "createCollection" ,
"summary" : "Create a new collection" ,
"tags" : [
"Collections"
] ,
"requestBody" : {
"description" : "Data for creating a new collection" ,
"required" : true ,
"content" : {
"application/json" : {
"schema" : {
"type" : "object" ,
"properties" : {
"name" : {
"type" : "string"
} ,
"description" : {
"type" : "string"
} ,
"books" : {
"type" : "array" ,
"items" : {
"type" : "string"
}
}
} ,
"required" : "name"
}
}
}
} ,
"responses" : {
"200" : {
"description" : "Collection created successfully" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/collection"
}
}
}
} ,
"400" : {
"description" : "Invalid collection data"
}
}
} ,
"get" : {
"operationId" : "getAllCollections" ,
"summary" : "Get all collections" ,
"deprecated" : true ,
"tags" : [
"Collections"
] ,
"responses" : {
"200" : {
"description" : "Collection created successfully" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/collectionExpanded"
}
}
}
}
}
}
} ,
"/api/collections/{id}" : {
"patch" : {
"operationId" : "updateCollection" ,
"summary" : "Update an existing collection" ,
"tags" : [
"Collections"
] ,
"parameters" : [
{
"name" : "id" ,
"in" : "path" ,
"description" : "Collection ID" ,
"required" : true ,
"schema" : {
"type" : "string"
}
}
] ,
"requestBody" : {
"description" : "Data for updating an existing collection" ,
"required" : true ,
"content" : {
"application/json" : {
"schema" : {
"type" : "object" ,
"properties" : {
"libraryId" : {
"type" : "string"
} ,
"name" : {
"type" : "string"
} ,
"description" : {
"type" : [
"string" ,
"null"
]
} ,
"books" : {
"type" : "array" ,
"items" : {
"type" : "string"
}
}
}
}
}
}
} ,
"responses" : {
"200" : {
"description" : "Collection created successfully" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/collectionExpanded"
}
}
}
} ,
2024-02-20 00:31:53 +00:00
"403" : {
"description" : "A user with update permissions is required to update collections"
} ,
2024-02-19 19:19:01 +00:00
"404" : {
"description" : "No collection with the specified ID exists"
}
}
} ,
"delete" : {
"operationId" : "deleteCollection" ,
"summary" : "Delete specified collection" ,
"tags" : [
"Collections"
] ,
"parameters" : [
{
"name" : "id" ,
"in" : "path" ,
"description" : "Collection ID" ,
"required" : true ,
"schema" : {
"type" : "string"
}
}
] ,
"responses" : {
"200" : {
"description" : "Collection created successfully"
} ,
"403" : {
"description" : "A user with delete permissions is required to delete a collection"
} ,
"404" : {
"description" : "No collection with the specified ID exists"
}
}
}
} ,
"/api/collections/{id}/book" : {
"post" : {
"operationId" : "collectionAddBook" ,
"summary" : "Add a single book to a collection" ,
"tags" : [
"Collections"
] ,
"parameters" : [
{
"name" : "id" ,
"in" : "path" ,
"description" : "Collection ID" ,
"required" : true ,
"schema" : {
"type" : "string"
}
}
] ,
"requestBody" : {
"description" : "Data for adding a single book to a collection" ,
"required" : true ,
"content" : {
"application/json" : {
"schema" : {
"type" : "object" ,
"properties" : {
"libraryId" : {
"type" : "string"
} ,
"books" : {
"type" : "array" ,
"items" : {
"type" : "string"
}
}
}
}
}
}
} ,
"responses" : {
"200" : {
2024-02-20 00:31:53 +00:00
"description" : "OK" ,
2024-02-19 19:19:01 +00:00
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/collectionExpanded"
}
}
}
} ,
2024-02-25 18:47:50 +00:00
"400" : {
"description" : "The provided library ID could not be found, is in a different library, or is already in a collection"
} ,
"403" : {
"description" : "A user with update permissions is required to update collections"
} ,
"404" : {
"description" : "No collection with the specified ID exists"
}
}
}
} ,
"/api/collections/{id}/book/{bookId}" : {
"delete" : {
"operationId" : "collectionRemoveBook" ,
"summary" : "Remove a single book from a collection" ,
"tags" : [
"Collections"
] ,
"parameters" : [
{
"name" : "id" ,
"in" : "path" ,
"description" : "Collection ID" ,
"required" : true ,
"schema" : {
"type" : "string"
}
} ,
{
"name" : "bookId" ,
"in" : "path" ,
"description" : "Book ID" ,
"required" : true ,
"schema" : {
"type" : "string"
}
}
] ,
"responses" : {
"200" : {
"description" : "OK" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/collectionExpanded"
}
}
}
} ,
"403" : {
"description" : "A user with update permissions is required to update collections"
} ,
"404" : {
"description" : "No collection with the specified ID exists"
}
}
}
} ,
"/api/collections/{id}/batch/add" : {
"post" : {
"operationId" : "batchAddToCollection" ,
"summary" : "Batch add books to an existing collection" ,
"tags" : [
"Collections"
] ,
"parameters" : [
{
"name" : "id" ,
"in" : "path" ,
"description" : "Collection ID" ,
"required" : true ,
"schema" : {
"type" : "string"
}
}
] ,
"requestBody" : {
"description" : "Data for updating an existing collection" ,
"required" : true ,
"content" : {
"application/json" : {
"schema" : {
"type" : "object" ,
"properties" : {
"books" : {
"type" : "array" ,
"items" : {
"type" : "string"
}
}
}
}
}
}
} ,
"responses" : {
"200" : {
"description" : "Collection created successfully" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/collectionExpanded"
}
}
}
} ,
2024-02-20 00:31:53 +00:00
"403" : {
"description" : "A user with update permissions is required to update collections"
} ,
2024-02-19 19:19:01 +00:00
"404" : {
"description" : "No collection with the specified ID exists"
} ,
"500" : {
2024-02-25 18:47:50 +00:00
"description" : "The provided `books` array must not be empty"
}
}
}
} ,
"/api/collections/{id}/batch/remove" : {
"post" : {
"operationId" : "batchRemoveFromCollection" ,
"summary" : "Batch remove books from a collection" ,
"tags" : [
"Collections"
] ,
"parameters" : [
{
"name" : "id" ,
"in" : "path" ,
"description" : "Collection ID" ,
"required" : true ,
"schema" : {
"type" : "string"
}
}
] ,
"requestBody" : {
"description" : "Data for updating an existing collection" ,
"required" : true ,
"content" : {
"application/json" : {
"schema" : {
"type" : "object" ,
"properties" : {
"books" : {
"type" : "array" ,
"items" : {
"type" : "string"
}
}
}
}
}
}
} ,
"responses" : {
"200" : {
"description" : "Books removed from collection successfully" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/collectionExpanded"
}
}
}
} ,
"403" : {
"description" : "A user with update permissions is required to update collections"
} ,
"404" : {
"description" : "No collection with the specified ID exists"
} ,
"500" : {
"description" : "The provided `books` array must not be empty"
2024-02-19 19:19:01 +00:00
}
}
}
} ,
"/api/libraries" : {
"get" : {
"operationId" : "getAllLibraries" ,
"summary" : "Get all libraries on server" ,
"tags" : [
"Libraries"
] ,
"responses" : {
"200" : {
2024-02-20 00:31:53 +00:00
"description" : "OK" ,
2024-02-19 19:19:01 +00:00
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/library"
}
}
}
}
}
}
} ,
"/api/libraries/{id}/collections" : {
"get" : {
"operationId" : "getLibraryCollections" ,
"summary" : "Get all collections in a library" ,
"tags" : [
"Library"
] ,
"parameters" : [
{
"name" : "id" ,
"in" : "path" ,
"description" : "Library ID" ,
"required" : true ,
"schema" : {
"type" : "string"
}
}
] ,
"responses" : {
"200" : {
"description" : "Collection created successfully" ,
"content" : {
"application/json" : {
"schema" : {
2024-02-25 18:47:50 +00:00
"results" : {
"type" : "array" ,
"items" : {
"$ref" : "#/components/schemas/collectionExpanded"
}
2024-02-19 19:19:01 +00:00
}
}
}
}
}
}
}
} ,
"/api/items/{id}" : {
"get" : {
2024-02-20 00:31:53 +00:00
"operationId" : "getLibraryItem" ,
2024-02-19 19:19:01 +00:00
"summary" : "Get a library item" ,
"tags" : [
"Items"
] ,
"parameters" : [
{
"name" : "id" ,
"in" : "path" ,
"description" : "Library Item ID" ,
"required" : true ,
"schema" : {
"type" : "string"
}
}
] ,
"responses" : {
"200" : {
"description" : "Got the library item" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/libraryItem"
}
}
}
} ,
"400" : {
"description" : "Invalid collection data"
}
}
}
2024-02-25 18:47:50 +00:00
} ,
"/ping" : {
"get" : {
"operationId" : "pingServer" ,
"description" : "Endpoint to check if the server is alive and responding with JSON correctly." ,
"responses" : {
"200" : {
"description" : "Successful response" ,
"content" : {
"application/json" : {
"schema" : {
"type" : "object" ,
"properties" : {
"success" : {
"type" : "boolean" ,
"example" : true
}
}
}
}
}
}
}
}
} ,
"/login" : {
"get" : {
"operationId" : "loginGet" ,
"summary" : "This is only to prevent some linting errors, does not actually exist" ,
"deprecated" : true
} ,
"post" : {
"operationId" : "login" ,
"summary" : "Login endpoint" ,
"description" : "Endpoint to authenticate a user." ,
"requestBody" : {
"required" : true ,
"content" : {
"application/json" : {
"schema" : {
"type" : "object" ,
"properties" : {
"username" : {
"type" : "string"
} ,
"password" : {
"type" : "string"
}
}
}
}
}
} ,
"responses" : {
"200" : {
"description" : "Successful login" ,
"content" : {
"application/json" : {
"schema" : {
"type" : "object" ,
"properties" : {
"user" : {
"$ref" : "#/components/schemas/user"
} ,
"userDefaultLibraryId" : {
"type" : "string"
} ,
"serverSettings" : {
"$ref" : "#/components/schemas/serverSettings"
} ,
"source" : {
"type" : "string"
}
}
}
}
}
} ,
"401" : {
"description" : "Unauthorized" ,
"content" : {
"application/json" : {
"schema" : {
"type" : "object" ,
"properties" : {
"message" : {
"type" : "string" ,
"example" : "Unauthorized access"
}
}
}
}
}
}
}
}
2024-02-19 19:19:01 +00:00
}
} ,
"components" : {
"schemas" : {
2024-02-25 18:47:50 +00:00
"backup" : {
2024-02-19 19:19:01 +00:00
"type" : "object" ,
"properties" : {
"id" : {
2024-02-25 18:47:50 +00:00
"description" : "The ID of the backup. Will be the date and time when the backup was created." ,
"type" : "string" ,
"example" : "2022-11-14T0130"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"backupMetadataCovers" : {
"description" : "Whether the backup includes library item covers and author images located in metadata." ,
"type" : "boolean" ,
"example" : true
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"backupDirPath" : {
"description" : "The backup directory path." ,
"type" : "string" ,
"example" : "/metadata/backups"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"datePretty" : {
"description" : "The date and time when the backup was created in a human-readable format." ,
"type" : "string" ,
"example" : "Mon, Nov 14 2022 01:30"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"fullPath" : {
"description" : "The full path of the backup on the server." ,
"type" : "string" ,
"example" : "/metadata/backups/2022-11-14T0130.audiobookshelf"
} ,
"path" : {
"description" : "The path of the backup relative to the metadata directory." ,
"type" : "string" ,
"example" : "backups/2022-11-14T0130.audiobookshelf"
} ,
"filename" : {
"description" : "The filename of the backup." ,
"type" : "string" ,
"example" : "2022-11-14T0130.audiobookshelf"
} ,
"fileSize" : {
"description" : "The size (in bytes) of the backup file." ,
"type" : "integer" ,
"example" : 7776983
} ,
"createdAt" : {
"$ref" : "#/components/schemas/createdAt"
} ,
"serverVersion" : {
"description" : "The version of the server when the backup was created." ,
"type" : "string" ,
"example" : "2.2.4"
}
}
} ,
"collectionBase" : {
"type" : "object" ,
"description" : "A public collection of library items which can be ordered and has a description, base schema." ,
"properties" : {
"id" : {
"description" : "The ID of the collection." ,
"type" : "string"
} ,
"libraryId" : {
"description" : "The ID of the library the collection belongs to." ,
"type" : "string"
} ,
"name" : {
"description" : "The name of the collection." ,
"type" : "string"
} ,
"description" : {
"description" : "The description of the collection." ,
"type" : [
"string" ,
null
]
} ,
"lastUpdate" : {
"description" : "The time (in ms since POSIX epoch) when the collection was last updated." ,
"type" : "integer"
2024-02-19 19:19:01 +00:00
} ,
"createdAt" : {
"description" : "The time (in ms since POSIX epoch) when the collection was created." ,
"type" : "integer"
}
}
} ,
2024-02-20 01:41:27 +00:00
"collection" : {
2024-02-19 19:19:01 +00:00
"type" : "object" ,
2024-02-20 01:41:27 +00:00
"description" : "A public collection of library items which can be ordered and has a description." ,
"allOf" : [
{
"$ref" : "#/components/schemas/collectionBase"
2024-02-19 19:19:01 +00:00
} ,
2024-02-20 01:41:27 +00:00
{
"books" : {
"description" : "The books that belong to the collection." ,
"type" : "array" ,
"items" : {
"$ref" : "#/components/schemas/libraryItem"
}
2024-02-19 19:19:01 +00:00
}
2024-02-20 01:41:27 +00:00
}
]
} ,
"collectionExpanded" : {
"type" : "object" ,
"description" : "A public collection of library items which can be ordered and has a description. Replaces `libraryItem` with `libraryItemExtended`." ,
"allOf" : [
{
"$ref" : "#/components/schemas/collectionBase"
2024-02-19 19:19:01 +00:00
} ,
2024-02-20 01:41:27 +00:00
{
"books" : {
"description" : "The books that belong to the collection." ,
"type" : "array" ,
"items" : {
"$ref" : "#/components/schemas/libraryItemExpanded"
}
}
2024-02-19 19:19:01 +00:00
}
2024-02-20 01:41:27 +00:00
]
2024-02-19 19:19:01 +00:00
} ,
2024-03-01 23:39:03 +00:00
"addedAt" : {
"type" : "integer" ,
"description" : "The time (in ms since POSIX epoch) when added to the server." ,
"example" : 1633522963509
} ,
2024-02-20 00:31:53 +00:00
"createdAt" : {
"type" : "integer" ,
2024-03-01 23:11:02 +00:00
"description" : "The time (in ms since POSIX epoch) when was created." ,
"example" : 1633522963509
} ,
"updatedAt" : {
"type" : "integer" ,
"description" : "The time (in ms since POSIX epoch) when last updated." ,
2024-02-20 00:31:53 +00:00
"example" : 1633522963509
} ,
"tags" : {
2024-02-25 18:47:50 +00:00
"description" : "Tags applied to items." ,
2024-02-20 00:31:53 +00:00
"type" : "array" ,
"items" : {
"type" : "string"
} ,
"examples" : [
"Favorite" ,
"Nonfiction/History" ,
{
"Content" : "Violence"
}
]
} ,
2024-02-25 18:47:50 +00:00
"deviceInfo" : {
2024-02-19 19:19:01 +00:00
"type" : "object" ,
"properties" : {
"id" : {
2024-02-25 18:47:50 +00:00
"description" : "Unique identifier." ,
"type" : "string" ,
"example" : "69b7e852-23a6-4587-bed3-6a5966062e38" ,
"format" : "uuid"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"userId" : {
"description" : "User identifier." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "3c479fe6-6bf8-44e4-a4a6-680c768b501c" ,
"format" : "uuid"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"deviceId" : {
"description" : "Device identifier, as provided in the request." ,
"type" : "string" ,
"example" : "4dd05e7fadca538b"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"ipAddress" : {
"description" : "The IP address that the request came from." ,
"type" : [
"string" ,
"null"
] ,
"example" : "192.168.1.118" ,
"format" : "ipv4"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"browserName" : {
"description" : "The browser name, taken from the user agent." ,
"type" : [
"string" ,
"null"
] ,
"example" : "Firefox"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"browserVersion" : {
"description" : "The browser version, taken from the user agent." ,
"type" : [
"string" ,
"null"
] ,
"example" : "106.0"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"osName" : {
"description" : "The name of OS, taken from the user agent." ,
"type" : [
"string" ,
"null"
] ,
"example" : "Linux"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"osVersion" : {
"description" : "The version of the OS, taken from the user agent." ,
"type" : [
"string" ,
"null"
] ,
"example" : "x86_64"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"deviceName" : {
"description" : "The device name, constructed automatically from other attributes." ,
"type" : [
"string" ,
"null"
]
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"deviceType" : {
"description" : "The device name, constructed automatically from other attributes." ,
"type" : [
"string" ,
"null"
]
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"manufacturer" : {
"description" : "The client device's manufacturer, as provided in the request." ,
"type" : [
"string" ,
"null"
]
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"model" : {
"description" : "The client device's model, as provided in the request." ,
"type" : [
"string" ,
"null"
]
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"sdkVersion" : {
"description" : "For an Android device, the Android SDK version of the client, as provided in the request." ,
2024-02-19 19:19:01 +00:00
"type" : [
"string" ,
"null"
]
2024-02-25 18:47:50 +00:00
} ,
"clientName" : {
"description" : "Name of the client, as provided in the request." ,
"type" : "string" ,
"example" : "Abs Web"
} ,
"clientVersion" : {
"description" : "Version of the client, as provided in the request." ,
"type" : "string" ,
"example" : "2.3.3"
2024-02-19 19:19:01 +00:00
}
}
} ,
2024-02-25 18:47:50 +00:00
"author" : {
2024-02-19 19:19:01 +00:00
"type" : "object" ,
"properties" : {
2024-02-25 18:47:50 +00:00
"id" : {
"description" : "The ID of the author." ,
"type" : "string" ,
"example" : "aut_z3leimgybl7uf3y4ab"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"asin" : {
"description" : "The ASIN of the author. Will be null if unknown." ,
"type" : [
"string" ,
"null"
]
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"name" : {
"description" : "The name of the author." ,
"type" : "string" ,
"example" : "Terry Goodkind"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"description" : {
"description" : "A description of the author. Will be null if there is none." ,
"type" : [
"string" ,
"null"
]
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"imagePath" : {
"description" : "The absolute path for the author image. Will be null if there is no image." ,
"type" : [
"string" ,
"null"
]
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"addedAt" : {
2024-03-01 23:11:02 +00:00
"$ref" : "#/components/schemas/addedAt"
2024-02-25 18:47:50 +00:00
} ,
"updatedAt" : {
2024-03-01 23:11:02 +00:00
"$ref" : "#/components/schemas/updatedAt"
2024-02-19 19:19:01 +00:00
}
}
} ,
2024-02-25 18:47:50 +00:00
"authorMinified" : {
2024-02-19 19:19:01 +00:00
"type" : "object" ,
"properties" : {
"id" : {
2024-02-25 18:47:50 +00:00
"description" : "The ID of the author." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "aut_z3leimgybl7uf3y4ab"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"name" : {
"description" : "The name of the author." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "Terry Goodkind"
2024-02-19 19:19:01 +00:00
}
}
} ,
2024-02-25 18:47:50 +00:00
"authorExpanded" : {
2024-02-19 19:19:01 +00:00
"type" : "object" ,
"properties" : {
"id" : {
2024-02-25 18:47:50 +00:00
"description" : "The ID of the author." ,
2024-02-20 00:31:53 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "aut_z3leimgybl7uf3y4ab"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"asin" : {
"description" : "The ASIN of the author. Will be null if unknown." ,
"type" : [
"string" ,
"null"
2024-02-20 00:31:53 +00:00
]
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"name" : {
"description" : "The name of the author." ,
"type" : "string" ,
"example" : "Terry Goodkind"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"description" : {
"description" : "A description of the author. Will be null if there is none." ,
"type" : [
"string" ,
"null"
]
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"imagePath" : {
"description" : "The absolute path for the author image. Will be null if there is no image." ,
"type" : [
"string" ,
"null"
]
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"addedAt" : {
2024-03-01 23:11:02 +00:00
"$ref" : "#/components/schemas/addedAt"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"updatedAt" : {
2024-03-01 23:11:02 +00:00
"$ref" : "#/components/schemas/updatedAt"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"numBooks" : {
"description" : "The number of books associated with the author in the library." ,
"type" : "integer" ,
"example" : 1
}
}
} ,
"series" : {
"type" : "object" ,
"properties" : {
"id" : {
"description" : "The ID of the series." ,
"type" : "string" ,
"example" : "ser_cabkj4jeu8be3rap4g"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"name" : {
"description" : "The name of the series." ,
"type" : "string" ,
"example" : "Sword of Truth"
} ,
"description" : {
"description" : "A description for the series. Will be null if there is none." ,
"type" : [
"string" ,
"null"
]
2024-02-19 19:19:01 +00:00
} ,
"addedAt" : {
2024-03-01 23:11:02 +00:00
"$ref" : "#/components/schemas/addedAt"
2024-02-19 19:19:01 +00:00
} ,
"updatedAt" : {
2024-03-01 23:11:02 +00:00
"$ref" : "#/components/schemas/updatedAt"
2024-02-25 18:47:50 +00:00
}
}
} ,
"seriesNumBooks" : {
"type" : "object" ,
"properties" : {
"id" : {
"description" : "The ID of the series." ,
"type" : "string" ,
"example" : "ser_cabkj4jeu8be3rap4g"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"name" : {
"description" : "The name of the series." ,
"type" : "string" ,
"example" : "Sword of Truth"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"nameIgnorePrefix" : {
"description" : "The name of the series with any prefix moved to the end." ,
"type" : "string" ,
"example" : "Sword of Truth"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"libraryItemIds" : {
"description" : "The IDs of the library items in the series." ,
2024-02-19 19:19:01 +00:00
"type" : "array" ,
"items" : {
2024-02-25 18:47:50 +00:00
"type" : "string" ,
"example" : "li_8gch9ve09orgn4fdz8"
2024-02-19 19:19:01 +00:00
}
2024-02-25 18:47:50 +00:00
} ,
"numBooks" : {
"description" : "The number of books in the series." ,
"type" : "integer" ,
"example" : 1
2024-02-19 19:19:01 +00:00
}
}
} ,
2024-02-25 18:47:50 +00:00
"seriesBooks" : {
2024-02-19 19:19:01 +00:00
"type" : "object" ,
"properties" : {
"id" : {
2024-02-25 18:47:50 +00:00
"description" : "The ID of the series." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "ser_cabkj4jeu8be3rap4g"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"name" : {
"description" : "The name of the series." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "Sword of Truth"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"nameIgnorePrefix" : {
"description" : "The name of the series with any prefix moved to the end." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "Sword of Truth"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"nameIgnorePrefixSort" : {
"description" : "The name of the series with any prefix removed." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "Sword of Truth"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"type" : {
"description" : "Will always be series." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "series"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"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/libraryItem"
}
2024-02-19 19:19:01 +00:00
} ,
"addedAt" : {
2024-02-25 18:47:50 +00:00
"description" : "The time (in ms since POSIX epoch) when the series was added." ,
2024-02-19 19:19:01 +00:00
"type" : "integer" ,
2024-02-20 00:31:53 +00:00
"example" : 1650621073750
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"totalDuration" : {
"description" : "The combined duration (in seconds) of all books in the series." ,
"type" : "number" ,
"example" : 12000.946
2024-02-19 19:19:01 +00:00
}
}
} ,
2024-02-25 18:47:50 +00:00
"seriesSequence" : {
2024-02-19 19:19:01 +00:00
"type" : "object" ,
"properties" : {
"id" : {
2024-02-25 18:47:50 +00:00
"description" : "The ID of the series." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "ser_cabkj4jeu8be3rap4g"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"name" : {
"description" : "The name of the series." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "Sword of Truth"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"sequence" : {
"description" : "The position in the series the book is." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "1"
}
}
} ,
"rssFeed" : {
"type" : "object" ,
"properties" : {
"id" : {
"description" : "The ID of the RSS feed." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "li_bufnnmp4y5o2gbbxfm"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"slug" : {
"description" : "The slug (the last part of the URL) for the RSS feed." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "li_bufnnmp4y5o2gbbxfm"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"userId" : {
"description" : "The ID of the user that created the RSS feed." ,
"type" : "string" ,
"example" : "root"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"entityType" : {
"description" : "The type of entity the RSS feed is for." ,
"type" : "string" ,
"example" : "item"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"entityId" : {
"description" : "The ID of the entity the RSS feed is for." ,
"type" : "string" ,
"example" : "li_bufnnmp4y5o2gbbxfm"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"coverPath" : {
"description" : "The path of the cover to use for the RSS feed." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "/metadata/items/li_bufnnmp4y5o2gbbxfm/cover.jpg"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"serverAddress" : {
"description" : "The server's address." ,
"type" : "string" ,
"example" : "https://abs.example.com" ,
"format" : "url"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"feedUrl" : {
"description" : "The full URL of the RSS feed." ,
"type" : "string" ,
"example" : "https://abs.example.com/feed/li_bufnnmp4y5o2gbbxfm" ,
"format" : "url"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"meta" : {
"$ref" : "#/components/schemas/rssFeedMetadata"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"episodes" : {
"description" : "The RSS feed's episodes." ,
2024-02-19 19:19:01 +00:00
"type" : "array" ,
"items" : {
2024-02-25 18:47:50 +00:00
"$ref" : "#/components/schemas/rssFeedEpisode"
2024-02-19 19:19:01 +00:00
}
} ,
2024-02-25 18:47:50 +00:00
"createdAt" : {
"$ref" : "#/components/schemas/createdAt"
} ,
"updatedAt" : {
2024-03-01 23:11:02 +00:00
"$ref" : "#/components/schemas/updatedAt"
2024-02-19 19:19:01 +00:00
}
}
} ,
2024-02-25 18:47:50 +00:00
"rssFeedMinified" : {
"type" : [
"object" ,
"null"
] ,
2024-02-19 19:19:01 +00:00
"properties" : {
2024-02-25 18:47:50 +00:00
"id" : {
"description" : "The ID of the RSS feed." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "li_bufnnmp4y5o2gbbxfm"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"entityType" : {
"description" : "The type of entity the RSS feed is for." ,
"type" : "string" ,
"example" : "item"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"entityId" : {
"description" : "The ID of the entity the RSS feed is for." ,
"type" : "string" ,
"example" : "li_bufnnmp4y5o2gbbxfm"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"feedUrl" : {
"description" : "The full URL of the RSS feed." ,
"type" : "string" ,
"example" : "https://abs.example.com/feed/li_bufnnmp4y5o2gbbxfm" ,
"format" : "url"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"meta" : {
"$ref" : "#/components/schemas/rssFeedMetadataMinified"
2024-02-19 19:19:01 +00:00
}
}
} ,
2024-02-25 18:47:50 +00:00
"rssFeedEpisode" : {
2024-02-19 19:19:01 +00:00
"type" : "object" ,
"properties" : {
2024-02-25 18:47:50 +00:00
"id" : {
"description" : "The ID of the RSS feed episode." ,
"type" : "string" ,
"example" : "ep_lh6ko39pumnrma3dhv"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"title" : {
"description" : "The title of the RSS feed episode." ,
"type" : "string" ,
"example" : "Pilot"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"description" : {
"description" : "An HTML encoded description of the RSS feed episode." ,
"type" : "string" ,
"example" : "<div><br>Pilot Episode. A new dog park opens in Night Vale. Carlos, a scientist, visits and discovers some interesting things. Seismic things. Plus, a helpful guide to surveillance helicopter-spotting.<br><br></div><div><br>Weather: \"These and More Than These\" by Joseph Fink<br><br></div><div><br>Music: Disparition, disparition.info<br><br></div><div><br>Logo: Rob Wilson, silastom.com<br><br></div><div><br>Produced by Night Vale Presents. Written by Joseph Fink and Jeffrey Cranor. Narrated by Cecil Baldwin. More Info: welcometonightvale.com, and follow @NightValeRadio on Twitter or Facebook.<br><br></div>"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"enclosure" : {
"description" : "Download information for the RSS feed episode. (Similar to Podcast Episode Enclosure)" ,
"type" : "object" ,
"properties" : {
"url" : {
"type" : "string" ,
"example" : "https://abs.example.com/feed/li_bufnnmp4y5o2gbbxfm/item/ep_lh6ko39pumnrma3dhv/1 - Pilot.mp3"
} ,
"type" : {
"type" : "string" ,
"example" : "audio/mpeg"
} ,
"size" : {
"type" : "integer" ,
"example" : 23653735
}
}
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"pubDate" : {
"description" : "The RSS feed episode's publication date." ,
"type" : "string" ,
"example" : "Fri, 15 Jun 2012 12:00:00 -0000"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"link" : {
"description" : "A URL to display to the RSS feed user." ,
"type" : "string" ,
"example" : "https://abs.example.com/item/li_bufnnmp4y5o2gbbxfm" ,
"format" : "url"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"author" : {
"description" : "The author of the RSS feed episode." ,
"type" : "string" ,
"example" : "Night Vale Presents"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"explicit" : {
"description" : "Whether the RSS feed episode is explicit." ,
"type" : "boolean" ,
"example" : false
2024-02-19 19:19:01 +00:00
} ,
"duration" : {
2024-02-25 18:47:50 +00:00
"description" : "The duration (in seconds) of the RSS feed episode." ,
2024-02-19 19:19:01 +00:00
"type" : "number" ,
2024-02-25 18:47:50 +00:00
"example" : 1454.18449
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"season" : {
"description" : "The season of the RSS feed episode." ,
"type" : [
"string" ,
"null"
]
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"episode" : {
"description" : "The episode number of the RSS feed episode." ,
2024-02-19 19:19:01 +00:00
"type" : [
"string" ,
"null"
]
2024-02-25 18:47:50 +00:00
} ,
"episodeType" : {
"description" : "The type of the RSS feed episode." ,
"type" : [
"string" ,
"null"
]
} ,
2024-02-19 19:19:01 +00:00
"libraryItemId" : {
2024-02-25 18:47:50 +00:00
"description" : "The ID of the library item the RSS feed is for." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "li_bufnnmp4y5o2gbbxfm"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"episodeId" : {
"description" : "The ID of the podcast episode the RSS feed episode is for. Will be null if the RSS feed is for a book." ,
2024-02-19 19:19:01 +00:00
"type" : [
"string" ,
"null"
] ,
2024-02-25 18:47:50 +00:00
"example" : "ep_lh6ko39pumnrma3dhv"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"trackIndex" : {
"description" : "The RSS feed episode's track index." ,
2024-02-19 19:19:01 +00:00
"type" : "integer" ,
2024-02-25 18:47:50 +00:00
"example" : 0
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"fullPath" : {
"description" : "The path on the server of the audio file the RSS feed episode is for." ,
"type" : "string" ,
"example" : "/podcasts/Welcome to Night Vale/1 - Pilot.mp3"
2024-02-19 19:19:01 +00:00
}
}
} ,
2024-02-25 18:47:50 +00:00
"rssFeedMetadata" : {
2024-02-19 19:19:01 +00:00
"type" : "object" ,
"properties" : {
"title" : {
2024-02-25 18:47:50 +00:00
"description" : "The title of the entity the RSS feed is for." ,
"type" : "string" ,
"example" : "Welcome to Night Vale"
} ,
"description" : {
"description" : "The description of the entity the RSS feed is for." ,
2024-02-19 19:19:01 +00:00
"type" : [
"string" ,
"null"
] ,
2024-02-25 18:47:50 +00:00
"example" : "\n Twice-monthly community updates for the small desert town of Night Vale, where every conspiracy theory is true. Turn on your radio and hide. Never listened before? It's an ongoing radio show. Start with the current episode, and you'll catch on in no time. Or, go right to Episode 1 if you wanna binge-listen."
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"author" : {
"description" : "The author of the entity the RSS feed is for." ,
2024-02-19 19:19:01 +00:00
"type" : [
"string" ,
"null"
2024-02-25 18:47:50 +00:00
] ,
"example" : "Night Vale Presents"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"imageUrl" : {
"description" : "The URL of the RSS feed's image." ,
"type" : "string" ,
"example" : "https://abs.example.com/feed/li_bufnnmp4y5o2gbbxfm/cover" ,
"format" : "url"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"feedUrl" : {
"description" : "The URL of the RSS feed." ,
"type" : "string" ,
"example" : "https://abs.example.com/feed/li_bufnnmp4y5o2gbbxfm" ,
"format" : "url"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"link" : {
"description" : "The URL of the entity the RSS feed is for." ,
"type" : "string" ,
"example" : "https://abs.example.com/item/li_bufnnmp4y5o2gbbxfm" ,
"format" : "url"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"explicit" : {
"description" : "Whether the RSS feed's contents are explicit." ,
"type" : "boolean" ,
"example" : false
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"type" : {
"description" : "The type of the RSS feed." ,
2024-02-19 19:19:01 +00:00
"type" : [
"string" ,
"null"
] ,
2024-02-25 18:47:50 +00:00
"example" : "episodic"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"language" : {
"description" : "The language of the RSS feed." ,
2024-02-19 19:19:01 +00:00
"type" : [
"string" ,
"null"
] ,
2024-02-25 18:47:50 +00:00
"example" : "en"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"preventIndexing" : {
"description" : "Whether the RSS feed is marked to prevent indexing of the feed." ,
"type" : "boolean" ,
"example" : true
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"ownerName" : {
"description" : "The owner name of the RSS feed." ,
2024-02-19 19:19:01 +00:00
"type" : [
"string" ,
"null"
]
} ,
2024-02-25 18:47:50 +00:00
"ownerEmail" : {
"description" : "The owner email of the RSS feed." ,
2024-02-19 19:19:01 +00:00
"type" : [
"string" ,
"null"
]
}
}
} ,
2024-02-25 18:47:50 +00:00
"rssFeedMetadataMinified" : {
2024-02-19 19:19:01 +00:00
"type" : "object" ,
"properties" : {
"title" : {
2024-02-25 18:47:50 +00:00
"description" : "The title of the entity the RSS feed is for." ,
"type" : "string" ,
"example" : "Welcome to Night Vale"
} ,
"description" : {
"description" : "The description of the entity the RSS feed is for." ,
2024-02-19 19:19:01 +00:00
"type" : [
"string" ,
"null"
] ,
2024-02-25 18:47:50 +00:00
"example" : "\n Twice-monthly community updates for the small desert town of Night Vale, where every conspiracy theory is true. Turn on your radio and hide. Never listened before? It's an ongoing radio show. Start with the current episode, and you'll catch on in no time. Or, go right to Episode 1 if you wanna binge-listen."
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"preventIndexing" : {
"description" : "Whether the RSS feed is marked to prevent indexing of the feed." ,
"type" : "boolean" ,
"example" : true
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"ownerName" : {
"description" : "The owner name of the RSS feed." ,
2024-02-19 19:19:01 +00:00
"type" : [
"string" ,
"null"
]
} ,
2024-02-25 18:47:50 +00:00
"ownerEmail" : {
"description" : "The owner email of the RSS feed." ,
"type" : [
"string" ,
"null"
]
}
}
} ,
"audioFile" : {
"type" : "object" ,
"properties" : {
"index" : {
"description" : "The index of the audio file." ,
"type" : "integer" ,
"example" : 1
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"ino" : {
"description" : "The inode of the audio file." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "649644248522215260"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"metadata" : {
"$ref" : "#/components/schemas/fileMetadata"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"addedAt" : {
2024-03-01 23:11:02 +00:00
"$ref" : "#/components/schemas/addedAt"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"updatedAt" : {
2024-03-01 23:11:02 +00:00
"$ref" : "#/components/schemas/updatedAt"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"trackNumFromMeta" : {
"description" : "The track number of the audio file as pulled from the file's metadata. Will be null if unknown." ,
2024-02-19 19:19:01 +00:00
"type" : [
2024-02-25 18:47:50 +00:00
"integer" ,
2024-02-19 19:19:01 +00:00
"null"
] ,
2024-02-25 18:47:50 +00:00
"example" : 1
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"discNumFromMeta" : {
"description" : "The disc number of the audio file as pulled from the file's metadata. Will be null if unknown." ,
2024-02-19 19:19:01 +00:00
"type" : [
"string" ,
"null"
]
} ,
2024-02-25 18:47:50 +00:00
"trackNumFromFilename" : {
"description" : "The track number of the audio file as determined from the file's name. Will be null if unknown." ,
2024-02-19 19:19:01 +00:00
"type" : [
2024-02-25 18:47:50 +00:00
"integer" ,
2024-02-19 19:19:01 +00:00
"null"
] ,
2024-02-25 18:47:50 +00:00
"example" : 1
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"discNumFromFilename" : {
"description" : "The track number of the audio file as determined from the file's name. Will be null if unknown." ,
2024-02-19 19:19:01 +00:00
"type" : [
"string" ,
"null"
]
} ,
2024-02-25 18:47:50 +00:00
"manuallyVerified" : {
"description" : "Whether the audio file has been manually verified by a user." ,
"type" : "boolean" ,
"example" : false
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"invalid" : {
"description" : "Whether the audio file is missing from the server." ,
"type" : "boolean" ,
"example" : false
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"exclude" : {
"description" : "Whether the audio file has been marked for exclusion." ,
2024-02-19 19:19:01 +00:00
"type" : "boolean" ,
2024-02-20 00:31:53 +00:00
"example" : false
2024-02-25 18:47:50 +00:00
} ,
"error" : {
"description" : "Any error with the audio file. Will be null if there is none." ,
2024-02-19 19:19:01 +00:00
"type" : [
"string" ,
"null"
2024-02-25 18:47:50 +00:00
]
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"format" : {
"description" : "The format of the audio file." ,
"type" : "string" ,
"example" : "MP2/3 (MPEG audio layer 2/3)"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"duration" : {
"description" : "The total length (in seconds) of the audio file." ,
"type" : "number" ,
"example" : 6004.6675
} ,
"bitRate" : {
"description" : "The bit rate (in bit/s) of the audio file." ,
"type" : "integer" ,
"example" : 64000
} ,
"language" : {
"description" : "The language of the audio file." ,
2024-02-19 19:19:01 +00:00
"type" : [
"string" ,
"null"
]
} ,
2024-02-25 18:47:50 +00:00
"codec" : {
"description" : "The codec of the audio file." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "mp3"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"timeBase" : {
"description" : "The time base of the audio file." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "1/14112000"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"channels" : {
"description" : "The number of channels the audio file has." ,
"type" : "integer" ,
"example" : 2
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"channelLayout" : {
"description" : "The layout of the audio file's channels." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "stereo"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"chapters" : {
"description" : "If the audio file is part of an audiobook, the chapters the file contains." ,
2024-02-19 19:19:01 +00:00
"type" : "array" ,
"items" : {
2024-02-25 18:47:50 +00:00
"$ref" : "#/components/schemas/bookChapter"
2024-02-19 19:19:01 +00:00
}
} ,
2024-02-25 18:47:50 +00:00
"embeddedCoverArt" : {
"description" : "The type of embedded cover art in the audio file. Will be null if none exists." ,
2024-02-19 19:19:01 +00:00
"type" : [
"string" ,
"null"
]
} ,
2024-02-25 18:47:50 +00:00
"metaTags" : {
"$ref" : "#/components/schemas/audioMetaTags"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"mimeType" : {
"description" : "The MIME type of the audio file." ,
"type" : "string" ,
"example" : "audio/mpeg"
2024-02-19 19:19:01 +00:00
}
}
} ,
2024-02-25 18:47:50 +00:00
"audioTrack" : {
2024-02-19 19:19:01 +00:00
"type" : "object" ,
"properties" : {
2024-02-25 18:47:50 +00:00
"index" : {
"description" : "The index of the audio track." ,
2024-02-19 19:19:01 +00:00
"type" : "integer" ,
2024-02-25 18:47:50 +00:00
"example" : 1
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"startOffset" : {
"description" : "When in the audio file (in seconds) the track starts." ,
"type" : "number" ,
2024-02-20 00:31:53 +00:00
"example" : 0
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"duration" : {
"description" : "The length (in seconds) of the audio track." ,
2024-02-19 19:19:01 +00:00
"type" : "number" ,
2024-02-25 18:47:50 +00:00
"example" : 33854.905
2024-02-19 19:19:01 +00:00
} ,
"title" : {
2024-02-25 18:47:50 +00:00
"description" : "The filename of the audio file the audio track belongs to." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "Wizards First Rule 01.mp3"
} ,
"contentUrl" : {
"description" : "The URL path of the audio file." ,
"type" : "string" ,
"example" : "/s/item/li_8gch9ve09orgn4fdz8/Terry Goodkind - SOT Bk01 - Wizards First Rule 01.mp3"
} ,
"mimeType" : {
"description" : "The MIME type of the audio file." ,
"type" : "string" ,
"example" : "audio/mpeg"
} ,
"metadata" : {
"$ref" : "#/components/schemas/fileMetadata"
2024-02-19 19:19:01 +00:00
}
}
} ,
2024-02-25 18:47:50 +00:00
"ebookFile" : {
"type" : [
"object" ,
"null"
] ,
2024-02-19 19:19:01 +00:00
"properties" : {
2024-02-25 18:47:50 +00:00
"ino" : {
"description" : "The inode of the ebook file." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "9463162"
2024-02-19 19:19:01 +00:00
} ,
"metadata" : {
2024-02-25 18:47:50 +00:00
"$ref" : "#/components/schemas/fileMetadata"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"ebookFormat" : {
"description" : "The ebook format of the ebook file." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "epub"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"addedAt" : {
2024-03-01 23:11:02 +00:00
"$ref" : "#/components/schemas/addedAt"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"updatedAt" : {
2024-03-01 23:11:02 +00:00
"$ref" : "#/components/schemas/updatedAt"
2024-02-19 19:19:01 +00:00
}
}
} ,
2024-02-25 18:47:50 +00:00
"libraryFile" : {
2024-02-19 19:19:01 +00:00
"type" : "object" ,
"properties" : {
2024-02-25 18:47:50 +00:00
"ino" : {
"description" : "The inode of the library file." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "649644248522215260"
2024-02-19 19:19:01 +00:00
} ,
"metadata" : {
2024-02-25 18:47:50 +00:00
"$ref" : "#/components/schemas/fileMetadata"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"addedAt" : {
2024-03-01 23:11:02 +00:00
"$ref" : "#/components/schemas/addedAt"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"updatedAt" : {
2024-03-01 23:11:02 +00:00
"$ref" : "#/components/schemas/updatedAt"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"fileType" : {
"description" : "The type of file that the library file is (audio, image, etc.)." ,
"type" : "string" ,
"example" : "audio"
}
}
} ,
2024-02-25 19:24:06 +00:00
"oldFolderId" : {
"type" : "string" ,
"description" : "The ID of folders created on server version 2.2.23 and before." ,
"format" : "fol_[a-z0-9]{18}" ,
"example" : "fol_o78uaoeuh78h6aoeif"
} ,
"newFolderId" : {
"type" : "string" ,
"description" : "The folder ID for any folders added after 2.3.0." ,
"format" : "uuid" ,
"example" : "e4bb1afb-4a4f-4dd6-8be0-e615d233185b"
} ,
"folderId" : {
"type" : "string" ,
"anyOf" : [
{
"$ref" : "#/components/schemas/oldFolderId"
} ,
{
"$ref" : "#/components/schemas/newFolderId"
}
]
} ,
2024-02-25 18:47:50 +00:00
"folder" : {
"type" : "object" ,
"properties" : {
"id" : {
2024-02-25 19:24:06 +00:00
"$ref" : "#/components/schemas/folderId"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"fullPath" : {
"description" : "The path on the server for the folder. (Read Only)" ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "/podcasts"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 19:24:06 +00:00
"libraryId" : [
{
"$ref" : "#/components/schemas/libraryId"
}
] ,
2024-02-25 18:47:50 +00:00
"addedAt" : {
"description" : "The time (in ms since POSIX epoch) when the folder was added. (Read Only)" ,
2024-02-19 19:19:01 +00:00
"type" : "integer" ,
2024-02-25 18:47:50 +00:00
"example" : 1650462940610
2024-02-19 19:19:01 +00:00
}
}
} ,
2024-02-25 18:47:50 +00:00
"oldLibraryId" : {
"type" : "string" ,
"description" : "The ID of the libraries created on server version 2.2.23 and before." ,
"format" : "lib_[a-z0-9]{18}" ,
"example" : "lib_o78uaoeuh78h6aoeif"
} ,
"newLibraryId" : {
"type" : "string" ,
"description" : "The library ID for any libraries after 2.3.0." ,
"format" : "uuid" ,
"example" : "e4bb1afb-4a4f-4dd6-8be0-e615d233185b"
} ,
"libraryId" : {
"type" : "string" ,
"anyOf" : [
{
"$ref" : "#/components/schemas/oldLibraryId"
} ,
{
"$ref" : "#/components/schemas/newLibraryId"
}
]
} ,
"library" : {
2024-02-19 19:19:01 +00:00
"type" : "object" ,
"properties" : {
2024-02-25 18:47:50 +00:00
"id" : {
"$ref" : "#/components/schemas/libraryId"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"name" : {
"type" : "string" ,
"description" : "The name of the library." ,
"example" : "Main"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"folders" : {
2024-02-19 19:19:01 +00:00
"type" : "array" ,
2024-02-25 18:47:50 +00:00
"description" : "The folders that the library is composed of on the server." ,
2024-02-19 19:19:01 +00:00
"items" : {
2024-02-25 18:47:50 +00:00
"$ref" : "#/components/schemas/folder"
2024-02-19 19:19:01 +00:00
}
} ,
2024-02-25 18:47:50 +00:00
"displayOrder" : {
"type" : "integer" ,
"description" : "Display position of the library in the list of libraries. Must be >= 1." ,
"example" : 1
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"icon" : {
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"description" : "The selected icon for the library. See [Library Icons](https://api.audiobookshelf.org/#library-icons) for a list of possible icons." ,
"example" : "audiobookshelf"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"mediaType" : [
{
"$ref" : "#/components/schemas/mediaType"
}
] ,
"provider" : {
"type" : "string" ,
"description" : "Preferred metadata provider for the library. See [Metadata Providers](https://api.audiobookshelf.org/#metadata-providers) for a list of possible providers." ,
"example" : "audible"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"settings" : {
"$ref" : "#/components/schemas/librarySettings"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"createdAt" : {
"$ref" : "#/components/schemas/createdAt"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"lastUpdate" : {
2024-02-19 19:19:01 +00:00
"type" : "integer" ,
2024-02-25 18:47:50 +00:00
"description" : "The time (in ms since POSIX epoch) when the library was last updated. (Read Only)" ,
"example" : 1646520916818
2024-02-19 19:19:01 +00:00
}
}
} ,
2024-02-25 18:47:50 +00:00
"librarySettings" : {
2024-02-19 19:19:01 +00:00
"type" : "object" ,
"properties" : {
2024-02-25 18:47:50 +00:00
"coverAspectRatio" : {
"type" : "integer" ,
"description" : "Whether the library should use square book covers. Must be 0 (for false) or 1 (for true)." ,
"example" : 1
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"disableWatcher" : {
"type" : "boolean" ,
"description" : "Whether to disable the folder watcher for the library." ,
"example" : false
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"skipMatchingMediaWithAsin" : {
"type" : "boolean" ,
"description" : "Whether to skip matching books that already have an ASIN." ,
"example" : false
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"skipMatchingMediaWithIsbn" : {
2024-02-19 19:19:01 +00:00
"type" : "boolean" ,
2024-02-25 18:47:50 +00:00
"description" : "Whether to skip matching books that already have an ISBN." ,
2024-02-20 00:31:53 +00:00
"example" : false
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"autoScanCronExpression" : {
"description" : "The cron expression for when to automatically scan the library folders. If null, automatic scanning will be disabled." ,
2024-02-19 19:19:01 +00:00
"type" : [
"string" ,
"null"
]
}
}
} ,
2024-02-25 18:47:50 +00:00
"libraryFilterData" : {
2024-02-19 19:19:01 +00:00
"type" : "object" ,
"properties" : {
2024-02-25 18:47:50 +00:00
"authors" : {
"description" : "The authors of books in the library." ,
"type" : "array" ,
"items" : {
"$ref" : "#/components/schemas/authorMinified"
}
2024-02-19 19:19:01 +00:00
} ,
"genres" : {
2024-02-25 18:47:50 +00:00
"description" : "The genres of books in the library." ,
2024-02-19 19:19:01 +00:00
"type" : "array" ,
"items" : {
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "Fantasy"
2024-02-19 19:19:01 +00:00
}
} ,
2024-02-25 18:47:50 +00:00
"tags" : {
"$ref" : "#/components/schemas/tags"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"series" : {
"description" : "The series in the library. The series will only have their id and name." ,
"type" : "array" ,
"items" : {
"type" : "object" ,
"properties" : {
"id" : {
"type" : "string" ,
"example" : "ser_cabkj4jeu8be3rap4g"
} ,
"name" : {
"type" : "string" ,
"example" : "Sword of Truth"
}
}
}
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"narrators" : {
"description" : "The narrators of books in the library." ,
"type" : "array" ,
"items" : {
"type" : "string" ,
"example" : "Sam Tsoutsouvas"
}
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"languages" : {
"description" : "The languages of books in the library." ,
"type" : "array" ,
"items" : {
"type" : "string"
}
2024-02-19 19:19:01 +00:00
}
}
} ,
2024-02-27 01:38:36 +00:00
"oldLibraryItemId" : {
"description" : "The ID of library items on server version 2.2.23 and before." ,
"type" : "string" ,
"format" : "li_[a-z0-9]{18}" ,
"example" : "li_o78uaoeuh78h6aoeif"
} ,
"newLibraryItemId" : {
"type" : "string" ,
"description" : "The ID of library items after 2.3.0." ,
"format" : "uuid" ,
"example" : "e4bb1afb-4a4f-4dd6-8be0-e615d233185b"
} ,
"libraryItemId" : {
"type" : "string" ,
"anyOf" : [
{
"$ref" : "#/components/schemas/oldLibraryItemId"
} ,
{
"$ref" : "#/components/schemas/newLibraryItemId"
}
]
} ,
2024-02-25 19:24:06 +00:00
"libraryItemBase" : {
2024-02-19 19:19:01 +00:00
"type" : "object" ,
"properties" : {
2024-02-25 18:47:50 +00:00
"id" : {
2024-02-27 01:38:36 +00:00
"$ref" : "#/components/schemas/libraryItemId"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"ino" : {
"description" : "The inode of the library item." ,
2024-02-25 19:24:06 +00:00
"type" : "string" ,
"format" : "[0-9]*"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"libraryId" : {
2024-02-25 19:24:06 +00:00
"$ref" : "#/components/schemas/libraryId"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"folderId" : {
2024-02-25 19:24:06 +00:00
"$ref" : "#/components/schemas/folderId"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"path" : {
"description" : "The path of the library item on the server." ,
"type" : "string"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"relPath" : {
"description" : "The path, relative to the library folder, of the library item." ,
"type" : "string"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"isFile" : {
"description" : "Whether the library item is a single file in the root of the library folder." ,
"type" : "boolean"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"mtimeMs" : {
"description" : "The time (in ms since POSIX epoch) when the library item was last modified on disk." ,
"type" : "integer"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"ctimeMs" : {
"description" : "The time (in ms since POSIX epoch) when the library item status was changed on disk." ,
"type" : "integer"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"birthtimeMs" : {
"description" : "The time (in ms since POSIX epoch) when the library item was created on disk. Will be 0 if unknown." ,
"type" : "integer"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"addedAt" : {
2024-03-01 23:11:02 +00:00
"$ref" : "#/components/schemas/addedAt"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"updatedAt" : {
2024-03-01 23:11:02 +00:00
"$ref" : "#/components/schemas/updatedAt"
2024-02-25 18:47:50 +00:00
} ,
"isMissing" : {
"description" : "Whether the library item was scanned and no longer exists." ,
"type" : "boolean"
} ,
"isInvalid" : {
"description" : "Whether the library item was scanned and no longer has media files." ,
"type" : "boolean"
} ,
"mediaType" : [
{
"$ref" : "#/components/schemas/mediaType"
}
2024-02-25 19:24:06 +00:00
]
}
} ,
"libraryItem" : {
"type" : "object" ,
"description" : "A single item on the server, like a book or podcast." ,
"allOf" : [
{
"$ref" : "#/components/schemas/libraryItemBase"
} ,
{
"type" : "object" ,
"properties" : {
"folderId" : {
"$ref" : "#/components/schemas/folderId"
} ,
"lastScan" : {
"description" : "The time (in ms since POSIX epoch) when the library item was last scanned. Will be null if the server has not yet scanned the library item." ,
"type" : "integer"
2024-02-25 18:47:50 +00:00
} ,
2024-02-25 19:24:06 +00:00
"scanVersion" : {
"description" : "The version of the scanner when last scanned. Will be null if it has not been scanned." ,
"type" : "string"
} ,
"media" : {
"$ref" : "#/components/schemas/media"
} ,
"libraryFiles" : {
"description" : "The files of the library item." ,
"type" : "array" ,
"items" : {
"$ref" : "#/components/schemas/libraryFile"
}
2024-02-25 18:47:50 +00:00
}
}
2024-02-19 19:19:01 +00:00
}
2024-02-25 19:24:06 +00:00
]
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"libraryItemMinified" : {
"type" : "object" ,
2024-02-25 19:24:06 +00:00
"description" : "A single item on the server, like a book or podcast. Minified media format." ,
"allOf" : [
{
"$ref" : "#/components/schemas/libraryItemBase"
2024-02-25 18:47:50 +00:00
} ,
2024-02-25 19:24:06 +00:00
{
2024-02-25 18:47:50 +00:00
"type" : "object" ,
2024-02-25 19:24:06 +00:00
"properties" : {
"media" : {
"$ref" : "#/components/schemas/mediaMinified"
}
2024-02-25 18:47:50 +00:00
}
2024-02-19 19:19:01 +00:00
}
2024-02-25 19:24:06 +00:00
]
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"libraryItemExpanded" : {
"type" : "object" ,
2024-02-25 19:24:06 +00:00
"allOf" : [
{
"$ref" : "#/components/schemas/libraryItemBase"
2024-02-25 18:47:50 +00:00
} ,
2024-02-25 19:24:06 +00:00
{
2024-02-25 18:47:50 +00:00
"type" : "object" ,
2024-02-25 19:24:06 +00:00
"properties" : {
"folderId" : {
"$ref" : "#/components/schemas/folderId"
} ,
"lastScan" : {
"description" : "The time (in ms since POSIX epoch) when the library item was last scanned. Will be null if the server has not yet scanned the library item." ,
"type" : "integer"
} ,
"scanVersion" : {
"description" : "The version of the scanner when last scanned. Will be null if it has not been scanned." ,
"type" : "string"
} ,
"media" : {
"$ref" : "#/components/schemas/mediaExpanded"
} ,
"libraryFiles" : {
"description" : "The files of the library item." ,
"type" : "array" ,
"items" : {
"$ref" : "#/components/schemas/libraryFile"
2024-02-25 18:47:50 +00:00
}
2024-02-25 19:24:06 +00:00
} ,
"size" : {
"description" : "The total size (in bytes) of the library item." ,
"type" : "integer" ,
"example" : 268990279
}
2024-02-25 18:47:50 +00:00
}
2024-02-19 19:19:01 +00:00
}
2024-02-25 19:24:06 +00:00
]
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"book" : {
2024-02-19 19:19:01 +00:00
"type" : "object" ,
"properties" : {
2024-02-25 18:47:50 +00:00
"libraryItemId" : {
"description" : "The ID of the library item that contains the book." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "li_8gch9ve09orgn4fdz8"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"metadata" : {
"$ref" : "#/components/schemas/bookMetadata"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"coverPath" : {
"description" : "The absolute path on the server of the cover file. Will be null if there is no cover." ,
"type" : [
"string" ,
"null"
] ,
"example" : "/audiobooks/Terry Goodkind/Sword of Truth/Wizards First Rule/cover.jpg"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"tags" : {
"$ref" : "#/components/schemas/tags"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"audioFiles" : {
"type" : "array" ,
"items" : {
"$ref" : "#/components/schemas/audioFile"
}
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"chapters" : {
"type" : "array" ,
"items" : {
"$ref" : "#/components/schemas/bookChapter"
}
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"missingParts" : {
"description" : "Any parts missing from the book by track index." ,
"type" : "array" ,
"items" : {
"type" : "integer"
}
} ,
"ebookFile" : {
"$ref" : "#/components/schemas/ebookFile"
}
}
} ,
"bookMinified" : {
"type" : "object" ,
"properties" : {
"metadata" : {
"$ref" : "#/components/schemas/bookMetadataMinified"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"coverPath" : {
"description" : "The absolute path on the server of the cover file. Will be null if there is no cover." ,
2024-02-19 19:19:01 +00:00
"type" : [
"string" ,
"null"
2024-02-25 18:47:50 +00:00
] ,
"example" : "/audiobooks/Terry Goodkind/Sword of Truth/Wizards First Rule/cover.jpg"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"tags" : {
"$ref" : "#/components/schemas/tags"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"numTracks" : {
"description" : "The number of tracks the book's audio files have." ,
"type" : "integer" ,
"example" : 1
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"numAudioFiles" : {
"description" : "The number of audio files the book has." ,
"type" : "integer" ,
"example" : 1
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"numChapters" : {
"description" : "The number of chapters the book has." ,
"type" : "integer" ,
"example" : 1
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"numMissingParts" : {
"description" : "The total number of missing parts the book has." ,
"type" : "integer" ,
"example" : 0
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"numInvalidAudioFiles" : {
"description" : "The number of invalid audio files the book has." ,
"type" : "integer" ,
"example" : 0
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"duration" : {
"description" : "The total length (in seconds) of the book." ,
"type" : "number" ,
"example" : 33854.905
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"size" : {
"description" : "The total size (in bytes) of the book." ,
"type" : "integer" ,
"example" : 268824228
} ,
"ebookFormat" : {
"description" : "The format of ebook of the book. Will be null if the book is an audiobook." ,
2024-02-19 19:19:01 +00:00
"type" : [
2024-02-25 18:47:50 +00:00
"string" ,
2024-02-19 19:19:01 +00:00
"null"
2024-02-25 18:47:50 +00:00
]
2024-02-19 19:19:01 +00:00
}
}
} ,
2024-02-25 18:47:50 +00:00
"bookExpanded" : {
2024-02-19 19:19:01 +00:00
"type" : "object" ,
"properties" : {
2024-02-25 18:47:50 +00:00
"libraryItemId" : {
"description" : "The ID of the library item that contains the book." ,
"type" : "string" ,
"example" : "li_8gch9ve09orgn4fdz8"
} ,
2024-02-19 19:19:01 +00:00
"metadata" : {
2024-02-25 18:47:50 +00:00
"$ref" : "#/components/schemas/bookMetadataExpanded"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"coverPath" : {
"description" : "The absolute path on the server of the cover file. Will be null if there is no cover." ,
"type" : [
"string" ,
"null"
] ,
"example" : "/audiobooks/Terry Goodkind/Sword of Truth/Wizards First Rule/cover.jpg"
} ,
"tags" : {
"$ref" : "#/components/schemas/tags"
} ,
"audioFiles" : {
2024-02-19 19:19:01 +00:00
"type" : "array" ,
"items" : {
2024-02-25 18:47:50 +00:00
"$ref" : "#/components/schemas/audioFile"
2024-02-19 19:19:01 +00:00
}
} ,
2024-02-25 18:47:50 +00:00
"chapters" : {
"type" : "array" ,
"items" : {
"$ref" : "#/components/schemas/bookChapter"
}
} ,
"missingParts" : {
"description" : "Any parts missing from the book by track index." ,
"type" : "array" ,
"items" : {
"type" : "integer"
}
} ,
"ebookFile" : {
"$ref" : "#/components/schemas/ebookFile"
} ,
"duration" : {
"description" : "The total length (in seconds) of the book." ,
2024-02-19 19:19:01 +00:00
"type" : "integer" ,
2024-02-25 18:47:50 +00:00
"example" : 33854.905
} ,
"size" : {
"description" : "The total size (in bytes) of the book." ,
"type" : "integer" ,
"example" : 268824228
} ,
"tracks" : {
"type" : "array" ,
"items" : {
"$ref" : "#/components/schemas/audioTrack"
}
2024-02-19 19:19:01 +00:00
}
}
} ,
2024-02-25 19:24:06 +00:00
"mediaType" : {
"type" : "string" ,
"description" : "The type of media, will be book or podcast." ,
"enum" : [
"book" ,
"podcast"
]
} ,
"media" : {
"description" : "The media of the library item." ,
"oneOf" : [
{
"$ref" : "#/components/schemas/book"
} ,
{
"$ref" : "#/components/schemas/podcast"
}
]
} ,
"mediaMinified" : {
"description" : "The minified media of the library item." ,
"oneOf" : [
{
"$ref" : "#/components/schemas/bookMinified"
} ,
{
"$ref" : "#/components/schemas/podcastMinified"
}
]
} ,
"mediaExpanded" : {
"description" : "The expanded media of the library item." ,
"oneOf" : [
{
"$ref" : "#/components/schemas/bookExpanded"
} ,
{
"$ref" : "#/components/schemas/podcastExpanded"
}
]
} ,
2024-03-01 23:01:54 +00:00
"oldPodcastEpisodeId" : {
"description" : "The ID of podcast episodes on server version 2.2.23 and before." ,
"type" : "string" ,
"format" : "ep_[a-z0-9]{18}" ,
"example" : "ep_o78uaoeuh78h6aoeif"
} ,
"newPodcastEpisodeId" : {
"type" : "string" ,
"description" : "The ID of podcast episodes after 2.3.0." ,
"format" : "uuid" ,
"example" : "e4bb1afb-4a4f-4dd6-8be0-e615d233185b"
} ,
"podcastEpisodeId" : {
"type" : "string" ,
"anyOf" : [
{
"$ref" : "#/components/schemas/oldPodcastEpisodeId"
} ,
{
"$ref" : "#/components/schemas/newPodcastEpisodeId"
}
]
} ,
"oldPodcastEpisodeDownloadId" : {
"description" : "The ID of the podcast episode download on server version 2.2.23 and before." ,
"type" : "string" ,
"example" : "epdl_pgv4d47j6dtqpk4r0v"
} ,
"newPodcastEpisodeDownloadId" : {
"type" : "string" ,
"description" : "The ID of podcast episode downloads after 2.3.0." ,
"format" : "uuid" ,
"example" : "e4bb1afb-4a4f-4dd6-8be0-e615d233185b"
} ,
"podcastEpisodeDownloadId" : {
"type" : "string" ,
"anyOf" : [
{
"$ref" : "#/components/schemas/oldPodcastEpisodeDownloadId"
} ,
{
"$ref" : "#/components/schemas/newPodcastEpisodeDownloadId"
}
]
} ,
2024-02-27 01:38:36 +00:00
"podcastBase" : {
2024-02-19 19:19:01 +00:00
"type" : "object" ,
"properties" : {
2024-02-25 18:47:50 +00:00
"coverPath" : {
"description" : "The absolute path on the server of the cover file. Will be null if there is no cover." ,
"type" : [
"string" ,
"null"
] ,
"example" : "/podcasts/Welcome to Night Vale/cover.jpg"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"tags" : {
"$ref" : "#/components/schemas/tags"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"autoDownloadEpisodes" : {
"description" : "Whether the server will automatically download podcast episodes according to the schedule." ,
"type" : "boolean" ,
"example" : true
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"autoDownloadSchedule" : {
"description" : "The cron expression for when to automatically download podcast episodes. Will not exist if autoDownloadEpisodes is false." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "0 0 * * 1"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"lastEpisodeCheck" : {
"description" : "The time (in ms since POSIX epoch) when the podcast was checked for new episodes." ,
"type" : "integer" ,
"example" : 1667326662087
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"maxEpisodesToKeep" : {
"description" : "The maximum number of podcast episodes to keep when automatically downloading new episodes. Episodes beyond this limit will be deleted. If 0, all episodes will be kept." ,
"type" : "integer" ,
"example" : 0
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"maxNewEpisodesToDownload" : {
"description" : "The maximum number of podcast episodes to download when automatically downloading new episodes. If 0, all episodes will be downloaded." ,
"type" : "integer" ,
"example" : 3
2024-02-19 19:19:01 +00:00
}
}
} ,
2024-02-27 01:38:36 +00:00
"podcast" : {
"type" : "object" ,
"description" : "A podcast on the server" ,
"allOf" : [
{
"$ref" : "#/components/schemas/podcastBase"
} ,
{
"type" : "object" ,
"properties" : {
"libraryItemId" : {
"$ref" : "#/components/schemas/libraryItemId"
} ,
"metadata" : {
"$ref" : "#/components/schemas/podcastMetadata"
} ,
"episodes" : {
"description" : "The downloaded episodes of the podcast." ,
"type" : "array" ,
"items" : {
"$ref" : "#/components/schemas/podcastEpisode"
}
}
}
}
]
} ,
2024-02-25 18:47:50 +00:00
"podcastMinified" : {
2024-02-19 19:19:01 +00:00
"type" : "object" ,
2024-02-25 18:47:50 +00:00
"properties" : {
"metadata" : {
2024-02-27 01:38:36 +00:00
"$ref" : "#/components/schemas/podcastMetadataMinified"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"coverPath" : {
"description" : "The absolute path on the server of the cover file. Will be null if there is no cover." ,
"type" : [
"string" ,
"null"
] ,
"example" : "/podcasts/Welcome to Night Vale/cover.jpg"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"tags" : {
"$ref" : "#/components/schemas/tags"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"numEpisodes" : {
"description" : "The number of downloaded episodes for the podcast." ,
"type" : "integer" ,
"example" : 1
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"autoDownloadEpisodes" : {
"description" : "Whether the server will automatically download podcast episodes according to the schedule." ,
"type" : "boolean" ,
"example" : true
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"autoDownloadSchedule" : {
"description" : "The cron expression for when to automatically download podcast episodes. Will not exist if autoDownloadEpisodes is false." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "0 0 * * 1"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"lastEpisodeCheck" : {
"description" : "The time (in ms since POSIX epoch) when the podcast was checked for new episodes." ,
"type" : "integer" ,
"example" : 1667326662087
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"maxEpisodesToKeep" : {
"description" : "The maximum number of podcast episodes to keep when automatically downloading new episodes. Episodes beyond this limit will be deleted. If 0, all episodes will be kept." ,
"type" : "integer" ,
"example" : 0
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"maxNewEpisodesToDownload" : {
"description" : "The maximum number of podcast episodes to download when automatically downloading new episodes. If 0, all episodes will be downloaded." ,
2024-02-19 19:19:01 +00:00
"type" : "integer" ,
2024-02-25 18:47:50 +00:00
"example" : 3
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"size" : {
"description" : "The total size (in bytes) of the podcast." ,
"type" : "integer" ,
"example" : 23706728
2024-02-19 19:19:01 +00:00
}
}
} ,
2024-02-25 18:47:50 +00:00
"podcastExpanded" : {
2024-02-19 19:19:01 +00:00
"type" : "object" ,
"properties" : {
2024-02-25 18:47:50 +00:00
"libraryItemId" : {
2024-03-01 23:01:54 +00:00
"$ref" : "#/components/schemas/libraryItemId"
2024-02-19 19:19:01 +00:00
} ,
"metadata" : {
2024-02-25 18:47:50 +00:00
"$ref" : "#/components/schemas/podcastMetadataExpanded"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"coverPath" : {
"description" : "The absolute path on the server of the cover file. Will be null if there is no cover." ,
"type" : [
"string" ,
"null"
] ,
"example" : "/podcasts/Welcome to Night Vale/cover.jpg"
} ,
"tags" : {
"$ref" : "#/components/schemas/tags"
} ,
"episodes" : {
"description" : "The downloaded episodes of the podcast." ,
"type" : "array" ,
"items" : {
"$ref" : "#/components/schemas/podcastEpisodeExpanded"
}
} ,
"autoDownloadEpisodes" : {
"description" : "Whether the server will automatically download podcast episodes according to the schedule." ,
"type" : "boolean" ,
"example" : true
} ,
"autoDownloadSchedule" : {
"description" : "The cron expression for when to automatically download podcast episodes. Will not exist if autoDownloadEpisodes is false." ,
"type" : "string" ,
"example" : "0 0 * * 1"
} ,
"lastEpisodeCheck" : {
"description" : "The time (in ms since POSIX epoch) when the podcast was checked for new episodes." ,
2024-02-19 19:19:01 +00:00
"type" : "integer" ,
2024-02-25 18:47:50 +00:00
"example" : 1667326662087
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"maxEpisodesToKeep" : {
"description" : "The maximum number of podcast episodes to keep when automatically downloading new episodes. Episodes beyond this limit will be deleted. If 0, all episodes will be kept." ,
2024-02-19 19:19:01 +00:00
"type" : "integer" ,
2024-02-25 18:47:50 +00:00
"example" : 0
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"maxNewEpisodesToDownload" : {
"description" : "The maximum number of podcast episodes to download when automatically downloading new episodes. If 0, all episodes will be downloaded." ,
"type" : "integer" ,
"example" : 3
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"size" : {
"description" : "The total size (in bytes) of the podcast." ,
"type" : "integer" ,
"example" : 23706728
}
}
} ,
2024-03-01 23:01:54 +00:00
"podcastMetadataBase" : {
2024-02-25 18:47:50 +00:00
"type" : "object" ,
"properties" : {
"title" : {
"description" : "The title of the podcast. Will be null if unknown." ,
2024-02-19 19:19:01 +00:00
"type" : [
"string" ,
"null"
] ,
2024-02-25 18:47:50 +00:00
"example" : "Welcome to Night Vale"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"author" : {
"description" : "The author of the podcast. Will be null if unknown." ,
2024-02-19 19:19:01 +00:00
"type" : [
"string" ,
"null"
2024-02-25 18:47:50 +00:00
] ,
"example" : "Night Vale Presents"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"description" : {
"description" : "The description for the podcast. Will be null if unknown." ,
2024-02-19 19:19:01 +00:00
"type" : [
"string" ,
"null"
2024-02-25 18:47:50 +00:00
] ,
"example" : "\n Twice-monthly community updates for the small desert town of Night Vale, where every conspiracy theory is true. Turn on your radio and hide. Never listened before? It's an ongoing radio show. Start with the current episode, and you'll catch on in no time. Or, go right to Episode 1 if you wanna binge-listen."
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"releaseDate" : {
"description" : "The release date of the podcast. Will be null if unknown." ,
2024-02-19 19:19:01 +00:00
"type" : [
"string" ,
"null"
2024-02-25 18:47:50 +00:00
] ,
"example" : "2022-10-20T19:00:00Z" ,
"format" : "date-time"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"genres" : {
"description" : "The podcast's genres." ,
2024-02-19 19:19:01 +00:00
"type" : "array" ,
"items" : {
2024-02-25 18:47:50 +00:00
"type" : "string" ,
"example" : "Science Fiction - Podcasts - Fiction"
2024-02-19 19:19:01 +00:00
}
} ,
2024-02-25 18:47:50 +00:00
"feedUrl" : {
"description" : "A URL of an RSS feed for the podcast. Will be null if unknown." ,
2024-02-19 19:19:01 +00:00
"type" : [
"string" ,
"null"
] ,
2024-02-25 18:47:50 +00:00
"example" : "http://feeds.nightvalepresents.com/welcometonightvalepodcast" ,
"format" : "url"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"imageUrl" : {
"description" : "A URL of a cover image for the podcast. Will be null if unknown." ,
2024-02-19 19:19:01 +00:00
"type" : [
"string" ,
"null"
] ,
2024-02-25 18:47:50 +00:00
"example" : "https://is4-ssl.mzstatic.com/image/thumb/Podcasts125/v4/4a/31/35/4a3135d0-1fe7-a2d7-fb43-d182ec175402/mza_8232698753950666850.jpg/600x600bb.jpg" ,
"format" : "url"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"itunesPageUrl" : {
"description" : "A URL of an iTunes page for the podcast. Will be null if unknown." ,
2024-02-19 19:19:01 +00:00
"type" : [
"string" ,
"null"
] ,
2024-02-25 18:47:50 +00:00
"example" : "https://podcasts.apple.com/us/podcast/welcome-to-night-vale/id536258179?uo=4" ,
"format" : "url"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"itunesId" : {
"description" : "The iTunes ID for the podcast. Will be null if unknown." ,
2024-02-19 19:19:01 +00:00
"type" : [
2024-02-25 18:47:50 +00:00
"integer" ,
2024-02-19 19:19:01 +00:00
"null"
] ,
2024-02-25 18:47:50 +00:00
"example" : 536258179
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"itunesArtistId" : {
"description" : "The iTunes Artist ID for the author of the podcast. Will be null if unknown." ,
2024-02-19 19:19:01 +00:00
"type" : [
2024-02-25 18:47:50 +00:00
"integer" ,
2024-02-19 19:19:01 +00:00
"null"
2024-02-25 18:47:50 +00:00
] ,
"example" : 718704794
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"explicit" : {
"description" : "Whether the podcast has been marked as explicit." ,
"type" : "boolean" ,
"example" : false
} ,
"language" : {
"description" : "The language of the podcast. Will be null if unknown." ,
2024-02-19 19:19:01 +00:00
"type" : [
"string" ,
"null"
]
} ,
2024-02-25 18:47:50 +00:00
"type" : {
"description" : "The type of the podcast." ,
2024-02-19 19:19:01 +00:00
"type" : [
"string" ,
"null"
] ,
2024-02-25 18:47:50 +00:00
"example" : "episodic"
}
}
} ,
2024-03-01 23:01:54 +00:00
"podcastMetadata" : {
"type" : "object" ,
"description" : "The metadata for a podcast item." ,
"allOf" : [
{
"$ref" : "#/components/schemas/podcastMetadataBase"
}
]
} ,
2024-02-25 18:47:50 +00:00
"podcastMetadataMinified" : {
"type" : "object" ,
2024-03-01 23:01:54 +00:00
"description" : "The minified metadata for a podcast item." ,
"allOf" : [
{
"$ref" : "#/components/schemas/podcastMetadataBase"
2024-02-19 19:19:01 +00:00
} ,
2024-03-01 23:01:54 +00:00
{
"type" : "object" ,
"properties" : {
"titleIgnorePrefix" : {
"description" : "The title of the podcast with any prefix moved to the end." ,
"type" : "string" ,
"example" : "Welcome to Night Vale"
}
2024-02-25 18:47:50 +00:00
}
}
2024-03-01 23:01:54 +00:00
]
2024-02-25 18:47:50 +00:00
} ,
"podcastMetadataExpanded" : {
"type" : "object" ,
2024-03-01 23:01:54 +00:00
"description" : "The expanded metadata for a podcast item." ,
"allOf" : [
{
"$ref" : "#/components/schemas/podcastMetadataBase"
2024-02-19 19:19:01 +00:00
} ,
2024-03-01 23:01:54 +00:00
{
"type" : "object" ,
"properties" : {
"titleIgnorePrefix" : {
"description" : "The title of the podcast with any prefix moved to the end." ,
"type" : "string" ,
"example" : "Welcome to Night Vale"
}
2024-02-25 18:47:50 +00:00
}
}
2024-03-01 23:01:54 +00:00
]
2024-02-25 18:47:50 +00:00
} ,
"podcastFeed" : {
"type" : "object" ,
2024-03-01 23:01:54 +00:00
"description" : "The podcast feed, includes the metadata and list of episodes." ,
2024-02-25 18:47:50 +00:00
"properties" : {
"metadata" : {
"$ref" : "#/components/schemas/podcastMetadata"
} ,
"episodes" : {
"type" : "array" ,
"items" : {
"$ref" : "#/components/schemas/podcastEpisode"
}
2024-02-19 19:19:01 +00:00
}
}
} ,
2024-02-25 18:47:50 +00:00
"podcastFeedMinified" : {
2024-02-19 19:19:01 +00:00
"type" : "object" ,
2024-03-01 23:01:54 +00:00
"description" : "The podcast feed, includes the metadata and episode count." ,
2024-02-19 19:19:01 +00:00
"properties" : {
2024-02-25 18:47:50 +00:00
"metadata" : {
"$ref" : "#/components/schemas/podcastMetadata"
} ,
"numEpisodes" : {
"description" : "The number of episodes the podcast has." ,
2024-02-19 19:19:01 +00:00
"type" : "integer" ,
2024-02-25 18:47:50 +00:00
"example" : 280
}
}
} ,
"podcastFeedMetadata" : {
"type" : "object" ,
"properties" : {
"image" : {
"description" : "A URL for the podcast's cover image." ,
"type" : "string" ,
"example" : "https://f.prxu.org/126/images/1f749c5d-c83a-4db9-8112-a3245da49c54/nightvalelogo-web4.jpg" ,
"format" : "url"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"categories" : {
"description" : "The podcast's categories. Can be similar to genres." ,
"type" : "array" ,
"items" : {
"type" : "string" ,
"example" : "Fiction:Science Fiction"
}
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"feedUrl" : {
"description" : "A URL of an RSS feed for the podcast." ,
"type" : "string" ,
"example" : "http://feeds.nightvalepresents.com/welcometonightvalepodcast" ,
"format" : "url"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"description" : {
"description" : "A HTML encoded description of the podcast." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "\n <p>Twice-monthly community updates for the small desert town of Night Vale, where every conspiracy theory is true. Turn on your radio and hide. Never listened before? It's an ongoing radio show. Start with the current episode, and you'll catch on in no time. Or, go right to Episode 1 if you wanna binge-listen.</p>"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"descriptionPlain" : {
"description" : "A plain text description of the podcast." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "\n Twice-monthly community updates for the small desert town of Night Vale, where every conspiracy theory is true. Turn on your radio and hide. Never listened before? It's an ongoing radio show. Start with the current episode, and you'll catch on in no time. Or, go right to Episode 1 if you wanna binge-listen."
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"title" : {
"description" : "The podcast's title." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "Welcome to Night Vale"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"language" : {
"description" : "The podcast's language." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "en"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"explicit" : {
"description" : "Whether the podcast is explicit. Will probably be \"true\" or \"false\"." ,
"type" : "string" ,
"example" : "false"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"author" : {
"description" : "The podcast's author." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "Night Vale Presents"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"pubDate" : {
"description" : "The podcast's publication date." ,
"type" : "string" ,
"example" : "Thu, 17 Nov 2022 16:04:42 -0000"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"link" : {
"description" : "A URL the RSS feed provided for possible display to the user." ,
"type" : "string" ,
"example" : "http://welcometonightvale.com" ,
"format" : "url"
2024-02-19 19:19:01 +00:00
}
}
} ,
2024-03-01 23:01:54 +00:00
"podcastEpisodeBase" : {
2024-02-19 19:19:01 +00:00
"type" : "object" ,
2024-03-01 23:01:54 +00:00
"description" : "The base schema for a podcast episode." ,
2024-02-19 19:19:01 +00:00
"properties" : {
2024-02-25 18:47:50 +00:00
"title" : {
"description" : "The podcast episode's title." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "Pilot"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"subtitle" : {
"description" : "The podcast episode's subtitle." ,
"type" : "string" ,
"example" : "Pilot Episode. A new dog park opens in Night Vale. Carlos, a scientist, visits and discovers some interesting things. Seismic things. Plus, a helpful guide to surveillance helicopter-spotting. Weather: \"These and More Than These\" by Joseph Fink Music:..."
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"description" : {
"description" : "A HTML encoded description of the podcast episode." ,
"type" : "string" ,
"example" : "\n <p>Pilot Episode. A new dog park opens in Night Vale. Carlos, a scientist, visits and discovers some interesting things. Seismic things. Plus, a helpful guide to surveillance helicopter-spotting.</p>\n\n <p>Weather: \"These and More Than These\" by Joseph Fink</p>\n\n\n <p>Music: Disparition, <a target=\"_blank\">disparition.info</a></p>\n\n\n <p>Logo: Rob Wilson, <a target=\"_blank\">silastom.com</a></p>\n\n\n <p>Produced by Night Vale Presents. Written by Joseph Fink and Jeffrey\n Cranor. Narrated by Cecil Baldwin. More Info: <a\n target=\"_blank\">welcometonightvale.com</a>, and follow <a\n target=\"_blank\">@NightValeRadio</a> on Twitter or <a\n target=\"_blank\">Facebook</a>.</p>"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"episodeType" : {
"description" : "The type of episode that the podcast episode is." ,
"type" : "string" ,
"example" : "full"
} ,
"season" : {
"description" : "The season of the podcast episode." ,
"type" : "string" ,
"example" : ""
} ,
"episode" : {
"description" : "The episode of the season of the podcast." ,
"type" : "string" ,
"example" : ""
} ,
"publishedAt" : {
"description" : "The time (in ms since POSIX epoch) when the podcast episode was published." ,
"type" : "integer" ,
"example" : 1339761600000
} ,
"enclosure" : {
"$ref" : "#/components/schemas/podcastEpisodeEnclousure"
2024-02-19 19:19:01 +00:00
}
}
} ,
2024-03-01 23:01:54 +00:00
"podcastFeedEpisode" : {
"type" : "object" ,
"description" : "Episode from podcast feed." ,
"allOf" : [
{
"$ref" : "#/components/schemas/podcastEpisodeBase"
} ,
{
"type" : "object" ,
"properties" : {
"descriptionPlain" : {
"description" : "A plain text description of the podcast episode." ,
"type" : "string" ,
"example" : "\n Pilot Episode. A new dog park opens in Night Vale. Carlos, a scientist, visits and discovers some interesting things. Seismic things. Plus, a helpful guide to surveillance helicopter-spotting.\n\n Weather: \"These and More Than These\" by Joseph Fink\n\n\n Music: Disparition, disparition.info\n\n\n Logo: Rob Wilson, silastom.com\n\n\n Produced by Night Vale Presents. Written by Joseph Fink and Jeffrey\n Cranor. Narrated by Cecil Baldwin. More Info: welcometonightvale.com,\n and follow @NightValeRadio on Twitter or Facebook."
} ,
"author" : {
"description" : "The author of the podcast episode." ,
"type" : "string" ,
"example" : ""
} ,
"duration" : {
"description" : "The duration of the podcast episode as reported by the RSS feed." ,
"type" : "string" ,
"example" : "21:02"
} ,
"explicit" : {
"description" : "Whether the podcast episode is explicit." ,
"type" : "string" ,
"example" : ""
}
}
}
]
} ,
2024-02-25 18:47:50 +00:00
"podcastEpisode" : {
2024-02-19 19:19:01 +00:00
"type" : [
"object" ,
"null"
] ,
2024-03-01 23:01:54 +00:00
"allOf" : [
{
"$ref" : "#/components/schemas/podcastEpisodeBase"
2024-02-19 19:19:01 +00:00
} ,
2024-03-01 23:01:54 +00:00
{
"type" : "object" ,
"properties" : {
"libraryItemId" : {
"$ref" : "#/components/schemas/libraryItemId"
} ,
"id" : {
"$ref" : "#/components/schemas/podcastEpisodeId"
} ,
"index" : {
"description" : "The index of the podcast episode." ,
"type" : "integer" ,
"example" : 1
} ,
"enclosure" : {
"$ref" : "#/components/schemas/podcastEpisodeEnclousure"
} ,
"pubDate" : {
"description" : "When the podcast episode was published." ,
"type" : "string" ,
"example" : "Fri, 15 Jun 2012 12:00:00 -0000"
} ,
"audioFile" : {
"$ref" : "#/components/schemas/audioFile"
} ,
"addedAt" : {
2024-03-01 23:11:02 +00:00
"$ref" : "#/components/schemas/addedAt"
2024-03-01 23:01:54 +00:00
} ,
"updatedAt" : {
2024-03-01 23:11:02 +00:00
"$ref" : "#/components/schemas/updatedAt"
2024-03-01 23:01:54 +00:00
}
}
2024-02-19 19:19:01 +00:00
}
2024-03-01 23:01:54 +00:00
]
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"podcastEpisodeExpanded" : {
"type" : [
"object" ,
"null"
] ,
2024-03-01 23:01:54 +00:00
"allOf" : [
{
"$ref" : "#/components/schemas/podcastEpisodeBase"
2024-02-19 19:19:01 +00:00
} ,
2024-03-01 23:01:54 +00:00
{
"type" : "object" ,
"properties" : {
"audioTrack" : {
"$ref" : "#/components/schemas/audioTrack"
} ,
"duration" : {
"description" : "The total length (in seconds) of the podcast episode." ,
"type" : "number" ,
"example" : 1454.18449
} ,
"size" : {
"description" : "The total size (in bytes) of the podcast episode." ,
"type" : "integer" ,
"example" : 23653735
}
}
2024-02-19 19:19:01 +00:00
}
2024-03-01 23:01:54 +00:00
]
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"podcastEpisodeEnclousure" : {
"type" : [
"object" ,
"null"
] ,
2024-02-19 19:19:01 +00:00
"properties" : {
2024-02-25 18:47:50 +00:00
"url" : {
"description" : "The URL where the podcast episode's audio file was downloaded from." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "https://www.podtrac.com/pts/redirect.mp3/dovetail.prxu.org/_/126/1fadf1ad-aad8-449f-843b-6e8bb6949622/1_Pilot.mp3" ,
"format" : "url"
2024-02-19 19:19:01 +00:00
} ,
"type" : {
2024-02-25 18:47:50 +00:00
"description" : "The MIME type of the podcast episode's audio file." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "audio/mpeg"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"length" : {
"description" : "The size (in bytes) that was reported when downloading the podcast episode's audio file." ,
"type" : "string" ,
"example" : "20588611"
2024-02-19 19:19:01 +00:00
}
}
} ,
2024-02-25 18:47:50 +00:00
"podcastEpisodeDownload" : {
2024-02-19 19:19:01 +00:00
"type" : "object" ,
"properties" : {
"id" : {
2024-03-01 23:01:54 +00:00
"$ref" : "#/components/schemas/podcastEpisodeDownloadId"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"episodeDisplayTitle" : {
"description" : "The display title of the episode to be downloaded." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "Glow Cloud"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"url" : {
"description" : "The URL from which to download the episode." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "https://www.podtrac.com/pts/redirect.mp3/dovetail.prxu.org/_/126/cb1dd91f-5d8d-42e9-ba22-14ff335d2cbb/2_Glow_Cloud.mp3" ,
"format" : "url"
} ,
"libraryItemId" : {
2024-03-01 23:01:54 +00:00
"$ref" : "#/components/schemas/libraryItemId"
2024-02-19 19:19:01 +00:00
} ,
"libraryId" : {
2024-03-01 23:01:54 +00:00
"$ref" : "#/components/schemas/libraryId"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"isFinished" : {
"description" : "Whether the episode has finished downloading." ,
"type" : "boolean" ,
"example" : false
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"failed" : {
"description" : "Whether the episode failed to download." ,
"type" : "boolean" ,
"example" : false
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"startedAt" : {
"description" : "The time (in ms since POSIX epoch) when the episode started downloading. Will be null if it has not started downloading yet." ,
2024-02-19 19:19:01 +00:00
"type" : [
"string" ,
"null"
]
} ,
"createdAt" : {
2024-02-20 00:31:53 +00:00
"$ref" : "#/components/schemas/createdAt"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"finishedAt" : {
"description" : "The time (in ms since POSIX epoch) when the episode finished downloading. Will be null if it has not finished." ,
2024-02-19 19:19:01 +00:00
"type" : [
"string" ,
"null"
]
} ,
2024-02-25 18:47:50 +00:00
"podcastTitle" : {
"description" : "The title of the episode's podcast." ,
2024-02-19 19:19:01 +00:00
"type" : [
"string" ,
"null"
2024-02-25 18:47:50 +00:00
] ,
"example" : "Welcome to Night Vale"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"podcastExplicit" : {
"description" : "Whether the episode's podcast is explicit." ,
"type" : "boolean" ,
"example" : false
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"season" : {
"description" : "The season of the podcast episode." ,
2024-02-19 19:19:01 +00:00
"type" : [
"string" ,
"null"
2024-02-25 18:47:50 +00:00
] ,
"example" : ""
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"episode" : {
"description" : "The episode number of the podcast episode." ,
2024-02-19 19:19:01 +00:00
"type" : [
"string" ,
"null"
2024-02-25 18:47:50 +00:00
] ,
"example" : ""
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"episodeType" : {
"description" : "The type of the podcast episode." ,
"type" : "string" ,
"example" : "full"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"publishedAt" : {
"description" : "The time (in ms since POSIX epoch) when the episode was published." ,
"type" : [
"integer" ,
"null"
] ,
"example" : 1341144000000
2024-02-19 19:19:01 +00:00
}
}
} ,
2024-02-25 18:47:50 +00:00
"audioMetaTags" : {
"description" : "ID3 metadata tags pulled from the audio file on import. Only non-null tags will be returned in requests." ,
2024-02-19 19:19:01 +00:00
"type" : "object" ,
"properties" : {
2024-02-25 18:47:50 +00:00
"tagAlbum" : {
2024-02-19 19:19:01 +00:00
"type" : [
"string" ,
"null"
] ,
2024-02-25 18:47:50 +00:00
"example" : "SOT Bk01"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"tagArtist" : {
"type" : [
"string" ,
"null"
] ,
"example" : "Terry Goodkind"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"tagGenre" : {
"type" : [
"string" ,
"null"
] ,
"example" : "Audiobook Fantasy"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"tagTitle" : {
"type" : [
"string" ,
"null"
] ,
"example" : "Wizards First Rule 01"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"tagSeries" : {
2024-02-19 19:19:01 +00:00
"type" : [
"string" ,
"null"
]
} ,
2024-02-25 18:47:50 +00:00
"tagSeriesPart" : {
"type" : [
"string" ,
"null"
]
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"tagTrack" : {
2024-02-19 19:19:01 +00:00
"type" : [
"string" ,
"null"
] ,
2024-02-25 18:47:50 +00:00
"example" : "01/20"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"tagDisc" : {
2024-02-19 19:19:01 +00:00
"type" : [
"string" ,
"null"
]
} ,
2024-02-25 18:47:50 +00:00
"tagSubtitle" : {
"type" : [
"string" ,
"null"
]
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"tagAlbumArtist" : {
"type" : [
"string" ,
"null"
] ,
"example" : "Terry Goodkind"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"tagDate" : {
"type" : [
"string" ,
"null"
2024-02-19 19:19:01 +00:00
]
} ,
2024-02-25 18:47:50 +00:00
"tagComposer" : {
"type" : [
"string" ,
"null"
] ,
"example" : "Terry Goodkind"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"tagPublisher" : {
"type" : [
"string" ,
"null"
]
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"tagComment" : {
"type" : [
"string" ,
"null"
]
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"tagDescription" : {
"type" : [
"string" ,
"null"
]
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"tagEncoder" : {
"type" : [
"string" ,
"null"
]
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"tagEncodedBy" : {
"type" : [
"string" ,
"null"
]
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"tagIsbn" : {
"type" : [
"string" ,
"null"
]
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"tagLanguage" : {
"type" : [
"string" ,
"null"
]
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"tagASIN" : {
"type" : [
"string" ,
"null"
]
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"tagOverdriveMediaMarker" : {
"type" : [
"string" ,
"null"
]
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"tagOriginalYear" : {
"type" : [
"string" ,
"null"
]
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"tagReleaseCountry" : {
"type" : [
"string" ,
"null"
]
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"tagReleaseType" : {
"type" : [
"string" ,
"null"
]
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"tagReleaseStatus" : {
"type" : [
"string" ,
"null"
]
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"tagISRC" : {
"type" : [
"string" ,
"null"
]
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"tagMusicBrainzTrackId" : {
"type" : [
"string" ,
"null"
]
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"tagMusicBrainzAlbumId" : {
"type" : [
"string" ,
"null"
]
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"tagMusicBrainzAlbumArtistId" : {
"type" : [
"string" ,
"null"
]
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"tagMusicBrainzArtistId" : {
"type" : [
"string" ,
"null"
]
2024-02-19 19:19:01 +00:00
}
}
} ,
2024-03-01 22:12:16 +00:00
"bookMetadataBase" : {
2024-02-25 18:47:50 +00:00
"type" : "object" ,
2024-02-19 19:19:01 +00:00
"properties" : {
2024-02-25 18:47:50 +00:00
"title" : {
"description" : "The title of the book. Will be null if unknown." ,
"type" : [
"string" ,
"null"
] ,
"example" : "Wizards First Rule"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"subtitle" : {
"description" : "The subtitle of the book. Will be null if there is no subtitle." ,
"type" : [
"string" ,
"null"
2024-02-19 19:19:01 +00:00
]
} ,
2024-02-25 18:47:50 +00:00
"genres" : {
"description" : "The genres of the book." ,
2024-02-19 19:19:01 +00:00
"type" : "array" ,
"items" : {
2024-02-25 18:47:50 +00:00
"type" : "string" ,
"example" : "Fantasy"
2024-02-19 19:19:01 +00:00
}
} ,
2024-02-25 18:47:50 +00:00
"publishedYear" : {
"description" : "The year the book was published. Will be null if unknown." ,
"type" : [
"string" ,
"null"
] ,
"example" : "2008"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"publishedDate" : {
"description" : "The date the book was published. Will be null if unknown." ,
"type" : [
"string" ,
"null"
]
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"publisher" : {
"description" : "The publisher of the book. Will be null if unknown." ,
"type" : [
"string" ,
"null"
] ,
"example" : "Brilliance Audio"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"description" : {
"description" : "A description for the book. Will be null if empty." ,
"type" : [
"string" ,
"null"
] ,
"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."
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"isbn" : {
"description" : "The ISBN of the book. Will be null if unknown." ,
"type" : [
"string" ,
"null"
]
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"asin" : {
"description" : "The ASIN of the book. Will be null if unknown." ,
"type" : [
"string" ,
"null"
] ,
"example" : "B002V0QK4C"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"language" : {
"description" : "The language of the book. Will be null if unknown." ,
"type" : [
"string" ,
"null"
]
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"explicit" : {
"description" : "Whether the book has been marked as explicit." ,
"type" : "boolean" ,
"example" : false
}
}
} ,
2024-03-01 22:12:16 +00:00
"bookMetadata" : {
2024-02-25 18:47:50 +00:00
"type" : "object" ,
2024-03-01 22:12:16 +00:00
"description" : "The metadata for a book in the database." ,
"allOf" : [
{
"$ref" : "#/components/schemas/bookMetadataBase"
2024-02-19 19:19:01 +00:00
} ,
2024-03-01 22:12:16 +00:00
{
"type" : "object" ,
"properties" : {
"authors" : {
"description" : "The authors of the book." ,
"type" : "array" ,
"items" : {
"$ref" : "#/components/schemas/authorMinified"
}
} ,
"narrators" : {
"description" : "The narrators of the audiobook." ,
"type" : "array" ,
"items" : {
"type" : "string" ,
"example" : "Sam Tsoutsouvas"
}
} ,
"series" : {
"description" : "The series the book belongs to." ,
"type" : "array" ,
"items" : {
"$ref" : "#/components/schemas/seriesSequence"
}
}
2024-02-25 18:47:50 +00:00
}
2024-02-19 19:19:01 +00:00
}
2024-03-01 22:12:16 +00:00
]
2024-02-19 19:19:01 +00:00
} ,
2024-03-01 22:12:16 +00:00
"bookMetadataMinified" : {
2024-02-19 19:19:01 +00:00
"type" : "object" ,
2024-03-01 22:12:16 +00:00
"description" : "The minified metadata for a book in the database." ,
"allOf" : [
{
"$ref" : "#/components/schemas/bookMetadataBase"
2024-02-25 18:47:50 +00:00
} ,
2024-03-01 22:12:16 +00:00
{
"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"
}
2024-02-25 18:47:50 +00:00
}
2024-03-01 22:12:16 +00:00
}
]
} ,
"bookMetadataExpanded" : {
"type" : "object" ,
"description" : "The expanded metadata for a book in the database." ,
"allOf" : [
{
"$ref" : "#/components/schemas/bookMetadataBase"
2024-02-25 18:47:50 +00:00
} ,
2024-03-01 22:12:16 +00:00
{
"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"
} ,
"authors" : {
"description" : "The authors of the book." ,
"type" : "array" ,
"items" : {
"$ref" : "#/components/schemas/authorMinified"
}
} ,
"narrators" : {
"description" : "The narrators of the audiobook." ,
"type" : "array" ,
"items" : {
"type" : "string" ,
"example" : "Sam Tsoutsouvas"
}
} ,
"series" : {
"description" : "The series the book belongs to." ,
"type" : "array" ,
"items" : {
"$ref" : "#/components/schemas/seriesSequence"
}
}
2024-02-25 18:47:50 +00:00
}
}
2024-03-01 22:12:16 +00:00
]
2024-02-25 18:47:50 +00:00
} ,
"bookChapter" : {
"type" : "object" ,
"properties" : {
"id" : {
"description" : "The ID of the book chapter." ,
"type" : "integer" ,
"example" : 0
} ,
"start" : {
"description" : "When in the book (in seconds) the chapter starts." ,
"type" : "integer" ,
"example" : 0
} ,
"end" : {
"description" : "When in the book (in seconds) the chapter ends." ,
"type" : "number" ,
"example" : 6004.6675
} ,
"title" : {
"description" : "The title of the chapter." ,
"type" : "string" ,
2024-03-01 22:12:16 +00:00
"example" : "Wizards First Rule 01 Chapter 1"
2024-02-25 18:47:50 +00:00
}
}
} ,
"fileMetadata" : {
"type" : [
"object" ,
"null"
] ,
"properties" : {
"filename" : {
"description" : "The filename of the file." ,
"type" : "string" ,
"example" : "Wizards First Rule 01.mp3"
} ,
"ext" : {
"description" : "The file extension of the file." ,
"type" : "string" ,
"example" : ".mp3"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"path" : {
"description" : "The absolute path on the server of the file." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "/audiobooks/Terry Goodkind/Sword of Truth/Wizards First Rule/Terry Goodkind - SOT Bk01 - Wizards First Rule 01.mp3"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"relPath" : {
"description" : "The path of the file, relative to the book's or podcast's folder." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "Wizards First Rule 01.mp3"
} ,
"size" : {
"description" : "The size (in bytes) of the file." ,
"type" : "integer" ,
"example" : 48037888
} ,
"mtimeMs" : {
"description" : "The time (in ms since POSIX epoch) when the file was last modified on disk." ,
"type" : "integer" ,
"example" : 1632223180278
} ,
"ctimeMs" : {
"description" : "The time (in ms since POSIX epoch) when the file status was changed on disk." ,
"type" : "integer" ,
"example" : 1645978261001
} ,
"birthtimeMs" : {
"description" : "The time (in ms since POSIX epoch) when the file was created on disk. Will be 0 if unknown." ,
"type" : "integer" ,
"example" : 0
2024-02-19 19:19:01 +00:00
}
}
} ,
2024-02-25 18:47:50 +00:00
"notification" : {
2024-02-19 19:19:01 +00:00
"type" : "object" ,
"properties" : {
"id" : {
2024-02-25 18:47:50 +00:00
"description" : "The ID of the notification." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "noti_nod281qwkj5ow7h7fi"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"libraryId" : {
"description" : "The ID of the library the notification is associated with." ,
"type" : [
"string" ,
"null"
]
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"eventName" : {
"description" : "The name of the event the notification will fire on." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "onPodcastEpisodeDownloaded"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"urls" : {
"description" : "The Apprise URLs to use for the notification." ,
2024-02-19 19:19:01 +00:00
"type" : "array" ,
"items" : {
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "apprises://apprise.example.com/email"
2024-02-19 19:19:01 +00:00
}
} ,
2024-02-25 18:47:50 +00:00
"titleTemplate" : {
"description" : "The template for the notification title." ,
"type" : "string" ,
"example" : "New {{podcastTitle}} Episode!"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"bodyTemplate" : {
"description" : "The template for the notification body." ,
"type" : "string" ,
"example" : "{{episodeTitle}} has been added to {{libraryName}} library."
} ,
"enabled" : {
"description" : "Whether the notification is enabled." ,
2024-02-19 19:19:01 +00:00
"type" : "boolean" ,
2024-02-20 00:31:53 +00:00
"example" : true
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"type" : {
"description" : "The notification's type." ,
"type" : "string" ,
"example" : "info"
} ,
"lastFiredAt" : {
"description" : "The time (in ms since POSIX epoch) when the notification was last fired. Will be null if the notification has not fired." ,
"type" : [
"integer" ,
"null"
] ,
"example" : 1668776410792
} ,
"lastAttemptFailed" : {
"description" : "Whether the last notification attempt failed." ,
2024-02-19 19:19:01 +00:00
"type" : "boolean" ,
2024-02-20 00:31:53 +00:00
"example" : false
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"numConsecutiveFailedAttempts" : {
"description" : "The number of consecutive times the notification has failed." ,
2024-02-19 19:19:01 +00:00
"type" : "integer" ,
2024-02-25 18:47:50 +00:00
"example" : 0
} ,
"numTimesFired" : {
"description" : "The number of times the notification has fired." ,
"type" : "integer" ,
"example" : 5
2024-02-19 19:19:01 +00:00
} ,
"createdAt" : {
2024-02-20 00:31:53 +00:00
"$ref" : "#/components/schemas/createdAt"
2024-02-25 18:47:50 +00:00
}
}
} ,
"notificationEvents" : {
"type" : "object" ,
"properties" : {
"name" : {
"description" : "The name of the notification event." ,
"type" : "string" ,
"example" : "onPodcastEpisodeDownloaded"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"requiresLibrary" : {
"description" : "Whether the notification event depends on a library existing." ,
"type" : "boolean" ,
"example" : true
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"libraryMediaType" : {
"description" : "The type of media of the library the notification depends on existing. Will not exist if requiresLibrary is false." ,
"type" : [
"string" ,
"null"
] ,
"example" : "podcast"
} ,
"description" : {
"description" : "The description of the notification event." ,
"type" : "string" ,
"example" : "Triggered when a podcast episode is auto-downloaded"
} ,
"variables" : {
"description" : "The variables of the notification event that can be used in the notification templates." ,
2024-02-19 19:19:01 +00:00
"type" : "array" ,
"items" : {
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "libraryItemId - libraryId - libraryName - mediaTags - podcastTitle - podcastAuthor - podcastDescription - podcastGenres - episodeId - episodeTitle - episodeSubtitle - episodeDescription"
2024-02-19 19:19:01 +00:00
}
} ,
2024-02-25 18:47:50 +00:00
"defaults" : {
"type" : "object" ,
"properties" : {
"title" : {
"description" : "The default title template for notifications using the notification event." ,
"type" : "string" ,
"example" : "New {{podcastTitle}} Episode!"
} ,
"body" : {
"description" : "The default body template for notifications using the notification event." ,
"type" : "string" ,
"example" : "{{episodeTitle}} has been added to {{libraryName}} library."
}
}
} ,
"testData" : {
"description" : "The keys of the testData object will match the list of variables. The values will be the data used when sending a test notification." ,
"type" : "object" ,
"properties" : {
"libraryItemId" : {
"type" : "string" ,
"example" : "li_notification_test"
} ,
"libraryId" : {
"type" : "string" ,
"example" : "lib_test"
} ,
"libraryName" : {
"type" : "string" ,
"example" : "Podcasts"
} ,
"podcastTitle" : {
"type" : "string" ,
"example" : "Abs Test Podcast"
} ,
"episodeId" : {
"type" : "string" ,
"example" : "ep_notification_test"
} ,
"episodeTitle" : {
"type" : "string" ,
"example" : "Successful Test"
}
2024-02-19 19:19:01 +00:00
}
}
}
} ,
2024-03-01 23:27:57 +00:00
"oldPlaybackSessionId" : {
"description" : "The ID of playback sessions on server version 2.2.23 and before." ,
"type" : "string" ,
"format" : "play_[a-z0-9]{18}" ,
"example" : "play_o78uaoeuh78h6aoeif"
} ,
"newPlaybackSessionId" : {
"type" : "string" ,
"description" : "The ID of playback sessions after 2.3.0." ,
"format" : "uuid" ,
"example" : "e4bb1afb-4a4f-4dd6-8be0-e615d233185b"
} ,
"playbackSessionId" : {
"type" : "string" ,
"anyOf" : [
{
"$ref" : "#/components/schemas/oldPlaybackSessionId"
} ,
{
"$ref" : "#/components/schemas/newPlaybackSessionId"
}
]
} ,
"playMethod" : {
"type" : "integer" ,
"oneOf" : [
{
"title" : "Direct Play" ,
"const" : 0 ,
"description" : "Direct play media from server without transcoding"
} ,
{
"title" : "Direct Stream" ,
"const" : 1 ,
"description" : "Direct stream media from server without transcoding"
} ,
{
"title" : "Transcode" ,
"const" : 2 ,
"description" : "Server is transcoding media for client"
} ,
{
"title" : "Local" ,
"const" : 3 ,
"description" : "Client is playing from a local file"
}
]
} ,
"playbackSessionBase" : {
2024-02-19 19:19:01 +00:00
"type" : "object" ,
"properties" : {
"id" : {
2024-03-01 23:27:57 +00:00
"$ref" : "#/components/schemas/playbackSessionId"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"userId" : {
"description" : "The ID of the user the playback session is for." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-20 00:31:53 +00:00
"example" : "root"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"libraryId" : {
2024-03-01 23:27:57 +00:00
"$ref" : "#/components/schemas/libraryId"
2024-02-25 18:47:50 +00:00
} ,
"libraryItemId" : {
2024-03-01 23:27:57 +00:00
"$ref" : "#/components/schemas/libraryItemId"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"episodeId" : {
"description" : "The ID of the podcast episode. Will be null if this playback session was started without an episode ID." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "ep_lh6ko39pumnrma3dhv"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"mediaType" : [
{
"$ref" : "#/components/schemas/mediaType"
2024-02-19 19:19:01 +00:00
}
2024-02-25 18:47:50 +00:00
] ,
"mediaMetadata" : {
"description" : "The metadata of the library item's media." ,
"type" : "object" ,
"additionalProperties" : {
"oneOf" : [
{
"$ref" : "#/components/schemas/bookMetadata"
} ,
{
"$ref" : "#/components/schemas/podcastMetadata"
}
]
2024-02-19 19:19:01 +00:00
}
} ,
2024-02-25 18:47:50 +00:00
"chapters" : {
"description" : "If the library item is a book, the chapters it contains." ,
2024-02-19 19:19:01 +00:00
"type" : "array" ,
"items" : {
2024-02-25 18:47:50 +00:00
"$ref" : "#/components/schemas/bookChapter"
2024-02-19 19:19:01 +00:00
}
} ,
2024-02-25 18:47:50 +00:00
"displayTitle" : {
"description" : "The title of the playing item to show to the user." ,
"type" : "string" ,
"example" : "Pilot"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"displayAuthor" : {
"description" : "The author of the playing item to show to the user." ,
"type" : "string" ,
"example" : "Night Vale Presents"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"coverPath" : {
"description" : "The cover path of the library item's media." ,
"type" : "string" ,
"example" : "/metadata/items/li_bufnnmp4y5o2gbbxfm/cover.jpg"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"duration" : {
"description" : "The total duration (in seconds) of the playing item." ,
"type" : "number" ,
"example" : 1454.18449
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"playMethod" : {
"description" : "What play method the playback session is using. See below for values." ,
2024-03-01 23:27:57 +00:00
"$ref" : "#/components/schemas/playMethod"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"mediaPlayer" : {
"description" : "The given media player when the playback session was requested." ,
"type" : "string" ,
"example" : "unknown"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"deviceInfo" : {
"$ref" : "#/components/schemas/deviceInfo"
} ,
"serverVersion" : {
"description" : "The server version the playback session was started with." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "2.4.4"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"date" : {
"description" : "The day (in the format YYYY-MM-DD) the playback session was started." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "2022-11-11" ,
"format" : "date"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"dayOfWeek" : {
"description" : "The day of the week the playback session was started." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "Friday"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"timeListening" : {
"description" : "The amount of time (in seconds) the user has spent listening using this playback session." ,
"type" : "number" ,
"example" : 0
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"startTime" : {
"description" : "The time (in seconds) where the playback session started." ,
"type" : "number" ,
"example" : 0
} ,
"currentTime" : {
"description" : "The current time (in seconds) of the playback position." ,
"type" : "number" ,
"example" : 0
} ,
"startedAt" : {
"description" : "The time (in ms since POSIX epoch) when the playback session was started." ,
2024-02-19 19:19:01 +00:00
"type" : "integer" ,
2024-02-25 18:47:50 +00:00
"example" : 1668206493239
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"updatedAt" : {
2024-03-01 23:11:02 +00:00
"$ref" : "#/components/schemas/updatedAt"
2024-02-19 19:19:01 +00:00
}
}
} ,
2024-03-01 23:27:57 +00:00
"playbackSession" : {
"type" : "object" ,
"description" : "A playback session for a user" ,
"allOf" : [
{
"$ref" : "#/components/schemas/playbackSessionBase"
}
]
} ,
2024-02-25 18:47:50 +00:00
"playbackSessionExpanded" : {
"type" : [
"object" ,
"null"
] ,
2024-03-01 23:27:57 +00:00
"description" : "An expanded playback session for a user" ,
"allOf" : [
{
"$ref" : "#/components/schemas/playbackSessionBase"
2024-02-19 19:19:01 +00:00
} ,
2024-03-01 23:27:57 +00:00
{
2024-02-25 18:47:50 +00:00
"type" : "object" ,
2024-03-01 23:27:57 +00:00
"properties" : {
"audioTracks" : {
"description" : "The audio tracks that are being played with the playback session." ,
"type" : "array" ,
"items" : {
"$ref" : "#/components/schemas/audioFile"
2024-02-25 18:47:50 +00:00
}
2024-03-01 23:27:57 +00:00
} ,
"videoTrack" : {
"description" : "The video track that is being played with the playback session. Will be null if the playback session is for a book or podcast. (Video Track Object does not exist)" ,
"type" : [
"string" ,
"null"
]
} ,
"libraryItem" : {
"$ref" : "#/components/schemas/libraryItemExpanded"
}
2024-02-25 18:47:50 +00:00
}
2024-02-19 19:19:01 +00:00
}
2024-03-01 23:27:57 +00:00
]
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"playlist" : {
2024-02-19 19:19:01 +00:00
"type" : "object" ,
"properties" : {
"id" : {
2024-02-25 18:47:50 +00:00
"description" : "The ID of the playlist." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "pl_qbwet64998s5ra6dcu"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"libraryId" : {
"oneOf" : [
{
"$ref" : "#/components/schemas/oldLibraryId"
} ,
{
"$ref" : "#/components/schemas/newLibraryId"
}
]
} ,
"userId" : {
"description" : "The ID of the user the playlist belongs to." ,
"type" : "string" ,
"example" : "root"
} ,
"name" : {
"description" : "The playlist's name." ,
"type" : "string" ,
"example" : "Favorites"
} ,
"description" : {
"description" : "The playlist's description." ,
2024-02-19 19:19:01 +00:00
"type" : [
"string" ,
"null"
2024-02-25 18:47:50 +00:00
]
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"coverPath" : {
"description" : "The path of the playlist's cover." ,
"type" : [
"string" ,
"null"
]
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"items" : {
"description" : "The items in the playlist." ,
2024-02-19 19:19:01 +00:00
"type" : "array" ,
"items" : {
2024-02-25 18:47:50 +00:00
"$ref" : "#/components/schemas/playlistItem"
2024-02-19 19:19:01 +00:00
}
} ,
2024-02-25 18:47:50 +00:00
"lastUpdate" : {
"description" : "The time (in ms since POSIX epoch) when the playlist was last updated." ,
2024-02-19 19:19:01 +00:00
"type" : "integer" ,
2024-02-25 18:47:50 +00:00
"example" : 1669623431313
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"createdAt" : {
"$ref" : "#/components/schemas/createdAt"
2024-02-19 19:19:01 +00:00
}
}
} ,
2024-02-25 18:47:50 +00:00
"playlistExpanded" : {
2024-02-19 19:19:01 +00:00
"type" : "object" ,
"properties" : {
"id" : {
2024-02-25 18:47:50 +00:00
"description" : "The ID of the playlist." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "pl_qbwet64998s5ra6dcu"
2024-02-19 19:19:01 +00:00
} ,
"libraryId" : {
2024-02-25 18:47:50 +00:00
"oneOf" : [
{
"$ref" : "#/components/schemas/oldLibraryId"
} ,
{
"$ref" : "#/components/schemas/newLibraryId"
}
]
} ,
"userId" : {
"description" : "The ID of the user the playlist belongs to." ,
"type" : "string" ,
"example" : "root"
} ,
"name" : {
"description" : "The playlist's name." ,
"type" : "string" ,
"example" : "Favorites"
} ,
"description" : {
"description" : "The playlist's description." ,
2024-02-19 19:19:01 +00:00
"type" : [
"string" ,
"null"
]
} ,
2024-02-25 18:47:50 +00:00
"coverPath" : {
"description" : "The path of the playlist's cover." ,
"type" : [
"string" ,
"null"
]
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"items" : {
"description" : "The items in the playlist." ,
2024-02-19 19:19:01 +00:00
"type" : "array" ,
"items" : {
2024-02-25 18:47:50 +00:00
"$ref" : "#/components/schemas/playlistItemExpanded"
2024-02-19 19:19:01 +00:00
}
} ,
2024-02-25 18:47:50 +00:00
"lastUpdate" : {
"description" : "The time (in ms since POSIX epoch) when the playlist was last updated." ,
"type" : "integer" ,
"example" : 1669623431313
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"createdAt" : {
"$ref" : "#/components/schemas/createdAt"
}
}
} ,
"playlistItem" : {
"type" : "object" ,
"properties" : {
"libraryItemId" : {
"description" : "The ID of the library item the playlist item is for." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "li_8gch9ve09orgn4fdz8"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"episodeId" : {
"description" : "The ID of the podcast episode the playlist item is for." ,
"type" : [
"string" ,
"null"
]
}
}
} ,
"playlistItemExpanded" : {
"type" : "object" ,
"properties" : {
"libraryItemId" : {
"description" : "The ID of the library item the playlist item is for." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "li_8gch9ve09orgn4fdz8"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"episodeId" : {
"description" : "The ID of the podcast episode the playlist item is for." ,
2024-02-19 19:19:01 +00:00
"type" : [
2024-02-25 18:47:50 +00:00
"string" ,
2024-02-19 19:19:01 +00:00
"null"
2024-02-25 18:47:50 +00:00
]
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"episode" : {
"$ref" : "#/components/schemas/podcastEpisodeExpanded"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"libraryItem" : {
"description" : "The library item the playlist item is for. Will be Library Item Minified if episodeId is not null." ,
"type" : "object" ,
"additionalProperties" : {
"oneOf" : [
{
"$ref" : "#/components/schemas/libraryItemMinified"
} ,
{
"$ref" : "#/components/schemas/libraryItemExpanded"
}
]
}
2024-02-19 19:19:01 +00:00
}
}
} ,
2024-02-25 18:47:50 +00:00
"notificationSettings" : {
2024-02-19 19:19:01 +00:00
"type" : "object" ,
"properties" : {
2024-02-25 18:47:50 +00:00
"id" : {
"description" : "The ID of the notification settings." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "notification-settings"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"appriseType" : {
"description" : "The type of Apprise that will be used. At the moment, only api is available." ,
2024-02-19 19:19:01 +00:00
"type" : [
"string" ,
"null"
] ,
2024-02-25 18:47:50 +00:00
"example" : "api"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"appriseApiUrl" : {
"description" : "The full URL where the Apprise API to use is located." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "https://apprise.example.com/notify" ,
"format" : "url"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"notifications" : {
"description" : "The set notifications." ,
2024-02-19 19:19:01 +00:00
"type" : "array" ,
"items" : {
2024-02-25 18:47:50 +00:00
"$ref" : "#/components/schemas/notification"
2024-02-19 19:19:01 +00:00
}
} ,
2024-02-25 18:47:50 +00:00
"maxFailedAttempts" : {
"description" : "The maximum number of times a notification fails before being disabled." ,
"type" : "integer" ,
"example" : 5
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"maxNotificationQueue" : {
"description" : "The maximum number of notifications in the notification queue before events are ignored." ,
"type" : "integer" ,
"example" : 20
} ,
"notificationDelay" : {
"description" : "The time (in ms) between notification pushes." ,
"type" : "integer" ,
"example" : 1000
2024-02-19 19:19:01 +00:00
}
}
} ,
"serverSettings" : {
"type" : "object" ,
"properties" : {
"id" : {
"description" : "The ID of the server settings." ,
"type" : "string" ,
2024-02-20 00:31:53 +00:00
"example" : "server-settings"
2024-02-19 19:19:01 +00:00
} ,
"scannerFindCovers" : {
"description" : "Whether the scanner will attempt to find a cover if your audiobook does not have an embedded cover or a cover image inside the folder. Note that This will extend scan time." ,
"type" : "boolean" ,
2024-02-20 00:31:53 +00:00
"example" : false
2024-02-19 19:19:01 +00:00
} ,
"scannerCoverProvider" : {
"description" : "If scannerFindCovers is true, which metadata provider to use. See Metadata Providers for options." ,
"type" : "string" ,
2024-02-20 00:31:53 +00:00
"example" : "google"
2024-02-19 19:19:01 +00:00
} ,
"scannerParseSubtitle" : {
"description" : "Whether to extract subtitles from audiobook folder names. Subtitles must be separated by -, i.e. /audiobooks/Book Title - A Subtitle Here/ has the subtitle A Subtitle Here." ,
"type" : "boolean" ,
2024-02-20 00:31:53 +00:00
"example" : false
2024-02-19 19:19:01 +00:00
} ,
"scannerPreferAudioMetadata" : {
"description" : "Whether to use audio file ID3 meta tags instead of folder names for book details." ,
"type" : "boolean" ,
2024-02-20 00:31:53 +00:00
"example" : false
2024-02-19 19:19:01 +00:00
} ,
"scannerPreferOpfMetadata" : {
"description" : "Whether to use OPF file metadata instead of folder names for book details." ,
"type" : "boolean" ,
2024-02-20 00:31:53 +00:00
"example" : false
2024-02-19 19:19:01 +00:00
} ,
"scannerPreferMatchedMetadata" : {
"description" : "Whether matched data will override item details when using Quick Match. By default, Quick Match will only fill in missing details." ,
"type" : "boolean" ,
2024-02-20 00:31:53 +00:00
"example" : false
2024-02-19 19:19:01 +00:00
} ,
"scannerDisableWatcher" : {
"description" : "Whether to disable the automatic adding/updating of items when file changes are detected. Requires server restart for changes to take effect." ,
"type" : "boolean" ,
2024-02-20 00:31:53 +00:00
"example" : true
2024-02-19 19:19:01 +00:00
} ,
"scannerPreferOverdriveMediaMarker" : {
"description" : "Whether to use the custom metadata in MP3 files from Overdrive for chapter timings automatically." ,
"type" : "boolean" ,
2024-02-20 00:31:53 +00:00
"example" : false
2024-02-19 19:19:01 +00:00
} ,
"scannerUseTone" : {
"description" : "Should use tone to extract metadata" ,
"type" : "boolean" ,
2024-02-20 00:31:53 +00:00
"example" : false
2024-02-19 19:19:01 +00:00
} ,
"storeCoverWithItem" : {
"description" : "Whether to store covers in the library item's folder. By default, covers are stored in /metadata/items. Only one file named cover will be kept." ,
"type" : "boolean" ,
2024-02-20 00:31:53 +00:00
"example" : false
2024-02-19 19:19:01 +00:00
} ,
"storeMetadataWithItem" : {
"description" : "Whether to store metadata files in the library item's folder. By default, metadata files are stored in /metadata/items. Uses the .abs file extension." ,
"type" : "boolean" ,
2024-02-20 00:31:53 +00:00
"example" : false
2024-02-19 19:19:01 +00:00
} ,
"metadataFileFormat" : {
"description" : "Must be either json or abs" ,
"type" : "string" ,
2024-02-20 00:31:53 +00:00
"example" : "json"
2024-02-19 19:19:01 +00:00
} ,
"rateLimitLoginRequests" : {
"description" : "The maximum number of login requests per rateLimitLoginWindow." ,
"type" : "integer" ,
2024-02-20 00:31:53 +00:00
"example" : 10
2024-02-19 19:19:01 +00:00
} ,
"rateLimitLoginWindow" : {
"description" : "The length (in ms) of each login rate limit window." ,
"type" : "integer" ,
2024-02-20 00:31:53 +00:00
"example" : 600000
2024-02-19 19:19:01 +00:00
} ,
"backupSchedule" : {
"description" : "The cron expression for when to do automatic backups." ,
"type" : "string" ,
2024-02-20 00:31:53 +00:00
"example" : "30 1 * * *"
2024-02-19 19:19:01 +00:00
} ,
"backupsToKeep" : {
"description" : "The number of backups to keep." ,
"type" : "integer" ,
2024-02-20 00:31:53 +00:00
"example" : 2
2024-02-19 19:19:01 +00:00
} ,
"maxBackupSize" : {
"description" : "The maximum backup size (in GB) before they fail, a safeguard against misconfiguration." ,
"type" : "integer" ,
2024-02-20 00:31:53 +00:00
"example" : 1
2024-02-19 19:19:01 +00:00
} ,
"backupMetadataCovers" : {
"description" : "Whether backups should include library item covers and author images located in metadata." ,
"type" : "boolean" ,
2024-02-20 00:31:53 +00:00
"example" : true
2024-02-19 19:19:01 +00:00
} ,
"loggerDailyLogsToKeep" : {
"description" : "The number of daily logs to keep." ,
"type" : "integer" ,
2024-02-20 00:31:53 +00:00
"example" : 7
2024-02-19 19:19:01 +00:00
} ,
"loggerScannerLogsToKeep" : {
"description" : "The number of scanner logs to keep." ,
"type" : "integer" ,
2024-02-20 00:31:53 +00:00
"example" : 2
2024-02-19 19:19:01 +00:00
} ,
"homeBookshelfView" : {
"description" : "Whether the home page should use a skeuomorphic design with wooden shelves." ,
2024-02-25 18:47:50 +00:00
"type" : "integer" ,
2024-02-20 00:31:53 +00:00
"example" : 1
2024-02-19 19:19:01 +00:00
} ,
"bookshelfView" : {
"description" : "Whether other bookshelf pages should use a skeuomorphic design with wooden shelves." ,
2024-02-25 18:47:50 +00:00
"type" : "integer" ,
2024-02-20 00:31:53 +00:00
"example" : 1
2024-02-19 19:19:01 +00:00
} ,
"sortingIgnorePrefix" : {
"description" : "Whether to ignore prefixes when sorting. For example, for the prefix the, the book title The Book Title would sort as Book Title, The." ,
"type" : "boolean" ,
2024-02-20 00:31:53 +00:00
"example" : false
2024-02-19 19:19:01 +00:00
} ,
"sortingPrefixes" : {
"description" : "If sortingIgnorePrefix is true, what prefixes to ignore." ,
"type" : "array" ,
"items" : {
"type" : "string" ,
2024-02-20 00:31:53 +00:00
"example" : "the - a"
2024-02-19 19:19:01 +00:00
}
} ,
"chromecastEnabled" : {
"description" : "Whether to enable streaming to Chromecast devices." ,
"type" : "boolean" ,
2024-02-20 00:31:53 +00:00
"example" : false
2024-02-19 19:19:01 +00:00
} ,
"dateFormat" : {
"description" : "What date format to use. Options are MM/dd/yyyy, dd/MM/yyyy, dd.MM.yyyy, yyyy-MM-dd, MMM do, yyyy, MMMM do, yyyy, dd MMM yyyy, or dd MMMM yyyy." ,
"type" : "string" ,
2024-02-20 00:31:53 +00:00
"example" : "MM/dd/yyyy"
2024-02-19 19:19:01 +00:00
} ,
"timeFormat" : {
"description" : "What time format to use. Options are HH:mm (24-hour) and h:mma (am/pm)." ,
"type" : "string" ,
2024-02-20 00:31:53 +00:00
"example" : "HH:mm"
2024-02-19 19:19:01 +00:00
} ,
"language" : {
"description" : "The default server language." ,
"type" : "string" ,
2024-02-20 00:31:53 +00:00
"example" : "en-us"
2024-02-19 19:19:01 +00:00
} ,
"logLevel" : {
"description" : "What log level the server should use when logging. 1 for debug, 2 for info, or 3 for warnings." ,
"type" : "integer" ,
2024-02-20 00:31:53 +00:00
"example" : 2
2024-02-19 19:19:01 +00:00
} ,
"version" : {
"description" : "The server's version." ,
"type" : "string" ,
2024-02-20 00:31:53 +00:00
"example" : "2.2.5"
2024-02-19 19:19:01 +00:00
}
}
} ,
2024-02-25 18:47:50 +00:00
"stream" : {
2024-02-19 19:19:01 +00:00
"type" : "object" ,
"properties" : {
"id" : {
2024-02-25 18:47:50 +00:00
"description" : "The ID of the stream. It will be the same as the ID of the playback session that the stream is for." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "play_c786zm3qtjz6bd5q3n"
2024-02-19 19:19:01 +00:00
} ,
"userId" : {
2024-02-25 18:47:50 +00:00
"description" : "The ID of the user that started the stream." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-20 00:31:53 +00:00
"example" : "root"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"libraryItem" : {
"$ref" : "#/components/schemas/libraryItemExpanded"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"episode" : {
"$ref" : "#/components/schemas/podcastEpisodeExpanded"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"segmentLength" : {
"description" : "The length (in seconds) of each segment of the stream." ,
"type" : "integer" ,
"example" : 6
} ,
"playlistPath" : {
"description" : "The path on the server of the stream output." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "/metadata/streams/play_c786zm3qtjz6bd5q3n/output.m3u8"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"clientPlaylistUri" : {
"description" : "The URI path for the client to access the stream." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "/hls/play_c786zm3qtjz6bd5q3n/output.m3u8"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"startTime" : {
"description" : "The time (in seconds) where the playback session started." ,
"type" : "integer" ,
"example" : 0
} ,
"segmentStartNumber" : {
"description" : "The segment where the transcoding began." ,
"type" : "integer" ,
"example" : 0
} ,
"isTranscodeComplete" : {
"description" : "Whether transcoding is complete." ,
"type" : "boolean" ,
"example" : false
}
}
} ,
"streamProgress" : {
"type" : "object" ,
"properties" : {
"stream" : {
"description" : "The ID of the stream the progress is for." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "play_c786zm3qtjz6bd5q3n"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"percent" : {
"description" : "A human-readable percentage of transcode completion." ,
"type" : "string" ,
"example" : "8.66%"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"chunks" : {
"description" : "The segment ranges that have been transcoded." ,
2024-02-19 19:19:01 +00:00
"type" : "array" ,
"items" : {
2024-02-25 18:47:50 +00:00
"type" : "string" ,
"example" : "0-536"
2024-02-19 19:19:01 +00:00
}
} ,
2024-02-25 18:47:50 +00:00
"numSegments" : {
"description" : "The total number of segments of the stream." ,
2024-02-19 19:19:01 +00:00
"type" : "integer" ,
2024-02-25 18:47:50 +00:00
"example" : 6200
2024-02-19 19:19:01 +00:00
}
}
} ,
2024-02-25 18:47:50 +00:00
"audioBookmark" : {
"type" : "object" ,
2024-02-19 19:19:01 +00:00
"properties" : {
2024-02-25 18:47:50 +00:00
"libraryItemId" : {
"description" : "The ID of the library item the bookmark is for." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "li_8gch9ve09orgn4fdz8"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"title" : {
"description" : "The title of the bookmark." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "the good part"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"time" : {
"description" : "The time (in seconds) the bookmark is at in the book." ,
"type" : "integer" ,
"example" : 16
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"createdAt" : {
"$ref" : "#/components/schemas/createdAt"
2024-02-19 19:19:01 +00:00
}
}
} ,
2024-02-25 18:47:50 +00:00
"mediaProgress" : {
2024-02-19 19:19:01 +00:00
"type" : "object" ,
"properties" : {
2024-02-25 18:47:50 +00:00
"id" : {
"description" : "The ID of the media progress. If the media progress is for a book, this will just be the libraryItemId. If for a podcast episode, it will be a hyphenated combination of the libraryItemId and episodeId." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "li_bufnnmp4y5o2gbbxfm-ep_lh6ko39pumnrma3dhv"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"libraryItemId" : {
"description" : "The ID of the library item the media progress is of." ,
"type" : "string" ,
"example" : "li_bufnnmp4y5o2gbbxfm"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"episodeId" : {
"description" : "The ID of the podcast episode the media progress is of. Will be null if the progress is for a book." ,
2024-02-19 19:19:01 +00:00
"type" : [
"string" ,
"null"
] ,
2024-02-25 18:47:50 +00:00
"example" : "ep_lh6ko39pumnrma3dhv"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"duration" : {
"description" : "The total duration (in seconds) of the media. Will be 0 if the media was marked as finished without the user listening to it." ,
"type" : "number" ,
"example" : 1454.18449
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"progress" : {
"description" : "The percentage completion progress of the media. Will be 1 if the media is finished." ,
"type" : "number" ,
"example" : 0.011193983371394644
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"currentTime" : {
"description" : "The current time (in seconds) of the user's progress. If the media has been marked as finished, this will be the time the user was at beforehand." ,
"type" : "number" ,
"example" : 16.278117
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"isFinished" : {
"description" : "Whether the media is finished." ,
2024-02-19 19:19:01 +00:00
"type" : "boolean" ,
2024-02-20 00:31:53 +00:00
"example" : false
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"hideFromContinueListening" : {
"description" : "Whether the media will be hidden from the \"Continue Listening\" shelf." ,
"type" : "boolean" ,
"example" : false
} ,
"lastUpdate" : {
"description" : "The time (in ms since POSIX epoch) when the media progress was last updated." ,
"type" : "integer" ,
"example" : 1668120246620
} ,
"startedAt" : {
"description" : "The time (in ms since POSIX epoch) when the media progress was created." ,
"type" : "integer" ,
"example" : 1668120083771
} ,
"finishedAt" : {
"description" : "The time (in ms since POSIX epoch) when the media was finished. Will be null if the media has is not finished." ,
2024-02-19 19:19:01 +00:00
"type" : [
"string" ,
"null"
2024-02-25 18:47:50 +00:00
]
}
}
} ,
"mediaProgressWithMedia" : {
"type" : "object" ,
"properties" : {
"id" : {
"description" : "The ID of the media progress. If the media progress is for a book, this will just be the libraryItemId. If for a podcast episode, it will be a hyphenated combination of the libraryItemId and episodeId." ,
"type" : "string" ,
"example" : "li_bufnnmp4y5o2gbbxfm-ep_lh6ko39pumnrma3dhv"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"libraryItemId" : {
"description" : "The ID of the library item the media progress is of." ,
"type" : "string" ,
"example" : "li_bufnnmp4y5o2gbbxfm"
} ,
"episodeId" : {
"description" : "The ID of the podcast episode the media progress is of. Will be null if the progress is for a book." ,
2024-02-19 19:19:01 +00:00
"type" : [
"string" ,
"null"
] ,
2024-02-25 18:47:50 +00:00
"example" : "ep_lh6ko39pumnrma3dhv"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"duration" : {
"description" : "The total duration (in seconds) of the media. Will be 0 if the media was marked as finished without the user listening to it." ,
"type" : "number" ,
"example" : 1454.18449
} ,
"progress" : {
"description" : "The percentage completion progress of the media. Will be 1 if the media is finished." ,
"type" : "number" ,
"example" : 0.011193983371394644
} ,
"currentTime" : {
"description" : "The current time (in seconds) of the user's progress. If the media has been marked as finished, this will be the time the user was at beforehand." ,
"type" : "number" ,
"example" : 16.278117
} ,
"isFinished" : {
"description" : "Whether the media is finished." ,
2024-02-19 19:19:01 +00:00
"type" : "boolean" ,
2024-02-25 18:47:50 +00:00
"example" : false
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"hideFromContinueListening" : {
"description" : "Whether the media will be hidden from the \"Continue Listening\" shelf." ,
"type" : "boolean" ,
"example" : false
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"lastUpdate" : {
"description" : "The time (in ms since POSIX epoch) when the media progress was last updated." ,
"type" : "integer" ,
"example" : 1668120246620
} ,
"startedAt" : {
"description" : "The time (in ms since POSIX epoch) when the media progress was created." ,
"type" : "integer" ,
"example" : 1668120083771
} ,
"finishedAt" : {
"description" : "The time (in ms since POSIX epoch) when the media was finished. Will be null if the media has is not finished." ,
2024-02-19 19:19:01 +00:00
"type" : [
"string" ,
"null"
]
2024-02-25 18:47:50 +00:00
} ,
"media" : {
"description" : "The media of the library item the media progress is for." ,
"type" : "object" ,
"additionalProperties" : {
"oneOf" : [
{
"$ref" : "#/components/schemas/bookExpanded"
} ,
{
"$ref" : "#/components/schemas/podcastExpanded"
}
]
}
} ,
"episode" : {
"$ref" : "#/components/schemas/podcastEpisode"
2024-02-19 19:19:01 +00:00
}
}
} ,
2024-02-25 18:47:50 +00:00
"user" : {
2024-02-19 19:19:01 +00:00
"type" : "object" ,
"properties" : {
2024-02-25 18:47:50 +00:00
"id" : {
"description" : "The ID of the user. Only the root user has the root ID." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "root"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"username" : {
"description" : "The username of the user." ,
"type" : "string" ,
"example" : "root"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"type" : {
"description" : "The type of the user. Will be root, guest, user, or admin. There will be only one root user which is created when the server first starts." ,
"type" : "string" ,
"example" : "root"
} ,
"token" : {
"description" : "The authentication token of the user." ,
"type" : "string" ,
"example" : "exJhbGciOiJI6IkpXVCJ9.eyJ1c2Vyi5NDEyODc4fQ.ZraBFohS4Tg39NszY"
} ,
"mediaProgress" : {
"description" : "The user's media progress." ,
"type" : "array" ,
"items" : {
"$ref" : "#/components/schemas/mediaProgress"
}
} ,
"seriesHideFromContinueListening" : {
"description" : "The IDs of series to hide from the user's \"Continue Series\" shelf." ,
"type" : "array" ,
"items" : {
"type" : "string" ,
"example" : "..."
}
} ,
"bookmarks" : {
"description" : "The user's bookmarks." ,
"type" : "array" ,
"items" : {
"$ref" : "#/components/schemas/audioBookmark"
}
} ,
"isActive" : {
"description" : "Whether the user's account is active." ,
2024-02-19 19:19:01 +00:00
"type" : "boolean" ,
2024-02-20 00:31:53 +00:00
"example" : true
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"isLocked" : {
"description" : "Whether the user is locked." ,
"type" : "boolean" ,
"example" : false
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"lastSeen" : {
"description" : "The time (in ms since POSIX epoch) when the user was last seen by the server. Will be null if the user has never logged in." ,
"type" : "integer" ,
"example" : 1668296147437
} ,
"createdAt" : {
"$ref" : "#/components/schemas/createdAt"
} ,
"permissions" : {
"$ref" : "#/components/schemas/userPermissions"
} ,
"librariesAccessible" : {
"description" : "The IDs of libraries accessible to the user. An empty array means all libraries are accessible." ,
"type" : "array" ,
"items" : {
"type" : "string" ,
"example" : "..."
}
} ,
"itemTagsAccessible" : {
"description" : "The tags accessible to the user. An empty array means all tags are accessible." ,
"type" : "array" ,
"items" : {
"type" : "string" ,
"example" : "..."
}
2024-02-19 19:19:01 +00:00
}
}
} ,
2024-02-25 18:47:50 +00:00
"userWithProgressDetails" : {
2024-02-19 19:19:01 +00:00
"type" : "object" ,
"properties" : {
"id" : {
2024-02-25 18:47:50 +00:00
"description" : "The ID of the user. Only the root user has the root ID." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "root"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"username" : {
"description" : "The username of the user." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "root"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"type" : {
"description" : "The type of the user. Will be root, guest, user, or admin. There will be only one root user which is created when the server first starts." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "root"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"token" : {
"description" : "The authentication token of the user." ,
"type" : "string" ,
"example" : "exJhbGciOiJI6IkpXVCJ9.eyJ1c2Vyi5NDEyODc4fQ.ZraBFohS4Tg39NszY"
} ,
"mediaProgress" : {
"description" : "The user's media progress." ,
"type" : "array" ,
"items" : {
"$ref" : "#/components/schemas/mediaProgressWithMedia"
2024-02-19 19:19:01 +00:00
}
} ,
2024-02-25 18:47:50 +00:00
"seriesHideFromContinueListening" : {
"description" : "The IDs of series to hide from the user's \"Continue Series\" shelf." ,
"type" : "array" ,
"items" : {
"type" : "string" ,
"example" : "..."
}
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"bookmarks" : {
"description" : "The user's bookmarks." ,
"type" : "array" ,
"items" : {
"$ref" : "#/components/schemas/audioBookmark"
}
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"isActive" : {
"description" : "Whether the user's account is active." ,
"type" : "boolean" ,
"example" : true
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"isLocked" : {
"description" : "Whether the user is locked." ,
2024-02-19 19:19:01 +00:00
"type" : "boolean" ,
2024-02-20 00:31:53 +00:00
"example" : false
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"lastSeen" : {
"description" : "The time (in ms since POSIX epoch) when the user was last seen by the server. Will be null if the user has never logged in." ,
"type" : "integer" ,
"example" : 1668296147437
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"createdAt" : {
"$ref" : "#/components/schemas/createdAt"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"permissions" : {
"$ref" : "#/components/schemas/userPermissions"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"librariesAccessible" : {
"description" : "The IDs of libraries accessible to the user. An empty array means all libraries are accessible." ,
"type" : "array" ,
"items" : {
"type" : "string" ,
"example" : "..."
}
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"itemTagsAccessible" : {
"description" : "The tags accessible to the user. An empty array means all tags are accessible." ,
"type" : "array" ,
"items" : {
"type" : "string" ,
"example" : "..."
}
2024-02-19 19:19:01 +00:00
}
}
} ,
2024-02-25 18:47:50 +00:00
"userWithSession" : {
2024-02-19 19:19:01 +00:00
"type" : "object" ,
"properties" : {
"id" : {
2024-02-25 18:47:50 +00:00
"description" : "The ID of the user. Only the root user has the root ID." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-20 00:31:53 +00:00
"example" : "root"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"username" : {
"description" : "The username of the user." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "root"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"type" : {
"description" : "The type of the user. Will be root, guest, user, or admin. There will be only one root user which is created when the server first starts." ,
2024-02-19 19:19:01 +00:00
"type" : "string" ,
2024-02-25 18:47:50 +00:00
"example" : "root"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"session" : {
"$ref" : "#/components/schemas/playbackSessionExpanded"
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"lastSeen" : {
"description" : "The time (in ms since POSIX epoch) when the user was last seen by the server. Will be null if the user has never logged in." ,
2024-02-19 19:19:01 +00:00
"type" : "integer" ,
2024-02-25 18:47:50 +00:00
"example" : 1668296147437
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"createdAt" : {
"$ref" : "#/components/schemas/createdAt"
2024-02-19 19:19:01 +00:00
}
}
} ,
2024-02-25 18:47:50 +00:00
"userPermissions" : {
2024-02-19 19:19:01 +00:00
"type" : "object" ,
"properties" : {
2024-02-25 18:47:50 +00:00
"download" : {
"description" : "Whether the user can download items to the server." ,
"type" : "boolean" ,
"example" : true
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"update" : {
"description" : "Whether the user can update library items." ,
"type" : "boolean" ,
"example" : true
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"delete" : {
"description" : "Whether the user can delete library items." ,
"type" : "boolean" ,
"example" : true
2024-02-19 19:19:01 +00:00
} ,
2024-02-25 18:47:50 +00:00
"upload" : {
"description" : "Whether the user can upload items to the server." ,
"type" : "boolean" ,
"example" : true
} ,
"accessAllLibraries" : {
"description" : "Whether the user can access all libraries." ,
"type" : "boolean" ,
"example" : true
} ,
"accessAllTags" : {
"description" : "Whether the user can access all tags." ,
"type" : "boolean" ,
"example" : true
} ,
"accessExplicitContent" : {
"description" : "Whether the user can access explicit content." ,
"type" : "boolean" ,
"example" : true
2024-02-19 19:19:01 +00:00
}
}
}
}
} ,
"tags" : [ ]
}